22 months ago[libc] Add documentation for integration tests.
Paula Toth [Mon, 6 Jul 2020 19:43:29 +0000 (12:43 -0700)]
[libc] Add documentation for integration tests.

Reviewers: sivachandra

Reviewed By: sivachandra

Subscribers: MaskRay, tschuett, ecnelises, libc-commits

Tags: #libc-project

Differential Revision: https://reviews.llvm.org/D82907

22 months ago[WebAssembly] 64-bit memory limits
Wouter van Oortmerssen [Tue, 30 Jun 2020 00:53:09 +0000 (17:53 -0700)]
[WebAssembly] 64-bit memory limits

22 months ago[VE] Support symbol with offset in assembly
Kazushi (Jam) Marukawa [Mon, 6 Jul 2020 18:49:59 +0000 (03:49 +0900)]
[VE] Support symbol with offset in assembly

Change MCExpr to support Aurora VE's modifiers.  Change asmparser to use
existing MCExpr parser (parseExpression) to parse an expression contining
symbols with modifiers and offsets.  Also add several regression tests
of MC layer.

Reviewers: simoll, k-ishizaka

Reviewed By: simoll

Subscribers: hiraditya, llvm-commits

Tags: #llvm, #ve

Differential Revision: https://reviews.llvm.org/D83170

22 months ago[Sanitizer] Fix demangling for Swift symbol names
Julian Lettner [Fri, 12 Jun 2020 00:34:39 +0000 (17:34 -0700)]
[Sanitizer] Fix demangling for Swift symbol names

The Swift symbol name prefix has changed from `_T0` to `_$s` as
documented here [1].  This prevents Swift names from properly being
symbolicated when using the in-process LLVM symbolizer.  The best way to
fix this seems to be to avoid the duplication of "Is this a Swift symbol
name?" here.  We can simply remove this check as `swift_demangle`
already returns null for non-Swift names [2,3].

The check was included in the initial support for Swift name demangling
to avoid superfluous calls to `dlsym()` [4].  A subsequent commit
changed this logic to retrieve the `swift_demangle` function pointer
eagerly during sanitizer initialization, but did not remove the check

[1] https://github.com/apple/swift/blob/master/docs/ABI/Mangling.rst
[2] https://github.com/apple/swift/blob/b5a8b518eae54cea997f3b0954760fc7858829f6/include/swift/Demangling/Demangle.h#L643
[3] https://github.com/apple/swift/blob/b5a8b518eae54cea997f3b0954760fc7858829f6/stdlib/public/runtime/Demangle.cpp#L656
[4] https://reviews.llvm.org/D19135
[5] https://reviews.llvm.org/D20015


Reviewers: kubamracek, delcypher, dcoughlin, samsonov, thakis

Reviewed By: kubamracek

Differential Revision: https://reviews.llvm.org/D81705

22 months ago[ELF] Drop an unneeded reference to `symtab` from SymbolTable::addSymbol
William S. Moses [Mon, 6 Jul 2020 19:00:29 +0000 (12:00 -0700)]
[ELF] Drop an unneeded reference to `symtab` from SymbolTable::addSymbol

The Symbol Table in LLD references the global object to add a symbol rather than adding it to itself.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D83184

22 months agoRevert "[FPEnv][Clang][Driver] Disable constrained floating point on targets lacking...
Kevin P. Neal [Mon, 6 Jul 2020 18:54:56 +0000 (14:54 -0400)]
Revert "[FPEnv][Clang][Driver] Disable constrained floating point on targets lacking support."

My mistake, I had a blocking reviewer.

This reverts commit 39d2ae0afb2312a15e4d15a0855b35b4e1c49fc4.
This reverts commit bfdafa32a0fa4b2745627fe57dd253db10ac3fcf.
This reverts commit 2b35511350454dd22997f129ee529e3fdb129ac2.

Differential Revision: https://reviews.llvm.org/D80952

22 months ago[VE] Change to use isa
Kazushi (Jam) Marukawa [Mon, 6 Jul 2020 18:35:31 +0000 (03:35 +0900)]
[VE] Change to use isa

Summary: Change to use isa instead of dyn_cast to avoid a warning.

Reviewers: simoll, k-ishizaka

Reviewed By: simoll

Subscribers: hiraditya, llvm-commits

Tags: #llvm, #ve

Differential Revision: https://reviews.llvm.org/D83200

22 months ago[FPEnv][Clang][Driver] Failing tests are now expected failures only on PowerPC
Kevin P. Neal [Mon, 6 Jul 2020 18:41:15 +0000 (14:41 -0400)]
[FPEnv][Clang][Driver] Failing tests are now expected failures only on PowerPC

Mark these tests as only failing on PowerPC. Avoids unexpected passes on
other bots.

Fingers crossed.

Differential Revision: https://reviews.llvm.org/D80952

22 months agoAMDGPU: Don't ignore carry out user when expanding add_co_pseudo
Matt Arsenault [Fri, 19 Jun 2020 19:45:16 +0000 (15:45 -0400)]
AMDGPU: Don't ignore carry out user when expanding add_co_pseudo

This was resulting in a missing vreg def in the use select

The output of the pseudo doesn't make sense, since it really shouldn't
have the vreg output in the first place, and instead an implicit scc
def to match the real scalar behavior.

We could have easier to understand tests if we selected scalar
versions of the [us]{add|sub}.with.overflow intrinsics.

This does still end up producing vector code in the end, since it gets
moved later.

22 months ago[flang] Bug fix for ambiguous references to data and functions
Pete Steinfeld [Tue, 30 Jun 2020 19:03:28 +0000 (12:03 -0700)]
[flang] Bug fix for ambiguous references to data and functions

A program may erroneously reference the same name as both a data object
and as a function.  Some of these references were causing an internal
error in expression analysis.

It was already the case that a symbol referenced in a parse tree for a
call was changed from an `Entity` to a `ProcEntity`.  I added code to
detect when a symbol was referenced in a parse tree as an array element
gets changed from an `Entity` to an `ObjectEntity`.  Then, if an
`ObjectEntity` gets called as a function or a `ProcEntity` gets
referenced as a data object, errors get emitted.

This analysis was previously confined to the name resolution of the
specification part of a `ProgramTree`.  I added a pass to the execution
part of a `ProgramTree` to catch names declared in blocks.

Reviewers: tskeith, klausler, DavidTruby

Subscribers: llvm-commits

Tags: #llvm, #flang

