Stanislav Mekhanoshin [Tue, 10 Nov 2020 20:12:33 +0000 (12:12 -0800)]
[AMDGPU] Set default op_sel_hi on accvgpr read/write
These are opsel opcodes with op_sel actually being ignored.
As a such op_sel_hi needs to be set to default 1 even though
these bits are ignored. This is compatibility change.
Differential Revision: https://reviews.llvm.org/D91202
Richard Smith [Tue, 10 Nov 2020 20:51:00 +0000 (12:51 -0800)]
Move code to determine the type of an LValueBase out of ExprConstant and
into a member function on LValueBase. NFC.
Bruno Cardoso Lopes [Tue, 10 Nov 2020 19:20:56 +0000 (11:20 -0800)]
[Coroutines] Add missing llvm.dbg.declare's to cover for more allocas
Tracking local variables across suspend points is still somewhat incomplete.
Consider this coroutine snippet:
```
resumable foo() {
int x[10] = {};
int a = 3;
co_await std::experimental::suspend_always();
a++;
x[0] = 1;
a += 2;
x[1] = 2;
a += 3;
x[2] = 3;
}
```
Can't manage to print `a` or `x` if they turn out to be allocas during
CoroSplit (which happens if you build this code with `-O0` prior to this
commit):
```
* thread #1, queue = 'com.apple.main-thread', stop reason = step over
frame #0: 0x0000000100003729 main-noprint`foo() at main-noprint.cpp:43:5
40 co_await std::experimental::suspend_always();
41 a++;
42 x[0] = 1;
-> 43 a += 2;
44 x[1] = 2;
45 a += 3;
46 x[2] = 3;
(lldb) p x
error: <user expression 21>:1:1: use of undeclared identifier 'x'
x
^
```
The generated IR contains a `llvm.dbg.declare` for `x` in it's initialization
basic block. After CoroSplit, the `llvm.dbg.declare` might not dominate all of
`x` uses and we lose debugging quality.
Add `llvm.dbg.value`s to all relevant basic blocks such that if later
transformations break the dominance the reliable debug info is already in
place. For instance, this BB:
```
await.ready:
...
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !760
...
%arrayidx19 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !763
...
%arrayidx21 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !766
```
becomes:
```
await.ready:
...
call void @llvm.dbg.value(metadata [10 x i32]* %x.reload.addr, metadata !751, metadata !DIExpression()), !dbg !753
...
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !760
...
%arrayidx19 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !763
...
%arrayidx21 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !766
```
Differential Revision: https://reviews.llvm.org/D90772
Sjoerd Meijer [Mon, 9 Nov 2020 16:16:54 +0000 (16:16 +0000)]
[LoopFlatten] Run it earlier, just before IndVarSimplify
This is a prep step for widening induction variables in LoopFlatten if this is
posssible (D90640), to avoid having to perform certain overflow checks. Since
IndVarSimplify may already widen induction variables, we want to run
LoopFlatten just before IndVarSimplify. This is a minor reshuffle as both
passes were already close after each other.
Differential Revision: https://reviews.llvm.org/D90402
Marius Brehler [Tue, 10 Nov 2020 17:14:37 +0000 (18:14 +0100)]
[mlir] Refactor finding python
This drops the use of deprecated CMake modules to find python.
Differential Revision: https://reviews.llvm.org/D91197
Jez Ng [Tue, 27 Oct 2020 02:18:29 +0000 (19:18 -0700)]
[lld-macho] Add very basic support for LTO
Just enough to consume some bitcode files and link them. There's more
to be done around the symbol resolution API and the LTO config, but I don't yet
understand what all the various LTO settings do...
Reviewed By: #lld-macho, compnerd, smeenai, MaskRay
Differential Revision: https://reviews.llvm.org/D90663
Jez Ng [Wed, 14 Oct 2020 19:46:49 +0000 (12:46 -0700)]
[lld-macho][easy] Fix segment max protection
We should have maxprot == initprot for all non-i386 architectures, which
is what ld64 does.
Reviewed By: #lld-macho, compnerd
Differential Revision: https://reviews.llvm.org/D89420
Jez Ng [Wed, 14 Oct 2020 18:03:34 +0000 (11:03 -0700)]
[lld-macho] Implement LC_UUID
Apple devtools use this to locate the dSYM files for a given
binary.
The UUID is computed based on an MD5 hash of the binary's contents. In order to
hash the contents, we must first write them, but LC_UUID itself must be part of
the written contents in order for all the offsets to be calculated correctly.
We resolve this circular paradox by first writing an LC_UUID with an all-zero
UUID, then updating the UUID with its real value later.
I'm not sure there's a good way to test that the value of the UUID is
"as expected", so I've just checked that it's present.
Reviewed By: #lld-macho, compnerd, smeenai
Differential Revision: https://reviews.llvm.org/D89418
Jez Ng [Wed, 7 Oct 2020 21:50:42 +0000 (14:50 -0700)]
[lld-macho] Support linking against stub dylibs
Stub dylibs differ from "real" dylibs in that they lack any content in
their sections. What they do have are export tries and symbol tables,
which means we can still link against them. I am unclear how to
properly create these stub dylibs; XCode 11.3's `lipo` is able to create
stub dylibs, but those lack LC_ID_DYLIB load commands and are considered
invalid by most tooling. Newer versions of `lipo` aren't able to create
stub dylibs at all. However, recent SDKs in XCode still come with valid
stub dylibs, so it still seems worthwhile to support them. The YAML in
this diff's test was generated by taking a non-stub dylib and editing
the appropriate fields.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D89012
Yang Fan [Tue, 10 Nov 2020 20:09:06 +0000 (15:09 -0500)]
[Sema] Fix volatile check when testing if a return object can be implicitly moved
In C++11 standard, to become implicitly movable, the expression in return
statement should be a non-volatile automatic object. CWG1579 changed the rule
to require that the expression only needs to be an automatic object. C++14
standard and C++17 standard kept this rule unchanged. C++20 standard changed
the rule back to require the expression be a non-volatile automatic object.
This should be a typo in standards, and VD should be non-volatile.
Differential Revision: https://reviews.llvm.org/D88295
Mehdi Amini [Tue, 10 Nov 2020 19:56:48 +0000 (19:56 +0000)]
Add Python binding to run a PassManager on a MLIR Module
Reviewed By: ftynse, stellaraccident
Differential Revision: https://reviews.llvm.org/D90823
Sjoerd Meijer [Mon, 9 Nov 2020 15:59:50 +0000 (15:59 +0000)]
[LoopFlatten] Make it a FunctionPass
This converts LoopFlatten from a LoopPass to a FunctionPass so that we don't
run into problems of a loop pass deleting a (inner)loop.
Differential Revision: https://reviews.llvm.org/D90940
Mehdi Amini [Tue, 10 Nov 2020 18:39:12 +0000 (18:39 +0000)]
Add basic Python bindings for the PassManager and bind libTransforms
This only exposes the ability to round-trip a textual pipeline at the
moment.
To exercise it, we also bind the libTransforms in a new Python extension. This
does not include any interesting bindings, but it includes all the
mechanism to add separate native extensions and load them dynamically.
As such passes in libTransforms are only registered after `import
mlir.transforms`.
To support this global registration, the TableGen backend is also
extended to bind to the C API the group registration for passes.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D90819
Renato Golin [Sat, 7 Nov 2020 21:14:16 +0000 (21:14 +0000)]
[docs] link new support policy from developer policy
Adding new paragraphs under "Introducing New Components" section to
check the different levels of support we have, to help introduction of
smaller set of changes without overwhelming new collaborators and
potentially losing the contribution.
Differential Revision: D91013
Florian Hahn [Tue, 10 Nov 2020 18:58:03 +0000 (18:58 +0000)]
[VPlan] Use VPValue def for VPWidenSelectRecipe.
This patch turns VPWidenSelectRecipe into a VPValue and uses it
during VPlan construction and codegeneration instead of the plain IR
reference where possible.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D84682
Sam Clegg [Mon, 9 Nov 2020 23:59:58 +0000 (15:59 -0800)]
[lld][WebAssembly] Convert TLS tests to asm format
Fix a corresponding bug in WasmAsmParser around parsing.tdata sections.
Differential Revision: https://reviews.llvm.org/D91113
Benjamin Kramer [Tue, 10 Nov 2020 19:34:37 +0000 (20:34 +0100)]
[ARM] Silence unused variable warning in Release builds. NFC.
Craig Topper [Tue, 10 Nov 2020 19:32:52 +0000 (11:32 -0800)]
[RISCV] Add missing copyright header to RISCVBaseInfo.cpp. NFC
Stephen Kelly [Mon, 9 Nov 2020 19:56:48 +0000 (19:56 +0000)]
Add utility for testing if we're matching nodes AsIs
Differential Revision: https://reviews.llvm.org/D91144
Haojian Wu [Tue, 10 Nov 2020 19:09:56 +0000 (20:09 +0100)]
Fix the DeclContextLookupResult::iterator non-copyable.
The value_type is a const pointer, which makes the iteator non-copyable.
Before the patch, the normal usage like below was illegal:
```
auto It = lookupresult.begin();
...
It = lookupresult.end(); // the copy is not allowed.
```
Differential Revision: https://reviews.llvm.org/D91158
Michał Górny [Tue, 10 Nov 2020 13:09:26 +0000 (14:09 +0100)]
[lldb] [Process/NetBSD] Copy the recent improvements from FreeBSD
Copy the recent improvements from the FreeBSDRemote plugin, notably:
- moving event reporting setup into SetupTrace() helper
- adding more debug info into SIGTRAP handling
- handling user-generated (and unknown) SIGTRAP events
- adding missing error handling to the generic signal handler
- fixing attaching to processes
- switching watchpoint helpers to use llvm::Error
- minor style and formatting changes
This fixes a number of tests, mostly related to fixed attaching.
Differential Revision: https://reviews.llvm.org/D91167
Alexandre Rames [Tue, 10 Nov 2020 17:21:05 +0000 (09:21 -0800)]
Allow searching for prebuilt implicit modules.
This reverts commit
c67656b994c87224e0b33e2c4b09093986a5cfa6, and addresses the
build issue.
David Tenty [Tue, 10 Nov 2020 17:03:30 +0000 (12:03 -0500)]
[CMake][ExecutionEngine] add HAVE_(DE)REGISTER_FRAME as a config.h macros
The macro HAVE_EHTABLE_SUPPORT is used by parts of ExecutionEngine to tell __register_frame/__deregister_frame is available to register the
FDE for a generated (JIT) code. It's currently set by a slowly growing set of macro tests in the respective headers, which is updated now and then when it fails to link on some platform or another due to the symbols being missing (see for example https://bugs.llvm.org/show_bug.cgi?id=5715).
This change converts the macro in two HAVE_(DE)REGISTER_FRAME config.h macros (like most of the other HAVE_* macros) and set's them based on whether CMake can actually find a definition for these symbols to link to at configuration time.
Reviewed By: hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D87114
David Green [Tue, 10 Nov 2020 18:08:12 +0000 (18:08 +0000)]
[ARM] Introduce t2DoLoopStartTP
This introduces a new pseudo instruction, almost identical to a
t2DoLoopStart but taking 2 parameters - the original loop iteration
count needed for a low overhead loop, plus the VCTP element count needed
for a DLSTP instruction setting up a tail predicated loop. The idea is
that the instruction holds both values and the backend
ARMLowOverheadLoops pass can pick between the two, depending on whether
it creates a tail predicated loop or falls back to a low overhead loop.
To do that there needs to be something that converts a t2DoLoopStart to
a t2DoLoopStartTP, for which this patch repurposes the
MVEVPTOptimisationsPass as a "tail predication and vpt optimisation"
pass. The extra operand for the t2DoLoopStartTP is chosen based on the
operands of VCTP's in the loop, and the instruction is moved as late in
the block as possible to attempt to increase the likelihood of making
tail predicated loops.
Differential Revision: https://reviews.llvm.org/D90591
Louis Dionne [Tue, 10 Nov 2020 17:47:10 +0000 (12:47 -0500)]
[libc++] NFC: Add helper methods to simplify __shared_ptr_emplace
The previous implementation was really difficult to follow, especially
with the get() method sharing the same name as std::unique_ptr::get().
Raphael Isemann [Tue, 10 Nov 2020 16:53:36 +0000 (17:53 +0100)]
[lldb][NFC] Add lldb-server to the shell tests disallow list
This prevents that one can write a test that referenced lldb-server (instead
of %lldb-server). Addresses review feedback from D91155.
Jonas Paulsson [Wed, 4 Nov 2020 12:49:24 +0000 (13:49 +0100)]
Make inferLibFuncAttributes() add SExt attribute on second arg to ldexp.
This was missing as discovered by the SystemZ multistage bot:
http://lab.llvm.org:8011/#/builders/8, where wrong code resulted when this
extension was not performed.
Thanks for review by Ulrich Weigand and Roman Lebedev.
Differential Revision: https://reviews.llvm.org/D90760
Jay Foad [Tue, 10 Nov 2020 17:23:15 +0000 (17:23 +0000)]
[AMDGPU] Simplify multiclass EXP_m. NFC.
David Green [Tue, 10 Nov 2020 17:28:07 +0000 (17:28 +0000)]
[ARM] Cleanup for ARMLowOverheadLoops. NFC
sameeran joshi [Sat, 31 Oct 2020 18:13:58 +0000 (23:43 +0530)]
[Flang][OpenMP] Fix 'Internal: no symbol found' for OpenMP aligned and linear clause.
The initial approach was to go with changing parser nodes from `std::list<parser::Name>` to `OmpObjectList`, but that might have lead to illegal programs.
Resolving the symbols inside `OmpAttributeVisitor`.
Fix a couple of `XFAIL` tests.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D90538
Simon Pilgrim [Tue, 10 Nov 2020 16:53:06 +0000 (16:53 +0000)]
[ValueTracking] computeKnownBitsFromShiftOperator - always return with Known2 containing the shifted value source. NFCI.
As detailed on D90479, in most circumstances we will always call computeKnownBits for Op0, so always perform this by pulling out the duplicate calls.
Simon Pilgrim [Tue, 10 Nov 2020 16:33:41 +0000 (16:33 +0000)]
[ValueTracking] computeKnownBitsFromShiftOperator - consistently use Known2 for the shifted value. NFCI.
Minor cleanup as part of getting D90479 moving again.
David Green [Tue, 10 Nov 2020 17:01:31 +0000 (17:01 +0000)]
[ARM] Don't aggressively unroll vector remainder loops
We already do not unroll loops with vector instructions under MVE, but
that does not include the remainder loops that the vectorizer produces.
These remainder loops will be rarely executed and are not worth
unrolling, as the trip count is likely to be low if they get executed at
all. Luckily they get llvm.loop.isvectorized to make recognizing them
simpler.
We have wanted to do this for a while but hit issues with low overhead
loops being reverted due to difficult registry allocation. With recent
changes that seems to be less of an issue now.
Differential Revision: https://reviews.llvm.org/D90055
Kazu Hirata [Tue, 10 Nov 2020 17:00:17 +0000 (09:00 -0800)]
[BranchProbabilityInfo] Use a range-based for loop (NFC)
sameeran joshi [Tue, 10 Nov 2020 04:28:01 +0000 (09:58 +0530)]
[Flang][Docs] Fix warnings when building docs.
Following warning were seen with recommonmark(0.5.0) and sphinx(1.8.5).
`parser.py:75: UserWarning: Container node skipped: type=document warn("Container node skipped: type={0}".format(mdnode.t))`
The warnings are due to an issue in recommonmark's(a python package) older versions.
A better solution is to use the latest version of recommonmark(>=0.6.0) to avoid
these issue in the first place.
This patch fixes the warnings for older versions.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D91117
Jay Foad [Tue, 10 Nov 2020 16:49:10 +0000 (16:49 +0000)]
[AMDGPU] Remove unused check prefixes
David Green [Tue, 10 Nov 2020 16:47:43 +0000 (16:47 +0000)]
[Sphinx] Fix langref formatting. NFC
David Green [Tue, 10 Nov 2020 16:28:57 +0000 (16:28 +0000)]
[ARM] Add a RegAllocHint for hinting t2DoLoopStart towards LR
This hints the operand of a t2DoLoopStart towards using LR, which can
help make it more likely to become t2DLS lr, lr. This makes it easier to
move if needed (as the input is the same as the output), or potentially
remove entirely.
The hint is added after others (from COPY's etc) which still take
precedence. It needed to find a place to add the hint, which currently
uses the post isel custom inserter.
Differential Revision: https://reviews.llvm.org/D89883
Paul Robinson [Tue, 10 Nov 2020 16:25:46 +0000 (08:25 -0800)]
Revert "The arm64 triple requires AArch64 not ARM target"
This reverts commit
e7256825d57305045ae6fe1d44892a15a968314c.
apparently it's not that simple.
https://lab.llvm.org:8011/#/builders/109/2412
Jonas Devlieghere [Tue, 10 Nov 2020 16:12:41 +0000 (08:12 -0800)]
[lldb] Propagate llvm::Error to report_fatal_error
Instead of having a custom error message, propagate the llvm::Error from
SystemInitializerCommon. I didn't realize we had this overload until
Pavel mentioned it in D90987 today.
Paul Robinson [Tue, 10 Nov 2020 16:18:19 +0000 (08:18 -0800)]
The arm64 triple requires AArch64 not ARM target
Failure seen if you configure ARM target but not AArch64, as here:
http://lab.llvm.org:8011/#/builders/59/builds/271
David Green [Tue, 10 Nov 2020 15:57:58 +0000 (15:57 +0000)]
[ARM] Alter t2DoLoopStart to define lr
This changes the definition of t2DoLoopStart from
t2DoLoopStart rGPR
to
GPRlr = t2DoLoopStart rGPR
This will hopefully mean that low overhead loops are more tied together,
and we can more reliably generate loops without reverting or being at
the whims of the register allocator.
This is a fairly simple change in itself, but leads to a number of other
required alterations.
- The hardware loop pass, if UsePhi is set, now generates loops of the
form:
%start = llvm.start.loop.iterations(%N)
loop:
%p = phi [%start], [%dec]
%dec = llvm.loop.decrement.reg(%p, 1)
%c = icmp ne %dec, 0
br %c, loop, exit
- For this a new llvm.start.loop.iterations intrinsic was added, identical
to llvm.set.loop.iterations but produces a value as seen above, gluing
the loop together more through def-use chains.
- This new instrinsic conceptually produces the same output as input,
which is taught to SCEV so that the checks in MVETailPredication are not
affected.
- Some minor changes are needed to the ARMLowOverheadLoop pass, but it has
been left mostly as before. We should now more reliably be able to tell
that the t2DoLoopStart is correct without having to prove it, but
t2WhileLoopStart and tail-predicated loops will remain the same.
- And all the tests have been updated. There are a lot of them!
This patch on it's own might cause more trouble that it helps, with more
tail-predicated loops being reverted, but some additional patches can
hopefully improve upon that to get to something that is better overall.
Differential Revision: https://reviews.llvm.org/D89881
Ayshe Kuran [Tue, 10 Nov 2020 14:15:32 +0000 (14:15 +0000)]
Fix PR47973: Addressing integer division edge case with INT_MIN
Adjustment to integer division in int_div_impl.inc to avoid undefined behaviour that can occur as a result of having INT_MIN as one of the parameters.
Reviewed By: sepavloff
Differential Revision: https://reviews.llvm.org/D90218
Alexey Bataev [Tue, 10 Nov 2020 15:38:10 +0000 (07:38 -0800)]
Revert "[libomptarget] Add support for target update non-contiguous"
This reverts commit
6847bcec1aa9e262e2b175926d94a12fc1174c6d. It breaks
the build of libomptarget.
Simon Pilgrim [Tue, 10 Nov 2020 15:45:09 +0000 (15:45 +0000)]
[X86] Remove unused check-prefixes from vector rotate tests
Simon Pilgrim [Tue, 10 Nov 2020 15:39:55 +0000 (15:39 +0000)]
[X86] Remove unused check-prefixes from vector trunc tests
Simon Pilgrim [Tue, 10 Nov 2020 15:30:34 +0000 (15:30 +0000)]
[X86] Remove unused check-prefixes from vector funnel shift tests
George Mitenkov [Tue, 10 Nov 2020 14:57:49 +0000 (17:57 +0300)]
[MLIR][SPIRVToLLVM] Enhanced conversion for execution mode
This patch introduces a new conversion pattern for `spv.ExecutionMode`.
`spv.ExecutionMode` may contain important information about the entry
point, which we want to preserve. For example, `LocalSize` provides
information about the work-group size that can be reused. Hence, the
pattern for entry-point ops changes to the following:
- `spv.EntryPoint` is still simply removed
- Info from `spv.ExecutionMode` is used to create a global struct variable,
which looks like:
```
struct {
int32_t executionMode;
int32_t values[]; // optional values
};
```
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D89989
Pavel Labath [Thu, 5 Nov 2020 09:28:31 +0000 (10:28 +0100)]
[lldb/DWARF] Fix sizes of DW_OP_const[1248][us] and DW_OP_litN results
Dwarf says (Section 2.5.1.1. of DWARF v5) that these operations should
push "generic" (pointer-sized) values. This was not the case for
DW_OP_const operations (which were pushing values based on the size of
arguments), nor DW_OP_litN (which were always pushing 64-bit values).
The practical effect of this that were were unable to display the values
of variables if the size of the DW_OP_const opcode was smaller than the
value of the variable it was describing. This would happen because we
would store this (small) result into a buffer and then would not be able
to read sufficient data out of it (in Value::GetValueAsData). Gcc emits
debug info like this.
Other (more subtle) effects are also possible.
The same fix should be applied to DW_OP_const[us] (leb128 versions), but
I'm not doing that right now, because that would cause us to display
wrong (truncated) values of variables on 32-bit targets (pr48087).
Differential Revision: https://reviews.llvm.org/D90840
Muiez Ahmed [Tue, 10 Nov 2020 14:54:03 +0000 (09:54 -0500)]
[SystemZ][z/OS] Enable POSIX_l functions for z/OS
The aim of this patch is to enable POSIX _l functions for z/OS. In particular, the functions are provided with libc++ and this patch resorts to the fallback functions. Nonetheless, the functions are being added so the implementation of the ctype<> member functions can call them. The following changes were needed to allow for a successful build when using the libc++ library for z/OS.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D90319
Raphael Isemann [Tue, 10 Nov 2020 14:45:35 +0000 (15:45 +0100)]
[lldb] Reinstate TestGdbserverPort.test
This test was deleted by accident in the great lldb-mi removal:
37fed664022e07c2293b674e9c9d2b50aac547ba
Simon Pilgrim [Tue, 10 Nov 2020 14:24:00 +0000 (14:24 +0000)]
[ValueTacking] assume-queries-counter.ll - remove unused check prefix
Simon Pilgrim [Tue, 10 Nov 2020 14:23:10 +0000 (14:23 +0000)]
[BasicAA] phi-values-usage.ll - remove unused check prefix
Simon Pilgrim [Tue, 10 Nov 2020 14:22:16 +0000 (14:22 +0000)]
[ScalarEvolution] Remove unused check prefixes
Paul C. Anagnostopoulos [Sun, 8 Nov 2020 20:53:22 +0000 (15:53 -0500)]
[IR] [TableGen] Cleanup pass over the IR TableGen files, part 2
This pass cleans up NVVM.
Differential Revision: https://reviews.llvm.org/D91097
Nathan James [Tue, 10 Nov 2020 14:27:22 +0000 (14:27 +0000)]
[clang-tidy][NFC] Tweak GlobList to iterate backwards
By iterating backwards over the globs we can exit the loop as soon as we find a match.
While we're here:
- Regex doesn't need to be mutable.
- We can reserve the amount of Globs needed ahead of time.
- Using a SmallVector with size 0 is slightly more space efficient than a std::vector.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D91033
Raphael Isemann [Tue, 10 Nov 2020 14:25:08 +0000 (15:25 +0100)]
[lldb] Fix TestErrorMessages test on standalone builds by adding lldb-server substitution
It seems that TestErrorMessages.test is failing on the standalone + Xcode builds
as lldb-server executable can't be found by lit's default PATH search. I assume
invoking lldb-server via a lit substitution gets this working again as
everything else is working, so that's what this patch is doing.
I had to add the lldb-server substitution as the test seems lldb-server specific
and we don't want it to default to debugserver on Darwin.
Using a substitution also seems in general like a good idea so that the commands
lit is printing on failure are using the full path to lldb-server and can be
re-run in a terminal.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D91155
Sanjay Patel [Tue, 10 Nov 2020 13:11:39 +0000 (08:11 -0500)]
[CostModel] remove cost-kind predicate for intrinsics in basic TTI implementation
This is the last step in removing cost-kind as a consideration in the basic class model for intrinsics.
See D89461 for the start of that.
Subsequent commits dealt with each of the special-case intrinsics that had customization here in the
basic class. This should remove a barrier to retrying
D87188 (canonicalization to the abs intrinsic).
The ARM and x86 cost diffs seen here may be wrong because the target-specific overrides have their own
bugs, but we hope this is less wrong - if something has a significant throughput cost, then it should
have a significant size / blended cost too by default.
The only behavioral diff in current regression tests is shown in the x86 scatter-gather test (which is
misplaced or broken because it runs the entire -O3 pipeline) - we unrolled less, and we assume that is
a improvement.
Differential Revision: https://reviews.llvm.org/D90554
Michał Górny [Sun, 8 Nov 2020 15:40:49 +0000 (16:40 +0100)]
[lldb] [Process/FreeBSDRemote] Explicitly copy dbregs to new threads
Explicitly copy dbregs to new threads to ensure that watchpoints
are propagated properly. Fixes the test failure due to apparent kernel
race between reporting a new thread and resuming main thread execution
that makes implicit inheritance of dbregs unreliable. By copying them
explicitly, we ensure that the new thread correctly respects watchpoints
that were set after the thread was created but before it was reported.
The code is copied from the NetBSD plugin and modernized to use
llvm::Error.
Differential Revision: https://reviews.llvm.org/D91032
Michał Górny [Mon, 9 Nov 2020 14:24:48 +0000 (15:24 +0100)]
[lldb] [Process/FreeBSDRemote] Correct DS/ES/FS/GS register sizes
Fix DS/ES/FS/GS register sizes in getter/setter for FreeBSD. Apparently
only CS and SS registers are specified as 64/32-bit in LLDB, while
the others are specified as 16-bit. This fixes the failing
StandardStartupTest.TestStopReplyContainsThreadPcs lldb-server unittest.
Differential Revision: https://reviews.llvm.org/D91076
Michał Górny [Sat, 7 Nov 2020 17:54:07 +0000 (18:54 +0100)]
[lldb] [Process/FreeBSDRemote] Fix handling user-generated SIGTRAP
Update the SIGTRAP handler to account for the possibility of SIGTRAP
being generated by the user, i.e. not having any specific debugging
event associated with it, as well as receiving unknown SIGTRAPs. These
instances of SIGTRAP are passed to the regular signal handler.
Differential Revision: https://reviews.llvm.org/D91007
Simon Pilgrim [Tue, 10 Nov 2020 13:09:31 +0000 (13:09 +0000)]
[MC][Disassembler][AMDGPU] Remove unused check prefix
Simon Pilgrim [Tue, 10 Nov 2020 13:06:09 +0000 (13:06 +0000)]
[MC][MIPS] Remove unused check prefixes
Simon Pilgrim [Tue, 10 Nov 2020 12:54:37 +0000 (12:54 +0000)]
[CostModel][ARM] Remove unused check-prefix
Simon Pilgrim [Tue, 10 Nov 2020 12:54:06 +0000 (12:54 +0000)]
[CostModel][AArch64] Remove unused check-prefix
Kazushi (Jam) Marukawa [Thu, 5 Nov 2020 01:32:34 +0000 (10:32 +0900)]
[VE][NFC] Change cast to dyn_cast
We used cast where we should use dyn_cast. So, change it this time.
Old code cause problems if I implement brind instruction and compile
openmp using new compiler.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D91151
Simon Pilgrim [Tue, 10 Nov 2020 12:48:02 +0000 (12:48 +0000)]
[CostModel][X86] Remove unused check-prefixes
Wang, Pengfei [Tue, 10 Nov 2020 12:42:10 +0000 (20:42 +0800)]
[CodeGen][X86] Remove unused check-prefixes from more avx512 tests. NFCI.
Pablo Barrio [Fri, 18 Sep 2020 13:50:56 +0000 (14:50 +0100)]
[AArch64] Enable RAS 1.1 system registers in all AArch64
Some use cases (e.g. kernel devs) have strict requirements to only enable
features available with -march=armv8-a, e.g. no armv8.1-a. Enabling RAS 1.1 in
all AArch64 means they can consider to support it.
Bear in mind that the first versions of the Armv8 architecture still do not
support RAS 1.1. This patch only lets devs write code with the user-friendly
register mnemonic instead of the ugly generic S<op0>_<op1>_<Cn>_<Cm>_<op2>.
They still need to place runtime checks to make sure that the CPU to run on
supports RAS 1.1.
Differential Revision: https://reviews.llvm.org/D90594
Haojian Wu [Tue, 10 Nov 2020 12:05:45 +0000 (13:05 +0100)]
Fix the buildbot failure.
Looks like we hit a bug in iterator of DeclContextLookupResult, workaround
by a forloop.
http://45.33.8.238/win/27605/step_4.txt
Kirill Bobyrev [Tue, 10 Nov 2020 12:07:03 +0000 (15:07 +0300)]
[clangd] Fix recommended gRPC version
Typo: 1.32.2 does not exist, it should be 1.33.2 https://github.com/grpc/grpc/releases/tag/v1.33.2
Sanne Wouda [Wed, 21 Oct 2020 11:01:59 +0000 (11:01 +0000)]
Add loop distribution to the LTO pipeline
The LoopDistribute pass is missing from the LTO pipeline, so
-enable-loop-distribute has no effect during post-link. The pre-link
loop distribution doesn't seem to survive the LTO pipeline either.
With this patch (and -flto -mllvm -enable-loop-distribute) we see a 43%
uplift on SPEC 2006 hmmer for AArch64. The rest of SPECINT 2006 is
unaffected.
Differential Revision: https://reviews.llvm.org/D89896
Wang, Pengfei [Tue, 10 Nov 2020 12:01:45 +0000 (20:01 +0800)]
[CodeGen][X86] Remove unused check-prefixes from some avx512 tests. NFCI.
Kazushi (Jam) Marukawa [Tue, 10 Nov 2020 04:42:24 +0000 (13:42 +0900)]
[VE] Support inline assembly with vector regsiters
Support inline assembly with vector registers. Add a regression test also.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D91146
Sander de Smalen [Tue, 10 Nov 2020 08:32:23 +0000 (08:32 +0000)]
[LoopVectorizer] NFC: Propagate ElementCount to more interfaces.
Interfaces changed to take `ElementCount` as parameters:
* LoopVectorizationPlanner::buildVPlans
* LoopVectorizationPlanner::buildVPlansWithVPRecipes
* LoopVectorizationCostModel::selectVectorizationFactor
This patch is NFC for fixed-width vectors.
Reviewed By: dmgreen, ctetreau
Differential Revision: https://reviews.llvm.org/D90879
Michał Górny [Mon, 9 Nov 2020 11:05:54 +0000 (12:05 +0100)]
[lldb] [test] Rename '.categories' to 'categories'
Make category-specifying files visible. There is really no good reason
to keep them hidden, and having them visible increases the chances
that someone will actually spot them.
Differential Revision: https://reviews.llvm.org/D91065
Michał Górny [Mon, 9 Nov 2020 09:47:22 +0000 (10:47 +0100)]
[lldb] [test] Skip ObjC-based tests via 'objc' category
Replace the plethora of ObjC-implied 'skipUnlessDarwin' decorators
with marking tests as 'objc' category (whenever missing), and skip all
ObjC tests on non-Darwin platforms. I have used '.categories' file
wherever it was present already or all (>1) tests were relying on ObjC,
and explicit add_test_categories() where there was only one test.
Differential Revision: https://reviews.llvm.org/D91056
Joe Ellis [Tue, 10 Nov 2020 10:55:20 +0000 (10:55 +0000)]
[SVE][AArch64] Improve specificity of vectorization legality TypeSize test
The test was using -O2, where -loop-vectorize will suffice.
Reviewed By: fpetrogalli
Differential Revision: https://reviews.llvm.org/D90685
Simon Pilgrim [Tue, 10 Nov 2020 10:48:48 +0000 (10:48 +0000)]
[X86] Remove unused check-prefixes from some vector tests
Simon Pilgrim [Tue, 10 Nov 2020 10:17:46 +0000 (10:17 +0000)]
Add a llvm_unreachable to fix MSVC unhandled enum warning. NFCI.
Stefan Gränitz [Tue, 10 Nov 2020 10:36:59 +0000 (11:36 +0100)]
[lldb][ObjectFile] Relocate sections for in-memory objects (e.g. received via JITLoaderGDB)
Part 2 of a fix for JITed code debugging. This has been a regression from 5.0 to 6.0 and it's still reproducible on current master: https://bugs.llvm.org/show_bug.cgi?id=36209 Part 1 was D61611 a while ago.
The in-memory object files we obtain from JITLoaderGDB are not yet relocated. It looks like this used to happen on the LLDB side and my guess is that it broke with D38142. (However, it's hard to tell because the whole thing was broken already due to the bug in part 1.) The patch moved relocation resolution to a later point in time and didn't apply it to in-memory objects. I am not aware of any reason why we wouldn't resolve relocations per-se, so I made it unconditional here. On Debian, it fixes the bug for me and all tests in `check-lldb` are still fine.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D90769
Mirko Brkusanin [Fri, 6 Nov 2020 14:36:17 +0000 (15:36 +0100)]
[GlobalISel] Add combine for (x | mask) -> x when (x | mask) == x
If we have a mask, and a value x, where (x | mask) == x, we can drop the OR
and just use x.
Differential Revision: https://reviews.llvm.org/D90952
Mirko Brkusanin [Fri, 6 Nov 2020 13:15:10 +0000 (14:15 +0100)]
[GlobalISel] Expand combine for (x & mask) -> x when (x & mask) == x
We can use KnownBitsAnalysis to cover cases when mask is not trivial. It can
also help with cases when mask is not constant but can still be folded into
one. Since 'and' is comutative we should treat both operands as possible
replacements.
Differential Revision: https://reviews.llvm.org/D90674
Mirko Brkusanin [Fri, 30 Oct 2020 14:35:42 +0000 (15:35 +0100)]
[AMDGPU][GlobalISel] Combine shift + logic + shift with constant operands
This sequence of instructions can be simplified if they are single use and
some operands are constants. Additional combines may be applied afterwards.
Differential Revision: https://reviews.llvm.org/D90223
Mirko Brkusanin [Thu, 29 Oct 2020 17:12:21 +0000 (18:12 +0100)]
[AMDGPU][GlobalISel] Fold a chain of two shift instructions with constant operands
Sequence of same shift instructions with constant operands can be combined into
a single shift instruction.
Differential Revision: https://reviews.llvm.org/D90217
James Henderson [Fri, 6 Nov 2020 13:55:10 +0000 (13:55 +0000)]
[lld][ELF][test] Add additional --symbol-ordering-file testing
This covers a few cases that aren't otherwise tested:
1) Non-ascii symbol names are ordered.
2) Comments, whitespace and blank lines are trimmed.
3) Missing order files result in an error.
Reviewed by: MaskRay, grimar
Differential Revision: https://reviews.llvm.org/D90933
James Henderson [Tue, 3 Nov 2020 14:41:09 +0000 (14:41 +0000)]
[lld][ELF] Add additional time trace categories
I noticed when running a large link with the --time-trace option that
there were several areas which were missing any specific time trace
categories (aside from the generic link/ExecuteLinker categories). This
patch adds new categories to fill most of the "gaps", or to provide more
detail than was previously provided.
Reviewed by: MaskRay, grimar, russell.gallop
Differential Revision: https://reviews.llvm.org/D90686
Alex Zinenko [Mon, 9 Nov 2020 16:29:21 +0000 (17:29 +0100)]
[mlir] ODS-backed python binding generator for custom op classes
Introduce an ODS/Tablegen backend producing Op wrappers for Python bindings
based on the ODS operation definition. Usage:
mlir-tblgen -gen-python-op-bindings -Iinclude <path/to/Ops.td> \
-bind-dialect=<dialect-name>
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D90960
Kazushi (Jam) Marukawa [Tue, 10 Nov 2020 04:42:24 +0000 (13:42 +0900)]
[VE] Support inline assembly
Support inline assembly with scalar registers. Add a regression test also.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D91119
Alex Zinenko [Fri, 6 Nov 2020 14:09:54 +0000 (15:09 +0100)]
[mlir] Support slicing for operands in results in Python bindings
Slicing, that is element access with `[being:end:step]` structure, is
a common Python idiom for sequence-like containers. It is also necessary
to support custom accessor for operations with variadic operands and
results (an operation an return a slice of its operands that correspond
to the given variadic group).
Add generic utility to support slicing in Python bindings and use it
for operation operands and results.
Depends On D90923
Reviewed By: stellaraccident, mehdi_amini
Differential Revision: https://reviews.llvm.org/D90936
Haojian Wu [Tue, 10 Nov 2020 08:13:32 +0000 (09:13 +0100)]
[clangd] Bump index version number.
https://reviews.llvm.org/D89670 changed the Ref structure, we need to
bump the version to invalidate all stored stale data, otherwise we will
get ` Error while reading shard: malformed or truncated refs` when
building the background index.
Differential Revision: https://reviews.llvm.org/D91131
Kirill Bobyrev [Tue, 10 Nov 2020 09:17:31 +0000 (10:17 +0100)]
[clangd] Update remote index documentation
* Even though remote index is still somewhat experimental, it can now be
used withing clangd itself: this should be the primary way of trying
it out
* Remove `protobuf-compiler` from list of needed Debian packages as it
`protobuf-compiler-grpc` already depends on it
* Bump recommended gRPC version to 1.32.3
Jay Foad [Mon, 9 Nov 2020 10:46:38 +0000 (10:46 +0000)]
[AMDGPU] Remove an unused return value. NFC.
Differential Revision: https://reviews.llvm.org/D91063
Kirill Bobyrev [Tue, 10 Nov 2020 09:08:42 +0000 (10:08 +0100)]
[clangd] Enhance Clangd rename testing coverage
We plan to eliminate error-prone and obsolete Clang-Rename API from Clangd. To
do that, we will introduce Decl canonicalization rules that will make renaming
code simpler and easier to maintain (D71880).
To ensure smooth transition to the new implementation, many Clang-Rename tests
will be adopted in Clangd to prevent any possible regressions. This patch is
the first in the chain of test migration patches. It improves existing tests
and adopts tests from Clang-Rename's alias, class and enum testing files.
Reviewed By: hokein
Differential Revision: https://reviews.llvm.org/D91102
Wang, Pengfei [Tue, 10 Nov 2020 08:06:13 +0000 (16:06 +0800)]
[CodeGen][X86] Remove unused check-prefixes. NFCI.
Artur Bialas [Tue, 10 Nov 2020 08:49:12 +0000 (09:49 +0100)]
[mlir][spirv] Add VectorInsertDynamicOp and vector.insertelement lowering
VectorInsertDynamicOp in SPIRV dialect
conversion from vector.insertelement to spirv VectorInsertDynamicOp
Differential Revision: https://reviews.llvm.org/D90927
Martin Storsjö [Fri, 6 Nov 2020 07:34:17 +0000 (09:34 +0200)]
[libcxx] [test] Simplify the fs helper header for posix cases. NFC.
Differential Revision: https://reviews.llvm.org/D91073
Martin Storsjö [Mon, 9 Nov 2020 11:59:52 +0000 (13:59 +0200)]
[libcxx] [test] Call create_directory_symlink where relevant
Differential Revision: https://reviews.llvm.org/D91072
Martin Storsjö [Mon, 9 Nov 2020 11:59:13 +0000 (13:59 +0200)]
[libcxx] [test] Make a separate create_directory_symlink helper
This more closely mirrors the public API, instead of using an
obscure bool parameter.
Differential Revision: https://reviews.llvm.org/D91071
Martin Probst [Tue, 10 Nov 2020 08:16:49 +0000 (09:16 +0100)]
clang-format: [JS] support new assignment operators.
Before:
a && = b;
After:
a &&= b;
These operators are new additions in ES2021.
Differential Revision: https://reviews.llvm.org/D91132