22 months agoChange /build to /build* in top-level .gitignore.
Douglas Yung [Fri, 2 Aug 2019 02:14:08 +0000 (02:14 +0000)]
Change /build to /build* in top-level .gitignore.

Reviewers: beanz

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

llvm-svn: 367641

22 months agoTemporarily revert "Changes to improve CodeView debug info type record inline comments"
Eric Christopher [Fri, 2 Aug 2019 01:05:47 +0000 (01:05 +0000)]
Temporarily revert "Changes to improve CodeView debug info type record inline comments"
due to a sanitizer failure.

This reverts commit 367623.

llvm-svn: 367640

22 months agoUpdate Compiler.h check for MSVC
JF Bastien [Fri, 2 Aug 2019 00:50:12 +0000 (00:50 +0000)]
Update Compiler.h check for MSVC
We require at least MSVC 2017, but I forgot to update Compiler.h when I updated the MSVC requirement.

llvm-svn: 367639

22 months agoFormat OptionEnumValueElement (NFC)
Jonas Devlieghere [Fri, 2 Aug 2019 00:18:44 +0000 (00:18 +0000)]
Format OptionEnumValueElement (NFC)

Reformat OptionEnumValueElement to make it easier to distinguish between
its fields. This also removes the need to disable clang-format for these

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

llvm-svn: 367638

22 months agoFix up an unused variable warning caused by TRI->isVirtualRegister() -> Register...
Daniel Sanders [Fri, 2 Aug 2019 00:17:48 +0000 (00:17 +0000)]
Fix up an unused variable warning caused by TRI->isVirtualRegister() -> Register::isVirtualRegister()

llvm-svn: 367637

22 months agoPrevent vregs leaking into the MC layer via TargetRegisterClass::contains()
Daniel Sanders [Thu, 1 Aug 2019 23:44:42 +0000 (23:44 +0000)]
Prevent vregs leaking into the MC layer via TargetRegisterClass::contains()

The MC layer doesn't expect to deal with vregs but
TargetRegisterClass::contains() forwards into MCRegisterClass::contains()
and this can cause vregs to turn up in the MC layer APIs. Add guards
against this to prevent this becoming a problem as we replace unsigned
with a new MCRegister object for improved type safety.

Reviewers: arsenm

Subscribers: wdng, llvm-commits

Tags: #llvm

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

llvm-svn: 367636

22 months ago[dsymutil] Fix heap-use-after-free related to the LinkOptions.
Jonas Devlieghere [Thu, 1 Aug 2019 23:37:33 +0000 (23:37 +0000)]
[dsymutil] Fix heap-use-after-free related to the LinkOptions.

In r367348, I changed dsymutil to pass the LinkOptions by value isntead
of by const reference. However, the options were still captured by
reference in the LinkLambda. This patch fixes that by passing them in by

llvm-svn: 367635

22 months ago[Tests] Autogen a bunch of Reassociate tests for ease of update
Philip Reames [Thu, 1 Aug 2019 23:30:32 +0000 (23:30 +0000)]
[Tests] Autogen a bunch of Reassociate tests for ease of update

llvm-svn: 367634

22 months agoFinish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register...
Daniel Sanders [Thu, 1 Aug 2019 23:27:28 +0000 (23:27 +0000)]
Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC

llvm-svn: 367633

22 months ago[DirectoryWatcher] Relax assumption to prevent test flakiness
Jan Korous [Thu, 1 Aug 2019 23:24:30 +0000 (23:24 +0000)]
[DirectoryWatcher] Relax assumption to prevent test flakiness

llvm-svn: 367632

22 months agoRefactor deque to centralize handling of spare blocks.
Eric Fiselier [Thu, 1 Aug 2019 23:11:18 +0000 (23:11 +0000)]
Refactor deque to centralize handling of spare blocks.

I have upcoming changes that modify how deque handles spare blocks.
This cleanup is intended to make those changes easier to review
and understand. This patch should have NFC.

llvm-svn: 367631

22 months ago[PGO] Add PGO support at -O0 in the experimental new pass manager
Rong Xu [Thu, 1 Aug 2019 22:36:34 +0000 (22:36 +0000)]
[PGO] Add PGO support at -O0 in the experimental new pass manager

Add PGO support at -O0 in the experimental new pass manager to sync the
behavior of the legacy pass manager.

Also change the test of gcc-flag-compatibility.c for more complete test:
(1) change the match string to "profc" and "profd" to ensure the
    instrumentation is happening.
(2) add IR format proftext so that PGO use compilation is tested.

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

llvm-svn: 367628

22 months agoRevert r366980: "[lit] Protect full test suite from FILECHECK_OPTS"
Joel E. Denny [Thu, 1 Aug 2019 22:26:51 +0000 (22:26 +0000)]
Revert r366980: "[lit] Protect full test suite from FILECHECK_OPTS"

Windows bots are broken.  See recent D65335 and D65156 comments.

llvm-svn: 367627

22 months agoRevert r367123: "[llvm] [lit/tests] Replace 'env -u' with more portable construct"
Joel E. Denny [Thu, 1 Aug 2019 22:26:37 +0000 (22:26 +0000)]
Revert r367123: "[llvm] [lit/tests] Replace 'env -u' with more portable construct"

Must be reverted in order to revert r366980, which breaks windows
bots.  See recent D65335 and D65156 comments.

llvm-svn: 367626

22 months ago[NFC] Remove extra __has_feature
JF Bastien [Thu, 1 Aug 2019 22:19:53 +0000 (22:19 +0000)]
[NFC] Remove extra __has_feature

It's already in Compiler.h

llvm-svn: 367625

22 months agoRelax load store vectorizer pointer strip checks
Stanislav Mekhanoshin [Thu, 1 Aug 2019 22:18:56 +0000 (22:18 +0000)]
Relax load store vectorizer pointer strip checks