Differential Revision: https://reviews.llvm.org/D82903

22 months ago[FPEnv][Clang][Driver] Failing tests are now expected failures.
Kevin P. Neal [Mon, 6 Jul 2020 18:20:49 +0000 (14:20 -0400)]
[FPEnv][Clang][Driver] Failing tests are now expected failures.

These are now expected failures on PowerPC. They can be reenabled when
PowerPC is ready.

Differential Revision: https://reviews.llvm.org/D80952

22 months ago[SemaCXX] Fix false positive of -Wuninitialized-const-reference in empty function...
Zequan Wu [Wed, 24 Jun 2020 01:05:49 +0000 (18:05 -0700)]
[SemaCXX] Fix false positive of -Wuninitialized-const-reference in empty function body.

Some libraries use empty function to ignore unused variable warnings, which gets a new warning from `-Wuninitialized-const-reference`, discussed here https://reviews.llvm.org/D79895#2107604.
This patch should fix that.

Reviewers: hans, nick, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: aaron.ballman, riccibruno, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82425

22 months ago[flang] Basic tests of external I/O runtime (part 9/9)
peter klausler [Sat, 4 Jul 2020 21:24:32 +0000 (14:24 -0700)]
[flang] Basic tests of external I/O runtime (part 9/9)

Add new unit tests for external Fortran I/O that drive the
Fortran I/O runtime API from C++ and exercise basic writing
and read-back in the various combinations of access modes,
record length variability, and formatting.  Sequential modes
are tested with positioning.  More thorough tests written in
Fortran will follow when they can be compiled and run.

The Fortran runtime's error termination callback registration
was extended with source file and line number positions for
better failure messages in unit testing.

Reviewed By: sscalpone

Differential Revision: https://reviews.llvm.org/D83164

22 months ago[FPEnv][Clang][Driver] Disable constrained floating point on targets lacking support.
Kevin P. Neal [Mon, 6 Jul 2020 15:52:42 +0000 (11:52 -0400)]
[FPEnv][Clang][Driver] Disable constrained floating point on targets lacking support.

We currently have strict floating point/constrained floating point enabled
for all targets. Constrained SDAG nodes get converted to the regular ones
before reaching the target layer. In theory this should be fine.

However, the changes are exposed to users through multiple clang options
already in use in the field, and the changes are _completely_ _untested_
on almost all of our targets. Bugs have already been found, like

This patch disables constrained floating point options in clang everywhere
except X86 and SystemZ. A warning will be printed when this happens.

Differential Revision: https://reviews.llvm.org/D80952

22 months ago[mlir] Change ODS to have include and exclude regex
Jacques Pienaar [Mon, 6 Jul 2020 16:55:10 +0000 (09:55 -0700)]
[mlir] Change ODS to have include and exclude regex

This makes it easier to have a "remainder" include rule. And also makes it easier to read the command line flag.

22 months ago[AIX] Add system-aix to lit config file
Shuhong Liu [Fri, 3 Jul 2020 21:14:11 +0000 (17:14 -0400)]
[AIX] Add system-aix to lit config file

Summary: This is a complementary patch to D82100 since the aix builbot is still running the unsupported test shtest-format-argv0. Add system-aix to the sub llvm-lit config.

Reviewers: daltenty, hubert.reinterpretcast

Reviewed By: hubert.reinterpretcast

Subscribers: delcypher, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82905

22 months ago[ELF][ARM] Represent R_ARM_LDO32 as R_DTPREL instead of R_ABS
Fangrui Song [Mon, 6 Jul 2020 16:47:53 +0000 (09:47 -0700)]
[ELF][ARM] Represent R_ARM_LDO32 as R_DTPREL instead of R_ABS

Follow-up to D82899. Note, we need to disable R_DTPREL relaxation
because ARM psABI does not define TLS relaxation.

Reviewed By: grimar, psmith

Differential Revision: https://reviews.llvm.org/D83138

22 months ago[RISCV] Fold ADDIs into load/stores with nonzero offsets
Luís Marques [Wed, 24 Jun 2020 12:53:27 +0000 (13:53 +0100)]
[RISCV] Fold ADDIs into load/stores with nonzero offsets

We can often fold an ADDI into the offset of load/store instructions:

   (load (addi base, off1), off2) -> (load base, off1+off2)
   (store val, (addi base, off1), off2) -> (store val, base, off1+off2)

This is possible when the off1+off2 continues to fit the 12-bit immediate.
We remove the previous restriction where we would never fold the ADDIs if
the load/stores had nonzero offsets. We now do the fold the the resulting
constant still fits a 12-bit immediate, or if off1 is a variable's address
and we know based on that variable's alignment that off1+offs2 won't overflow.

Differential Revision: https://reviews.llvm.org/D79690

22 months ago[MLIR] Add a NoRegionArguments trait
Rahul Joshi [Thu, 2 Jul 2020 00:54:12 +0000 (17:54 -0700)]
[MLIR] Add a NoRegionArguments trait

- This trait will verify that all regions attached to an Op have no arguments
- Fixes https://bugs.llvm.org/show_bug.cgi?id=46521 : Add trait NoRegionArguments

Differential Revision: https://reviews.llvm.org/D83016

22 months ago[clang][utils] make-ast-dump-check.sh: strip line and column numbers when generating...
Bruno Ricci [Mon, 6 Jul 2020 15:48:50 +0000 (16:48 +0100)]
[clang][utils] make-ast-dump-check.sh: strip line and column numbers when generating serialization tests

22 months ago[clang] Fix modules build after D82585
Raphael Isemann [Mon, 6 Jul 2020 15:36:49 +0000 (17:36 +0200)]
[clang] Fix modules build after D82585

Just getting the bots running again.

See the D82585 for more info.

22 months ago[XCOFF][AIX] Give symbol an internal name when desired symbol name contains invalid...
jasonliu [Mon, 6 Jul 2020 14:18:06 +0000 (14:18 +0000)]
[XCOFF][AIX] Give symbol an internal name when desired symbol name contains invalid character(s)


When a desired symbol name contains invalid character that the
system assembler could not process, we need to emit .rename
directive in assembly path in order for that desired symbol name
to appear in the symbol table.

Reviewed By: hubert.reinterpretcast, DiggerLin, daltenty, Xiangling_L

Differential Revision: https://reviews.llvm.org/D82481

