2 years ago[lld-macho] Emit load command LC_BUILD_VERSION
Greg McGary [Fri, 14 Aug 2020 19:35:31 +0000 (12:35 -0700)]
[lld-macho] Emit load command LC_BUILD_VERSION

Reviewed By: int3

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

2 years ago[MachO] Add skeletal support for DriverKit platform
Greg McGary [Fri, 14 Aug 2020 19:34:20 +0000 (12:34 -0700)]
[MachO] Add skeletal support for DriverKit platform

Define the platform ID = 10, and simple mappings between platform ID & name.

Reviewed By: MaskRay, cishida

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

2 years agoTest commit
Marius Brehler [Fri, 14 Aug 2020 19:26:15 +0000 (21:26 +0200)]
Test commit

Test commit access to the LLVM repository.

2 years agoFix warning caused by ReductionTreePass class
Mauricio Sifontes [Fri, 14 Aug 2020 19:12:07 +0000 (19:12 +0000)]
Fix warning caused by ReductionTreePass class

Explicitly declare ReductionTreeBase base class in ReductionTreePass copy constructor.

Reviewed By: mehdi_amini

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

2 years ago[llvm-libtool-darwin] Add support for -l and -L
Sameer Arora [Fri, 7 Aug 2020 18:03:54 +0000 (11:03 -0700)]
[llvm-libtool-darwin] Add support for -l and -L

Add support for passing in libraries via `-l` and `-L` options to

Reviewed by jhenderson, smeenai

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

2 years ago[DFSan] Don't unmap during dfsan_flush().
Matt Morehouse [Fri, 14 Aug 2020 18:43:33 +0000 (11:43 -0700)]
[DFSan] Don't unmap during dfsan_flush().

Unmapping and remapping is dangerous since another thread could touch
the shadow memory while it is unmapped.  But there is really no need to
unmap anyway, since mmap(MAP_FIXED) will happily clobber the existing
mapping with zeroes.  This is thread-safe since the mmap() is done under
the same kernel lock as page faults are done.

Reviewed By: vitalybuka

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

2 years ago[examples][cmake] build fix for examples with BUILD_SHARED_LIBS=on
Stephen Neuendorffer [Fri, 14 Aug 2020 18:37:51 +0000 (11:37 -0700)]
[examples][cmake] build fix for examples with BUILD_SHARED_LIBS=on

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

2 years ago[mlir] build fix for gcc-5
Stephen Neuendorffer [Fri, 14 Aug 2020 18:26:29 +0000 (11:26 -0700)]
[mlir] build fix for gcc-5

It appears in this case that an implicit cast from StringRef to std::string
doesn't happen.  Fixed with an explicit cast.

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

2 years ago[mlir] Make mlir_check_link_libraries() work with interface libraries
Marius Brehler [Fri, 14 Aug 2020 06:28:01 +0000 (23:28 -0700)]
[mlir] Make mlir_check_link_libraries() work with interface libraries

This changes mlir_check_link_libraries() to work with interface libraries.
These don't have the LINK_LIBRARIES property.

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

2 years ago[llvm-libtool-darwin] Support universal outputs
Sameer Arora [Wed, 5 Aug 2020 17:22:24 +0000 (10:22 -0700)]
[llvm-libtool-darwin] Support universal outputs

Add support for producing universal binaries containing archives when
`llvm-libtool-darwin` is given inputs of multiple architectures.

Reviewed by jhenderson, smeenai

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

2 years ago[clang-tools-extra] Added missing comma
zacharyselk [Fri, 14 Aug 2020 18:27:30 +0000 (12:27 -0600)]
[clang-tools-extra] Added missing comma

The new diagnostic tool (D85545) caught a missing comma, adding one to fix the warning.

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

2 years agoRemove unnecessary HEADER_DIRS in lib/InterfaceStub/CMakeLists.txt
Haowei Wu [Thu, 13 Aug 2020 21:19:06 +0000 (14:19 -0700)]
Remove unnecessary HEADER_DIRS in lib/InterfaceStub/CMakeLists.txt

This change removes unnecessary HEADER_DIRS from //llvm/lib/
InterfaceStub/CMakeLists.txt file.

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

2 years agoTableGen/GlobalISel: Partially handle immAllOnesV/immAllZerosV
Matt Arsenault [Sat, 1 Aug 2020 14:39:21 +0000 (10:39 -0400)]
TableGen/GlobalISel: Partially handle immAllOnesV/immAllZerosV

These should really match either G_BUILD_VECTOR or
G_BUILD_VECTOR_TRUNC, but there doesn't seem to be an existing
mechanism for matching alternative opcodes. There is GIM_SwitchOpcode,
but it seems to assume it's oly only used for matcher optimization.

I could also omit any opcode check and rely on the matcher directly
checking the opcode, but the table optimizer currently assumes there
has to be an opcode check.

Also doesn't try to handle undef elements like the DAG version.

2 years ago[X86][SSE] Fold HOP(SHUFFLE(X),SHUFFLE(Y)) --> SHUFFLE(HOP(X,Y))
Simon Pilgrim [Fri, 14 Aug 2020 15:15:05 +0000 (16:15 +0100)]

This is beginning to look like a canonicalization stage that could be performed as part of shuffle combining

Another step towards PR41813

Recommit of rG9bd97d036398 with fixed offset adjustments

2 years agoAMDGPU/GlobalISel: Match andn2/orn2 for more types
Matt Arsenault [Fri, 31 Jul 2020 17:48:58 +0000 (13:48 -0400)]
AMDGPU/GlobalISel: Match andn2/orn2 for more types