The previous change to fix crash in the vectorizer introduced
performance regressions. The condition to preserve pointer
address space during the search is too tight, we only need to
match the size.

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

llvm-svn: 367624

22 months agoChanges to improve CodeView debug info type record inline comments
Nilanjana Basu [Thu, 1 Aug 2019 22:05:14 +0000 (22:05 +0000)]
Changes to improve CodeView debug info type record inline comments

Signed-off-by: Nilanjana Basu <nilanjana.basu87@gmail.com>
llvm-svn: 367623

22 months agoFix Windows branch of FileManagerTest changes
Harlan Haskins [Thu, 1 Aug 2019 21:58:56 +0000 (21:58 +0000)]
Fix Windows branch of FileManagerTest changes

llvm-svn: 367622

22 months agoFix use-after-move in ClangBasicTests
Harlan Haskins [Thu, 1 Aug 2019 21:50:16 +0000 (21:50 +0000)]
Fix use-after-move in ClangBasicTests

llvm-svn: 367620

22 months ago[WebAssembly] Fixed relocation errors having no location.
Wouter van Oortmerssen [Thu, 1 Aug 2019 21:34:54 +0000 (21:34 +0000)]
[WebAssembly] Fixed relocation errors having no location.

Fixes: https://bugs.llvm.org/show_bug.cgi?id=42441

Used to print:

<unknown>:0: error: Cannot represent a difference across sections

(the location was null).

Now prints:

err.s:20:3: error: Cannot represent a difference across sections
  i32.const foo-bar

Note: I looked at adding a test for this, but I don't think it is
worth it. We're not testing error formatting in the Wasm backend :)

Reviewers: sbc100, jgravelle-google

Subscribers: dschuff, aheejin, sunfish, llvm-commits

Tags: #llvm

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

llvm-svn: 367619

22 months ago[clang] Change FileManager to use llvm::ErrorOr instead of null on failure
Harlan Haskins [Thu, 1 Aug 2019 21:32:04 +0000 (21:32 +0000)]
[clang] Change FileManager to use llvm::ErrorOr instead of null on failure

Currently, clang's FileManager uses NULL as an indicator that a particular file
did not exist, but would not propagate errors like permission issues. Instead,
teach FileManager to use llvm::ErrorOr internally and return rich errors for

Reviewers: arphaman, bruno, martong, shafik

Subscribers: nemanjai, kbarton, MaskRay, jkorous, dexonsmith, kadircet, jsji, cfe-commits, lldb-commits

Tags: #clang, #lldb

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

llvm-svn: 367618

22 months ago[clang-tools-extra] Adopt FileManager's error-returning APIs
Harlan Haskins [Thu, 1 Aug 2019 21:32:01 +0000 (21:32 +0000)]
[clang-tools-extra] Adopt FileManager's error-returning APIs

The FileManager has been updated to return llvm::ErrorOr from getFile
and getDirectory, this commit updates all the callers of those APIs from

llvm-svn: 367617

22 months ago[clang] Adopt new FileManager error-returning APIs
Harlan Haskins [Thu, 1 Aug 2019 21:31:56 +0000 (21:31 +0000)]
[clang] Adopt new FileManager error-returning APIs

Update the callers of FileManager::getFile and FileManager::getDirectory to handle the new llvm::ErrorOr-returning methods.

Signed-off-by: Harlan Haskins <harlan@apple.com>
llvm-svn: 367616

22 months ago[clang] Adopt llvm::ErrorOr in FileManager methods
Harlan Haskins [Thu, 1 Aug 2019 21:31:49 +0000 (21:31 +0000)]
[clang] Adopt llvm::ErrorOr in FileManager methods

Previously, the FileManager would use NULL returns to signify whether a file existed, but that doesn’t cover permissions issues or anything else that might occur while trying to stat or read a file. Instead, convert getFile and getDirectory into returning llvm::ErrorOr

Signed-off-by: Harlan Haskins <harlan@apple.com>
llvm-svn: 367615

22 months agoMove register namespacing definitions from TargetRegisterInfo to Register
Daniel Sanders [Thu, 1 Aug 2019 21:18:34 +0000 (21:18 +0000)]
Move register namespacing definitions from TargetRegisterInfo to Register

The namespacing in Register is currently slightly wrong as there is a
(rarely used) stack slot namespace too. The namespacing doesn't use
anything from the Target so we can move the definition from
TargetRegisterInfo to Register to keep it in one place

Note: To keep the patch reasonably sized for review I've left stub
functions in the original TargetRegisterInfo. We should update all the uses

Reviewers: arsenm, bogner, aditya_nandakumar, volkan

Subscribers: wdng, llvm-commits

Tags: #llvm

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

llvm-svn: 367614

22 months ago[OpenMP] Fix declare target link implementation
Gheorghe-Teodor Bercea [Thu, 1 Aug 2019 21:15:58 +0000 (21:15 +0000)]
[OpenMP] Fix declare target link implementation

This patch fixes the case where variables in different compilation units or the same compilation unit are under the declare target link clause AND have the same name.
This also fixes the name clash error that occurs when unified memory is activated.
The changes in this patch include:
- Pointers to internal variables are given unique names.
- Externally visible variables are given the same name as before.
- All pointer variables (external or internal) are weakly linked.

Reviewers: ABataev, jdoerfert, caomhin

Reviewed By: ABataev

Subscribers: lebedev.ri, guansong, cfe-commits

Tags: #clang

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

llvm-svn: 367613

22 months ago[AArch64][x86] adjust tests with shift-add-shift; NFC
Sanjay Patel [Thu, 1 Aug 2019 21:08:08 +0000 (21:08 +0000)]
[AArch64][x86] adjust tests with shift-add-shift; NFC

Prevent folding away the math completely.

llvm-svn: 367612