22 months ago[Support] Fix formatted_raw_ostream for UTF-8
Oliver Stannard [Tue, 17 Mar 2020 14:13:32 +0000 (14:13 +0000)]
[Support] Fix formatted_raw_ostream for UTF-8

* The getLine and getColumn functions need to update the position, or
  they will return stale data for buffered streams. This fixes a bug in
  the clang -analyzer-checker-option-help option, which was not wrapping
  the help text correctly when stdout is not a TTY.
* If the stream contains multi-byte UTF-8 sequences, then the whole
  sequence needs to be considered to be a single character. This has the
  edge case that the buffer might fill up and be flushed part way
  through a character.
* If the stream contains East Asian wide characters, these will be
  rendered twice as wide as other characters, so we need to increase the
  column count to match.

This doesn't attempt to handle everything unicode can do (combining
characters, right-to-left markers, ...), but hopefully covers most
things likely to be common in messages and source code we might want to

Differential revision: https://reviews.llvm.org/D76291

22 months ago[clangd] More complete fix for hover crashes on invalid record.
Haojian Wu [Mon, 6 Jul 2020 15:12:39 +0000 (17:12 +0200)]
[clangd] More complete fix for hover crashes on invalid record.

 We should not call getFieldOffset on invalid record decls.

Differential Revision: https://reviews.llvm.org/D83189

22 months agoReland "[ScalarEvolution] createSCEV(): recognize `udiv`/`urem` disguised as an ...
Roman Lebedev [Mon, 6 Jul 2020 14:50:31 +0000 (17:50 +0300)]
Reland "[ScalarEvolution] createSCEV(): recognize `udiv`/`urem` disguised as an `sdiv`/`srem`"

This reverts commit d3e3f36ff1151f565730977ac4f663a2ccee48ae,
which reverter the original commit 2c16100e6f72075564ea1f67fa5a82c269dafcd3,
but with polly tests now actually passing.

22 months ago[lldb] Always round down in NSDate's formatter to match NSDate's builtin format
Raphael Isemann [Mon, 6 Jul 2020 14:31:56 +0000 (16:31 +0200)]
[lldb] Always round down in NSDate's formatter to match NSDate's builtin format


When printing an NSDate (for example with `NSLog` or `po`) the seconds value is
always rounded down. LLDB's own formatter however isn't following that behaviour
which leads to situations where the formatted result is sometimes one second
off. For example:

(lldb) p [NSDate dateWithTimeIntervalSince1970:0.1]
(__NSTaggedDate *) $1 = [...] 1970-01-01 00:00:01 UTC
(lldb) po [NSDate dateWithTimeIntervalSince1970:0.1]
1970-01-01 00:00:00 +0000

(lldb) p [NSDate dateWithTimeIntervalSince1970:0.6]
(__NSTaggedDate *) $4 =[...] 1970-01-01 00:00:01 UTC
(lldb) po [NSDate dateWithTimeIntervalSince1970:0.6]
1970-01-01 00:00:00 +0000

This patch just always rounds down the seconds value we get from the NSDate

Fixes rdar://65084800

Reviewers: mib, davide

Reviewed By: mib

Subscribers: JDevlieghere

Differential Revision: https://reviews.llvm.org/D83221

22 months ago[ARM] MVE FP16 cost adjustments
David Green [Mon, 6 Jul 2020 13:25:16 +0000 (14:25 +0100)]
[ARM] MVE FP16 cost adjustments

This adjusts the MVE fp16 cost model, similar to how we already do for
integer casts. It uses the base cost of 1 per cvt for most fp extend /
truncates, but adjusts it for loads and stores where we know that a
extending load has been used to get the load into the correct lane, and
only an MVE VCVTB is then needed.

Differential Revision: https://reviews.llvm.org/D81813

22 months ago[clang] Fix the incorrect dependence bits for DependentExtIntType.
Haojian Wu [Mon, 6 Jul 2020 14:29:16 +0000 (16:29 +0200)]
[clang] Fix the incorrect dependence bits for DependentExtIntType.

The error-bit was missing, and the unexpandedpack bit seemed to be
set incorrectly.

Reviewed By: sammccall, erichkeane

Differential Revision: https://reviews.llvm.org/D83114

22 months agoRevert "[ScalarEvolution] createSCEV(): recognize `udiv`/`urem` disguised as an ...
Mikhail Goncharov [Mon, 6 Jul 2020 14:41:59 +0000 (16:41 +0200)]
Revert "[ScalarEvolution] createSCEV(): recognize `udiv`/`urem` disguised as an `sdiv`/`srem`"

This reverts commit 2c16100e6f72075564ea1f67fa5a82c269dafcd3.

ninja check-polly fails:
  Polly :: Isl/CodeGen/MemAccess/generate-all.ll
  Polly :: ScopInfo/multidim_srem.ll

Reviewers: kadircet, bollu

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83230

22 months ago[LV] Pass dbgs() to verifyFunction call.
Florian Hahn [Mon, 6 Jul 2020 12:52:48 +0000 (13:52 +0100)]
[LV] Pass dbgs() to verifyFunction call.

This is done in other places of the pass already and improves the output
on verification failure.

22 months ago[OpenMP] Temporarily disable failing runtime tests for OpenMP 5.0
Saiyedul Islam [Mon, 6 Jul 2020 14:01:21 +0000 (14:01 +0000)]
[OpenMP] Temporarily disable failing runtime tests for OpenMP 5.0

Following tests are failing after upgrading to version 5.0 but are passing
for version 4.5:
1. openmp/runtime/test/env/kmp_set_dispatch_buf.c
2. openmp/runtime/test/worksharing/for/kmp_set_dispatch_buf.c

To be enabled as soon as these tests are fixed.

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D82963

22 months ago[x86] add tests for vector select with non-splat bit-test condition; NFC
Sanjay Patel [Mon, 6 Jul 2020 13:49:50 +0000 (09:49 -0400)]
[x86] add tests for vector select with non-splat bit-test condition; NFC

Goes with D83181.

22 months ago[clang-tidy] Fix incorrect default option in fc3c693b61
Nathan James [Mon, 6 Jul 2020 13:44:03 +0000 (14:44 +0100)]
[clang-tidy] Fix incorrect default option in fc3c693b61

22 months ago[clang-tidy] Added alias llvm-else-after-return.
Nathan James [Mon, 6 Jul 2020 13:39:02 +0000 (14:39 +0100)]
[clang-tidy] Added alias llvm-else-after-return.