Unfortunately this ends up not working as expected on targets with
16-bit operations due to AMDGPUCodeGenPrepare's promotion of uniform
16-bit ops to i32.

The vector case annoyingly requires switching the checked opcode,
since constants for vectors aren't directly handled.

I also need to think more carefully about whether this is valid for i1.

2 years agoAdd python enumerators for SBTypeEnumMemberList, and some tests for this API.
Jim Ingham [Fri, 14 Aug 2020 00:41:14 +0000 (17:41 -0700)]
Add python enumerators for SBTypeEnumMemberList, and some tests for this API.

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

2 years agoMinor build fix (pointer must be dereferenced with `->`)
Mehdi Amini [Fri, 14 Aug 2020 16:54:01 +0000 (16:54 +0000)]
Minor build fix (pointer must be dereferenced with `->`)

2 years ago[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()
Julian Lettner [Tue, 11 Aug 2020 22:01:20 +0000 (15:01 -0700)]
[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()

Add interceptors for `dispatch_async_and_wait[_f]()` which was added in
macOS 10.14.  This pair of functions is similar to `dispatch_sync()`,
but does not force a context switch of the queue onto the caller thread
when the queue is active (and hence is more efficient).  For TSan, we
can apply the same semantics as for `dispatch_sync()`.

From the header docs:
> Differences with dispatch_sync()
> When the runtime has brought up a thread to invoke the asynchronous
> workitems already submitted to the specified queue, that servicing
> thread will also be used to execute synchronous work submitted to the
> queue with dispatch_async_and_wait().
> However, if the runtime has not brought up a thread to service the
> specified queue (because it has no workitems enqueued, or only
> synchronous workitems), then dispatch_async_and_wait() will invoke the
> workitem on the calling thread, similar to the behaviour of functions
> in the dispatch_sync family.

Additional context:
> The guidance is to use `dispatch_async_and_wait()` instead of
> `dispatch_sync()` when it is necessary to mix async and sync calls on
> the same queue. `dispatch_async_and_wait()` does not guarantee
> execution on the caller thread which allows to reduce context switches
> when the target queue is active.
> https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057


Reviewed By: kubamracek

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

2 years agoRemove dependency from lib/CAPI/IR/IR.cpp on registerAllDialects() (build fix)
Mehdi Amini [Fri, 14 Aug 2020 16:34:24 +0000 (16:34 +0000)]
Remove dependency from lib/CAPI/IR/IR.cpp on registerAllDialects() (build fix)

This library does not depend on all the dialects, conceptually. This is
changing the recently introduced `mlirContextLoadAllDialects()` function
to not call `registerAllDialects()` itself, which aligns it better with
the C++ code anyway (and this is deprecated and will be removed soon).

2 years ago[ORC] Build LLJITWithChildProcess example only on UNIX host systems
Stefan Gränitz [Fri, 14 Aug 2020 16:06:33 +0000 (18:06 +0200)]
[ORC] Build LLJITWithChildProcess example only on UNIX host systems

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

2 years ago[lldb] Remove Python 2 fallback and only support Python 3
Jonas Devlieghere [Fri, 14 Aug 2020 15:44:29 +0000 (08:44 -0700)]
[lldb] Remove Python 2 fallback and only support Python 3

This removes the fallback to Python 2 and makes Python 3 the only
supported configuration. This is the first step to fully migrate to
Python 3 over the coming releases as discussed on the mailing list.


As a reminder, for the current release the test suite and the generated
bindings should remain compatible with Python 2.

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

2 years ago[NFC] Silence variables unused in release builds
Jordan Rupprecht [Fri, 14 Aug 2020 15:35:58 +0000 (08:35 -0700)]
[NFC] Silence variables unused in release builds

2 years ago[lldb] Use file to synchronize TestDeepBundle and TestBundleWithDotInFilename
Jonas Devlieghere [Fri, 14 Aug 2020 15:32:21 +0000 (08:32 -0700)]
[lldb] Use file to synchronize TestDeepBundle and TestBundleWithDotInFilename

Currently these two tests use an arbitrary wait of 5 seconds for the
inferior to finish setting up. When the test machine is under heavy load
this sometimes is insufficient leading to spurious test failures. This
patch adds synchronization trough a token on the file system. In
addition to making the test more reliable it also makes it much faster
because we no longer have to wait the full 5 seconds if the setup was
completed faster than that.

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

2 years ago[Statepoints] FixupStatepoint: properly set isKill on spilled register.
Denis Antrushin [Fri, 14 Aug 2020 15:08:54 +0000 (22:08 +0700)]
[Statepoints] FixupStatepoint: properly set isKill on spilled register.

When spilling statepoint meta arg register it is incorrect to blindly
mark it as killed - it may be used in non-meta args (e.g., as call

2 years agoRevert "[NFC][StackSafety] Move out sort from the loop"
Matt Morehouse [Fri, 14 Aug 2020 15:17:35 +0000 (08:17 -0700)]
Revert "[NFC][StackSafety] Move out sort from the loop"

This reverts commit 0426e28419799c35cf52fe3d773c5bab9928c699 due to ASan
buildbot failure.

2 years ago[ARM][test] Add more tests of two-part immediates
Ben Shi [Fri, 14 Aug 2020 15:11:01 +0000 (23:11 +0800)]
[ARM][test] Add more tests of two-part immediates

The ARM backend breaks some specific immediates to two parts
in binary operations. And this patch adds more tests
for that.

Reviewed By: samparker

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

2 years ago[DFSan] Fix parameters to strtoull wrapper.
Matt Morehouse [Fri, 14 Aug 2020 15:01:40 +0000 (08:01 -0700)]
[DFSan] Fix parameters to strtoull wrapper.

base and nptr_label were swapped, which meant we were passing nptr's
shadow as the base to the operation.  Usually, the shadow is 0, which
causes strtoull to guess the correct base from the string prefix (e.g.,
0x means base-16 and 0 means base-8), hiding this bug.  Adjust the test
case to expose the bug.

Reviewed By: vitalybuka

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

2 years ago[DemandedBits] Add addition test case from D72423
Simon Pilgrim [Fri, 14 Aug 2020 14:59:53 +0000 (15:59 +0100)]
[DemandedBits] Add addition test case from D72423

2 years ago[OpenMP][OMPIRBuilder] Use the source (=directory + filename) for locations
Johannes Doerfert [Fri, 14 Aug 2020 01:58:09 +0000 (20:58 -0500)]
[OpenMP][OMPIRBuilder] Use the source (=directory + filename) for locations

Reviewed By: lebedev.ri

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

2 years ago[OpenMP][NFC] Update test check lines with new script version
Johannes Doerfert [Fri, 14 Aug 2020 13:49:42 +0000 (08:49 -0500)]
[OpenMP][NFC] Update test check lines with new script version

2 years ago[Orc] Fix werror for unused variable in noasserts build
Bjorn Pettersson [Fri, 14 Aug 2020 13:58:04 +0000 (15:58 +0200)]
[Orc] Fix werror for unused variable in noasserts build

2 years ago[Statepoints] Spill GC Ptr regs in FixupStatepoints.
Denis Antrushin [Wed, 10 Jun 2020 13:52:25 +0000 (20:52 +0700)]
[Statepoints] Spill GC Ptr regs in FixupStatepoints.

Extend FixupStatepointCallerSaved pass with ability to spill
statepoint GC pointer arguments (optionally allowing them on CSRs).
Special handling is required for invoke statepoints, because at MI
level single landing pad may be shared by multiple statepoints, so
we must ensure we spill landing pad's live-ins into the same stack

Full statepoint refactoring change set is available at D81603.

Reviewed By: skatkov

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

2 years ago[VE] Remove obsolete I8/I16 register classes
Kazushi (Jam) Marukawa [Thu, 13 Aug 2020 13:04:49 +0000 (22:04 +0900)]
[VE] Remove obsolete I8/I16 register classes

Remove I8/I16 register classes which are prepared to implement previously
to implement VE ABI.  However, it is possible to implement VE ABI correctly
without them.  Therefore, removing them now.

Reviewed By: simoll

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

2 years ago[lldb] Make packetlog_get_dylib_info returns the last full response
Raphael Isemann [Fri, 14 Aug 2020 12:47:54 +0000 (14:47 +0200)]
[lldb] Make packetlog_get_dylib_info returns the last full response

In sanitized builds the last packet this function finds for the
TestMacCatalyst and TestPlatformSimulator tests is for the asan runtime.

 <  69> send packet: $jGetLoadedDynamicLibrariesInfos:{"solib_addresses":[4296048640]}]#3a <
 715> read packet: ${"images":[{"load_address":4296048640,"mod_date":0,"pathname":

This just fetches the last package which has fetch_all_solibs and we know
it will contain the image of our test executable to get the tests running again.

2 years ago[libc] [obvious] Fix typographical error.
Chris Gyurgyik [Fri, 14 Aug 2020 12:34:42 +0000 (08:34 -0400)]
[libc] [obvious] Fix typographical error.

2 years ago[Attributor] Implement AAPotentialValues
Shinji Okumura [Fri, 14 Aug 2020 11:51:14 +0000 (20:51 +0900)]
[Attributor] Implement AAPotentialValues

This patch provides an implementation of `AAPotentialValues`.

Reviewed By: jdoerfert

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

2 years ago[NFC][StackSafety] Change map key comparison
Vitaly Buka [Fri, 14 Aug 2020 11:23:15 +0000 (04:23 -0700)]
[NFC][StackSafety] Change map key comparison

2 years ago[NFC][StackSafety] Move out sort from the loop
Vitaly Buka [Fri, 14 Aug 2020 11:17:08 +0000 (04:17 -0700)]
[NFC][StackSafety] Move out sort from the loop

2 years ago[lldb] Use SBProcess::Continue instead of 'run' command in TestTargetAPI.py
Raphael Isemann [Fri, 14 Aug 2020 11:12:12 +0000 (13:12 +0200)]
[lldb] Use SBProcess::Continue instead of 'run' command in TestTargetAPI.py

This test is flaky on Green Dragon as it often fails when the process state
is "Invalid" in the assert:
    self.assertEqual(process.GetState(), lldb.eStateExited)
It seems this is related to just doing "run" which apparently invalidates
the Target's process in case it's still running and needs to be restarted.
Just doing 'continue' on the process (and ignoring the error in case it already
finished) prevents that and makes this consistently pass for me.

Just pushing this out to get Green Dragon back online.

2 years ago[lldb] Check Decl kind when completing -flimit-debug-info types
Pavel Labath [Thu, 13 Aug 2020 13:02:16 +0000 (15:02 +0200)]
[lldb] Check Decl kind when completing -flimit-debug-info types

The search for the complete class definition can also produce entries
which are not of the expected type. This can happen for instance when
there is a function with the same name as the class we're looking up
(which means that the class needs to be disambiguated with the
struct/class tag in most contexts).

Previously we were just picking the first Decl that the lookup returned,
which later caused crashes or assertion failures if it was not of the
correct type. This patch changes that to search for an entry of the
correct type.

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

2 years ago[lldb] Fix py3 incompatibility in gdbremote_testcase.py
Pavel Labath [Fri, 14 Aug 2020 10:14:29 +0000 (12:14 +0200)]
[lldb] Fix py3 incompatibility in gdbremote_testcase.py

This didn't cause test failures since this variable is only used during
connection shutdown.

2 years ago[ORC] Fix missing include in OrcRemoteTargetClient.h
Stefan Gränitz [Fri, 14 Aug 2020 09:59:18 +0000 (11:59 +0200)]
[ORC] Fix missing include in OrcRemoteTargetClient.h

2 years ago[lldb] Deduplicate copy-pasted TypeSystemMap::GetTypeSystemForLanguage
Raphael Isemann [Fri, 14 Aug 2020 09:48:14 +0000 (11:48 +0200)]
[lldb] Deduplicate copy-pasted TypeSystemMap::GetTypeSystemForLanguage

There are two implementations for `TypeSystemMap::GetTypeSystemForLanguage`
which are both identical beside one taking a `Module` and one taking a `Target`
(and then passing that argument to the `TypeSystem::CreateInstance` function).

This merges both implementations into one function with a lambda that wraps the
different calls to `TypeSystem::CreateInstance`.

Reviewed By: #lldb, JDevlieghere

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

2 years ago[ORC][NFC] Fix a header comment
Stefan Gränitz [Fri, 14 Aug 2020 09:45:46 +0000 (11:45 +0200)]
[ORC][NFC] Fix a header comment

2 years agoSeparate the Registration from Loading dialects in the Context
Mehdi Amini [Fri, 14 Aug 2020 08:27:22 +0000 (08:27 +0000)]
Separate the Registration from Loading dialects in the Context

This changes the behavior of constructing MLIRContext to no longer load globally registered dialects on construction. Instead Dialects are only loaded explicitly on demand:
- the Parser is lazily loading Dialects in the context as it encounters them during parsing. This is the only purpose for registering dialects and not load them in the context.
- Passes are expected to declare the dialects they will create entity from (Operations, Attributes, or Types), and the PassManager is loading Dialects into the Context when starting a pipeline.

This changes simplifies the configuration of the registration: a compiler only need to load the dialect for the IR it will emit, and the optimizer is self-contained and load the required Dialects. For example in the Toy tutorial, the compiler only needs to load the Toy dialect in the Context, all the others (linalg, affine, std, LLVM, ...) are automatically loaded depending on the optimization pipeline enabled.

2 years ago[lldb] Display autosuggestion part in gray if there is one possible suggestion
Shu Anzai [Wed, 12 Aug 2020 10:54:28 +0000 (12:54 +0200)]
[lldb] Display autosuggestion part in gray if there is one possible suggestion

This is relanding D81001. The patch originally failed as on newer editline
versions it seems CC_REFRESH will move the cursor to the start of the line via
\r and then back to the original position. On older editline versions like
the one used by default on macOS, CC_REFRESH doesn't move the cursor at all.
As the patch changed the way we handle tab completion (previously we did
REDISPLAY but now we're doing CC_REFRESH), this caused a few completion tests
to receive this unexpected cursor movement in the output stream.
This patch updates those tests to also accept output that contains the specific
cursor movement commands (\r and then \x1b[XC). lldbpexpect.py received an
utility method for generating the cursor movement escape sequence.

Original summary:

I implemented autosuggestion if there is one possible suggestion.
I set the keybinds for every character. When a character is typed, Editline::TypedCharacter is called.
Then, autosuggestion part is displayed in gray, and you can actually input by typing C-k.
Editline::Autosuggest is a function for finding completion, and it is like Editline::TabCommand now, but I will add more features to it.

Testing does not work well in my environment, so I can't confirm that it goes well, sorry. I am dealing with it now.

Reviewed By: teemperor, JDevlieghere, #lldb

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

2 years ago[ORC][NFC] Refactor loop to determine name of init symbol in IRMaterializationUnit
Stefan Gränitz [Thu, 13 Aug 2020 19:11:59 +0000 (21:11 +0200)]
[ORC][NFC] Refactor loop to determine name of init symbol in IRMaterializationUnit

This loop caused me a little headache once, because I didn't see the assigned variable is a member. The refactored version appears more readable to me.

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

2 years ago[ORC] In LLLazyJIT provide public access to the CompileOnDemandLayer
Stefan Gränitz [Thu, 13 Aug 2020 19:05:24 +0000 (21:05 +0200)]
[ORC] In LLLazyJIT provide public access to the CompileOnDemandLayer

This is analog to how LLJIT provides public access to all its layers.

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

2 years ago[ORC] Add JITLink-compatible remote memory-manager and LLJITWithChildProcess example
Stefan Gränitz [Thu, 13 Aug 2020 18:47:57 +0000 (20:47 +0200)]
[ORC] Add JITLink-compatible remote memory-manager and LLJITWithChildProcess example

This adds RemoteJITLinkMemoryManager is a new subclass of OrcRemoteTargetClient. It implements jitlink::JITLinkMemoryManager and targets the OrcRemoteTargetRPCAPI.

Behavior should be very similar to RemoteRTDyldMemoryManager. The essential differnce with JITLink is that allocations work in isolation from its memory manager. Thus, the RemoteJITLinkMemoryManager might be seen as "JITLink allocation factory".

RPCMMAlloc is another subclass of OrcRemoteTargetClient and implements the actual functionality. It allocates working memory on the host and target memory on the remote target. Upon finalization working memory is copied over to the tagrte address space. Finalization can be asynchronous for JITLink allocations, but I don't see that it makes a difference here.

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

2 years ago[mlir] do not emit bitcasts between structs in StandardToLLVM
Alex Zinenko [Thu, 13 Aug 2020 12:45:59 +0000 (14:45 +0200)]
[mlir] do not emit bitcasts between structs in StandardToLLVM

The convresion of memref cast operaitons from the Standard dialect to the LLVM
dialect has been emitting bitcasts from a struct type to itself. Beyond being
useless, such casts are invalid as bitcast does not operate on aggregate types.
This kept working by accident because LLVM IR bitcast construction API skips
the construction if types are equal before it verifies that the types are
acceptable in a bitcast. Do not emit such bitcasts, the memref cast that only
adds/erases size information is in fact a noop on the current descriptor as it
always contains dynamic values for all sizes.

Reviewed By: pifon2a

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

2 years ago[mlir] Mention mandatory RFC process for changes in Standard dialect
Alex Zinenko [Thu, 13 Aug 2020 12:54:26 +0000 (14:54 +0200)]
[mlir] Mention mandatory RFC process for changes in Standard dialect

We have been asking for this systematically, mention it in the documentation.

Reviewed By: mehdi_amini

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

2 years ago[NFC][ARM] Port MaybeCall into ARMTTImpl method
Sam Parker [Fri, 14 Aug 2020 09:19:16 +0000 (10:19 +0100)]
[NFC][ARM] Port MaybeCall into ARMTTImpl method

Renamed to maybeLoweredToCall.

2 years ago[MLIR][Shape] Add custom assembly format for `shape.any`
Frederik Gossen [Fri, 14 Aug 2020 08:33:58 +0000 (08:33 +0000)]
[MLIR][Shape] Add custom assembly format for `shape.any`

Add custom assembly format for `shape.any` with variadic operands.

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

2 years ago[lldb/Utility] Simplify Scalar::PromoteToMaxType
Pavel Labath [Thu, 13 Aug 2020 13:49:03 +0000 (15:49 +0200)]
[lldb/Utility] Simplify Scalar::PromoteToMaxType

The function had very complicated signature, because it was trying to
avoid making unnecessary copies of the Scalar object. However, this
class is not hot enough to worry about these kinds of optimizations. My
making copies unconditionally, we can simplify the function and all of
its call sites.

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

2 years ago[clangd] Clarify comments regarding gRPC linking
Kirill Bobyrev [Fri, 14 Aug 2020 09:02:03 +0000 (11:02 +0200)]
[clangd] Clarify comments regarding gRPC linking

2 years ago[clangd] Fix find_program() result check when searching for gRPC
Aleksandr Platonov [Fri, 14 Aug 2020 08:33:00 +0000 (11:33 +0300)]
[clangd] Fix find_program() result check when searching for gRPC

`find_program(<VAR> ...)` sets <VAR> to <VAR>-NOTFOUND if nothing was found.
So we need to compare <VAR> with "<VAR>-NOTFOUND" or just use `if([NOT] <VAR>)`, because `if(<VAR>)` is false if `<VAR>` ends in the suffix -NOTFOUND.

Reviewed By: kbobyrev

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

2 years ago[OpenMP] Fix releasing of stack memory
Joachim Protze [Fri, 14 Aug 2020 08:13:31 +0000 (10:13 +0200)]
[OpenMP] Fix releasing of stack memory

Starting with 787eb0c637b I got spurious segmentation faults for some testcases. I could nail it down to `brel` trying to release the "memory" of the node allocated on the stack of __kmpc_omp_wait_deps. With this patch, you will see the assertion triggering for some of the tests in the test suite.

My proposed solution for the issue is to just patch __kmpc_omp_wait_deps:
-  node.dn.on_stack = 1;
+  // the stack owns the node
+  __kmp_node_ref(&node);

What do you think?

Reviewed By: AndreyChurbanov

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

2 years ago[clangd] Warn developers when trying to link system-installed gRPC statically
Kirill Bobyrev [Fri, 14 Aug 2020 08:22:06 +0000 (10:22 +0200)]
[clangd] Warn developers when trying to link system-installed gRPC statically

Reviewed By: sammccall

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

2 years ago[NFC][StackSafety] Dedup callees
Vitaly Buka [Fri, 14 Aug 2020 08:14:02 +0000 (01:14 -0700)]
[NFC][StackSafety] Dedup callees

2 years agoRemove spurious empty line at the beginning of source file (NFC)
Mehdi Amini [Fri, 14 Aug 2020 08:02:35 +0000 (08:02 +0000)]
Remove spurious empty line at the beginning of source file (NFC)

2 years agoFix BufferPlacement Pass to derive from the TableGen generated parent class (NFC)
Mehdi Amini [Fri, 14 Aug 2020 07:55:57 +0000 (07:55 +0000)]
Fix BufferPlacement Pass to derive from the TableGen generated parent class (NFC)

2 years ago[CGAtomic] Mark atomic libcall functions `nounwind`
Gui Andrade [Fri, 14 Aug 2020 07:34:01 +0000 (07:34 +0000)]
[CGAtomic] Mark atomic libcall functions `nounwind`

These functions won't ever unwind. This is useful for MemorySanitizer
as it simplifies handling __atomic_load in particular.

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

2 years ago[gn build] Port 2e4a20fd706
LLVM GN Syncbot [Fri, 14 Aug 2020 07:42:49 +0000 (07:42 +0000)]
[gn build] Port 2e4a20fd706

2 years ago[SyntaxTree] Split `TreeTestBase` into header and source
Eduardo Caldas [Thu, 13 Aug 2020 16:10:50 +0000 (16:10 +0000)]
[SyntaxTree] Split `TreeTestBase` into header and source

* Switch to using directive on source files.
* Remove unused `SyntaxTreeTest::addFile`

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

2 years ago[lldb] Fix a crash when tab-completion an empty line in a function with only one...
Raphael Isemann [Fri, 14 Aug 2020 06:49:01 +0000 (08:49 +0200)]
[lldb] Fix a crash when tab-completion an empty line in a function with only one local variable

When LLDB sees only one possible completion for an input, it will add a trailing
space to the completion to signal that to the user. If the current argument is
quoted, that also means LLDB needs to add the trailing quote to finish the
current argument first.

In case the user is in a function with only one local variable and is currently
editing an empty line in the multiline expression editor, then we are in the
unique situation where we can have a unique completion for an empty input line.
(In a normal LLDB session this would never occur as empty input would just list
all the possible commands).

In this special situation our check if the current argument needs to receive a
trailing quote will crash LLDB as there is no current argument and the
completion code just unconditionally tries to access the current argument. This
just adds the missing check if we even have a current argument before we check
if we need to add a terminating quote character.

Reviewed By: labath

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

2 years ago[AMDGPU] Enable .rodata for amdpal os
Sebastian Neubauer [Thu, 13 Aug 2020 10:37:37 +0000 (12:37 +0200)]
[AMDGPU] Enable .rodata for amdpal os

PAL recently got support for multiple ELF sections and relocations,
therefore we can now use .rodata sections instead of forcing constants
into .text.

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

2 years ago[SVE] Fix bug in SVEIntrinsicOpts::optimizePTest
David Sherwood [Thu, 13 Aug 2020 09:44:12 +0000 (10:44 +0100)]
[SVE] Fix bug in SVEIntrinsicOpts::optimizePTest

The code wasn't taking into account that the two operands
passed to ptest could be identical and was trying to erase
them twice.

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

2 years ago[NFCI][SimpleLoopUnswitch] Adjust CostKind query
Sam Parker [Fri, 14 Aug 2020 06:53:43 +0000 (07:53 +0100)]
[NFCI][SimpleLoopUnswitch] Adjust CostKind query

When getUserCost was transitioned to use an explicit CostKind,
TCK_CodeSize was used even though the original kind was implicitly
SizeAndLatency so restore this behaviour. We now only query for
CodeSize when optimising for minsize.

I expect this to not change anything as, I think all, targets will
currently return the same value for CodeSize and SizeLatency. Indeed
I see no changes in the test suite for Arm, AArch64 and X86.

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

2 years ago[DebugInfo] Avoid an infinite loop with a truncated pre-v5 .debug_str_offsets.dwo.
Igor Kudrin [Fri, 14 Aug 2020 06:11:37 +0000 (13:11 +0700)]
[DebugInfo] Avoid an infinite loop with a truncated pre-v5 .debug_str_offsets.dwo.

dumpStringOffsetsSection() expects the size of a contribution to be
correctly aligned. The patch adds the corresponding verifications for
pre-v5 cases.

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

2 years agoRevert "[SLC] sprintf(dst, "%s", str) -> strcpy(dst, str)"
Arthur Eubanks [Fri, 14 Aug 2020 04:05:03 +0000 (21:05 -0700)]
Revert "[SLC] sprintf(dst, "%s", str) -> strcpy(dst, str)"

This reverts commit ab9fc8bae805c785066779e76e7846aabad5609e.

Incorrect transformation if the result is used.
Causes breakages, e.g.

2 years ago[NFC] Remove unused function.
Chris Kennelly [Fri, 14 Aug 2020 01:16:46 +0000 (21:16 -0400)]
[NFC] Remove unused function.

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

2 years ago[mlir] [VectorOps] Canonicalization of 1-D memory operations
aartbik [Thu, 13 Aug 2020 22:53:57 +0000 (15:53 -0700)]
[mlir] [VectorOps] Canonicalization of 1-D memory operations

Masked loading/storing in various forms can be optimized
into simpler memory operations when the mask is all true
or all false. Note that the backend does similar optimizations
but doing this early may expose more opportunities for further
optimizations. This further prepares progressively lowering
transfer read and write into 1-D memory operations.

Reviewed By: ThomasRaoux

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

2 years ago[WebAssembly] Add missing lit.local.cfg
Thomas Lively [Thu, 13 Aug 2020 23:33:52 +0000 (16:33 -0700)]
[WebAssembly] Add missing lit.local.cfg

2 years agohwasan: Emit the globals note even when globals are uninstrumented.
Peter Collingbourne [Thu, 13 Aug 2020 01:44:31 +0000 (18:44 -0700)]
hwasan: Emit the globals note even when globals are uninstrumented.

This lets us support the scenario where a binary is linked from a mix
of object files with both instrumented and non-instrumented globals.
This is likely to occur on Android where the decision of whether to use
instrumented globals is based on the API level, which is user-facing.

Previously, in this scenario, it was possible for the comdat from
one of the object files with non-instrumented globals to be selected,
and since this comdat did not contain the note it would mean that the
note would be missing in the linked binary and the globals' shadow
memory would be left uninitialized, leading to a tag mismatch failure
at runtime when accessing one of the instrumented globals.

It is harmless to include the note when targeting a runtime that does
not support instrumenting globals because it will just be ignored.

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

2 years ago[NewPM][CodeGen] Add machine code verification callback
Yuanfang Chen [Thu, 13 Aug 2020 19:52:35 +0000 (12:52 -0700)]
[NewPM][CodeGen] Add machine code verification callback

D83608 need this.

Reviewed By: aeubanks

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

2 years ago[X86][ELF] Prefer lowering MC_GlobalAddress operands to .Lfoo$local for STV_DEFAULT...
Ben Dunbobbin [Thu, 13 Aug 2020 22:58:40 +0000 (23:58 +0100)]
[X86][ELF] Prefer lowering MC_GlobalAddress operands to .Lfoo$local for STV_DEFAULT only

This patch restricts the behaviour of referencing via .Lfoo$local
local aliases, introduced in https://reviews.llvm.org/D73230, to
STV_DEFAULT globals only.

Hidden symbols via --fvisiblity=hidden (https://gcc.gnu.org/wiki/Visibility)
is an important scenario.


- Improves the size of object files by using fewer STT_SECTION symbols.

- The code reads a bit better (it was not obvious to me without going
  back to the code reviews why the canBenefitFromLocalAlias function
  currently doesn't consider visibility).

- There is also a side benefit in restoring the effectiveness of the
  --wrap linker option and making the behavior of --wrap consistent
  between LTO and normal builds for references within a translation-unit.
  Note: this --wrap behavior (which is specific to LLD) should not be
  considered reliable. See comments on https://reviews.llvm.org/D73230
  for more.

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

2 years ago[ConstProp] Handle insertelement constants
Arthur Eubanks [Mon, 10 Aug 2020 19:53:30 +0000 (12:53 -0700)]
[ConstProp] Handle insertelement constants

Previously ConstantFoldExtractElementInstruction() would only work with
insertelement instructions, not contants. This properly handles
insertelement constants as well.

Reviewed By: efriedma

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

2 years ago[DebugInfo] Add -fuse-ctor-homing cc1 flag so we can turn on constructor homing only...
Amy Huang [Thu, 13 Aug 2020 22:48:55 +0000 (15:48 -0700)]
[DebugInfo] Add -fuse-ctor-homing cc1 flag so we can turn on constructor homing only if limited debug info is already on.

This adds a cc1 flag to enable constructor homing but doesn't turn on debug
info if it wasn't enabled already (which is what using
-debug-info-kind=constructor does). This will be used for testing, and won't
be needed anymore once ctor homing is used as default / merged into =limited.

Bug to enable ctor homing: https://bugs.llvm.org/show_bug.cgi?id=46537

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

2 years ago[SLC] sprintf(dst, "%s", str) -> strcpy(dst, str)
Dávid Bolvanský [Thu, 13 Aug 2020 22:03:54 +0000 (00:03 +0200)]
[SLC] sprintf(dst, "%s", str) -> strcpy(dst, str)

Solves 46489

2 years ago[NFC] Remove unused variables.
Chris Kennelly [Thu, 13 Aug 2020 21:49:19 +0000 (17:49 -0400)]
[NFC] Remove unused variables.

These were no longer needed following

Reviewed By: rupprecht

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

2 years agoRevert "[ARM] Fix IT block generation after Thumb2SizeReduce with -Oz"
David Green [Thu, 13 Aug 2020 21:40:36 +0000 (22:40 +0100)]
Revert "[ARM] Fix IT block generation after Thumb2SizeReduce with -Oz"

This reverts commit 18279a54b5d3382874924d6a3c7775b7e22598dc as it is
causing some chromium android test problems.

2 years ago[lldb] Improve diagnostics in lldb-repro when replay fails
Jonas Devlieghere [Thu, 13 Aug 2020 21:36:17 +0000 (14:36 -0700)]
[lldb] Improve diagnostics in lldb-repro when replay fails

 - Print the replay invocation.
 - Keep the reproducer around.
 - Return the "opposite" exit code so we don't have to rely on FileCheck
   to fail the test when the expected exit code is non-zero.

2 years ago[AMDGPU] Fix FP/BP spills when MUBUF constant offset exceeded
Austin Kerbow [Tue, 11 Aug 2020 19:04:17 +0000 (12:04 -0700)]
[AMDGPU] Fix FP/BP spills when MUBUF constant offset exceeded

If we need a scratch register for the spill don't use the same scratch
register that is being used for the MBUF offset.

Reviewed By: arsenm

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

2 years ago[WebAssembly] Allow inlining functions with different features
Thomas Lively [Thu, 13 Aug 2020 20:57:43 +0000 (13:57 -0700)]
[WebAssembly] Allow inlining functions with different features

Allow inlining only when the Callee has a subset of the Caller's
features. In principle, we should be able to inline regardless of any
features because WebAssembly supports features at module granularity,
not function granularity, but without this restriction it would be
possible for a module to "forget" about features if all the functions
that used them were inlined.

Requested in PR46812.

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

2 years ago[clang][Driver] Default to /usr/bin/ld on Solaris
Rainer Orth [Thu, 13 Aug 2020 20:42:58 +0000 (22:42 +0200)]
[clang][Driver] Default to /usr/bin/ld on Solaris

`clang` currently requires the native linker on Solaris:

  - It passes `-C` to `ld` which GNU `ld` doesn't understand.

  - To use `gld`, one needs to pass the correct `-m EMU` option to select
    the right emulation.  Solaris `ld` cannot handle that option.

So far I've worked around this by passing `-DCLANG_DEFAULT_LINKER=/usr/bin/ld`
to `cmake`.  However, if someone forgets this, it depends on the user's
`PATH` whether or not `clang` finds the correct linker, which doesn't make
for a good user experience.

While it would be nice to detect the linker flavor at runtime, this is more
involved.  Instead, this patch defaults to `/usr/bin/ld` on Solaris.  This
doesn't work on its own, however: a link fails with

  clang-12: error: unable to execute command: Executable "x86_64-pc-solaris2.11-/usr/bin/ld" doesn't exist!

I avoid this by leaving absolute paths alone in `ToolChain::GetLinkerPath`.

Tested on `amd64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`, and

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

2 years ago[Tests] Update strncpy tests
Dávid Bolvanský [Thu, 13 Aug 2020 20:37:24 +0000 (22:37 +0200)]
[Tests] Update strncpy tests

2 years agoRe-apply "[llvm-jitlink] Don't demote unreferenced definitions in -harness mode"
Lang Hames [Thu, 13 Aug 2020 19:25:05 +0000 (12:25 -0700)]
Re-apply "[llvm-jitlink] Don't demote unreferenced definitions in -harness mode"

This reapplies commit e137b550587a85b0d9c9c539edc79de0122b6946 with
fixes for the broken test case: Non-global symbols should only be
skipped after checking that they're not referenced by the harness.

2 years ago[SLC] Optimize strncpy(a, a, C) to memcpy(a, a000, C)
Dávid Bolvanský [Thu, 13 Aug 2020 20:22:33 +0000 (22:22 +0200)]
[SLC] Optimize strncpy(a, a, C) to memcpy(a, a000, C)
Solves PR47154

2 years ago[InstSimplify] Add tests for assume with min/max intrinsic (NFC)
Nikita Popov [Thu, 13 Aug 2020 20:08:40 +0000 (22:08 +0200)]
[InstSimplify] Add tests for assume with min/max intrinsic (NFC)

If we assume one of the operands is smaller/greater, then min/max
may be simplified.

2 years agosanitizer_common: Introduce internal_madvise and start using it.
Peter Collingbourne [Thu, 13 Aug 2020 02:32:15 +0000 (19:32 -0700)]
sanitizer_common: Introduce internal_madvise and start using it.

A recent change to sanitizer_common caused us to issue the syscall
madvise(MADV_HUGEPAGE) during HWASAN initialization. This may lead to a
problem if madvise is instrumented (e.g. because libc is instrumented
or the user intercepted it). For example, on Android the syscall may
fail if the kernel does not support transparent hugepages, which leads
to an attempt to set errno in a HWASAN instrumented function. Avoid
this problem by introducing a syscall wrapper and using it to issue
this syscall.

Tested only on Linux; includes untested updates for the other

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

2 years agoAdd "status" to the list of absl libraries.
Vy Nguyen [Wed, 12 Aug 2020 16:23:37 +0000 (12:23 -0400)]
Add "status" to the list of absl libraries.

The Abseil-NoInternalDependenciesCheck currently mistakenly triggers on any usage of internal helpers even if it is within absl/status.

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

2 years ago[SystemZ][z/OS] enable trigraphs by default on z/OS
Abhina Sreeskantharajan [Thu, 13 Aug 2020 18:33:04 +0000 (14:33 -0400)]
[SystemZ][z/OS] enable trigraphs by default on z/OS

This patch enables trigraphs on z/OS.

Reviewed By: hubert.reinterpretcast, fanbo-meng

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

2 years ago[tsan] Respect no_huge_pages_for_shadow.
Chris Kennelly [Wed, 12 Aug 2020 16:13:32 +0000 (12:13 -0400)]
[tsan] Respect no_huge_pages_for_shadow.

Disable huge pages in the TSan shadow regions when no_huge_pages_for_shadow == true (default).

Reviewed By: eugenis

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

2 years ago[libc] Add strtok_r implementation.
parallels [Thu, 13 Aug 2020 19:51:16 +0000 (15:51 -0400)]
[libc] Add strtok_r implementation.

Reviewed By: sivachandra

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

2 years ago[SVE] Lower fixed length vector integer UMIN/UMAX
Cameron McInally [Thu, 13 Aug 2020 19:47:34 +0000 (14:47 -0500)]
[SVE] Lower fixed length vector integer UMIN/UMAX

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

2 years ago[gn build] (manually) port d650cbc349ccc4 better
Nico Weber [Thu, 13 Aug 2020 19:48:03 +0000 (15:48 -0400)]
[gn build] (manually) port d650cbc349ccc4 better

2 years ago[gn build] (manually) port d650cbc349ccc4
Nico Weber [Thu, 13 Aug 2020 19:43:43 +0000 (15:43 -0400)]
[gn build] (manually) port d650cbc349ccc4

2 years ago[ORC][NFC] Fix typo in comment
Stefan Gränitz [Tue, 11 Aug 2020 11:39:54 +0000 (13:39 +0200)]
[ORC][NFC] Fix typo in comment

2 years ago[darwin][driver] fix isMacosxVersionLT minimum supported OS version check
Alex Lorenz [Thu, 13 Aug 2020 19:05:57 +0000 (12:05 -0700)]
[darwin][driver] fix isMacosxVersionLT minimum supported OS version check

The previous Driver's triple check only worked for -target, but not for -arch -mmacosx-version-min invocations

2 years ago[mlir][docs] Update/Add documentation for MLIRs Pattern Rewrite infrastructure
River Riddle [Thu, 13 Aug 2020 19:05:04 +0000 (12:05 -0700)]
[mlir][docs] Update/Add documentation for MLIRs Pattern Rewrite infrastructure

This infrastructure has evolved a lot over the course of MLIRs lifetime, and has never truly been documented outside of rationale or proposals. This revision aims to document the infrastructure and user facing API, with the rationale specific portions moved to the Rationale folder and updated.

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