22 months ago[analyzer] StackFrameContext: Add NodeBuilderContext::blockCount() to its profile
Csaba Dabis [Thu, 1 Aug 2019 20:41:13 +0000 (20:41 +0000)]
[analyzer] StackFrameContext: Add NodeBuilderContext::blockCount() to its profile

It allows discriminating between stack frames of the same call that is
called multiple times in a loop.

Thanks to Artem Dergachev for the great idea!

Reviewed By: NoQ

Tags: #clang

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

llvm-svn: 367608

22 months ago[AArch64][x86] add tests for shift-add-shift; NFC (PR42644)
Sanjay Patel [Thu, 1 Aug 2019 20:32:27 +0000 (20:32 +0000)]
[AArch64][x86] add tests for shift-add-shift; NFC (PR42644)

llvm-svn: 367607

22 months agoTeach malloc_allocator how to count bytes
Eric Fiselier [Thu, 1 Aug 2019 19:52:46 +0000 (19:52 +0000)]
Teach malloc_allocator how to count bytes

llvm-svn: 367606

22 months agoChange default bucket count in hash_set/hash_map.
Eric Fiselier [Thu, 1 Aug 2019 19:48:29 +0000 (19:48 +0000)]
Change default bucket count in hash_set/hash_map.

Previously these types rehashed to a table of 193 elements
upon construction. But this is non-ideal, first because default
constructors should not allocate unless necessary, and second
because 193 is big and can waste a bunch of memory.

This number had previously been chosen to match GCC's implementation.

llvm-svn: 367605

22 months agoGlobalISel: Lower scalarizing unmerge of a vector to shifts
Matt Arsenault [Thu, 1 Aug 2019 19:10:05 +0000 (19:10 +0000)]
GlobalISel: Lower scalarizing unmerge of a vector to shifts

AMDGPU sometimes has legal s16 and <2 x s16> operations, but all
registers are really 32-bit. An unmerge destination really should ben
widened to a 32-bit register. If widening a scalarizing vector with a
target size that matches the vector size, bitcast to integer and
extract the relevant bits with shifts.

I'm not sure if this is the right place for this. This could arguably
be part of widenScalar for the result. I also have a growing feeling
that we're missing a bitcast legalize action.

llvm-svn: 367604

22 months agoFollow up of rL367592, fix the build
Sjoerd Meijer [Thu, 1 Aug 2019 18:54:29 +0000 (18:54 +0000)]
Follow up of rL367592, fix the build

Some buildbots complained about:
error: default label in switch which covers all enumeration values

llvm-svn: 367603

22 months agoTest linux only for absolute paths in the -fuse-ld option
Yuanfang Chen [Thu, 1 Aug 2019 18:49:59 +0000 (18:49 +0000)]
Test linux only for absolute paths in the -fuse-ld option

Some target do not use this option and may emit a error message for
using it.

llvm-svn: 367602

22 months ago[X86] In decomposeMulByConstant, legalize the VT before querying whether the multiply...
Craig Topper [Thu, 1 Aug 2019 18:49:07 +0000 (18:49 +0000)]
[X86] In decomposeMulByConstant, legalize the VT before querying whether the multiply is legal

If a type is larger than a legal type and needs to be split, we would previously allow the multiply to be decomposed even if the split multiply is legal. Since the shift + add/sub code would also need to be split, its not any better to decompose it.

This patch figures out what type the mul will eventually be legalized to and then uses that type for the query. I tried just returning false illegal types and letting them get handled after type legalization, but then we can't recognize and i64 constant splat on 32-bit targets since will be destroyed by type legalization. We could special case vectors of i64 to avoid that...

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

llvm-svn: 367601

22 months ago[X86] Add some test cases for 512-bit truncate to 128-bits with min-legal-vector...
Craig Topper [Thu, 1 Aug 2019 18:48:57 +0000 (18:48 +0000)]
[X86] Add some test cases for 512-bit truncate to 128-bits with min-legal-vector-width=0 and prefer-vector-width=256.

We currently split the 512 type, truncate each half to 128 bits,
concatenate them, and then truncate again. Probably better to
truncate each half to 64-bits and then concat the results
using vpunpcklqdq.

llvm-svn: 367600

22 months ago[COFF] Fix wholearchive with thin archives
Martin Storsjo [Thu, 1 Aug 2019 18:47:27 +0000 (18:47 +0000)]
[COFF] Fix wholearchive with thin archives

The Archive object created when loading an archive specified with
wholearchive got cleaned up immediately, when the owning std::unique_ptr
went out of scope, even if persisted StringRefs pointed to memory that
belonged to the archive, which no longer was mapped in memory.

This hasn't been an issue with regular (as opposed to thin) archives,
as references to the member objects has kept the mapping for the whole
archive file alive - but with thin archives, all such references point
to other files.

Add the std::unique_ptr to the arena allocator, to retain it as long
as necessary.

This fixes (the last issue raised in) PR42388.

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

llvm-svn: 367599

22 months agoAMDGPU: Remove v0 workaround for DS_GWS_* instructions
Matt Arsenault [Thu, 1 Aug 2019 18:41:32 +0000 (18:41 +0000)]
AMDGPU: Remove v0 workaround for DS_GWS_* instructions

Any register should work for the src field since r366067, since the
used value is not pulled from the expected encoding field.

llvm-svn: 367598

22 months agoCodeGen: Allow virtual registers in bundles
Matt Arsenault [Thu, 1 Aug 2019 18:41:28 +0000 (18:41 +0000)]
CodeGen: Allow virtual registers in bundles

The note in the documentation suggests this restriction is a compile
time optimization for architectures that make heavy use of
bundling. Allowing virtual registers in a bundle is useful for some
(non-R600) AMDGPU use cases and are infrequent enough to matter.

