Cameron McInally [Wed, 7 Oct 2020 19:36:00 +0000 (14:36 -0500)]
[SVE] Add legalisation tests to sve-fixed-length-fp-reduce.ll
Simon Pilgrim [Wed, 7 Oct 2020 19:59:31 +0000 (20:59 +0100)]
[InstCombine] Add checks for and(logicalshift(zext(x),undef),y) cases
Prep work before some cleanup in narrowMaskedBinOp
Ronak Chauhan [Wed, 7 Oct 2020 19:30:10 +0000 (01:00 +0530)]
Remove D80713.diff added in
528057c19755ad842052fba3a42dcbf7deafc6de
The diff file was added by mistake.
Douglas Yung [Wed, 7 Oct 2020 19:23:51 +0000 (12:23 -0700)]
Add REQUIRES: x86-registered-target to test as it was failing on build bots without x86.
This should fix the failure on http://lab.llvm.org:8011/#/builders/91/builds/30
Haojian Wu [Wed, 7 Oct 2020 19:16:45 +0000 (21:16 +0200)]
[clangd] Add a NewName optional parameter to clangdServer::prepareRename.
If the NewName is provided, prepareRename would perform a name
validation.
The motivation is to allow our internal embeder implement the customized
"canRenameInto" functionality on top of prepareRename.
Differential Revision: https://reviews.llvm.org/D88881
Philip Reames [Wed, 7 Oct 2020 19:15:16 +0000 (12:15 -0700)]
Add a clarifying a comment on CastInst::isNoopCast
I made exactly the mistake described, so document the precondition. It would be better to have an assert, but there is (currently) no "castIsValid" with purely type arguments.
Simon Pilgrim [Wed, 7 Oct 2020 18:53:39 +0000 (19:53 +0100)]
Fix MSVC "not all control paths return a value" warning. NFCI.
Simon Pilgrim [Wed, 7 Oct 2020 18:01:04 +0000 (19:01 +0100)]
Fix Wdocumentation warnings due to case mismatch. NFCI.
Simon Pilgrim [Wed, 7 Oct 2020 16:27:32 +0000 (17:27 +0100)]
[CodeGen][X86] Cleanup labels on some sse/avx intrinsics tests. NFCI.
Add some missing CHECK-LABEL lines.
Remove leading '@' so it'll be possible to match against c and c++ builds in a future patch.
Amara Emerson [Wed, 7 Oct 2020 18:19:54 +0000 (11:19 -0700)]
[mlir] Fix build after
322d0afd875df66b36e4810a2b95c20a8f22ab9b due to change in intrinsic overloads.
I'd forgottent to run the mlir tests after removing the scalar input overload
on the fadd/fmul reductions. This is a quick fix for the mlir bot.
Stanislav Mekhanoshin [Tue, 6 Oct 2020 21:07:44 +0000 (14:07 -0700)]
[AMDGPU] Add tied operand to d16 scratch loads
This is still no-op because there is no selection for these
opcodes.
Differential Revision: https://reviews.llvm.org/D88927
Edd Dawson [Wed, 7 Oct 2020 17:58:12 +0000 (13:58 -0400)]
[test][MC] Use %python in llvm/test/MC/COFF/bigobj.py
... instead of the one on the $PATH.
Reviewed By: hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D88986
Florian Hahn [Wed, 7 Oct 2020 17:50:17 +0000 (18:50 +0100)]
[LAA] Use DL to get element size for bound computation.
Currently LAA uses getScalarSizeInBits to compute the size of an element
when computing the end bound of an access.
This does not work as expected for pointers to pointers, because
getScalarSizeInBits will return 0 for pointer types.
By using DataLayout to get the size of the element we can also correctly
handle pointer element types.
Note the changes to the existing test, which seems to also use the wrong
offset for the end.
Fixes PR47751.
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D88953
Stanislav Mekhanoshin [Tue, 6 Oct 2020 20:04:11 +0000 (13:04 -0700)]
[AMDGPU] Use default zero flag operands in flat scratch
This is no-op so far because we do not select these yet.
Differential Revision: https://reviews.llvm.org/D88920
Amara Emerson [Sun, 4 Oct 2020 05:06:54 +0000 (22:06 -0700)]
Rename the VECREDUCE_STRICT_{FADD,FMUL} SDNodes to VECREDUCE_SEQ_{FADD,FMUL}.
The STRICT was causing unnecessary confusion. I think SEQ is a more accurate
name for what they actually do, and the other obvious option of "ORDERED"
has the issue of already having a meaning in FP contexts.
Differential Revision: https://reviews.llvm.org/D88791
Sam McCall [Tue, 6 Oct 2020 10:51:01 +0000 (12:51 +0200)]
[clangd] Disambiguate overloads of std::move for header insertion.
Up until now, we relied on matching the filename.
This depends on unstable details of libstdc++ and doesn't work well on other
stdlibs. Also we'd like to remove it (see D88204).
Differential Revision: https://reviews.llvm.org/D88885
Amara Emerson [Sat, 3 Oct 2020 01:30:53 +0000 (18:30 -0700)]
[llvm][mlir] Promote the experimental reduction intrinsics to be first class intrinsics.
This change renames the intrinsics to not have "experimental" in the name.
The autoupgrader will handle legacy intrinsics.
Relevant ML thread: http://lists.llvm.org/pipermail/llvm-dev/2020-April/140729.html
Differential Revision: https://reviews.llvm.org/D88787
Fanbo Meng [Wed, 7 Oct 2020 17:22:55 +0000 (13:22 -0400)]
[NFC] Add contributors names to CREDITS.TXT
Stella Laurenzo [Wed, 7 Oct 2020 06:01:20 +0000 (23:01 -0700)]
[mlir][CAPI] Attribute set/remove on operations.
* New functions: mlirOperationSetAttributeByName, mlirOperationRemoveAttributeByName
* Also adds some *IsNull checks and standardizes the rest to use "static inline" form, which makes them all non-opaque and not part of the ABI (which is desirable).
* Changes needed to resolve TODOs in npcomp PyTorch capture.
Differential Revision: https://reviews.llvm.org/D88946
Heejin Ahn [Mon, 28 Sep 2020 10:57:37 +0000 (03:57 -0700)]
[WebAssembly] Rename Emscripten EH functions
Renaming for some Emscripten EH functions has so far been done in
wasm-emscripten-finalize tool in Binaryen. But recently we decided to
make a compilation/linking path that does not rely on
wasm-emscripten-finalize for modifications, so here we move that
functionality to LLVM.
Invoke wrappers are generated in LowerEmscriptenEHSjLj pass, but final
wasm types are not available in the IR pass, we need to rename them at
the end of the pipeline.
This patch also removes uses of `emscripten_longjmp_jmpbuf` in
LowerEmscriptenEHSjLj pass, replacing that with `emscripten_longjmp`.
`emscripten_longjmp_jmpbuf` is lowered to `emscripten_longjmp`, but
previously we generated calls to `emscripten_longjmp_jmpbuf` in
LowerEmscriptenEHSjLj pass because it takes `jmp_buf*` instead of `i32`.
But we were able use `ptrtoint` to make it use `emscripten_longjmp`
directly here.
Addresses:
https://github.com/WebAssembly/binaryen/issues/3043
https://github.com/WebAssembly/binaryen/issues/3081
Companions:
https://github.com/WebAssembly/binaryen/pull/3191
https://github.com/emscripten-core/emscripten/pull/12399
Reviewed By: dschuff, tlively, sbc100
Differential Revision: https://reviews.llvm.org/D88697
Daniel Sanders [Tue, 6 Oct 2020 11:50:41 +0000 (13:50 +0200)]
[json] Provide a means to delegate writing a value to another API
(Based on D87170 by dsanders)
I recently had need to call out to an external API to emit a JSON object as part
of one an LLVM tool was emitting. However, our JSON support didn't provide a way
to delegate part of the JSON output to that API.
Add rawValueBegin() and rawValueEnd() to maintain and check the internal state
while something else is writing to the stream. It's the users responsibility to
ensure that the resulting JSON output is still valid.
Differential Revision: https://reviews.llvm.org/D88902
Sam McCall [Wed, 7 Oct 2020 14:37:53 +0000 (16:37 +0200)]
Reapply [ADT] function_ref's constructor is unavailable if the argument is not callable.
This reverts commit
281703e67ffaee8e26efef86e0df3e145477f4cb.
GCC 5.4 bugs are worked around by avoiding use of variable templates.
Differential Revision: https://reviews.llvm.org/D88977
Alex Richardson [Wed, 7 Oct 2020 15:29:22 +0000 (16:29 +0100)]
[clang-format][tests] Fix MacroExpander lexer not parsing C++ keywords
While debugging a different clang-format failure, I tried to reuse the
MacroExpander lexer, but was surprised to see that it marks all C++
keywords (e.g. const, decltype) as being of type identifier. After stepping
through the ::format() code, I noticed that the difference between these
two is that the identifier table was not being initialized based on the
FormatStyle, so only basic tokens such as tok::semi, tok::plus, etc. were
being handled.
Reviewed By: klimek
Differential Revision: https://reviews.llvm.org/D88952
Alex Richardson [Wed, 7 Oct 2020 15:29:10 +0000 (16:29 +0100)]
[clang-format][NFC] Store FormatToken::Type as an enum instead of bitfield
This improves the debugging experience since LLDB will print the enumerator
name instead of a decimal number. This changes TokenType to have uint8_t
as the underlying type and moves it after the remaining bitfields to avoid
increasing the size of FormatToken.
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D87006
Nikita Popov [Tue, 6 Oct 2020 20:10:10 +0000 (22:10 +0200)]
[MemCpyOpt] Add additional callslot test cases (NFC)
For cases where the destination is captured.
Roman Lebedev [Wed, 7 Oct 2020 15:59:40 +0000 (18:59 +0300)]
[NFC][InstCombine] Autogenerate a few tests being affected by upcoming patch
Philip Reames [Wed, 7 Oct 2020 15:56:13 +0000 (08:56 -0700)]
[Tests] Precommit test showing gap around load forwarding of vectors in instcombine
LLVM GN Syncbot [Wed, 7 Oct 2020 15:50:43 +0000 (15:50 +0000)]
[gn build] Port
ddf1864ace4
Yonghong Song [Thu, 6 Aug 2020 16:06:43 +0000 (09:06 -0700)]
BPF: add AdjustOpt IR pass to generate verifier friendly codes
Add an IR phase right before main module optimization.
This is to modify IR to restrict certain downward optimizations
in order to generate verifier friendly code.
> prevent certain instcombine optimizations, handling both
in-block/cross-block instcombines.
> avoid speculative code motion if the variable used in
condition is also used in the later blocks.
Internally, a bpf IR builtin
result = __builtin_bpf_passthrough(seq_num, result)
is used to enforce ordering. This builtin is only used
during target independent IR optimizations and it will
be removed at the beginning of target dependent IR
optimizations.
For example, removing the following workaround,
--- a/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c
+++ b/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c
@@ -47,7 +47,7 @@ int sysctl_tcp_mem(struct bpf_sysctl *ctx)
/* a workaround to prevent compiler from generating
* codes verifier cannot handle yet.
*/
- volatile int ret;
+ int ret;
this patch is able to generate code which passed the verifier.
To disable optimization, users need to use "opt" command like below:
clang -target bpf -O2 -S -emit-llvm -Xclang -disable-llvm-passes test.c
// disable icmp serialization
opt -O2 -bpf-disable-serialize-icmp test.ll | llvm-dis > t.ll
// disable avoid-speculation
opt -O2 -bpf-disable-avoid-speculation test.ll | llvm-dis > t.ll
llc t.ll
Differential Revision: https://reviews.llvm.org/D85570
Fanbo Meng [Wed, 7 Oct 2020 15:33:19 +0000 (11:33 -0400)]
[SystemZ][z/OS] Add test of zero length bitfield type size larger than target zero length bitfield boundary
Reviewed By: hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D88963
Arjun P [Wed, 7 Oct 2020 15:16:11 +0000 (17:16 +0200)]
Introduce subtraction for FlatAffineConstraints
Subtraction is a foundational arithmetic operation that is often used when computing, for example, data transfer sets or cache hits. Since the result of subtraction need not be a convex polytope, a new class `PresburgerSet` is introduced to represent unions of convex polytopes.
Reviewed By: ftynse, bondhugula
Differential Revision: https://reviews.llvm.org/D87068
Adam Czachorowski [Wed, 7 Oct 2020 15:02:16 +0000 (17:02 +0200)]
[clangd] Fix argument type (bool->float).
The default value is 1.3f, but it was cast to true, which is not a good
base for code completion score.
Differential Revision: https://reviews.llvm.org/D88970
Ronak Chauhan [Wed, 7 Oct 2020 02:44:46 +0000 (08:14 +0530)]
[AMDGPU] Support disassembly for AMDGPU kernel descriptors
Decode AMDGPU Kernel descriptors as assembler directives.
Reviewed By: scott.linder, jhenderson, kzhuravl
Differential Revision: https://reviews.llvm.org/D80713
Cameron McInally [Wed, 7 Oct 2020 14:26:53 +0000 (09:26 -0500)]
[SVE] Lower fixed length VECREDUCE_OR operation
Differential Revision: https://reviews.llvm.org/D88847
Jay Foad [Wed, 7 Oct 2020 14:48:01 +0000 (15:48 +0100)]
[AMDGPU] Use @LINE for error checking in gfx10.3 assembler tests
Sam McCall [Wed, 7 Oct 2020 14:36:38 +0000 (16:36 +0200)]
Revert "[ADT] function_ref's constructor is unavailable if the argument is not callable."
This reverts commit
4cae6228d129d4c4dfb156c043977bb6b5690031.
Breaks GCC build:
http://lab.llvm.org:8011/#/builders/8/builds/33/steps/6/logs/stdio
Nico Weber [Wed, 7 Oct 2020 14:33:40 +0000 (10:33 -0400)]
[gn build] (manually) port
ce1365f8f7e
Sam McCall [Tue, 6 Oct 2020 14:35:35 +0000 (16:35 +0200)]
[ADT] function_ref's constructor is unavailable if the argument is not callable.
This allows overload sets containing function_ref arguments to work correctly
Otherwise they're ambiguous as anything "could be" converted to a function_ref.
This matches proposed std::function_ref, absl::function_ref, etc.
Differential Revision: https://reviews.llvm.org/D88901
Tobias Gysi [Wed, 7 Oct 2020 14:18:46 +0000 (16:18 +0200)]
[mlir] fix the types used during the generation of the kernel param array
The patch fixes the types used to access the elements of the kernel parameter structure from a pointer to the structure to a pointer to the actual parameter type.
Reviewed By: csigg
Differential Revision: https://reviews.llvm.org/D88959
Georgii Rymar [Tue, 6 Oct 2020 13:04:15 +0000 (16:04 +0300)]
[obj2yaml] - Rename `Group` to `GroupSection`. NFC.
The `Group` class represents a group section and it is
named inconsistently with other sections which all has
the "Section" suffix. It is sometimes confusing,
this patch addresses the issue.
Differential revision: https://reviews.llvm.org/D88892
Georgii Rymar [Mon, 5 Oct 2020 13:51:58 +0000 (16:51 +0300)]
[llvm-readelf] - Implement --addrsig option.
We have `--addrsig` implemented for `llvm-readobj`.
Usually it is convenient to use a single tool for dumping,
so it seems we might want to implement `--addrsig` for `llvm-readelf` too.
I've selected a simple output format which is a bit similar to one,
used for dumping of the symbol table. It looks like:
```
Address-significant symbols section '.llvm_addrsig' contains 2 entries:
Num: Name
1: foo
2: bar
```
Differential revision: https://reviews.llvm.org/D88835
Dmitry Preobrazhensky [Wed, 7 Oct 2020 13:11:37 +0000 (16:11 +0300)]
[AMDGPU][MC] Improved diagnostics for instructions with missing features
Reviewers: rampitec
Differential Revision: https://reviews.llvm.org/D88887
Louis Dionne [Wed, 7 Oct 2020 13:27:19 +0000 (09:27 -0400)]
[libc++] Use the existing CMake caches when running build bots
Pavel Labath [Fri, 2 Oct 2020 11:38:09 +0000 (13:38 +0200)]
[lldb] Check for and use ptsname_r if available
ptsname is not thread-safe. ptsname_r is available on most (but not all)
systems -- use it preferentially.
In the patch I also improve the thread-safety of the ptsname fallback
path by wrapping it in a mutex. This should guarantee the safety of a
typical ptsname implementation using a single static buffer, as long as
all callers go through this function.
I also remove the error arguments, as the only way this function can
fail is if the "primary" fd is not valid. This is a programmer error as
this requirement is documented, and all callers ensure that is the case.
Differential Revision: https://reviews.llvm.org/D88728
Pavel Labath [Tue, 6 Oct 2020 15:39:08 +0000 (17:39 +0200)]
[lldb/docs] Clarify python/swig version incompatibility
The problematic combo is a debug python>=3.7 && swig<4.0.
Differential Revision: https://reviews.llvm.org/D88906
Louis Dionne [Tue, 6 Oct 2020 20:46:58 +0000 (16:46 -0400)]
[libc++] Add a CMake option to control whether the debug mode is supported
Some libc++ builds may want to disable support for the debug mode,
for example to reduce code size or because the current implementation
of the debug mode requires a global map. This commit adds the
LIBCXX_ENABLE_DEBUG_MODE CMake option and ties it into the test
suite.
It also adds a CI job to test this configuration going forward.
Differential Revision: https://reviews.llvm.org/D88923
Louis Dionne [Mon, 5 Oct 2020 20:16:13 +0000 (16:16 -0400)]
[libc++] Make sure __clear_and_shrink() maintains string invariants
__clear_and_shrink() was added in D41976, and a test was added alongside
it to make sure that the string invariants were maintained. However, it
appears that the test never ran under UBSan before, which would have
highlighted the fact that it doesn't actually maintain the string
invariants.
Differential Revision: https://reviews.llvm.org/D88849
Alex Zinenko [Wed, 7 Oct 2020 12:38:10 +0000 (14:38 +0200)]
[mlir] Add support for diagnostics in C API.
Add basic support for registering diagnostic handlers with the context
(actually, the diagnostic engine contained in the context) and processing
diagnostic messages from the C API.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D88736
Martin Storsjö [Tue, 6 Oct 2020 10:03:49 +0000 (13:03 +0300)]
[LLD] [MinGW] Move an option definitions to alphabetical order, wrap a line. NFC.
Roman Lebedev [Wed, 7 Oct 2020 10:52:25 +0000 (13:52 +0300)]
InstCombine: Negator: don't rely on complexity sorting already being performed (PR47752)
In some cases, we can negate instruction if only one of it's operands
negates. Previously, we assumed that constants would have been
canonicalized to RHS already, but that isn't guaranteed to happen,
because of InstCombine worklist visitation order,
as the added test (previously-hanging) shows.
So if we only need to negate a single operand,
we should ensure ourselves that we try constant operand first.
Do that by re-doing the complexity sorting ourselves,
when we actually care about it.
Fixes https://bugs.llvm.org/show_bug.cgi?id=47752
Rodrigo Dominguez [Fri, 3 Apr 2020 21:37:51 +0000 (17:37 -0400)]
[AMDGPU] Implement hardware bug workaround for image instructions
Summary:
This implements a workaround for a hardware bug in gfx8 and gfx9,
where register usage is not estimated correctly for image_store and
image_gather4 instructions when D16 is used.
Change-Id: I4e30744da6796acac53a9b5ad37ac1c2035c8899
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81172
Simon Pilgrim [Wed, 7 Oct 2020 10:46:46 +0000 (11:46 +0100)]
[InstCombine] Tweak funnel by constant tests for better shl/lshr commutation coverage
Simon Pilgrim [Wed, 7 Oct 2020 10:45:52 +0000 (11:45 +0100)]
[ARM] Regenerate vldlane tests
To help make the diffs in D88569 clearer
Florian Hahn [Wed, 7 Oct 2020 10:14:55 +0000 (11:14 +0100)]
[LAA] Add test for PR47751, which currently uses wrong bounds.
Jay Foad [Wed, 30 Sep 2020 17:50:34 +0000 (18:50 +0100)]
[SDag] SimplifyDemandedBits: simplify to FP constant if all bits known
We were already doing this for integer constants. This patch implements
the same thing for floating point constants.
Differential Revision: https://reviews.llvm.org/D88570
Max Kazantsev [Wed, 7 Oct 2020 08:04:40 +0000 (15:04 +0700)]
[Test] Add one more test where we can avoid creating trunc
Tres Popp [Wed, 7 Oct 2020 08:04:45 +0000 (10:04 +0200)]
[mlir][NFC] Style cleanup in comments
Haojian Wu [Wed, 7 Oct 2020 08:01:04 +0000 (10:01 +0200)]
[clangd] Don't set the Underlying bit on targets of UsingDecls.
With this patch, we don't treat `using ns::X` as a first-class declaration like `using Z = ns::Y`, reference to X that goes through this using-decl is considered a direct reference (without the Underlying bit).
Fix the workaround in https://reviews.llvm.org/D87225 and https://reviews.llvm.org/D74054.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D88472
Haojian Wu [Wed, 7 Oct 2020 07:50:43 +0000 (09:50 +0200)]
[clang] Use isCompoundAssignmentOp to simplify the code, NFC.
Haojian Wu [Wed, 7 Oct 2020 07:33:57 +0000 (09:33 +0200)]
[AST][RecoveryExpr] Support dependent conditional operators in C for error recovery.
suppress spurious "typecheck_cond_expect_scalar" diagnostic.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D84322
Rainer Orth [Wed, 7 Oct 2020 07:08:41 +0000 (09:08 +0200)]
[Support][unittests] Enforce alignment in ConvertUTFTest
`LLVM-Unit :: Support/./SupportTests/ConvertUTFTest.ConvertUTF16LittleEndianToUTF8String`
`FAIL`s on Solaris/sparcv9:
In `llvm/lib/Support/ConvertUTFWrapper.cpp` (`convertUTF16ToUTF8String`)
the `SrcBytes` arg is reinterpreted/accessed as `UTF16` (`unsigned short`,
which requires 2-byte alignment on strict-alignment targets like Sparc)
without anything guaranteeing the alignment, so the access yields a
`SIGBUS`.
This patch avoids this by enforcing the required alignment in the callers.
Tested on `sparcv9-sun-solaris2.11`.
Differential Revision: https://reviews.llvm.org/D88824
Max Kazantsev [Wed, 7 Oct 2020 06:52:48 +0000 (13:52 +0700)]
[NFC] Use getZero instead of getConstant(0)
Jonas Devlieghere [Wed, 7 Oct 2020 06:33:04 +0000 (23:33 -0700)]
[lldb] Format unix signal table (NFC)
Restore unix signal table to its original glory and mark it as not to be
clang-formatted.
Roman Lebedev [Wed, 7 Oct 2020 06:17:23 +0000 (09:17 +0300)]
[SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592)
And another step towards transformss not introducing inttoptr and/or
ptrtoint casts that weren't there already.
In this case, when load/store uses have conflicting types,
instead of falling back to the iN, we can try to use allocated sub-type.
As disscussed, this isn't the best idea overall (we shouldn't rely on
allocated type), but it works fine as a temporary measure.
I've measured, and @ `-O3` as of vanilla llvm test-suite + RawSpeed,
this results in +0.05% more bitcasts, -5.51% less inttoptr
and -1.05% less ptrtoint (at the end of middle-end opt pipeline)
See https://bugs.llvm.org/show_bug.cgi?id=47592
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D88788
Yonghong Song [Wed, 7 Oct 2020 03:29:09 +0000 (20:29 -0700)]
BPF: avoid duplicated globals for CORE relocations
This patch fixed two issues related with relocation globals.
In LLVM, if a global, e.g. with name "g", is created and
conflict with another global with the same name, LLVM will
rename the global, e.g., with a new name "g.2". Since
relocation global name has special meaning, we do not want
llvm to change it, so internally we have logic to check
whether duplication happens or not. If happens, just reuse
the previous global.
The first bug is related to non-btf-id relocation
(BPFAbstractMemberAccess.cpp). Commit
54d9f743c8b0
("BPF: move AbstractMemberAccess and PreserveDIType passes
to EP_EarlyAsPossible") changed ModulePass to FunctionPass,
i.e., handling each function at a time. But still just
one BPFAbstractMemberAccess object is created so module
level de-duplication still possible. Commit
40251fee0084
("[BPF][NewPM] Make BPFTargetMachine properly adjust NPM optimizer
pipeline") made a change to create a BPFAbstractMemberAccess
object per function so module level de-duplication is not
possible any more without going through all module globals.
This patch simply changed the map which holds reloc globals
as class static, so it will be available to all
BPFAbstractMemberAccess objects for different functions.
The second bug is related to btf-id relocation
(BPFPreserveDIType.cpp). Before Commit
54d9f743c8b0, the pass
is a ModulePass, so we have a local variable, incremented for
each instance, and works fine. But after Commit
54d9f743c8b0,
the pass becomes a FunctionPass. Local variable won't work
properly since different functions will start with the same
initial value. Fix the issue by change the local count variable
as static, so it will be truely unique across the whole module
compilation.
Differential Revision: https://reviews.llvm.org/D88942
Max Kazantsev [Wed, 7 Oct 2020 05:18:24 +0000 (12:18 +0700)]
[Test] Add test showing that we can avoid inserting trunc/zext
Johannes Doerfert [Tue, 29 Sep 2020 13:08:02 +0000 (08:08 -0500)]
Reapply "[OpenMP][FIX] Verify compatible types for declare variant calls" D88384
This reapplies D88384 with the minor modification that an assertion was
changed to a regular conditional and graceful exit from
ASTContext::mergeTypes.
Chen Zheng [Wed, 7 Oct 2020 04:12:21 +0000 (00:12 -0400)]
[MachineInstr] exclude call instruction in mayAlias
we now get noAlias result for a call instruction and other
load/store/call instructions if we query mayAlias.
This is not right as call instruction is not with mayloadorstore,
but it may alter the memory.
This patch fixes this wrong alias query.
Differential Revision: https://reviews.llvm.org/D87490
Chen Zheng [Sun, 27 Sep 2020 08:13:16 +0000 (04:13 -0400)]
[PowerPC] implement target hook getTgtMemIntrinsic
This patch can make pass recognize Powerpc related memory intrinsics.
Reviewed By: steven.zhang
Differential Revision: https://reviews.llvm.org/D88373
Chen Zheng [Sun, 27 Sep 2020 08:47:46 +0000 (04:47 -0400)]
[PowerPC] add more builtins for PPCTargetLowering::getTgtMemIntrinsic
Reviewed By: steven.zhang
Differential Revision: https://reviews.llvm.org/D88374
Bill Wendling [Wed, 7 Oct 2020 00:54:36 +0000 (17:54 -0700)]
[CodeGen][TailDuplicator] Don't duplicate blocks with INLINEASM_BR
Tail duplication of a block with an INLINEASM_BR may result in a PHI
node on the indirect branch. This is okay, but it also introduces a copy
for that PHI node *after* the INLINEASM_BR, which is not okay.
See: https://github.com/ClangBuiltLinux/linux/issues/1125
Differential Revision: https://reviews.llvm.org/D88823
Valentin Clement [Wed, 7 Oct 2020 01:26:13 +0000 (21:26 -0400)]
[flang][openacc] Fix device_num and device_type clauses for init directive
This patch fix the device_num and device_type clauses used in the init clause. device_num was not
spelled correctly in the parser and was to restrictive with scalarIntConstantExpr instead of scalarIntExpr.
device_type is now taking a list of ScalarIntExpr.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D88571
Johannes Doerfert [Sun, 13 Sep 2020 04:41:48 +0000 (23:41 -0500)]
[Attributor] Use smarter way to determine alignment of GEPs
Use same logic existing in other places to deal with base case GEPs.
Add the original Attributor talk example.
Johannes Doerfert [Wed, 9 Sep 2020 05:41:46 +0000 (00:41 -0500)]
[Attributor] Ignore read accesses to constant memory
The old function attribute deduction pass ignores reads of constant
memory and we need to copy this behavior to replace the pass completely.
First step are constant globals. TBAA can also describe constant
accesses and there are other possibilities. We might want to consider
asking the alias analyses that are available but for now this is simpler
and cheaper.
Johannes Doerfert [Tue, 8 Sep 2020 00:56:51 +0000 (19:56 -0500)]
[Attributor] Give up early on AANoReturn::initialize
If the function is not assumed `noreturn` we should not wait for an
update to mark the call site as "may-return".
This has two kinds of consequences:
- We have less iterations in many tests.
- We have less deductions based on "known information" (since we ask
earlier, point 1, and therefore assumed information is not "known"
yet).
The latter is an artifact that we might want to tackle properly at some
point but which is not easily fixable right now.
Jonas Devlieghere [Tue, 6 Oct 2020 22:12:23 +0000 (15:12 -0700)]
[lldb] Change the xcrun (fallback) logic in GetXcodeSDK
This changes the logic in GetXcodeSDK to find an SDK with xcrun. The
code now executes the following steps:
1. If DEVELOPER_DIR is set in the environment, it invokes xcrun with
the given developer dir. If this fails we stop and don't fall back.
2. If the shlib dir is set and exists,it invokes xcrun with the
developer dir corresponding to the shlib dir. If this fails we fall
back to 3.
3. We run xcrun without a developer dir.
The new behavior introduced in this patch is that we fall back to
running xcrun without a developer dir if running it based on the shlib
dir failed.
A situation where this matters is when you're running lldb from an Xcode
that has no SDKs and that is not xcode-selected. Based on lldb's shlib
dir pointing into this Xcode installation, it will do an xcrun with the
developer set to the Xcode without any SDKs which will fail. With this
patch, when that happens, we'll fall back to trying the xcode-selected
Xcode by running xcrun without a developer dir.
Differential revision: https://reviews.llvm.org/D88866
Nico Weber [Tue, 6 Oct 2020 22:43:12 +0000 (18:43 -0400)]
[gn build] manually port
5e4409f308177
Ahmed S. Taei [Tue, 6 Oct 2020 03:53:00 +0000 (03:53 +0000)]
Relax FuseTensorReshapeOpAsproducer identity mapping constraint
Differential Revision: https://reviews.llvm.org/D88869
Dave Airlie [Tue, 6 Oct 2020 22:13:44 +0000 (18:13 -0400)]
Fix out-of-tree clang build due to sysexits change
The sysexists change broke clang building out of tree against llvm.
https://reviews.llvm.org/D88467
Lang Hames [Tue, 6 Oct 2020 22:03:13 +0000 (15:03 -0700)]
[RuntimeDyld][COFF] Report fatal error on error, rather than emiting diagnostic.
Report a fatal error if an IMAGE_REL_AMD64_ADDR32NB cannot be applied due to an
out-of-range target. Previously we emitted a diagnostic to llvm::errs and
continued.
Patch by Dale Martin. Thanks Dale!
Duncan P. N. Exon Smith [Tue, 6 Oct 2020 22:09:19 +0000 (18:09 -0400)]
docs: Emphasize ArrayRef over SmallVectorImpl
The section on SmallVector has a note about preferring SmallVectorImpl
for APIs but doesn't mention ArrayRef. Although ArrayRef is discussed
elsewhere, let's re-emphasize here.
Differential Revision: https://reviews.llvm.org/D49881
Jianzhou Zhao [Mon, 5 Oct 2020 16:56:50 +0000 (16:56 +0000)]
Replace shadow space zero-out by madvise at mmap
After D88686, munmap uses MADV_DONTNEED to ensure zero-out before the
next access. Because the entire shadow space is created by MAP_PRIVATE
and MAP_ANONYMOUS, the first access is also on zero-filled values.
So it is fine to not zero-out data, but use madvise(MADV_DONTNEED) at
mmap. This reduces runtime
overhead.
Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D88755
Petr Hosek [Tue, 6 Oct 2020 18:32:57 +0000 (11:32 -0700)]
[CMake] Track TSan's dependency on C++ headers
TSan relies on C++ headers, so when libc++ is being built as part of
the runtimes build, include an explicit dependency on cxx-headers which
is the same approach that's already used for other sanitizers.
Differential Revision: https://reviews.llvm.org/D88912
Chris Palmer [Tue, 6 Oct 2020 17:01:50 +0000 (13:01 -0400)]
[libc++] Add assert to check bounds in `constexpr string_view::operator[]`
Differential Revision: https://reviews.llvm.org/D88864
Aart Bik [Tue, 6 Oct 2020 19:15:36 +0000 (12:15 -0700)]
[mlir] [sparse] convenience runtime support to read Matrix Market format
Setting up input data for benchmarks and integration tests can be tedious in
pure MLIR. With more sparse tensor work planned, this convenience library
simplifies reading sparse matrices in the popular Matrix Market Exchange
Format (see https://math.nist.gov/MatrixMarket). Note that this library
is *not* part of core MLIR. It is merely intended as a convenience library
for benchmarking and integration testing.
Reviewed By: penpornk
Differential Revision: https://reviews.llvm.org/D88856
Mehdi Amini [Tue, 6 Oct 2020 20:11:39 +0000 (20:11 +0000)]
Remove unneeded "allow-unregistered-dialect" from shape-type-conversion.mlir test (NFC)
Alexandre Ganea [Tue, 6 Oct 2020 19:07:42 +0000 (15:07 -0400)]
Revert [lit] Support running tests on Windows without GnuWin32
This reverts
b3418cb4eb1456c41606f4621dcfa362fe54183c and
d12ae042e17b27ebc8d2b5ae3d8dd5f88384d093
This breaks some external bots, see discussion in https://reviews.llvm.org/D84380
In the meanwhile, please use `cmake -DLLVM_LIT_TOOLS_DIR="C:/Program Files/Git/usr/bin"` or add it to %PATH%.
Louis Dionne [Tue, 6 Oct 2020 18:13:55 +0000 (14:13 -0400)]
[libc++] Add a script to setup CI on macOS nodes
Richard Smith [Tue, 6 Oct 2020 00:52:23 +0000 (17:52 -0700)]
[c++17] Implement P0145R3 during constant evaluation.
Ensure that we evaluate assignment and compound-assignment
right-to-left, and array subscripting left-to-right.
Fixes PR47724.
This is a re-commit of ded79be, reverted in 37c74df, with a fix and test
for the crasher bug previously introduced.
Mircea Trofin [Mon, 5 Oct 2020 23:49:29 +0000 (16:49 -0700)]
[NFC][MC] Type uses of MCRegUnitIterator as MCRegister
This is one of many subsequent similar changes. Note that we're ok with
the parameter being typed as MCPhysReg, as MCPhysReg -> MCRegister is a
correct conversion; Register -> MCRegister assumes the former is indeed
physical, so we stop relying on the implicit conversion and use the
explicit, value-asserting asMCReg().
Differential Revision: https://reviews.llvm.org/D88862
Thomas Raoux [Tue, 6 Oct 2020 18:35:14 +0000 (11:35 -0700)]
[mlir][spirv] Add Vector to SPIR-V conversion pass
Add conversion pass for Vector dialect to SPIR-V dialect and add some simple
conversion pattern for vector.broadcast, vector.insert, vector.extract.
Differential Revision: https://reviews.llvm.org/D88761
Scott Linder [Tue, 6 Oct 2020 18:45:04 +0000 (18:45 +0000)]
[AMDGPU] Fix remaining kernel descriptor test
Follow up on
e4a9e4ef554a to fix a test I missed in the original patch.
Committed as obvious.
Eric Schweitz [Tue, 6 Oct 2020 16:31:16 +0000 (09:31 -0700)]
[NFC][flang] Add the header file Todo.h. This file is being upstreamed to satisfy dependencies and enable continued progress on lowering of OpenMP, OpenACC, etc.
Differential Revision: https://reviews.llvm.org/D88909
Fanbo Meng [Tue, 6 Oct 2020 18:19:18 +0000 (14:19 -0400)]
[SystemZ][z/OS] Set default alignment rules for z/OS target
Update RUN line to fix lit failure
Differential Revision: https://reviews.llvm.org/D88845
Nicolas Vasilache [Tue, 6 Oct 2020 17:48:56 +0000 (17:48 +0000)]
[mlir][Linalg] Implement tiling on tensors
This revision implements tiling on tensors as described in:
https://llvm.discourse.group/t/an-update-on-linalg-on-tensors/1878/4
Differential revision: https://reviews.llvm.org/D88733
Konrad Dobros [Tue, 6 Oct 2020 17:33:41 +0000 (13:33 -0400)]
[mlir][spirv] Fix extended insts deserialization generation
This change replaces container used for storing temporary
strings for generated code to std::list.
SmallVector may reallocate internal data, which will invalidate
references when more than one extended instruction set is
generated.
Reviewed By: mravishankar, antiagainst
Differential Revision: https://reviews.llvm.org/D88626
Scott Linder [Mon, 5 Oct 2020 22:45:35 +0000 (22:45 +0000)]
[AMDGPU] Emit correct kernel descriptor on big-endian hosts
Previously we wrote multi-byte values out as-is from host memory. Use
the `emitIntN` helpers in `MCStreamer` to produce a valid descriptor
irrespective of the host endianness.
Reviewed By: arsenm, rochauha
Differential Revision: https://reviews.llvm.org/D88858
Thomas Raoux [Tue, 6 Oct 2020 16:56:35 +0000 (09:56 -0700)]
[mlir][vector] Fold extractOp coming from broadcastOp
Combine ExtractOp with scalar result with BroadcastOp source. This is useful to
be able to incrementally convert degenerated vector of one element into scalar.
Differential Revision: https://reviews.llvm.org/D88751
Stanislav Mekhanoshin [Tue, 6 Oct 2020 17:05:43 +0000 (10:05 -0700)]
[AMDGPU] Create isGFX9Plus utility function
Introduce a utility function to make it more
convenient to write code that is the same on
the GFX9 and GFX10 subtargets.
Use isGFX9Plus in the AsmParser for AMDGPU.
Authored By: Joe_Nash
Differential Revision: https://reviews.llvm.org/D88908
Fanbo Meng [Tue, 6 Oct 2020 17:13:01 +0000 (13:13 -0400)]
[SystemZ][z/OS] Set default alignment rules for z/OS target
Set the default alignment control variables for z/OS target and add test case for alignment rules on z/OS.
Reviewed By: abhina.sreeskantharajan
Differential Revision: https://reviews.llvm.org/D88845