Added an alias llvm-else-after-return from readability-else-after-return to help enforce one of the llvm coding guidelines.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D82825

22 months ago[analyzer] Don't allow hidden checkers to emit diagnostics
Kirstóf Umann [Wed, 27 May 2020 10:27:32 +0000 (12:27 +0200)]
[analyzer] Don't allow hidden checkers to emit diagnostics

Hidden checkers (those marked with Hidden in Checkers.td) are meant for
development purposes only, and are only displayed under
-analyzer-checker-help-developer, so users shouldn't see reports from them.

I moved StdLibraryFunctionsArg checker to the unix package from apiModeling as
it violated this rule. I believe this change doesn't deserve a different
revision because it is in alpha, and the name is so bad anyways I don't
immediately care where it is, because we'll have to revisit it soon enough.

Differential Revision: https://reviews.llvm.org/D81750

22 months ago[ARM] Adjust default fp extend and trunc costs
David Green [Mon, 6 Jul 2020 10:35:01 +0000 (11:35 +0100)]
[ARM] Adjust default fp extend and trunc costs

This adds some default costs for fp extends and truncates, generally
costing them as 1 per lane. If the type is not legal then the cost will
include a call to an __aeabi_ function.

Some NEON code is also adjusted to make sure it applies to the expected
types, now that fp16 is a more common thing.

Differential Revision: https://reviews.llvm.org/D82458

22 months agoGlobalISel: Move finalizeLowering call later
Matt Arsenault [Mon, 6 Jul 2020 03:21:30 +0000 (23:21 -0400)]
GlobalISel: Move finalizeLowering call later

This matches the DAG behavior where this is called after the loop
checking for calls. The AMDGPU implementation depends on knowing if
there are calls in the function or not, so move this later.

Another problem is finalizeLowering is actually called twice; I was
seeing weird inconsistencies since the first call would produce
unexpected results and the second run would correct them in some
contexts. Since this requires disabling the verifier, and it's useful
to serialize the MIR immediately after selection, FinalizeISel should
probably not be a real pass.

22 months agoAMDGPU/GlobalISel: Don't emit code for unused kernel arguments
Matt Arsenault [Sun, 5 Jul 2020 20:35:01 +0000 (16:35 -0400)]
AMDGPU/GlobalISel: Don't emit code for unused kernel arguments

22 months agoAMDGPU/GlobalISel: Fix hardcoded register number checks in test
Matt Arsenault [Sun, 5 Jul 2020 20:27:00 +0000 (16:27 -0400)]
AMDGPU/GlobalISel: Fix hardcoded register number checks in test

22 months agoAMDGPU: Fix fixed ABI SGPR arguments
Matt Arsenault [Sun, 5 Jul 2020 17:55:29 +0000 (13:55 -0400)]
AMDGPU: Fix fixed ABI SGPR arguments

The default constructor wasn't setting isSet o the ArgDescriptor, so
while these had the value set, they were treated as missing. This only
ended up mattering in the indirect call case (and for regular calls in
GlobalISel, which current doesn't have a way to support the variable

22 months agoAMDGPU/GlobalISel: Add some missing return tests
Matt Arsenault [Mon, 6 Jul 2020 13:00:41 +0000 (09:00 -0400)]
AMDGPU/GlobalISel: Add some missing return tests

22 months ago[X86][XOP] Add XOP target vselect-pcmp tests
Simon Pilgrim [Mon, 6 Jul 2020 12:01:30 +0000 (13:01 +0100)]
[X86][XOP] Add XOP target vselect-pcmp tests

Noticed in the D83181 that XOP can probably do a lot more than other targets due to its vector shifts and vpcmov instructions

22 months agoRegenerate subreg liverange tests. NFC.
Simon Pilgrim [Mon, 6 Jul 2020 11:50:17 +0000 (12:50 +0100)]
Regenerate subreg liverange tests. NFC.

To simplify the diffs in a patch in development.

22 months agoRegenerate neon copy tests. NFC.
Simon Pilgrim [Mon, 6 Jul 2020 11:49:21 +0000 (12:49 +0100)]
Regenerate neon copy tests. NFC.

To simplify the diffs in a patch in development.

22 months ago[analyzer][NFC] Don't allow dependency checkers to emit diagnostics
Kirstóf Umann [Wed, 27 May 2020 10:27:32 +0000 (12:27 +0200)]
[analyzer][NFC] Don't allow dependency checkers to emit diagnostics

The thrilling conclusion to the barrage of patches I uploaded lately! This is a
big milestone towards the goal set out in http://lists.llvm.org/pipermail/cfe-dev/2019-August/063070.html.
I hope to accompany this with a patch where the a coreModeling package is added,
from which package diagnostics aren't allowed either, is an implicit dependency
of all checkers, and the core package for the first time can be safely disabled.

Differential Revision: https://reviews.llvm.org/D78126

22 months ago[mlir][Vector] Add custom slt / SCF.if folding to VectorToSCF
Nicolas Vasilache [Mon, 6 Jul 2020 12:16:53 +0000 (08:16 -0400)]
[mlir][Vector] Add custom slt / SCF.if folding to VectorToSCF

scf.if currently lacks folding on true / false conditionals.
Such foldings are a bit more involved than can be addressed immediately.
This revision introduces an eager folding  for lowering vector.transfer operations in the presence of unrolling.

Differential revision: https://reviews.llvm.org/D83146

22 months ago[mlir][Vector] Add a VectorUnrollInterface and expose UnrollVectorPattern.
Nicolas Vasilache [Mon, 6 Jul 2020 10:28:50 +0000 (06:28 -0400)]
[mlir][Vector] Add a VectorUnrollInterface and expose UnrollVectorPattern.

The UnrollVectorPattern is can be used in a programmable fashion by:
OwningRewritePatternList patterns;
    patterns.insert<UnrollVectorPattern<AddFOp>>(ArrayRef<int64_t>{2, 2}, ctx);
        ArrayRef<int64_t>{2, 2, 2}, ctx);
    applyPatternsAndFoldGreedily(getFunction(), patterns);

Differential revision: https://reviews.llvm.org/D83064

22 months ago[PowerPC] Legalize SREM/UREM directly on P9.
Esme-Yi [Mon, 6 Jul 2020 11:47:31 +0000 (11:47 +0000)]
[PowerPC] Legalize SREM/UREM directly on P9.