A more common AMDGPU use case has already been using virtual registers
in bundles since r333691, although never calling finalizeBundle on
them and manually creating the use/def list on the BUNDLE
instruction. This is also relatively infrequent, and only happens for
consecutive sequences of some load/store types.

llvm-svn: 367597

22 months ago[SimplifyCFG] Mark missed Changed to true.
Alina Sbirlea [Thu, 1 Aug 2019 18:37:34 +0000 (18:37 +0000)]
[SimplifyCFG] Mark missed Changed to true.

DominatorTree is invalid after SimplifyCFG because of a missed `Changed = true` when simplifying a branch condition and removing an edge.
Resolves PR42272.

Reviewers: zhizhouy, manojgupta

Subscribers: jlebar, sanjoy.google, llvm-commits

Tags: #llvm

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

llvm-svn: 367596

22 months agoFix `skipIfSanitized` decorator on macOS
Jonas Devlieghere [Thu, 1 Aug 2019 18:35:40 +0000 (18:35 +0000)]
Fix `skipIfSanitized` decorator on macOS

For security reasons, DYLD_INSERT_LIBRARIES is not propagated to a child
process. This breaks the skipIfSanitized decorator, which checks for the
environment variable being set. Instead, always set the ASAN_OPTIONS and
make the decorator check for that.

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

llvm-svn: 367595

22 months ago[MemorySSA] Set LoopSimplify to preserve MemorySSA in the NPM, if analysis exists.
Alina Sbirlea [Thu, 1 Aug 2019 18:28:28 +0000 (18:28 +0000)]
[MemorySSA] Set LoopSimplify to preserve MemorySSA in the NPM, if analysis exists.

LoopSimplify is preserved in the legacy pass manager, but not in the new pass manager.
Update LoopSimplify to preserve MemorySSA conditionally when the analysis is available (same behavior as the legacy pass manager).

Reviewers: chandlerc

Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits

Tags: #llvm

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

llvm-svn: 367594

22 months agoAMDGPU: Use tablegen pattern for sendmsg intrinsics
Matt Arsenault [Thu, 1 Aug 2019 18:27:11 +0000 (18:27 +0000)]
AMDGPU: Use tablegen pattern for sendmsg intrinsics

Since this now emits a direct copy to m0, SIFixSGPRCopies has to
handle a physical register.

llvm-svn: 367593

22 months ago[LV] Tail-Loop Folding
Sjoerd Meijer [Thu, 1 Aug 2019 18:21:44 +0000 (18:21 +0000)]
[LV] Tail-Loop Folding

This allows folding of the scalar epilogue loop (the tail) into the main
vectorised loop body when the loop is annotated with a "vector predicate"
metadata hint. To fold the tail, instructions need to be predicated (masked),
enabling/disabling lanes for the remainder iterations.

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

llvm-svn: 367592

22 months agoGlobalISel: Fix widenScalar for G_MERGE_VALUES to pointer
Matt Arsenault [Thu, 1 Aug 2019 18:13:16 +0000 (18:13 +0000)]
GlobalISel: Fix widenScalar for G_MERGE_VALUES to pointer

AMDGPU testcase isn't broken now, but will be in a future patch
without this.

llvm-svn: 367591

22 months ago[WebAssembly] Assembler/InstPrinter: support call_indirect type index.
Wouter van Oortmerssen [Thu, 1 Aug 2019 18:08:26 +0000 (18:08 +0000)]
[WebAssembly] Assembler/InstPrinter: support call_indirect type index.

A TYPE_INDEX operand (as used by call_indirect) used to be represented
by the InstPrinter as a symbol (e.g. .Ltype_index0@TYPE_INDEX) which
was a bit of a mismatch with the WasmObjectWriter which expects an
unnamed symbol, to receive the signature from and then turn into a

There was really no good way to round-trip this information. An earlier
version of this patch tried to attach the signature information using
a .functype, but that ran into trouble when the symbol was re-emitted
without a name. Removing the name was a giant hack also.

The current version changes the assembly syntax to have an inline
signature spec for TYPEINDEX operands that is always unnamed, which
is much more elegant both in syntax and in implementation (as now the
assembler is able to follow the same path as the regular backend)

Reviewers: sbc100, dschuff, aheejin, jgravelle-google, sunfish, tlively

Subscribers: arphaman, llvm-commits

Tags: #llvm

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

llvm-svn: 367590

22 months agoRemove a few straggler ".cc"s in compiler-rt/lib
Nico Weber [Thu, 1 Aug 2019 17:53:25 +0000 (17:53 +0000)]
Remove a few straggler ".cc"s in compiler-rt/lib

llvm-svn: 367589

22 months ago[TargetLowering] SimplifyMultipleUseDemandedBits - Add ISD::INSERT_VECTOR_ELT handling
Simon Pilgrim [Thu, 1 Aug 2019 17:46:44 +0000 (17:46 +0000)]
[TargetLowering] SimplifyMultipleUseDemandedBits - Add ISD::INSERT_VECTOR_ELT handling

Allow us to peek through vector insertions to avoid dependencies on entire insertion chains.

llvm-svn: 367588

22 months agotry to fix bots more after r367562
Nico Weber [Thu, 1 Aug 2019 17:31:49 +0000 (17:31 +0000)]
try to fix bots more after r367562

llvm-svn: 367587

22 months agotry to fix bots after r367562
Nico Weber [Thu, 1 Aug 2019 17:30:41 +0000 (17:30 +0000)]
try to fix bots after r367562

llvm-svn: 367586

22 months agoFix spacing of LLVM_USE_PERF in CMake.rst that caused it to be tabbed in funny
Erich Keane [Thu, 1 Aug 2019 17:30:25 +0000 (17:30 +0000)]
Fix spacing of LLVM_USE_PERF in CMake.rst that caused it to be tabbed in funny

llvm-svn: 367585

