Jean-Michel Gorius [Wed, 11 Nov 2020 17:01:39 +0000 (18:01 +0100)]
[mlir] Add plus, star and optional less/greater parsing
The tokens are already handled by the lexer. This revision exposes them
through the parser interface.
This revision also adds missing functions for question mark parsing and
completes the list of valid punctuation tokens in the documentation.
Differential Revision: https://reviews.llvm.org/D90907
Hans Wennborg [Thu, 5 Nov 2020 12:44:50 +0000 (13:44 +0100)]
[dllexport] Avoid assert for explicitly defaulted methods in explicit instantiation definitions (PR47683)
Clang was asserting due to attempting to codegen such methods twice.
Differential revision: https://reviews.llvm.org/D90849
Alex Zinenko [Tue, 10 Nov 2020 16:31:36 +0000 (17:31 +0100)]
[mlir] Generate Op builders for Python bindings
Add an ODS-backed generator of default builders. This currently does not
support operation with attribute arguments, for which the builder is
just ignored. Attribute support will be introduced separately for
builders and accessors.
Default builders are always generated with the same number of result and
operand groups as the ODS specification, i.e. one group per each operand
or result. Optional elements accept None but cannot be omitted. Variadic
groups accept iterable objects and cannot be replaced with a single
object.
For some operations, it is possible to infer the result type given the
traits, but most traits rely on inline pieces of C++ that we cannot
(yet) forward to Python bindings. Since the Ops where the inference is
possible (having the `SameOperandAndResultTypes` trait or
`TypeMatchesWith` without transform field) are a small minority, they
also require the result type to make the builder syntax more consistent.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D91190
Kazushi (Jam) Marukawa [Tue, 10 Nov 2020 12:00:20 +0000 (21:00 +0900)]
[VE] Change the default type of v64 register class
Change the default type of v64 register class from v512i32 to v256f64.
Add a regression test also.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D91301
Julian Gross [Tue, 3 Nov 2020 11:28:49 +0000 (12:28 +0100)]
[MLIR] Added documentation and manual to use bufferization features.
Added documentation about the bufferization features.
Furthermore, the usage of pre- and post-processing is described.
This also includes information about optimization functionalities.
Differential Revision: https://reviews.llvm.org/D90675
Kadir Cetinkaya [Thu, 12 Nov 2020 09:33:30 +0000 (10:33 +0100)]
[clangd] Simplify relations deserialization loop, NFC.
David Sherwood [Thu, 22 Oct 2020 08:37:33 +0000 (09:37 +0100)]
[SVE] Deal with SVE tuple call arguments correctly when running out of registers
When passing SVE types as arguments to function calls we can run
out of hardware SVE registers. This is normally fine, since we
switch to an indirect mode where we pass a pointer to a SVE stack
object in a GPR. However, if we switch over part-way through
processing a SVE tuple then part of it will be in registers and
the other part will be on the stack.
I've fixed this by ensuring that:
1. When we don't have enough registers to allocate the whole block
we mark any remaining SVE registers temporarily as allocated.
2. We temporarily remove the InConsecutiveRegs flags from the last
tuple part argument and reinvoke the autogenerated calling
convention handler. Doing this prevents the code from entering
an infinite recursion and, in combination with 1), ensures we
switch over to the Indirect mode.
3. After allocating a GPR register for the pointer to the tuple we
then deallocate any SVE registers we marked as allocated in 1).
We also set the InConsecutiveRegs flags back how they were before.
4. I've changed the AArch64ISelLowering LowerCALL and
LowerFormalArguments functions to detect the start of a tuple,
which involves allocating a single stack object and doing the
correct numbers of legal loads and stores.
Differential Revision: https://reviews.llvm.org/D90219
David Green [Thu, 12 Nov 2020 08:37:46 +0000 (08:37 +0000)]
[ARM] Remove unused check labels. NFC
Marek Kurdej [Thu, 12 Nov 2020 08:32:29 +0000 (09:32 +0100)]
[libc++] [P0340] [C++20] Update status page. NFC.
This was implemented in
410b650e674496e61506fa88f3026759b8759d0f:
"Implement P0340R3: Make 'underlying_type' SFINAE-friendly. Reviewed as https://reviews.llvm.org/D63574
llvm-svn: 364094"
MaheshRavishankar [Thu, 12 Nov 2020 08:24:36 +0000 (00:24 -0800)]
[mlir][Linalg] Improve the logic to perform tile and fuse with better dependence tracking.
This change does two main things
1) An operation might have multiple dependences to the same
producer. Not tracking them correctly can result in incorrect code
generation with fusion. To rectify this the dependence tracking
needs to also have the operand number in the consumer.
2) Improve the logic used to find the fused loops making it easier to
follow. The only constraint for fusion is that linalg ops (on
buffers) have update semantics for the result. Fusion should be
such that only one iteration of the fused loop (which is also a
tiled loop) must touch only one (disjoint) tile of the output. This
could be relaxed by allowing for recomputation that is the default
when oeprands are tensors, or can be made legal with promotion of
the fused view (in future).
Differential Revision: https://reviews.llvm.org/D90579
Amara Emerson [Thu, 12 Nov 2020 06:45:19 +0000 (22:45 -0800)]
[AArch64][GlobalISel] Optimize G_PTR_ADD with a negated offset to be a G_SUB.
Max Kazantsev [Thu, 12 Nov 2020 05:24:18 +0000 (12:24 +0700)]
[NFC][SCEV] Generalize monotonicity check for full and limited iteration space
A piece of logic of `isLoopInvariantExitCondDuringFirstIterations` is actually
a generalized predicate monotonicity check. This patch moves it into the
corresponding method and generalizes it a bit.
Differential Revision: https://reviews.llvm.org/D90395
Reviewed By: apilipenko
Chuanqi Xu [Thu, 12 Nov 2020 05:17:16 +0000 (13:17 +0800)]
[NFC][coroutines] remove unused argument in SemaCoroutine
Test plan: check-llvm, check-clang
Reviewers: lxfind, junparser
Differential Revision: https://reviews.llvm.org/D91243
Xun Li [Thu, 12 Nov 2020 05:09:22 +0000 (21:09 -0800)]
Revert "[Coroutine] Allocas used by StoreInst does not always escape"
This reverts commit
8bc7b9278e55c4c8c731e7600a2d146438697964, which landed by accident.
Aart Bik [Thu, 12 Nov 2020 02:40:01 +0000 (18:40 -0800)]
[mlir][sparse] export sparse tensor runtime support through header file
Exposing the C versions of the methods of the sparse runtime support lib
through header files will enable using the same methods in an MLIR program
as well as a C++ program, which will simplify future benchmarking comparisons
(e.g. comparing MLIR generated code with eigen for Matrix Market sparse matrices).
Reviewed By: penpornk
Differential Revision: https://reviews.llvm.org/D91316
Max Kazantsev [Thu, 12 Nov 2020 05:01:12 +0000 (12:01 +0700)]
[IndVars] IV user should not prevent use widening
Sometimes the an instruction we are trying to widen is used by the IV
(which means the instruction is the IV increment). Currently this may
prevent its widening. We should ignore such user because it will be
dead once the transform is done anyways.
Differential Revision: https://reviews.llvm.org/D90920
Reviewed By: fhahn
Xun Li [Thu, 12 Nov 2020 04:53:45 +0000 (20:53 -0800)]
[Coroutine] Allocas used by StoreInst does not always escape
In the existing logic, for a given alloca, as long as its pointer value is stored into another location, it's considered as escaped.
This is a bit too conservative. Specifically, in non-optimized build mode, it's often to have patterns of code that first store an alloca somewhere and then load it right away.
These used should be handled without conservatively marking them escaped.
This patch tracks how the memory location where an alloca pointer is stored into is being used. As long as we only try to load from that location and nothing else, we can still
consider the original alloca not escaping and keep it on the stack instead of putting it on the frame.
Differential Revision: https://reviews.llvm.org/D91305
Max Kazantsev [Thu, 12 Nov 2020 03:49:01 +0000 (10:49 +0700)]
[IndVars] Recognize 'sub nuw' expressed as 'add' for widening
InstCombine canonicalizes 'sub nuw' instructions to 'add' without the
`nuw` flag. The typical case where we see it is decrementing induction
variables. For them, IndVars fails to prove that it's legal to widen them,
and inserts unprofitable `zext`'s.
This patch adds recognition of such pattern using SCEV.
Differential Revision: https://reviews.llvm.org/D89550
Reviewed By: fhahn, skatkov
Max Kazantsev [Thu, 12 Nov 2020 03:47:34 +0000 (10:47 +0700)]
[Test] Add Check statement
Richard Smith [Thu, 12 Nov 2020 03:05:32 +0000 (19:05 -0800)]
Fix structural comparison of template template arguments to compare the
right union member.
Should fix the armv8 buildbot.
Qiu Chaofan [Thu, 12 Nov 2020 02:19:52 +0000 (10:19 +0800)]
[PowerPC] [Clang] Define macros to identify quad-fp semantics
We have option -mabi=ieeelongdouble to set current long double to
IEEEquad semantics. Like what GCC does, we need to define
__LONG_DOUBLE_IEEE128__ macro in this case, and __LONG_DOUBLE_IBM128__
if using PPCDoubleDouble.
Reviewed By: steven.zhang
Differential Revision: https://reviews.llvm.org/D90208
Lang Hames [Thu, 12 Nov 2020 02:10:47 +0000 (13:10 +1100)]
[docs] Fix formatting, clarify comment in ORCv2 doc
Richard Smith [Thu, 12 Nov 2020 01:54:26 +0000 (17:54 -0800)]
Generalize regex matching std::string variants to compensate for recent
improvements to Clang's type printing.
Aart Bik [Thu, 12 Nov 2020 00:37:48 +0000 (16:37 -0800)]
[mlir][sparse] integrate sparse annotation into generic linalg op
This CL integrates the new sparse annotations (hereto merely added as fully
transparent attributes) more tightly to the generic linalg op in order to add
verification of the annotations' consistency as well as to make make other
passes more aware of their presence (in the long run, rewriting rules must
preserve the integrity of the annotations).
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D91224
Joseph Huber [Mon, 9 Nov 2020 16:02:30 +0000 (11:02 -0500)]
[OpenMP] Begin Adding OpenMP Tool to Gather OpenMP Information
Summary:
This patch begins to add support for a set of scripts that can be used to get information from OpenMP programs to better describe problems and eventually show the data to the user in formatted output. Right now the only support is forformatting the register and memory usage reports from ptxas and nvlink. This is simply done as a wrapper around clang and clang++.
Reviewers: jdoerfert
DIfferential Revision: https://reviews.llvm.org/D91085
Joachim Protze [Thu, 12 Nov 2020 00:22:48 +0000 (01:22 +0100)]
[OpenMP][Tools][Tests] Fix ompt multiplex test
With 6213ed0 the master callback was renamed to masked.
The multiplex tests must check for masked now.
peter klausler [Tue, 10 Nov 2020 22:56:51 +0000 (14:56 -0800)]
[flang][MSVC] Use list<Message> rather than forward_list<> in Messages
The implementation of Messages with forward_list<> makes some
nonstandard assumptions about the validity of iterators that don't
hold up with MSVC's implementation. Use list<> instead. The
measured performance is comparable.
This change obviated a distinction between two member functions
of Messages, and the uses of one have been replaced with calls
to the other.
Similar usage in CharBuffer was also replaced for consistency.
Differential revision: https://reviews.llvm.org/D91210
Sam McCall [Wed, 11 Nov 2020 17:27:45 +0000 (18:27 +0100)]
[Syntax] Tablegen literal expressions.
Non-mechanical changes:
- Added FIXME to StringLiteral to cover multi-token string literals.
- LiteralExpression::getLiteralToken() is gone. (It was never called)
This is because we don't codegen methods in Alternatives
It's conceptually suspect if we consider multi-token string literals, though.
Differential Revision: https://reviews.llvm.org/D91277
Dave Lee [Tue, 10 Nov 2020 21:59:04 +0000 (13:59 -0800)]
[lldb] Switch expect to runCmd in TestRecursiveTypes (NFC)
Following discussion in D91193, a change made in D88792 was not quite right.
This restores the message argument, and switches from `expect` to `runCmd`.
Differential Revision: https://reviews.llvm.org/D91206
Lang Hames [Thu, 12 Nov 2020 00:08:58 +0000 (11:08 +1100)]
[docs] Fix formatting in ORCv2.rst.
Bold and fixed-width do not appear to mix well.
Lang Hames [Wed, 11 Nov 2020 23:05:43 +0000 (10:05 +1100)]
[docs] Update ORCv2 design doc.
Fixes some formatting and wording, and adds a roadmap section.
Arnold Schwaighofer [Mon, 9 Nov 2020 20:05:57 +0000 (12:05 -0800)]
[coro] Async coroutines: Allow more than 3 arguments in the dispatch function
We need to be able to call function pointers. Inline the dispatch
function.
Also inline the context projection function.
Transfer debug locations from the suspend point to the inlined functions.
Use the function argument index instead of the function argument in
coro.id.async. This solves any spurious use issues.
Coerce the arguments of the tail call function at a suspend point. The LLVM
optimizer seems to drop casts leading to a vararg intrinsic.
rdar://
70097093
Differential Revision: https://reviews.llvm.org/D91098
Arthur Eubanks [Sun, 8 Nov 2020 21:51:29 +0000 (13:51 -0800)]
[NewPM] Provide method to run all pipeline callbacks, used for -O0
Some targets may add required passes via
TargetMachine::registerPassBuilderCallbacks(). We need to run those even
under -O0. As an example, BPFTargetMachine adds
BPFAbstractMemberAccessPass, a required pass.
This also allows us to clean up BackendUtil.cpp (and out-of-tree Rust
usage of the NPM) by allowing us to share added passes like coroutines
and sanitizers between -O0 and other optimization levels.
Since callbacks may end up not adding passes, we need to check if the
pass managers are empty before adding them, so PassManager now has an
isEmpty() function. For example, polly adds callbacks but doesn't always
add passes in those callbacks, so this is necessary to keep
-debug-pass-manager tests' output from changing depending on if polly is
enabled or not.
Tests are a continuation of those added in
https://reviews.llvm.org/D89083.
Reviewed By: asbirlea, Meinersbur
Differential Revision: https://reviews.llvm.org/D89158
Richard Smith [Wed, 11 Nov 2020 22:34:20 +0000 (14:34 -0800)]
Suppress printing of inline namespace names in diagnostics by default,
except where they are necessary to disambiguate the target.
This substantially improves diagnostics from the standard library,
which are otherwise full of `::__1::` noise.
Richard Smith [Wed, 11 Nov 2020 21:04:35 +0000 (13:04 -0800)]
Suppress printing template arguments that match default template
arguments of types by default.
This somewhat improves the worst-case printing of types like
std::string, std::vector, etc., where many irrelevant default arguments
can be included in the type as printed if we've lost the type sugar.
Sam McCall [Mon, 2 Nov 2020 23:24:03 +0000 (00:24 +0100)]
[clangd] Add index server request logging
- Add verbose logging of payloads
- Add public logging of request summaries
- fix non-logging of messages in request scopes (oops!)
- add test for public/non-public logging, extending pipeline_helper a bit.
We've accumulated quite a lot of duplication in the request handlers by now.
I should factor that out, but not in this patch...
Differential Revision: https://reviews.llvm.org/D90654
Ruslan Arutyunyan [Tue, 10 Nov 2020 12:49:55 +0000 (07:49 -0500)]
[libc++] Implement P0919R3: heterogenous lookup for unordered containers
Implement heterogenous lookup for unordered containers, including the
refinement from P1690R1.
Differential Revision: https://reviews.llvm.org/D87171
Baptiste Saleil [Mon, 2 Nov 2020 15:38:24 +0000 (09:38 -0600)]
[PowerPC] Accumulator/Unprimed Accumulator register copy, spill and restore
This patch adds support for accumulator/unprimed accumulator
register copy, spill and restore for MMA.
Authored By: Baptiste Saleil
Reviewed By: #powerpc, bsaleil, amyk
Differential Revision: https://reviews.llvm.org/D90616
Michael Kruse [Wed, 11 Nov 2020 22:14:48 +0000 (16:14 -0600)]
[Polly][OpTree] Fix mid-processing change of access kind.
Operand tree forwarding can cause the change of an access kind; in
particular change from a scalar kind to an array kind if the scalar
dependency is not necessary. Such an access cannot and doesn't need to
be forwarded anymore.
Fixes llvm.org/PR48034
Michael Kruse [Wed, 11 Nov 2020 22:00:42 +0000 (16:00 -0600)]
[Polly][OpTree] Better report applied changes.
Print to dbgs() any taken action.
Also, read-only scalars do not require any action unless
-polly-analyze-read-only-scalars=true is used. Better refect this by
using ForwardingAction::triviallyForwardable and thus not bumping the
statistics.
Duncan P. N. Exon Smith [Thu, 5 Nov 2020 17:43:58 +0000 (12:43 -0500)]
Frontend: Change ComputePreambleBounds to take MemoryBufferRef, NFC
Avoid requiring an actual MemoryBuffer in ComputePreambleBounds, when
a MemoryBufferRef will do just fine.
Differential Revision: https://reviews.llvm.org/D90890
Sam McCall [Wed, 11 Nov 2020 12:45:19 +0000 (13:45 +0100)]
[clangd] Sanity-check array sizes read from disk before allocating them.
Previously a corrupted index shard could cause us to resize arrays to an
arbitrary int32. This tends to be a huge number, and can render the
system unresponsive.
Instead, cap this at the amount of data that might reasonably be read
(e.g. the #bytes in the file). If the specified length is more than that,
assume the data is corrupt.
Differential Revision: https://reviews.llvm.org/D91258
Louis Dionne [Wed, 11 Nov 2020 22:04:32 +0000 (17:04 -0500)]
[libc++] NFC: Simplify incude of <cstdlib>
We include <exception>, which includes <cstdlib> unconditionally anyway.
Louis Dionne [Wed, 11 Nov 2020 21:50:43 +0000 (16:50 -0500)]
[libc++abi] Reuse libc++'s refstring.h header instead of copying it
This has been a long-standing TODO item, however we have now been requiring
a monorepo layout to build libc++ and libc++abi for a while now. Hence,
we can fix this code duplication issue now.
Note that it's still not super pretty to reach into libc++ to include
headers, but it's better than having duplicated code which can get out
of sync.
peter klausler [Wed, 11 Nov 2020 19:05:23 +0000 (11:05 -0800)]
[flang] Fix CheckSpecificationExpr handling of associated names
Avoid a spurious error message about a dummy procedure reference
in a specification expression by restructuring the handling of
use-associated and host-associated symbols.
Updated to fix a circular dependence between shared library
binaries that was introduced by the original patch.
Differential revision: https://reviews.llvm.org/D91286
Arthur Eubanks [Sat, 7 Nov 2020 02:32:46 +0000 (18:32 -0800)]
[CGSCC][Inliner] Handle new non-trivial edges in updateCGAndAnalysisManagerForPass
Previously the inliner did a bit of a hack by adding ref edges for all
new edges introduced by performing an inline before calling
updateCGAndAnalysisManagerForPass(). This was because
updateCGAndAnalysisManagerForPass() didn't handle new non-trivial call
edges.
This adds handling of non-trivial call edges to
updateCGAndAnalysisManagerForPass(). The inliner called
updateCGAndAnalysisManagerForFunctionPass() since it was handling adding
newly introduced edges (so updateCGAndAnalysisManagerForPass() would
only have to handle promotion), but now it needs to call
updateCGAndAnalysisManagerForCGSCCPass() since
updateCGAndAnalysisManagerForPass() is now handling the new call edges
and function passes cannot add new edges.
We follow the previous path of adding trivial ref edges then letting promotion
handle changing the ref edges to call edges and the CGSCC updates. So
this still does not allow adding call edges that result in an addition
of a non-trivial ref edge.
This is in preparation for better detecting devirtualization. Previously
since the inliner itself would add ref edges,
updateCGAndAnalysisManagerForPass() would think that promotion and thus
devirtualization had happened after any sort of inlining.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D91046
Florian Hahn [Wed, 11 Nov 2020 21:39:22 +0000 (21:39 +0000)]
[Matrix] Update mangling to use paramterized vendor ext type syntax.
The Itanium CXX ABI grammer has been extended to support parameterized
vendor extended types [1].
This patch updates Clang's mangling for matrix types to use the new
extension.
[1] https://github.com/itanium-cxx-abi/cxx-abi/commit/
b359d28971bdb961dd9b61bd0ef8c884452b4740
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D91253
Louis Dionne [Wed, 11 Nov 2020 21:33:38 +0000 (16:33 -0500)]
[libc++] NFC: Synchronize libc++abi and libc++ new definitions
Some changes were made to the libc++abi new/delete definitions, but
they were not copied back to the libc++ definition. It sucks that we
have this duplication, but for now at least let's keep them in sync.
Jessica Paquette [Wed, 11 Nov 2020 21:21:35 +0000 (13:21 -0800)]
[AArch64][GlobalISel] Mark G_FCONSTANT as legal when there is full fp16 support
When there is full fp16 support, there is no reason to widen 16-bit
G_FCONSTANTs to 32 bits. Mark them as legal in this case.
Also, we currently import a pattern for materializing a 16-bit 0.0.
Add a testcase showing we select it.
(All other 16-bit G_FCONSTANTS are not yet selected.)
Differential Revision: https://reviews.llvm.org/D89164
Kazushi (Jam) Marukawa [Wed, 11 Nov 2020 11:48:33 +0000 (20:48 +0900)]
[VE] Support vector register in inline asm
Support a vector register constraint in inline asm of clang.
Add a regression test also.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D91251
Duncan P. N. Exon Smith [Fri, 6 Nov 2020 17:40:43 +0000 (12:40 -0500)]
Frontend: Skip namespace around createVFSFromCompilerInvocation definition, NFC
Qualify definitions with `clang::` rather than opening/closing a namespace.
Differential Revision: https://reviews.llvm.org/D90957
peter klausler [Tue, 10 Nov 2020 23:03:21 +0000 (15:03 -0800)]
[flang] Allow labels on END statements.
F18 clause 5.3.3 explicitly allows labels on program unit END statements.
Label resolution code accounts for this for singleton program units,
but incorrectly generates an error for host subprograms with internal
subprograms.
subroutine s(n)
call s1(n)
if (n == 0) goto 88 ! incorrect error
print*, 's'
contains
subroutine s1(n)
if (n == 0) goto 77 ! ok
print*, 's1'
77 end subroutine s1
88 end
Label resolution code makes a sequential pass over an entire file to
collect label information for all subprograms, followed by a pass through
that information for semantics checks. The problem is that END statements
may be separated from prior subprogram code by internal subprogram
definitions, so an END label can be associated with the wrong subprogram.
There are several ways to fix this. Labels are always local to a
subprogram. So the two separate passes over the entire file could probably
instead be interleaved to perform analysis on a subprogram as soon as the
end of the subprogram is reached, using a small stack. The stack structure
would account for the "split" code case. This might work.
It is possible that there is some not otherwise apparent advantage to
the current full-file pass design. The parse tree has productions that
provide access to a subprogram END statement "in advance". An alternative
is to access this information to solve the problem. This PR implements
this latter option.
Differential revision: https://reviews.llvm.org/D91217
Jianzhou Zhao [Wed, 11 Nov 2020 06:13:06 +0000 (06:13 +0000)]
Add a flag to control whether to propagate labels from condition values to results
Before the change, DFSan always does the propagation. W/o
origin tracking, it is harder to understand such flows. After
the change, the flag is off by default.
Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D91234
Xiang Xiao [Wed, 11 Nov 2020 20:30:21 +0000 (15:30 -0500)]
[libcxx] Check _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE first in __locale
This is consistent with what's done in locale.cpp, and it ensures that
we get the default rune table whenever _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
is defined, regardless of the actual platform.
Differential Revision: https://reviews.llvm.org/D91074
Walter Erquinigo [Wed, 11 Nov 2020 20:28:45 +0000 (12:28 -0800)]
Fix
21555fff4de811309ea7935f9cb65578c957d77f
Buildbot failed on Windows
http://lab.llvm.org:8011/#/builders/83/builds/693
Error: On Windows, std::future can't hold an Expected, as it doesn't have a default
constructor.
Solution: Use std::future<bool> instead of std::future<Expected<T>>
David Blaikie [Wed, 11 Nov 2020 20:29:08 +0000 (12:29 -0800)]
Add missing override (& fix an else-after-return while I'm here)
peter klausler [Tue, 10 Nov 2020 23:10:48 +0000 (15:10 -0800)]
[flang] Use IMPLICIT from scope of external function reference
Implicitly typed references to external functions are applying
the IMPLICIT typing rules of the global scope in which their
symbols were created, not the IMPLICIT typing rules in force in
the scope from which they were referenced.
Differential revision: https://reviews.llvm.org/D91214
Mehdi Amini [Wed, 11 Nov 2020 20:00:21 +0000 (20:00 +0000)]
Revert "[clang][cli] Port ObjCMTAction to new option parsing system"
This reverts commit
09248a5d25bb1c9f357247fa3da8fbe4470e9c67.
Some builds are broken. I suspect a `static constexpr` in a class missing a
definition out of class (required pre-c++17).
Peyton, Jonathan L [Mon, 2 Nov 2020 21:46:29 +0000 (15:46 -0600)]
[OpenMP] Fix shutdown hang/race bug
The deadlock/race happens when primary thread gets initz lock and tries to join
the worker thread which waits for the same lock in TLS key destructor.
The patch removes the lock and the code of setting TLS value which needed
the lock. Also removed setting TLS from __kmp_unregister_root_current_thread.
Differential Revision: https://reviews.llvm.org/D90647
Sam McCall [Wed, 11 Nov 2020 19:45:58 +0000 (20:45 +0100)]
[clangd] Fix serialization error check.
David Green [Wed, 11 Nov 2020 19:42:12 +0000 (19:42 +0000)]
[AArch4] Regenerate test checks for f16-imm.ll. NFC
peter klausler [Tue, 10 Nov 2020 23:07:53 +0000 (15:07 -0800)]
[flang] Add isnan() extension intrinsic function, with folding
It's nonstandard, but commonly implemented.
Differential revision: https://reviews.llvm.org/D91213
Pavel Iliin [Wed, 11 Nov 2020 19:08:46 +0000 (19:08 +0000)]
[NFC] [Legalize] Fix spaces and style.
Mehdi Amini [Wed, 11 Nov 2020 05:33:47 +0000 (05:33 +0000)]
Disable implicit nesting on parsing textual pass pipeline
Previous the textual form of the pass pipeline would implicitly nest,
instead we opt for the explicit form here: this has less surprise.
This also avoids asserting in the bindings when passing a pass pipeline
with incorrect nesting.
Differential Revision: https://reviews.llvm.org/D91233
Thomas Raoux [Wed, 11 Nov 2020 02:08:26 +0000 (18:08 -0800)]
[mlir] Fix post-dominance between blocks of different regions.
If block A and B are in different regions and region of A is not an ancestor of
B, either A is included in region of B or the two regions are disjoint. In both
case A doesn't post-dominate B.
Differential Revision: https://reviews.llvm.org/D91225
Joachim Protze [Wed, 11 Nov 2020 19:10:54 +0000 (20:10 +0100)]
[OpenMP][Tool] Fix possible NULL-pointer dereference in test
Avoid dereferencing a possibly uninitialized pointer as mentioned in D91280.
Joachim Protze [Wed, 11 Nov 2020 18:35:14 +0000 (19:35 +0100)]
[OpenMP][Tests] Fix compiler warnings in OpenMP runtime tests
This patch allows to pass the OpenMP runtime tests after configuring with
`cmake . -DOPENMP_TEST_FLAGS:STRING="-Werror"`.
The warnings for OMPT tests are addressed in D90752.
Differential Revision: https://reviews.llvm.org/D91280
Joachim Protze [Wed, 4 Nov 2020 11:16:25 +0000 (12:16 +0100)]
[OpenMP][OMPT] Update the omp-tools header file to reflect 5.1 changes
This doesn't add functionality, but just adds the new types and renames the
master callback to masked callback.
Differential Revision: https://reviews.llvm.org/D90752
Jianzhou Zhao [Wed, 28 Oct 2020 06:48:49 +0000 (06:48 +0000)]
Add a simple stack trace printer for DFSan
Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D91235
Akira Hatanaka [Wed, 11 Nov 2020 18:56:10 +0000 (10:56 -0800)]
Move variable declarations to functions in which they are used. NFC
Vedant Kumar [Wed, 11 Nov 2020 18:48:27 +0000 (10:48 -0800)]
[lldb/test] Add missing decorators import
Vedant Kumar [Wed, 11 Nov 2020 00:01:16 +0000 (16:01 -0800)]
[ThreadPlan] Add a test for `thread step-in -r`, NFC (reapply)
Adds test coverage for ThreadPlanStepInRange::SetAvoidRegexp, but
disables the test on Windows.
See:
http://lab.llvm.org:8080/coverage/coverage-reports/coverage/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/source/Target/ThreadPlanStepInRange.cpp.html#L309
Differential Revision: https://reviews.llvm.org/D91220
Haowei Wu [Wed, 11 Nov 2020 18:40:06 +0000 (10:40 -0800)]
[NFC] Reformat llvm-elfabi
Makes diff in next commit more readable.
Simon Pilgrim [Wed, 11 Nov 2020 18:37:58 +0000 (18:37 +0000)]
[RISCV] srem-vector-lkk.ll - remove unused check prefix
Simon Pilgrim [Wed, 11 Nov 2020 18:32:18 +0000 (18:32 +0000)]
[Sparc] fp16-promote.ll - Refactor check prefixes + remove unused ones
Simon Pilgrim [Wed, 11 Nov 2020 18:27:55 +0000 (18:27 +0000)]
[SystemZ] Regenerate some fp tests + remove unused check prefixes
Just use default CHECK
Simon Pilgrim [Wed, 11 Nov 2020 18:17:44 +0000 (18:17 +0000)]
[BPF] intrinsic-array-2.ll - remove unused check prefixes
Just use default CHECK
Stella Laurenzo [Wed, 11 Nov 2020 04:59:18 +0000 (20:59 -0800)]
[mlir][Python] Allow PassManager to interop with the capsule APIs.
* Used in npcomp to cast Python objects via the C-API.
Differential Revision: https://reviews.llvm.org/D91232
Walter Erquinigo [Thu, 29 Oct 2020 19:44:13 +0000 (12:44 -0700)]
[intel-pt][trace] Implement a "get supported trace type" packet
Depends on D89283.
The goal of this packet (jTraceGetSupportedType) is to be able to query the gdb-server for the tracing technology that can work for the current debuggeer, which can make the user experience simpler but allowing the user to simply type
thread trace start
to start tracing the current thread without even telling the debugger to use "intel-pt", for example. Similarly, `thread trace start [args...]` would accept args beloging to the working trace type.
Also, if the user typed
help thread trace start
We could directly show the help information of the trace type that is supported for the target, or mention instead that no tracing is supported, if that's the case.
I added some simple tests, besides, when I ran this on my machine with intel-pt support, I got
$ process plugin packet send "jTraceSupportedType"
packet: jTraceSupportedType
response: {"description":"Intel Processor Trace","pluginName":"intel-pt"}
On a machine without intel-pt support, I got
$ process plugin packet send "jTraceSupportedType"
packet: jTraceSupportedType
response: E00;
Reviewed By: clayborg, labath
Differential Revision: https://reviews.llvm.org/D90490
Fangrui Song [Wed, 11 Nov 2020 18:20:30 +0000 (10:20 -0800)]
[llvm-objcopy][ELF] Try fixing non-determinism of Segment::firstSection
Vedant Kumar [Wed, 11 Nov 2020 00:54:22 +0000 (16:54 -0800)]
[MachO] Allow the LC_IDENT load command
xnu coredumps include an LC_IDENT load command. It's helpful to be able
to just ignore these. IIUC an interested client can grab the identifier
using the MachOObjectFile::load_commands() API.
The status quo is that llvm bails out when it finds an LC_IDENT because
the command is obsolete (see isLoadCommandObsolete).
Differential Revision: https://reviews.llvm.org/D91221
Nikita Popov [Wed, 11 Nov 2020 17:37:06 +0000 (18:37 +0100)]
[BasicAA] Add test for incorrect BatchAA result (NFC)
BatchAA produces an incorrect result, because a result based on
a temporary phi noalias assumption is cached.
Simon Pilgrim [Wed, 11 Nov 2020 17:29:56 +0000 (17:29 +0000)]
[Driver] hip-toolchain-device-only.hip - remove unused check prefix
Just use default CHECK
Stella Laurenzo [Fri, 6 Nov 2020 17:48:20 +0000 (09:48 -0800)]
[mlir][Python] Add Windows DLL loader to get python extensions working there.
Differential Revision: https://reviews.llvm.org/D90958
Craig Topper [Wed, 11 Nov 2020 17:30:48 +0000 (09:30 -0800)]
[RISCV] Remove traces of Glue from RISCVISD::SELECT_CC
We were creating RISCVISD::SELECT_CC nodes with Glue output that was never being used, and the tablegen SDNode had the SDNPInGlue flag instead of the SDNPOutGlue flag.
Since we don't seem to need the Glue just get rid of it from both places.
Differential Revision: https://reviews.llvm.org/D91199
Jessica Paquette [Tue, 10 Nov 2020 22:12:19 +0000 (14:12 -0800)]
[AArch64][GlobalISel] Select arith extended add/sub in manual selection code
The manual selection code for add/sub was not checking if it was possible to
fold in shifts + extends (the *rx opcode variants).
As a result, we could never select things like
```
cmp x1, w0, uxtw #2
```
Because we don't import any patterns for compares.
This adds support for the arithmetic shifted register forms and updates tests
for instructions selected using `emitADD`, `emitADDS`, and `emitSUBS`.
This is a 0.1% geomean code size improvement on SPECINT2000 at -Os.
Differential Revision: https://reviews.llvm.org/D91207
Fangrui Song [Wed, 11 Nov 2020 17:21:10 +0000 (09:21 -0800)]
[llvm-objcopy] --only-keep-debug: place zero-size segment according to its parent segment
Alternative to D74755. sectionWithinSegment() treats an empty section as having
a size of 1. Due to the rule, an empty .tdata will not be attributed to an
empty PT_TLS. (The empty p_align=64 PT_TLS is for Android Bionic's TCB
compatibility (ELF-TLS). See https://reviews.llvm.org/D62055#1507426)
Currently --only-keep-debug will not layout a segment with no section
(layoutSegmentsForOnlyKeepDebug()), thus p_offset of PT_TLS can go past the end
of the file. The strange p_offset can trigger validation errors for subsequent
tools, e.g. llvm-objcopy errors when reading back the separate debug file
(readProgramHeaders()).
This patch places such an empty segment according to its parent segment. This
special cases works for the empty PT_TLS used in Android. For a non-empty
segment, it should have at least one non-empty section and will be handled by
the normal code. Note, p_memsz PT_LOAD is rejected by both Linux and FreeBSD.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D90897
Jessica Paquette [Tue, 10 Nov 2020 00:04:16 +0000 (16:04 -0800)]
[AArch64][GlobalISel] Select negative arithmetic immediates in manual selector
Previously, we only handled negative arithmetic immediates in the imported
selector code.
Since we don't import code for, say, compares, we were missing opportunities
for things like
```
%cst:gpr(s64) = G_CONSTANT i64 -10
%cmp:gpr(s32) = G_ICMP intpred(eq), %reg0(s64), %cst
->
%adds = ADDSXri %reg0, 10, 0, implicit-def $nzcv
%cmp = CSINCWr $wzr, $wzr, 1, implicit $nzcv
```
Instead, we would have to materialize the constant and emit a SUBS.
This adds support for selection like above for SUB, SUBS, ADD, and ADDS.
This is a 0.1% geomean code size improvement on SPECINT2000 at -Os.
Differential Revision: https://reviews.llvm.org/D91108
Jay Foad [Wed, 11 Nov 2020 10:35:57 +0000 (10:35 +0000)]
[AMDGPU] Separate out real exp instructions by subtarget. NFC.
Differential Revision: https://reviews.llvm.org/D91247
Jay Foad [Wed, 11 Nov 2020 10:04:22 +0000 (10:04 +0000)]
[AMDGPU] Split exp instructions out into their own tablegen file. NFC.
Differential Revision: https://reviews.llvm.org/D91246
Scott Linder [Mon, 9 Nov 2020 18:39:55 +0000 (18:39 +0000)]
[NFC][AMDGPU] Clean up some lit test prefixes
Replace some instances of "ALL" with "GCN" where it applies. Committed
as obvious.
Stella Stamenova [Wed, 11 Nov 2020 17:09:43 +0000 (09:09 -0800)]
Revert "[ThreadPlan] Add a test for `thread step-in -r`, NFC"
This reverts commit
ae3640e386ccfbe0e984cc8c4b0399006ed835c7.
The new test is failing on the Windows LLDB buildbot.
Jay Foad [Wed, 11 Nov 2020 16:46:05 +0000 (16:46 +0000)]
[AMDGPU] Make use of SIInstrInfo::isEXP. NFC.
Alex Richardson [Wed, 11 Nov 2020 14:27:01 +0000 (14:27 +0000)]
[AsmParser] Add source location to all errors related to .cfi directives
I was trying to add .cfi_ annotations to assembly code in the FreeBSD
kernel and changed a macro that then resulted in incorrectly nested
directives. However, clang's diagnostics said the error was happening at
<unknown>:0. This addresses one of the TODOs added in D51695.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D89787
Alex Lorenz [Wed, 11 Nov 2020 16:49:58 +0000 (08:49 -0800)]
[clang] ns_error_domain attribute also supports CFString typed variables
Differential Revision: https://reviews.llvm.org/D90891
Simon Pilgrim [Wed, 11 Nov 2020 16:19:53 +0000 (16:19 +0000)]
[CodeGenCXX] Remove unused check prefixes
Simon Pilgrim [Wed, 11 Nov 2020 15:43:00 +0000 (15:43 +0000)]
[CodeGenOpenCL] Fix check prefix typo on convergent.cl test
Noticed while fixing unused prefix warnings - there isn't actually any diff in the loop unrolled ir between old/new pass managers any more, so the broken checks were superfluous
Simon Pilgrim [Wed, 11 Nov 2020 15:24:21 +0000 (15:24 +0000)]
[CodeGenObjC] Remove unused check prefixes
Simon Pilgrim [Wed, 11 Nov 2020 15:10:24 +0000 (15:10 +0000)]
[CodeGenCUDA] Fix check prefix typo on device-stub.cu tests
Noticed while fixing unused prefix warnings
Sam McCall [Tue, 3 Nov 2020 02:25:16 +0000 (03:25 +0100)]
[Syntax] Tablegen Sequence classes. NFC
Similar to the previous patch, this doesn't convert *all* the classes that
could be converted. It also doesn't enforce any new invariants etc.
It *does* include some data we don't use yet: specific token types that are
allowed and optional/required status of sequence items. (Similar to Dmitri's
prototype). I think these are easier to add as we go than later, and serve
a useful documentation purpose.
Differential Revision: https://reviews.llvm.org/D90659