Summary: As Bugzilla-35090 reported, the rationale for using custom lowering SREM/UREM should no longer be true. At the IR level, the div-rem-pairs pass performs the transformation where the remainder is computed from the result of the division when both a required. We should now be able to lower these directly on P9. And the pass also fixed the problem that divide is in a different block than the remainder. This is a patch to remove redundant code and make SREM/UREM legal directly on P9.

Reviewed By: lkail

Differential Revision: https://reviews.llvm.org/D82145

22 months agoRemoved a RecursiveASTVisitor feature to visit operator kinds with different methods
Dmitri Gribenko [Fri, 3 Jul 2020 15:01:01 +0000 (17:01 +0200)]
Removed a RecursiveASTVisitor feature to visit operator kinds with different methods

This feature was only used in two places, but contributed a non-trivial
amount to the complexity of RecursiveASTVisitor, and was buggy (see my
recent patches where I was fixing the bugs that I noticed). I don't
think the convenience benefit of this feature is worth the complexity.

Besides complexity, another issue with the current state of
RecursiveASTVisitor is the non-uniformity in how it handles different
AST nodes. All AST nodes follow a regular pattern, but operators are
special -- and this special behavior not documented. Correct usage of
RecursiveASTVisitor relies on shadowing member functions with specific
names and signatures. Near misses don't cause any compile-time errors,
incorrectly named or typed methods are just silently ignored. Therefore,
predictability of RecursiveASTVisitor API is quite important.

This change reduces the size of the `clang` binary by 38 KB (0.2%) in
release mode, and by 7 MB (0.3%) in debug mode. The `clang-tidy` binary
is reduced by 205 KB (0.3%) in release mode, and by 5 MB (0.4%) in debug
mode. I don't think these code size improvements are significant enough
to justify this change on its own (for me, the primary motivation is
reducing code complexity), but they I think are a nice side-effect.

Reviewers: rsmith, sammccall, ymandel, aaron.ballman

Reviewed By: rsmith, sammccall, ymandel, aaron.ballman

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82921

22 months agoMake RecursiveASTVisitor call WalkUpFrom for operators when the data recursion queue...
Dmitri Gribenko [Fri, 3 Jul 2020 10:39:14 +0000 (12:39 +0200)]
Make RecursiveASTVisitor call WalkUpFrom for operators when the data recursion queue is absent

Reviewers: eduucaldas, ymandel, rsmith

Reviewed By: eduucaldas

Subscribers: gribozavr2, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82889

22 months agoMake RecursiveASTVisitor call WalkUpFrom for unary and binary operators in post-order...
Dmitri Gribenko [Fri, 3 Jul 2020 10:39:03 +0000 (12:39 +0200)]
Make RecursiveASTVisitor call WalkUpFrom for unary and binary operators in post-order traversal mode

Reviewers: ymandel, eduucaldas, rsmith

Reviewed By: eduucaldas, rsmith

Subscribers: gribozavr2, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82787

22 months agoRecursiveASTVisitor: don't call WalkUp unnecessarily in post-order traversal
Dmitri Gribenko [Fri, 3 Jul 2020 11:55:01 +0000 (13:55 +0200)]
RecursiveASTVisitor: don't call WalkUp unnecessarily in post-order traversal

How does RecursiveASTVisitor call the WalkUp callback for expressions?

* In pre-order traversal mode, RecursiveASTVisitor calls the WalkUp
  callback from the default implementation of Traverse callbacks.

* In post-order traversal mode when we don't have a DataRecursionQueue,
  RecursiveASTVisitor also calls the WalkUp callback from the default
  implementation of Traverse callbacks.

* However, in post-order traversal mode when we have a DataRecursionQueue,
  RecursiveASTVisitor calls the WalkUp callback from PostVisitStmt.

As a result, when the user overrides the Traverse callback, in pre-order
traversal mode they never get the corresponding WalkUp callback. However
in the post-order traversal mode the WalkUp callback is invoked or not
depending on whether the data recursion optimization could be applied.

I had to adjust the implementation of TraverseCXXForRangeStmt in the
syntax tree builder to call the WalkUp method directly, as it was
relying on this behavior. There is an existing test for this
functionality and it prompted me to make this extra fix.

In addition, I had to fix the default implementation implementation of
RecursiveASTVisitor::TraverseSynOrSemInitListExpr to call WalkUpFrom in
the same manner as the implementation generated by the DEF_TRAVERSE_STMT
macro. Without this fix, the InitListExprIsPostOrderNoQueueVisitedTwice
test was failing because WalkUpFromInitListExpr was never called.

Reviewers: eduucaldas, ymandel

Reviewed By: eduucaldas, ymandel

Subscribers: gribozavr2, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D82486

22 months ago[TargetLowering] Improve expansion of FSHL/FSHR by non-zero amount
Jay Foad [Fri, 29 May 2020 09:57:42 +0000 (10:57 +0100)]
[TargetLowering] Improve expansion of FSHL/FSHR by non-zero amount

Use a simpler code sequence when the shift amount is known not to be
zero modulo the bit width.

Nothing much uses this until D77152 changes the translation of fshl and
fshr intrinsics.

Differential Revision: https://reviews.llvm.org/D82540

22 months ago[TargetLowering] Improve expansion of ROTL/ROTR
Jay Foad [Fri, 3 Apr 2020 13:11:56 +0000 (14:11 +0100)]
[TargetLowering] Improve expansion of ROTL/ROTR

Using a negation instead of a subtraction from a constant can save an
instruction on some targets.

Nothing much uses this until D77152 changes the translation of fshl and
fshr intrinsics.

Differential Revision: https://reviews.llvm.org/D82539

22 months ago[analyzer] Force dependency checkers to be hidden
Kirstóf Umann [Fri, 12 Jun 2020 18:54:24 +0000 (20:54 +0200)]
[analyzer] Force dependency checkers to be hidden

Since strong dependencies aren't user-facing (its hardly ever legal to disable
them), lets enforce that they are hidden. Modeling checkers that aren't
dependencies are of course not impacted, but there is only so much you can do
against developers shooting themselves in the foot :^)

I also made some changes to the test files, reversing the "test" package for,
well, testing.

Differential Revision: https://reviews.llvm.org/D81761

22 months ago[Support] fix user_cache_directory on mac
Sam McCall [Mon, 6 Jul 2020 10:54:11 +0000 (12:54 +0200)]
[Support] fix user_cache_directory on mac