22 months agoDocument LLVM_ENABLE_LIBCXX in CMake.rst
Erich Keane [Thu, 1 Aug 2019 17:30:21 +0000 (17:30 +0000)]
Document LLVM_ENABLE_LIBCXX in CMake.rst

llvm-svn: 367584

22 months agoMove macho-data-in-code.ll to X86/macho-data-in-code.ll (to only run when x86 is...
Kuba Mracek [Thu, 1 Aug 2019 16:52:45 +0000 (16:52 +0000)]
Move macho-data-in-code.ll to X86/macho-data-in-code.ll (to only run when x86 is a valid target).

llvm-svn: 367583

22 months ago[X86][SSE] Add PEXTR*(PINSR*(v, s, c), c) -> s combine.
Simon Pilgrim [Thu, 1 Aug 2019 16:38:39 +0000 (16:38 +0000)]
[X86][SSE] Add PEXTR*(PINSR*(v, s, c), c) -> s combine.

We should probably extend this to cover bitcasts as well to help other cases in promote-vec3.ll.

llvm-svn: 367582

22 months ago[Attributor][FIX] Indicate a missing update change
Johannes Doerfert [Thu, 1 Aug 2019 16:21:54 +0000 (16:21 +0000)]
[Attributor][FIX] Indicate a missing update change

User of AAReturnedValues need to know if HasOverdefinedReturnedCalls
changed from false to true as it will impact the result of the return
value traversal (calls are not ignored anymore).

This will be tested with the tests in D59978.

llvm-svn: 367581

22 months ago[mips] Fix lowering load/store instruction in PIC case
Simon Atanasyan [Thu, 1 Aug 2019 16:04:29 +0000 (16:04 +0000)]
[mips] Fix lowering load/store instruction in PIC case

If an operand of the `lw/sw` instructions is a symbol, these instructions
incorrectly lowered using not-position-independent chain of commands.
For PIC code we should use `lw/addiu` instructions with the `R_MIPS_GOT16`
and `R_MIPS_LO16` relocations respectively. Instead of that LLVM generates
position dependent code with the `R_MIPS_HI16` and `R_MIPS_LO16`

This patch provides a fix for the bug by handling PIC case separately in
the `MipsAsmParser::expandMemInst`. The main idea is to generate a chain
of PIC instructions to load a symbol address into a register and then
load the address content.

The fix is not optimal and does not fix all PIC-related problems. This
is a task for subsequent patches.

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

llvm-svn: 367580

22 months ago[InstCombine] add tests with 'ne' predicates; NFC
Sanjay Patel [Thu, 1 Aug 2019 16:04:12 +0000 (16:04 +0000)]
[InstCombine] add tests with 'ne' predicates; NFC

More coverage for the proposal in D65576.

llvm-svn: 367579

22 months ago[llvm-objdump] Fix jumptable detection when disassembling Mach-O binaries
Kuba Mracek [Thu, 1 Aug 2019 15:51:14 +0000 (15:51 +0000)]
[llvm-objdump] Fix jumptable detection when disassembling Mach-O binaries

- Add LC_SEGMENT_64 handling in getSectionsAndSymbols to be able to find the base segment address from 64-bit Mach-O binaries.
- Add "data in code" detection into the !symbolTableWorked case, extract it into a separate function.
- Fix uninitialized variable usage on BaseSegmentAddress (initialize to 0).
- Add test.

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

llvm-svn: 367578

22 months ago[InstCombine] add test with swapped select operands; NFC
Sanjay Patel [Thu, 1 Aug 2019 15:32:10 +0000 (15:32 +0000)]
[InstCombine] add test with swapped select operands; NFC

More coverage for the proposal in D65576.

llvm-svn: 367577

22 months ago[IR] Add getArg() method to Function class
Teresa Johnson [Thu, 1 Aug 2019 15:31:40 +0000 (15:31 +0000)]
[IR] Add getArg() method to Function class

Adds a method which, when called with function.getArg(i), returns an
Argument* to the i'th argument.

Patch by Henry Wildermuth

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

llvm-svn: 367576

22 months ago[Parser] Use special definition for pragma annotations
Serge Pavlov [Thu, 1 Aug 2019 15:15:10 +0000 (15:15 +0000)]
[Parser] Use special definition for pragma annotations

Previously pragma annotation tokens were described as any other
annotations in TokenKinds.def. This change introduces special macro
PRAGMA_ANNOTATION for the pragma descriptions. It allows implementing
checks that deal with pragma annotations only.

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

llvm-svn: 367575

22 months agoRename two clang tests from .cc to .cpp.
Nico Weber [Thu, 1 Aug 2019 15:06:57 +0000 (15:06 +0000)]
Rename two clang tests from .cc to .cpp.

clang/test/lit.cfg.py doesn't list .cc as test extension, so these
tests never ran.

Tweak one of the two tests to actually pass, now that it runs.
(The other one was already passing.)

llvm-svn: 367574

22 months agoFix TestThreadSpecificBreakpoint on Windows
Adrian McCarthy [Thu, 1 Aug 2019 14:49:54 +0000 (14:49 +0000)]
Fix TestThreadSpecificBreakpoint on Windows

This test was frequently hanging on Windows, causing a timeout after
10 minutes.  The short delay (100 microsecond) in the sample program
could cause a deadlock in the Windows thread pool, as I've explained
in the test program's comments.

Now that it doesn't hang, it passes reliably, so I've removed the
Windows-specific XFAIL.

I've tried to clarify the comments in TestThreadSpecificGBreakpoint.py
by eliminating some redundancy and typos, and I simplified away a
couple unnecessary assignments.

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

llvm-svn: 367573

22 months agocompiler-rt: Call a generated c++ file in hwasan .cpp instead of .cc
Nico Weber [Thu, 1 Aug 2019 14:48:16 +0000 (14:48 +0000)]
compiler-rt: Call a generated c++ file in hwasan .cpp instead of .cc

llvm-svn: 367572

22 months ago[X86][SSE] SimplifyMultipleUseDemandedBits - Add PEXTR/PINSR B+W handling
Simon Pilgrim [Thu, 1 Aug 2019 14:46:03 +0000 (14:46 +0000)]
[X86][SSE] SimplifyMultipleUseDemandedBits - Add PEXTR/PINSR B+W handling

This adds SimplifyMultipleUseDemandedBitsForTargetNode X86 support and uses it to allow us to peek through vector insertions to avoid dependencies on entire insertion chains.

llvm-svn: 367570

22 months agocompiler-rt: Rename .cc file in lib/scudo/standalone/tests to .cpp
Nico Weber [Thu, 1 Aug 2019 14:38:49 +0000 (14:38 +0000)]
compiler-rt: Rename .cc file in lib/scudo/standalone/tests to .cpp

Like r367463, but for scudo/standalone/tests.

With this, all files in compiler-rt/lib have extension cpp.

llvm-svn: 367569

22 months agocompiler-rt: Rename .cc file in lib/scudo/standalone to .cpp
Nico Weber [Thu, 1 Aug 2019 14:36:38 +0000 (14:36 +0000)]
compiler-rt: Rename .cc file in lib/scudo/standalone to .cpp

Like r367463, but for scudo/standalone.

llvm-svn: 367568

22 months agocompiler-rt: Rename .cc file in lib/tsan/{benchmarks,dd,go} to .cpp
Nico Weber [Thu, 1 Aug 2019 14:30:49 +0000 (14:30 +0000)]
compiler-rt: Rename .cc file in lib/tsan/{benchmarks,dd,go} to .cpp

Like r367463, but for tsan/{benchmarks,dd,go}.

The files benchmarks aren't referenced in the build anywhere and where added
in 2012 with the comment "no Makefiles yet".

llvm-svn: 367567

22 months agocompiler-rt: Rename .cc file in lib/tsan/tests/{rtl,unit} to .cpp
Nico Weber [Thu, 1 Aug 2019 14:26:37 +0000 (14:26 +0000)]
compiler-rt: Rename .cc file in lib/tsan/tests/{rtl,unit} to .cpp

Like r367463, but for tsan/tests/{rtl,unit}.

llvm-svn: 367566

22 months agoAdd support for openSUSE RISC-V triple
Sam Elliott [Thu, 1 Aug 2019 14:23:56 +0000 (14:23 +0000)]
Add support for openSUSE RISC-V triple

Reviewers: asb

Reviewed By: asb

Subscribers: lenary, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, zzheng, edward-jones, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, lebedev.ri, kito-cheng, shiva0217, rogfer01, dexonsmith, rkruppe, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

Patch by Andreas Schwab (schwab)

llvm-svn: 367565

22 months agocompiler-rt: Rename .cc file in lib/tsan/rtl to .cpp
Nico Weber [Thu, 1 Aug 2019 14:22:42 +0000 (14:22 +0000)]
compiler-rt: Rename .cc file in lib/tsan/rtl to .cpp

Like r367463, but for tsan/rtl.

llvm-svn: 367564

22 months agocompiler-rt: Rename .cc file in lib/msan/tests to .cpp
Nico Weber [Thu, 1 Aug 2019 14:09:37 +0000 (14:09 +0000)]
compiler-rt: Rename .cc file in lib/msan/tests to .cpp

Like r367463, but for msan/tests.

llvm-svn: 367563

22 months agocompiler-rt: Rename .cc file in lib/msan to .cpp
Nico Weber [Thu, 1 Aug 2019 14:08:18 +0000 (14:08 +0000)]
compiler-rt: Rename .cc file in lib/msan to .cpp

Like r367463, but for msan.

llvm-svn: 367562

22 months agocompiler-rt: Rename .cc file in lib/lsan to .cpp
Nico Weber [Thu, 1 Aug 2019 14:01:30 +0000 (14:01 +0000)]
compiler-rt: Rename .cc file in lib/lsan to .cpp

Like r367463, but for lsan.

llvm-svn: 367561

22 months agocompiler-rt: Rename .cc file in lib/{interception/tests,safestack} to .cpp
Nico Weber [Thu, 1 Aug 2019 13:56:52 +0000 (13:56 +0000)]
compiler-rt: Rename .cc file in lib/{interception/tests,safestack} to .cpp

Like r367463, but for interception/tests and safestack.

llvm-svn: 367560

22 months agocompiler-rt: Rename .cc file in lib/asan/tests to .cpp
Nico Weber [Thu, 1 Aug 2019 13:48:31 +0000 (13:48 +0000)]
compiler-rt: Rename .cc file in lib/asan/tests to .cpp

Like r367463, but for asan/tests

llvm-svn: 367559

22 months agocompiler-rt: Rename .cc file in lib/asan to .cpp
Nico Weber [Thu, 1 Aug 2019 13:43:28 +0000 (13:43 +0000)]
compiler-rt: Rename .cc file in lib/asan to .cpp

Like r367463, but for asan.

llvm-svn: 367558

22 months ago[RISCV] Add FreeBSD targets
Sam Elliott [Thu, 1 Aug 2019 13:14:30 +0000 (13:14 +0000)]
[RISCV] Add FreeBSD targets

Reviewers: asb

Reviewed By: asb

Subscribers: simoncook, s.egerton, lenary, psnobl, benna, mhorne, emaste, kito-cheng, shiva0217, rogfer01, rkruppe, cfe-commits

Tags: #clang

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

Patch by James Clarke (jrtc27)

llvm-svn: 367557

22 months ago[X86] EltsFromConsecutiveLoads - don't attempt to merge volatile loads (PR42846)
Simon Pilgrim [Thu, 1 Aug 2019 13:13:18 +0000 (13:13 +0000)]
[X86] EltsFromConsecutiveLoads - don't attempt to merge volatile loads (PR42846)

llvm-svn: 367556

22 months agoTry to heal bots more after r367551
Nico Weber [Thu, 1 Aug 2019 13:10:43 +0000 (13:10 +0000)]
Try to heal bots more after r367551

llvm-svn: 367555

22 months agoAdd llvm-dwarfdump to the list of test dependencies
Pavel Labath [Thu, 1 Aug 2019 12:50:25 +0000 (12:50 +0000)]
Add llvm-dwarfdump to the list of test dependencies

It is used by SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp

llvm-svn: 367554

22 months ago[RISCV] Add Custom Parser for Atomic Memory Operands
Sam Elliott [Thu, 1 Aug 2019 12:42:31 +0000 (12:42 +0000)]
[RISCV] Add Custom Parser for Atomic Memory Operands

GCC Accepts both (reg) and 0(reg) for atomic instruction memory
operands. These instructions do not allow for an offset in their
encoding, so in the latter case, the 0 is silently dropped.

Due to how we have structured the RISCVAsmParser, the easiest way to add
support for parsing this offset is to add a custom AsmOperand and
parser. This parser drops all the parens, and just keeps the register.

This commit also adds a custom printer for these operands, which matches
the GCC canonical printer, printing both `(a0)` and `0(a0)` as `(a0)`.

Reviewers: asb, lewis-revill

Reviewed By: asb

Subscribers: s.egerton, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, jfb, PkmX, jocewei, psnobl, benna, Jim, llvm-commits

Tags: #llvm

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

llvm-svn: 367553

22 months agoTry to heal bots after r367551
Nico Weber [Thu, 1 Aug 2019 12:42:28 +0000 (12:42 +0000)]
Try to heal bots after r367551

llvm-svn: 367552

22 months agocompiler-rt: Rename .cc file in lib/{dfsan,stats,ubsan_minimal} to .cpp
Nico Weber [Thu, 1 Aug 2019 12:41:23 +0000 (12:41 +0000)]
compiler-rt: Rename .cc file in lib/{dfsan,stats,ubsan_minimal} to .cpp

Like r367463, but for dfsan, stats, ubsan_minimal.

llvm-svn: 367551

22 months agocompiler-rt: Rename .cc file in lib/xray/tests/unit to .cpp
Nico Weber [Thu, 1 Aug 2019 12:35:27 +0000 (12:35 +0000)]
compiler-rt: Rename .cc file in lib/xray/tests/unit to .cpp

Like r367463, but for xray/texts/unit.

llvm-svn: 367550

22 months ago[lit] Use ld.lld -z separate-code to work around a debug_line parsing bug
Fangrui Song [Thu, 1 Aug 2019 12:34:43 +0000 (12:34 +0000)]
[lit] Use ld.lld -z separate-code to work around a debug_line parsing bug

The issue was exposed by D64903/r367537.

In these tests, .debug_str immediately follows .text.
The last section of last RX PT_LOAD was originally padded with trap
instructions and .debug_str started at a new page (actually
common-page-size). Now, .debug_str immediately follows .test.
Add -z separate-code to use the old layout.

llvm-svn: 367549

22 months ago[IR] Value: add replaceUsesWithIf() utility
Roman Lebedev [Thu, 1 Aug 2019 12:32:08 +0000 (12:32 +0000)]
[IR] Value: add replaceUsesWithIf() utility

While there is always a `Value::replaceAllUsesWith()`,
sometimes the replacement needs to be conditional.

I have only cleaned a few cases where `replaceUsesWithIf()`
could be used, to both add test coverage,
and show that it is actually useful.

Reviewers: jdoerfert, spatel, RKSimon, craig.topper

Reviewed By: jdoerfert

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, aheejin, george.burgess.iv, asbirlea, llvm-commits

Tags: #llvm

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

llvm-svn: 367548

22 months ago[IR] SelectInst: add swapValues() utility
Roman Lebedev [Thu, 1 Aug 2019 12:31:35 +0000 (12:31 +0000)]
[IR] SelectInst: add swapValues() utility

Sometimes we need to swap true-val and false-val of a `SelectInst`.
Having a function for that is nicer than hand-writing it each time.

Reviewers: spatel, RKSimon, craig.topper, jdoerfert

Reviewed By: jdoerfert

Subscribers: jdoerfert, hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 367547

22 months agocompiler-rt: Rename .cc file in lib/xray to .cpp
Nico Weber [Thu, 1 Aug 2019 12:30:58 +0000 (12:30 +0000)]
compiler-rt: Rename .cc file in lib/xray to .cpp

Like r367463, but for xray.

llvm-svn: 367546

22 months ago[Parser] Change parameter type from int to enum
Serge Pavlov [Thu, 1 Aug 2019 11:46:28 +0000 (11:46 +0000)]
[Parser] Change parameter type from int to enum

Some parser functions accept argument of type unsigned while it is
actually of type DeclSpec::TST. No functional changes.

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

llvm-svn: 367545

22 months ago[ARM] Fix for MVE VREV64
David Green [Thu, 1 Aug 2019 11:22:03 +0000 (11:22 +0000)]
[ARM] Fix for MVE VREV64

The VREV64 instruction is apparently unpredictable if Qd == Qm, due to the
cross-beat nature of the instruction. This adds an earlyclobber to Qd, which
seems to be the same way we deal with this on other instructions like the
write-back on loads and stores.

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

llvm-svn: 367544

22 months ago[ARM] Regenerate BSWAP16 tests
Simon Pilgrim [Thu, 1 Aug 2019 11:12:10 +0000 (11:12 +0000)]
[ARM] Regenerate BSWAP16 tests

llvm-svn: 367543

22 months ago[lldb][NFC] Make ClangDiagnostic::m_fixit_vec private
Raphael Isemann [Thu, 1 Aug 2019 11:05:47 +0000 (11:05 +0000)]
[lldb][NFC] Make ClangDiagnostic::m_fixit_vec private

llvm-svn: 367542

22 months ago[clangd] Add missing braces to completion tests. NFC
Ilya Biryukov [Thu, 1 Aug 2019 11:05:06 +0000 (11:05 +0000)]
[clangd] Add missing braces to completion tests. NFC

llvm-svn: 367541

22 months ago[AArch64] Do not allocate unnecessary emergency slot.
Sander de Smalen [Thu, 1 Aug 2019 10:53:45 +0000 (10:53 +0000)]
[AArch64] Do not allocate unnecessary emergency slot.

Fix an issue where the compiler still allocates an emergency spill slot even
though it already decided to spill an extra callee-save register to use
as a scratch register.

Reviewers: gberry, thegameg, mstorsjo, t.p.northover

Reviewed By: thegameg

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

llvm-svn: 367540

22 months ago[lldb][docs] Update landing page for monorepo
Stefan Granitz [Thu, 1 Aug 2019 10:33:54 +0000 (10:33 +0000)]
[lldb][docs] Update landing page for monorepo

Summary: Following up from D65330, here's an update for the landing page.

Reviewers: jryans, clayborg, amccarth, labath

Reviewed By: jryans, amccarth, labath

Subscribers: arphaman, lldb-commits, #lldb

Tags: #lldb

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

llvm-svn: 367539

22 months ago[lldb][CMake] Avoid 'Autogenerate scheme' dialogs in Xcode projects
Stefan Granitz [Thu, 1 Aug 2019 10:33:44 +0000 (10:33 +0000)]
[lldb][CMake] Avoid 'Autogenerate scheme' dialogs in Xcode projects

Supported in CMake 3.9 and higher: https://cmake.org/cmake/help/v3.9/variable/CMAKE_XCODE_GENERATE_SCHEME.html
Older versions will just report it as unused in the end of the configuration process.

Reviewers: jingham, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: mgorny, lldb-commits, #lldb

Tags: #lldb

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

llvm-svn: 367538

22 months ago[ELF] Add -z separate-code and pad the last page of last PF_X PT_LOAD with traps...
Fangrui Song [Thu, 1 Aug 2019 09:58:25 +0000 (09:58 +0000)]
[ELF] Add -z separate-code and pad the last page of last PF_X PT_LOAD with traps only if -z separate-code is specified

This patch

1) adds -z separate-code and -z noseparate-code (default).
2) changes the condition that the last page of last PF_X PT_LOAD is
 padded with trap instructions.
 Current condition (after D33630): if there is no `SECTIONS` commands.
 After this change: if -z separate-code is specified.