22 months ago[SystemZ/ZOS] Implement getMainExecutable() and is_local_impl()
Kai Nacke [Mon, 6 Jul 2020 09:53:29 +0000 (05:53 -0400)]
[SystemZ/ZOS] Implement getMainExecutable() and is_local_impl()

Adds implementation of getMainExecutable() and is_local_impl() to
Support/Unix/Path.inc. Both are needed to compile LLVM for z/OS.

Reviewed By: hubert.reinterpretcast, emaste

Differential Revision: https://reviews.llvm.org/D82544

22 months ago[SystemZ/ZOS] Define Endian constants for z/OS.
Kai Nacke [Mon, 15 Jun 2020 11:16:52 +0000 (13:16 +0200)]
[SystemZ/ZOS] Define Endian constants for z/OS.

This is needed to build LLVM on z/OS, as there is no header file
which provides these constants.

Reviewed By: hubert.reinterpretcast

Differential Revision: https://reviews.llvm.org/D82368

22 months ago[Scalarizer] visit{Insert,Extract}ElementInst(): avoid call arg evaluation order...
Roman Lebedev [Mon, 6 Jul 2020 10:42:11 +0000 (13:42 +0300)]
[Scalarizer] visit{Insert,Extract}ElementInst(): avoid call arg evaluation order deps

Compilers may evaluate call arguments in different order,
which would result in different order of IR, which would break the tests.

Spotted thanks to Dmitri Gribenko!

22 months ago[ARM] Add extra extend and trunc costs for cast instructions
David Green [Mon, 6 Jul 2020 10:00:43 +0000 (11:00 +0100)]
[ARM] Add extra extend and trunc costs for cast instructions

This expands the existing extend costs with a few extras for larger
types than legal, which will usually be split under MVE. It also adds
trunk support for the same thing. These should not have a large effect
on many things, but makes the costs explicit and keeps a certain balance
between the trunks and extends.

Differential Revision: https://reviews.llvm.org/D82457

22 months ago[Support] Add path::user_config_directory for $XDG_CONFIG_HOME etc
Sam McCall [Fri, 3 Jul 2020 13:49:36 +0000 (15:49 +0200)]
[Support] Add path::user_config_directory for $XDG_CONFIG_HOME etc

Reviewers: hokein

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83128

22 months ago[Scalarizer] ExtractElement handling w/ variable insert index (PR46524)
Roman Lebedev [Mon, 6 Jul 2020 09:39:16 +0000 (12:39 +0300)]
[Scalarizer] ExtractElement handling w/ variable insert index (PR46524)

Similar to D82961.

Reviewers: bjope, cameron.mcinally, arsenm, jdoerfert

Reviewed By: jdoerfert

Subscribers: arphaman, wdng, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82970

22 months ago[Scalarizer] InsertElement handling w/ variable insert index (PR46524)
Roman Lebedev [Mon, 6 Jul 2020 09:39:16 +0000 (12:39 +0300)]
[Scalarizer] InsertElement handling w/ variable insert index (PR46524)

I'm interested in taking the original C++ input,
for which we currently are stuck with an alloca
and producing roughly the lower IR,
with neither an alloca nor a vector ops:

For that, as intermediate step, i'd to somehow perform scalarization.
As per @arsenmn suggestion, i'm trying to see if scalarizer can help me
avoid writing a bicycle.

I'm not sure if it's really intentional that variable insert is not handled currently.
If it really is, and is supposed to stay that way (?), i guess i could guard it..

See [[ https://bugs.llvm.org/show_bug.cgi?id=46524 | PR46524 ]].

Reviewers: bjope, cameron.mcinally, arsenm, jdoerfert

Reviewed By: jdoerfert

Subscribers: arphaman, uabelho, wdng, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82961

22 months ago[Scalarizer] ExtractElement handling w/ constant extract index
Roman Lebedev [Mon, 6 Jul 2020 09:39:11 +0000 (12:39 +0300)]
[Scalarizer] ExtractElement handling w/ constant extract index

It appears to be better IR-wise to aggressively scalarize it,
rather than relying on gathering it, and leaving it as-is.

Reviewers: jdoerfert, bjope, arsenm, cameron.mcinally

Reviewed By: jdoerfert

Subscribers: arphaman, wdng, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83101

22 months ago[Scalarizer] InsertElement handling w/ constant insert index
Roman Lebedev [Mon, 6 Jul 2020 09:39:06 +0000 (12:39 +0300)]
[Scalarizer] InsertElement handling w/ constant insert index

Summary: As it can be clearly seen from the diff, this results in nicer IR.

Reviewers: jdoerfert, arsenm, bjope, cameron.mcinally

Reviewed By: jdoerfert

Subscribers: arphaman, wdng, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83102

22 months ago[InstCombine] Lower infinite combine loop detection thresholds
Roman Lebedev [Mon, 6 Jul 2020 09:38:41 +0000 (12:38 +0300)]
[InstCombine] Lower infinite combine loop detection thresholds

1000 iteratons is still kinda a lot.
Would it make sense to iteratively lower it, until it becomes `2`,
with some delay inbetween in order to let users actually potentially encounter it?

Reviewers: spatel, nikic, kuhar

Reviewed By: nikic

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83160

22 months agoRevert "Revert "Revert "[libcxx] Put clang::trivial_abi on std::unique_ptr, std:...
Stephan Herhut [Mon, 6 Jul 2020 10:18:17 +0000 (12:18 +0200)]
Revert "Revert "Revert "[libcxx] Put clang::trivial_abi on std::unique_ptr, std::shared_ptr, and std::weak_ptr"""

This reverts commit f706b01a00676ef0e7aefb253316c6418f022fa2.

22 months ago[ARM] Use BaseT::getMemoryOpCost for getMemoryOpCost
David Green [Mon, 6 Jul 2020 07:59:05 +0000 (08:59 +0100)]
[ARM] Use BaseT::getMemoryOpCost for getMemoryOpCost

This alters getMemoryOpCost to use the Base TargetTransformInfo version
that includes some additional checks for whether extending loads are
legal. This will generally have the effect of making <2 x ..> and some
<4 x ..> loads/stores more expensive, which in turn should help favour
larger vector factors.

Notably it alters the cost of a <4 x half>, which with the current
codegen will be expensive if it is not extended.

Differential Revision: https://reviews.llvm.org/D82456

22 months agoFix indentation in FixedPoint.h. NFC.
Bevin Hansson [Wed, 1 Jul 2020 13:28:48 +0000 (15:28 +0200)]
Fix indentation in FixedPoint.h. NFC.

22 months agoFix off by one error in Bitfields
Guillaume Chatelet [Mon, 6 Jul 2020 08:47:58 +0000 (08:47 +0000)]
Fix off by one error in Bitfields

Differential Revision: https://reviews.llvm.org/D83192

22 months agoFix 46594 - Alignment assertion failure in instcombine
Guillaume Chatelet [Mon, 6 Jul 2020 08:44:49 +0000 (08:44 +0000)]
Fix 46594 - Alignment assertion failure in instcombine

22 months ago[lldb/Utility] Merge Scalar::Get(Value)TypeAsCString
Pavel Labath [Mon, 6 Jul 2020 08:32:55 +0000 (10:32 +0200)]
[lldb/Utility] Merge Scalar::Get(Value)TypeAsCString

22 months ago[VE] Correct stack alignment
Kazushi (Jam) Marukawa [Mon, 6 Jul 2020 07:46:52 +0000 (16:46 +0900)]
[VE] Correct stack alignment

Change stack alignment from 64 bits to 128 bits to follow ABI correctly.
And add a regression test for datalayout.

Reviewers: simoll, k-ishizaka

Reviewed By: simoll

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #llvm, #ve, #clang

Differential Revision: https://reviews.llvm.org/D83173

22 months ago[lldb/DWARF] Look for complete array element definitions in other modules
Pavel Labath [Mon, 6 Jul 2020 08:09:13 +0000 (10:09 +0200)]
[lldb/DWARF] Look for complete array element definitions in other modules

This applies the same logic we have for incomplete class bases and
members to array element types.

22 months ago[Coroutines] Warning if return type of coroutine_handle::address is not void*
Chuanqi Xu [Mon, 6 Jul 2020 05:39:29 +0000 (13:39 +0800)]
[Coroutines] Warning if return type of coroutine_handle::address is not void*

User can own a version of coroutine_handle::address() whose return type is not
void* by using template specialization for coroutine_handle<> for some

In this case, the codes may violate the capability with existing async C APIs
that accepted a void* data parameter which was then passed back to the
user-provided callback.

Patch by ChuanqiXu

Differential Revision: https://reviews.llvm.org/D82442

22 months ago[Fuchsia] Set projects and runtimes in the cache file
Petr Hosek [Tue, 9 Jun 2020 22:45:31 +0000 (15:45 -0700)]
[Fuchsia] Set projects and runtimes in the cache file

We make assumptions about what projects and runtimes are enabled
when configuring our toolchain build, so we should enable those in
the cache file as well rather than relying on those being set

Differential Revision: https://reviews.llvm.org/D81514

22 months ago[OpenMP][Tests] Flag compatibility of OpenMP runtime tests with GCC versions
Joachim Protze [Thu, 2 Jul 2020 19:29:02 +0000 (21:29 +0200)]
[OpenMP][Tests] Flag compatibility of OpenMP runtime tests with GCC versions

If the compilation fails, the test is marked as unsupported.
-> This will never change for a specific version of gcc

If the linking fails, the test is marked as expected to fail.
-> This might change as LLVM/OpenMP implements the missing GOMP interface function

Reviewed by: Hahnfeld

Differential Revision: https://reviews.llvm.org/D83077

22 months ago[OpenMP][OMPT] Fix ifdefs for OMPT code
Joachim Protze [Sun, 5 Jul 2020 06:46:31 +0000 (08:46 +0200)]
[OpenMP][OMPT] Fix ifdefs for OMPT code

Fixes build with LIBOMP_OMPT_SUPPORT=off

Reported by: Jason Edson

Reviewed by: Hahnfeld

Differential Revision: https://reviews.llvm.org/D83171

22 months ago[libomptarget][test] Fix text relocations by adding -fPIC
Fangrui Song [Sun, 5 Jul 2020 19:50:31 +0000 (12:50 -0700)]
[libomptarget][test] Fix text relocations by adding -fPIC

22 months ago[SCCP] Add test for range metadata (NFC)
Nikita Popov [Sun, 5 Jul 2020 19:36:01 +0000 (21:36 +0200)]
[SCCP] Add test for range metadata (NFC)

22 months ago[Driver] Pass -gno-column-info instead of -dwarf-column-info
Fangrui Song [Sun, 5 Jul 2020 18:47:02 +0000 (11:47 -0700)]
[Driver] Pass -gno-column-info instead of -dwarf-column-info

Making -g[no-]column-info opt out reduces the length of a typical CC1 command line.
Additionally, in a non-debug compile, we won't see -dwarf-column-info.

22 months agoRevert "Revert "[libcxx] Put clang::trivial_abi on std::unique_ptr, std::shared_ptr...
Vy Nguyen [Sat, 4 Jul 2020 15:41:25 +0000 (11:41 -0400)]
Revert "Revert "[libcxx] Put clang::trivial_abi on std::unique_ptr, std::shared_ptr, and std::weak_ptr""

This reverts commit dc13ac02800220a33828ac3da629f382ca7e308d.

Rolling forward + fix typos and unused variables in tests

    Differential Revision: https://reviews.llvm.org/D82490

22 months ago[ARM] Remove hasSideEffects from FP converts
David Green [Sun, 5 Jul 2020 13:54:12 +0000 (14:54 +0100)]
[ARM] Remove hasSideEffects from FP converts

Whether an instruction is deemed to have side effects in determined by
whether it has a tblgen pattern that emits a single instruction.
Because of the way a lot of the the vcvt instructions are specified
either in dagtodag code or with patterns that emit multiple
instructions, they don't get marked as not having side effects.

This just marks them as not having side effects manually. It can help
especially with instruction scheduling, to not create artificial
barriers, but one of these tests also managed to produce fewer

Differential Revision: https://reviews.llvm.org/D81639

22 months ago[X86][SSE] Add PACKSS/PACKUS style patterns tests
Simon Pilgrim [Sun, 5 Jul 2020 15:17:56 +0000 (16:17 +0100)]
[X86][SSE] Add PACKSS/PACKUS style patterns tests

Similar to the proposed generic code generated by D61129 - there's still some shuffle combining improvements to go before that patch is ready.

22 months ago[clangd] Fix stack-use-after-scope
Benjamin Kramer [Sun, 5 Jul 2020 15:09:08 +0000 (17:09 +0200)]
[clangd] Fix stack-use-after-scope

Found by asan.

22 months ago[llvm] Cast to (void) the unused variable.
Alexander Belyaev [Sun, 5 Jul 2020 10:33:53 +0000 (12:33 +0200)]
[llvm] Cast to (void) the unused variable.

22 months ago[NFC] Clean up braces and anon namespace
Nathan James [Sun, 5 Jul 2020 10:16:40 +0000 (11:16 +0100)]
[NFC] Clean up braces and anon namespace

22 months ago[lldb][NFC] Clarify that spaces can't be in breakpoint names
Raphael Isemann [Sun, 5 Jul 2020 08:54:58 +0000 (10:54 +0200)]
[lldb][NFC] Clarify that spaces can't be in breakpoint names

We already check for spaces but we don't mention it in the error message.

22 months ago[lldb][NFC] Remove an unnecessary cast in SBCommandInterpreter
Raphael Isemann [Sun, 5 Jul 2020 08:54:15 +0000 (10:54 +0200)]
[lldb][NFC] Remove an unnecessary cast in SBCommandInterpreter

22 months ago[OpenMP][Tests] NFC use type macro in printf
Joachim Protze [Sun, 5 Jul 2020 07:16:09 +0000 (09:16 +0200)]
[OpenMP][Tests] NFC use type macro in printf

22 months agoAdd tests for clang -fno-zero-initialized-in-bss and llc -nozero-initialized-in-bss
Fangrui Song [Sun, 5 Jul 2020 06:26:57 +0000 (23:26 -0700)]
Add tests for clang -fno-zero-initialized-in-bss and llc -nozero-initialized-in-bss

And rename the CC1 option.

22 months ago[clang][PowerPC] Enable -fstack-clash-protection option for ppc64
Kai Luo [Sun, 5 Jul 2020 03:40:40 +0000 (03:40 +0000)]
[clang][PowerPC] Enable -fstack-clash-protection option for ppc64

Differential Revision: https://reviews.llvm.org/D81355

22 months ago[llvm-objcopy] Fix crash when removing symbol table at same time as adding a symbol
Georgy Komarov [Wed, 1 Jul 2020 07:15:39 +0000 (10:15 +0300)]
[llvm-objcopy] Fix crash when removing symbol table at same time as adding a symbol

This patch resolves crash that occurs when user wanted to remove all
symbols and add a brand new one using:

llvm-objcopy -R .symtab --add-symbol foo=1234 in.o out.o

Before these changes the symbol table internally being null when adding
new symbols. For now we will regenerate symtab in this case.

This fixes: https://bugs.llvm.org/show_bug.cgi?id=43930

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D82935

22 months ago[WebAssembly] Do not assume br_table range checks will be gt_u
Thomas Lively [Sun, 5 Jul 2020 01:11:24 +0000 (18:11 -0700)]
[WebAssembly] Do not assume br_table range checks will be gt_u

OSS-Fuzz and the Emscripten test suite uncovered some edge cases in
which the range check instruction seemed to be an (i32.const 0) or
other unexpected instruction, triggering an assertion. Unfortunately
the reproducers are rather complicated, so they don't make good unit
tests. This commit removes the bad assertion and conservatively
optimizes range checks only when the range check instruction is

Differential Revision: https://reviews.llvm.org/D83169

22 months agoFix two -Wrange-loop-analysis warnings that Xcode 12 beta incorrectly complains about
Nico Weber [Sun, 5 Jul 2020 00:41:27 +0000 (20:41 -0400)]
Fix two -Wrange-loop-analysis warnings that Xcode 12 beta incorrectly complains about

Xcode 12 beta apparently has the Wrange-loop-analysis changes from
half a year ago, but it seems to lack https://reviews.llvm.org/D72212
which made the warning usable again.

22 months ago[gn build] fix link of libclang_rt.asan_osx_dynamic.dylib if command line tools are...
Nico Weber [Sun, 5 Jul 2020 00:26:39 +0000 (20:26 -0400)]
[gn build] fix link of libclang_rt.asan_osx_dynamic.dylib if command line tools are not installed

22 months ago[gn build] make stage2_unix_toolchain set clang_base_path
Nico Weber [Fri, 3 Jul 2020 17:52:18 +0000 (13:52 -0400)]
[gn build] make stage2_unix_toolchain set clang_base_path

This fixes the build of compiler-rt on macOS when _not_ using
clang_base_path in args.gn: Xcode clang knows where to find the
SDK, but regular clang doesn't and needs a -isysroot parameter.
We correctly add that parameter when clang_base_path is set,
but else we omit it. If clang_base_path was not set, we also
didn't add the flag for stage2_unix_toolchain() when we build
compiler-rt with just-built clang.

Make stage2_unix_toolchain() use clang_base_path instead of setting
cc / cxx. It's less code, and it gets things like this right.

22 months ago[llvm-reduce] extractGVsFromModule(): don't crash when deleting instr twice
Roman Lebedev [Sat, 4 Jul 2020 22:01:46 +0000 (01:01 +0300)]
[llvm-reduce] extractGVsFromModule(): don't crash when deleting instr twice

As it can be seen in newly-added (previously-crashing) test-case,
there can be a situation where multiple GV's are used in instr,
and we would schedule the same instruction to be deleted several times,
crashing when trying to delete it the second time.

We could either store WeakVH (done here), or use something set-like.
I think using WeakVH is prevalent in these cases elsewhere.

22 months ago[llvm-reduce] extractArgumentsFromModule(): don't crash when deleting instr twice
Roman Lebedev [Sat, 4 Jul 2020 21:48:05 +0000 (00:48 +0300)]
[llvm-reduce] extractArgumentsFromModule(): don't crash when deleting instr twice

As it can be seen in newly-added (previously-crashing) test-case,
there can be a situation where multiple arguments are used in instr,
and we would schedule the same instruction to be deleted several times,
crashing when trying to delete it the second time.

We could either store WeakVH (done here), or use something set-like.
I think using WeakVH is prevalent in these cases elsewhere.

22 months ago[DAGCombiner] visitSIGN_EXTEND_INREG should fold sext_vector_inreg(undef) to 0 not...
Craig Topper [Sat, 4 Jul 2020 21:35:49 +0000 (14:35 -0700)]
[DAGCombiner] visitSIGN_EXTEND_INREG should fold sext_vector_inreg(undef) to 0 not undef.

We need to ensure that the sign bits of the result all match
so we can't fold to undef.

Similar to PR46585.

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D83163