-z separate-code was introduced to ld.bfd in 2018, to place the text
segment in its own pages. There is no overlap in pages between an
executable segment and a non-executable segment:

1) RX cannot load initial contents from R or RW(or non-SHF_ALLOC).
2) R and RW(or non-SHF_ALLOC) cannot load initial contents from RX.

lld's current status:

- Between R and RX: in `Writer<ELFT>::fixSectionAlignments()`, the start of a
  segment is always aligned to maxPageSize, so the initial contents loaded by R
  and RX do not overlap. I plan to allow overlaps in D64906 if -z noseparate-code
  is in effect.
- Between RX and RW(or non-SHF_ALLOC if RW doesn't exist):
  we currently unconditionally pad the last page to commonPageSize
  (defaults to 4096 on all targets we support).
  This patch will make it effective only if -z separate-code is specified.

-z separate-code is a dubious feature that intends to reduce the number
of ROP gadgets (which is actually ineffective because attackers can find
plenty of gadgets in the text segment, no need to find gadgets in
non-code regions).

With the overlapping PT_LOAD technique D64906, -z noseparate-code
removes two more alignments at segment boundaries than -z separate-code.
This saves at most defaultCommonPageSize*2 bytes, which are significant
on targets with large defaultCommonPageSize (AArch64/MIPS/PPC: 65536).

Issues/feedback on alignment at segment boundaries to help understand
the implication:

* binutils PR24490 (the situation on ld.bfd is worse because they have
  two R-- on both sides of R-E so more alignments.)

* In binutils, the 2018-02-27 commit "ld: Add --enable-separate-code" made -z separate-code the default on Linux.
  In musl-cross-make, binutils is configured with --disable-separate-code
  to address size regressions caused by -z separate-code. (lld actually has the same
  issue, which I plan to fix in a future patch. The ld.bfd x86 status is
  worse because they default to max-page-size=0x200000).

* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237676 people want
  smaller code size. This patch will remove one alignment boundary.

* Stef O'Rear: I'm opposed to any kind of page alignment at the
  text/rodata line (having a partial page of text aliased as rodata and
  vice versa has no demonstrable harm, and I actually care about small

So, make -z noseparate-code the default.

Reviewed By: ruiu

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

llvm-svn: 367537

22 months ago[ELF] With --vs-diagnostics, print a separate message for each location of a duplicat...
Igor Kudrin [Thu, 1 Aug 2019 09:58:03 +0000 (09:58 +0000)]
[ELF] With --vs-diagnostics, print a separate message for each location of a duplicate symbol.

We extract and print the source location in the message header so that
Visual Studio is able to parse it and jump there. As duplicate symbols
are defined in several locations, it is more convenient to have separate
error messages, which allows a user to easily access all the locations.

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

llvm-svn: 367536

22 months ago[MIPS GlobalISel] Fold load/store + G_GEP + G_CONSTANT
Petar Avramovic [Thu, 1 Aug 2019 09:40:13 +0000 (09:40 +0000)]
[MIPS GlobalISel] Fold load/store + G_GEP + G_CONSTANT

Fold load/store + G_GEP + G_CONSTANT when
immediate in G_CONSTANT fits into 16 bit signed integer.

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

llvm-svn: 367535