Stephen Kelly [Mon, 15 Mar 2021 01:16:10 +0000 (01:16 +0000)]
Revert "[AST] Add generator for source location introspection"
This reverts commit
91abaa1f8d97e8efa249c31686fd643ff5f1e2c2.
Stephen Kelly [Mon, 15 Mar 2021 01:16:07 +0000 (01:16 +0000)]
Revert "Attempt to fix ARM buildbot"
This reverts commit
12dac66f6b33dd14b72076800726817f682ab785.
Craig Topper [Mon, 15 Mar 2021 00:17:50 +0000 (17:17 -0700)]
[RISCV] Give an explicit error if 'generic' CPU is passed instead of 'generic-rv32' or 'generic-rv64'. Validate 64Bit feature against the triple.
I encountered a project that uses llvm that passes "generic" by
default. While I could fix that project, I wouldn't be surprised
if other projects did something similar. So it seems like
a good idea to provide a better error here.
I've also added validation of the 64Bit feature against the
triple so that we can catch a mismatched CPU before failing in
a mysterious way. We can make it pretty far in isel because we
calculate XLenVT from the triple and use that to set up the legal
integer type.
Reviewed By: luismarques, khchen
Differential Revision: https://reviews.llvm.org/D98307
Stephen Kelly [Mon, 15 Mar 2021 00:20:39 +0000 (00:20 +0000)]
Attempt to fix ARM buildbot
Stephen Kelly [Sun, 14 Mar 2021 16:18:54 +0000 (16:18 +0000)]
[AST] Add generator for source location introspection
Generate a json file containing descriptions of AST classes and their
public accessors which return SourceLocation or SourceRange.
Use the JSON file to generate a C++ API and implementation for accessing
the source locations and method names for accessing them for a given AST
node.
This new API can be used to implement 'srcloc' output in clang-query:
http://ce.steveire.com/z/m_kTIo
The JSON file can also be used to generate bindings for other languages,
such as Python and Javascript:
https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching
In this first version of this feature, only the accessors for Stmt
classes are generated, not Decls, TypeLocs etc. Those can be added
after this change is reviewed, as this change is mostly about
infrastructure of these code generators.
Also in this version, the platforms/cmake configurations are excluded as
much as possible so that support can be added iteratively. Currently a
break on any platform causes a revert of the entire feature. This way,
the `OR WIN32` can be removed in a future commit and if it breaks the
buildbots, only that commit gets reverted, making the entire process
easier to manage.
Differential Revision: https://reviews.llvm.org/D93164
Stephen Kelly [Sun, 14 Mar 2021 22:51:45 +0000 (22:51 +0000)]
Revert "[AST] Add generator for source location introspection"
This reverts commit
477e4b974653f92960c0bf569d88da7baacef68a.
Stephen Kelly [Sun, 14 Mar 2021 22:51:40 +0000 (22:51 +0000)]
Revert "Ensure that cache variable is set when not building introspection"
This reverts commit
6b010c6f6e354966569e02841180c77df45bbd76.
Stephen Kelly [Sun, 14 Mar 2021 22:44:38 +0000 (22:44 +0000)]
Ensure that cache variable is set when not building introspection
Craig Topper [Sun, 14 Mar 2021 22:17:03 +0000 (15:17 -0700)]
[X86] Add -prefer-vector-width=256 tests for v16i8 smulo/umulo.
Stephen Kelly [Sun, 14 Mar 2021 16:18:54 +0000 (16:18 +0000)]
[AST] Add generator for source location introspection
Generate a json file containing descriptions of AST classes and their
public accessors which return SourceLocation or SourceRange.
Use the JSON file to generate a C++ API and implementation for accessing
the source locations and method names for accessing them for a given AST
node.
This new API can be used to implement 'srcloc' output in clang-query:
http://ce.steveire.com/z/m_kTIo
The JSON file can also be used to generate bindings for other languages,
such as Python and Javascript:
https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching
In this first version of this feature, only the accessors for Stmt
classes are generated, not Decls, TypeLocs etc. Those can be added
after this change is reviewed, as this change is mostly about
infrastructure of these code generators.
Also in this version, the platforms/cmake configurations are excluded as
much as possible so that support can be added iteratively. Currently a
break on any platform causes a revert of the entire feature. This way,
the `OR WIN32` can be removed in a future commit and if it breaks the
buildbots, only that commit gets reverted, making the entire process
easier to manage.
Differential Revision: https://reviews.llvm.org/D93164
Pavel Labath [Sun, 14 Mar 2021 21:17:42 +0000 (22:17 +0100)]
[lldb] Move PlatformPOSIX::ConnectToWaitingProcesses to RemoteAwarePlatform
The functionality is not posix specific. Also force the usage of the
gdb-remote process plugin in the gdb platform class.
This is not sufficient to make TestPlatformConnect pass on windows (it
seems it suffers from module loading issues, unrelated to this test),
but it at least makes it shut down correctly, so I change the skip to an
xfail.
Chenguang Wang [Sun, 14 Mar 2021 19:21:32 +0000 (19:21 +0000)]
[ArgPromotion] Copy additional metadata for loads.
Current ArgPromotion implementation does not copy it: https://godbolt.org/z/zzTKof
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D93927
Simonas Kazlauskas [Sun, 14 Mar 2021 20:55:29 +0000 (22:55 +0200)]
[InstSimplify] Add additional GEP transform tests & regenerate
Jan Kratochvil [Sun, 14 Mar 2021 20:42:44 +0000 (21:42 +0100)]
[llvm] [dwarf] Fix DWARFListTableHeader::getOffsetEntry off-by-one
D98289 was erroneously reporting `invalid range list offset 0x20110`
instead of `invalid range list table index 0`.
Differential Revision: https://reviews.llvm.org/D98589
Ricky Taylor [Sun, 14 Mar 2021 18:53:14 +0000 (11:53 -0700)]
[M68k] Tidy up some bit shifting during code emission
This fixes some issues with bit masking when emitting instructions
(including one TODO).
Differential Revision: https://reviews.llvm.org/D98527
Ricky Taylor [Sun, 14 Mar 2021 18:51:58 +0000 (11:51 -0700)]
[M68k] Make M68k TargetMachine use getter function
This makes M68k match other platforms in this regard.
This was done as part of the AsmParser/Disassembler work since the entry
functions of those modules usually reference `getTheXXXTarget()`.
Differential Revision: https://reviews.llvm.org/D98517
Ricky Taylor [Sun, 14 Mar 2021 18:36:57 +0000 (11:36 -0700)]
[M68k] Fix extract-section.py under Python 3
read_raw_stdin() was opening a file in binary mode, but Popen
was being told to use text mode (universal_newlines). This is
benign on Python 2 but an error on Python 3.
Differential Revision: https://reviews.llvm.org/D98428
Nico Weber [Sun, 14 Mar 2021 16:18:22 +0000 (12:18 -0400)]
Revert "[gn build] (manually) kind of merge
d627a27d26"
This reverts commit
5123327edab15bacb44a63a874d9d379d4873407.
d627a27d26 was reverted in
e0f70a8a979f.
Nikita Popov [Sun, 14 Mar 2021 16:04:34 +0000 (17:04 +0100)]
Revert "[AST] Add generator for source location introspection"
Breaks the build ... somehow: https://llvm-compile-time-tracker.com/show_error.php?commit=
77f7d2be214a1de29d583c75739f563593991fc3
FAILED: tools/clang/include/clang/Tooling/NodeIntrospection.inc
cd /root/llvm-compile-time-tracker/llvm-project-build/tools/clang/lib/Tooling && /usr/bin/cmake -E make_directory /root/llvm-compile-time-tracker/llvm-project-build/tools/clang/lib/Tooling/generated/ && /root/llvm-compile-time-tracker/llvm-project/clang/lib/Tooling/DumpTool/generate_cxx_src_locs.py --json-input-path /root/llvm-compile-time-tracker/llvm-project-build/ASTNodeAPI.json --output-file generated/NodeIntrospection.inc --empty-implementation 0 && /usr/bin/cmake -E copy_if_different /root/llvm-compile-time-tracker/llvm-project-build/tools/clang/lib/Tooling/generated/NodeIntrospection.inc /root/llvm-compile-time-tracker/llvm-project-build/tools/clang/include/clang/Tooling/NodeIntrospection.inc
/bin/sh: 1: /root/llvm-compile-time-tracker/llvm-project/clang/lib/Tooling/DumpTool/generate_cxx_src_locs.py: not found
This reverts commit
cefe711135c40b6fb9670cf92118f94f88964b23.
This reverts commit
f72f122feebe7f980c22ed4a7e04fc274ce2c976.
This reverts commit
970c21e345548a967c1bc000462198330982ed7e.
This reverts commit
77f7d2be214a1de29d583c75739f563593991fc3.
Stephen Kelly [Sun, 14 Mar 2021 15:45:34 +0000 (15:45 +0000)]
Fix license headers
Nikita Popov [Sun, 14 Mar 2021 15:39:03 +0000 (16:39 +0100)]
[X86] Add test for PR49587 (NFC)
Shows a miscompile with FastISel.
Stephen Kelly [Sun, 14 Mar 2021 15:08:15 +0000 (15:08 +0000)]
Update python script per review comments
Wrap to 80 cols, introduce main() function and use argparse instead of
optparse.
Stephen Kelly [Sun, 14 Mar 2021 15:30:12 +0000 (15:30 +0000)]
Remove unneeded targets dependency
David Green [Sun, 14 Mar 2021 15:29:14 +0000 (15:29 +0000)]
[AArch64] Expand build-vector-extract.ll tests to i8's. NFC
Simonas Kazlauskas [Sat, 13 Mar 2021 19:55:26 +0000 (21:55 +0200)]
[InstCombine] Restrict a GEP transform to avoid changing provenance
This is an alternative to D98120. Herein, instead of deleting the transformation entirely, we check
that the underlying objects are both the same and therefore this transformation wouldn't incur a
provenance change, if applied.
https://alive2.llvm.org/ce/z/SYF_yv
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D98588
Matt Arsenault [Sun, 14 Mar 2021 13:45:36 +0000 (09:45 -0400)]
CodeGen: Reorder MachinePointerInfo fields
This saves a little bit of padding.
Nico Weber [Wed, 10 Mar 2021 23:57:52 +0000 (18:57 -0500)]
[gn build] (manually) kind of merge
d627a27d26
This only merges the no-op generator part for now.
David Green [Sun, 14 Mar 2021 10:59:24 +0000 (10:59 +0000)]
[Clang][ARM] Reenable arm_acle.c test.
This test was apparently disabled in
6fcd4e080f09c9765d6, without any
sign of how it was going to be reenabled. This patch rewrites the test
to use update_cc_test_checks, with midend optimizations other that
mem2reg disabled.
The first attempt of this patch in
5ae949a9276542b46 failed on bots even
though it worked locally. I've attempted to adjust the RUN lines and
made the test AArch64/ARM specific.
Differential Revision: https://reviews.llvm.org/D98510
Stephen Kelly [Sat, 12 Dec 2020 13:17:49 +0000 (13:17 +0000)]
[AST] Add generator for source location introspection
Generate a json file containing descriptions of AST classes and their
public accessors which return SourceLocation or SourceRange.
Use the JSON file to generate a C++ API and implementation for accessing
the source locations and method names for accessing them for a given AST
node.
This new API can be used to implement 'srcloc' output in clang-query:
http://ce.steveire.com/z/m_kTIo
In this first version of this feature, only the accessors for Stmt
classes are generated, not Decls, TypeLocs etc. Those can be added
after this change is reviewed, as this change is mostly about
infrastructure of these code generators.
Differential Revision: https://reviews.llvm.org/D93164
Luo, Yuanke [Tue, 9 Mar 2021 11:55:58 +0000 (19:55 +0800)]
[X86][AMX] Prevent transforming load pointer from <256 x i32>* to x86_amx*.
The load/store instruction will be transformed to amx intrinsics
in the pass of AMX type lowering. Prohibiting the pointer cast
make that pass happy.
Differential Revision: https://reviews.llvm.org/D98247
Saleem Abdulrasool [Sun, 14 Mar 2021 00:50:23 +0000 (16:50 -0800)]
X86: adjust the windows 64 calling convention for Swift
Adjust the Win64 calling convention for Swift to pass self in R13, which
is traditionally a CSR. This makes the behaviour similar to the SysV CC
for Swift as well. This should improve the argument passing on Windows,
although it comes at a high cost of ABI incompatibility. Fortunately in
this case, there is no guarantee of ABI stability, and so we can make
this incompatible change.
Siva Chandra Reddy [Sun, 14 Mar 2021 00:30:01 +0000 (16:30 -0800)]
[libc][Obvious] Fix except flags reading overflow detected by asan.
Philip Reames [Sat, 13 Mar 2021 23:02:48 +0000 (15:02 -0800)]
Restore fixed version of "[CodeGenPrepare] Fix isIVIncrement (PR49466)"
Change was reverted in commit
8d20f2c2c66eb486ff23cc3d55a53bd840b36971 because it was causing an infinite loop.
9228f2f32 fixed the root issue in the code structure, this change just reapplies the original change w/adaptation to the new code structure.
Philip Reames [Sat, 13 Mar 2021 22:37:15 +0000 (14:37 -0800)]
[CGP] Consolidate logic for getIVIncrement and isIVIncrement
This fixes the bug demonstrated by the test case in the commit message of
8d20f2c2 (which was a revert of cf82700). The root issue was that we have two transforms which are inverses of each other. We use one for simple induction variables (where we can use the post-inc form), and the other for everything else. The problem was that the two transforms could disagree about whether something was an induction variable.
The reverted commit made a change to one of the matcher routines which was used for one of the two transforms without updating the other matcher. However, it's worth noting the existing code w/o the reverted change also has cases where the decision could differ between the two paths.
The fix is simply to consolidate the code such that two paths must agree by construction, and to add an assert to catch any potential future re-divergence.
Triggering the infinite loop requires side stepping the SunkAddrs cache. The SunkAddrs cache has the effect of suppressing the iteration in the common case, but there are codepaths through CGP which restart iteration and clear this cache.
Unfortunately, I have not been able to construct a standalone IR test case for this. The original test case is a c++ program which when compiled by clang demonstrates the infinite loop, but all of my attempts at extracting an IR test case runnable through opt/llc have failed to reproduce. (Including capturing the IR at point of the transform itself!) I have no idea what weird state clang is creating here.
I also tried creating a test case by hand, but gave up after about an hour of trying to find the right combination to dance through multiple transforms to create the end result needed to trip the bug.
Arnamoy Bhattacharyya [Sat, 13 Mar 2021 14:27:53 +0000 (09:27 -0500)]
[flang][OpenMP] Add support for getting parent context and clauses and modify the relevant sema checks to use the new functions.
Differential Revision: https://reviews.llvm.org/D98580
Jez Ng [Sat, 13 Mar 2021 22:41:44 +0000 (17:41 -0500)]
[lld-macho][nfc] Move list of section names into InputSection.h
They were previously in SyntheticSections.h, but now there are
a bunch of non-synthetic section names in the list.
Also renamed `__functionStarts` to `__func_starts` for uniformity with
other section names + keeps the name under 16 characters (in case we ever
want to write it out as a real section).
Reviewed By: #lld-macho, compnerd
Differential Revision: https://reviews.llvm.org/D98586
Simonas Kazlauskas [Sat, 13 Mar 2021 21:38:53 +0000 (23:38 +0200)]
[InstCombine] Update GEP tests
Adds a test for D98588 and updates the test checks.
Nikita Popov [Sat, 13 Mar 2021 14:59:09 +0000 (15:59 +0100)]
[SROA] Regenerate test checks (NFC)
Martin Storsjö [Thu, 11 Mar 2021 20:17:48 +0000 (22:17 +0200)]
[compiler-rt] Use arm-specific builtins sources for arm/mingw builds
Previously, that configuration only used the generic sources, in
addition to the couple specifically chosen arm/mingw files.
Differential Revision: https://reviews.llvm.org/D98547
Nikita Popov [Sat, 13 Mar 2021 19:28:53 +0000 (20:28 +0100)]
[MemCpyOpt] Handle read from lifetime.start with offset
This fixes a regression from the MemDep-based implementation:
MemDep completely ignores lifetime.start intrinsics that aren't
MustAlias -- this is probably unsound, but it does mean that the
MemDep based implementation successfully eliminated memcpy's from
lifetime.start if the memcpy happens at an offset, rather than
the base address of the alloca.
Add a special case for the case where the lifetime.start spans the
whole alloca (which is pretty much the only kind of lifetime.start
that frontends ever emit), as we don't need to figure out our exact
aliasing relationship in that case, the whole alloca is dead prior
to the call.
If this doesn't cover all practically relevant cases, then it
would be possible to make use of the recently added PartialAlias
clobber offsets to make this more precise.
Nikita Popov [Sat, 13 Mar 2021 17:51:46 +0000 (18:51 +0100)]
[MemCpyOpt] Add additional tests for memcpy of undef (NFC)
Craig Topper [Sat, 13 Mar 2021 17:39:33 +0000 (09:39 -0800)]
[DAGCombiner] Optimize 1-bit smulo to AND+SETNE.
A 1-bit smulo overflows is both inputs are -1 since the result
should be +1 which can't be represented in a signed 1 bit value.
We can detect this with an AND and a setcc. The multiply result
can also use the same AND.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D97634
Stefan Gränitz [Sat, 13 Mar 2021 15:25:41 +0000 (16:25 +0100)]
[Orc] Deallocate debug objects properly when removing resources from DebugObjectManagerPlugin
kuterd [Sat, 13 Mar 2021 14:46:38 +0000 (17:46 +0300)]
[Attributor][fix] Remove problematic EXPENSIVE_CHECK
Remove the check that is causing compilation issues in
some build configurations.
Sanjay Patel [Sat, 13 Mar 2021 13:26:27 +0000 (08:26 -0500)]
[InstCombine] avoid creating an extra instruction in zext fold and possible inf-loop
The structure of this fold is suspect vs. most of instcombine
because it creates instructions and tries to delete them
immediately after.
If we don't have the operand types for the icmps, then we are
not behaving as assumed. And as shown in PR49475, we can inf-loop.
Roman Lebedev [Sat, 13 Mar 2021 06:12:26 +0000 (09:12 +0300)]
Reland [SCEV] Improve modelling for (null) pointer constants
This reverts commit
329aeb5db43f5e69df038fb20d2def77fe6f8595,
and relands commit
61f006ac655431bd44b9e089f74c73bec0c1a48c.
This is a continuation of D89456.
As it was suggested there, now that SCEV models `PtrToInt`,
we can try to improve SCEV's pointer handling.
In particular, i believe, i will need this in the future
to further fix `SCEVAddExpr`operation type handling.
This removes special handling of `ConstantPointerNull`
from `ScalarEvolution::createSCEV()`, and add constant folding
into `ScalarEvolution::getPtrToIntExpr()`.
This way, `null` constants stay as such in SCEV's,
but gracefully become zero integers when asked.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D98147
Roman Lebedev [Sat, 13 Mar 2021 12:11:12 +0000 (15:11 +0300)]
[LSR] Don't try to fixup uses in 'EH pad' instructions
The added test case crashes before this fix:
```
opt: /repositories/llvm-project/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:5172: BasicBlock::iterator (anonymous namespace)::LSRInstance::AdjustInsertPositionForExpand(BasicBlock::iterator, const (anonymous namespace)::LSRFixup &, const (anonymous namespace)::LSRUse &, llvm::SCEVExpander &) const: Assertion `!isa<PHINode>(LowestIP) && !LowestIP->isEHPad() && !isa<DbgInfoIntrinsic>(LowestIP) && "Insertion point must be a normal instruction"' failed.
```
This is fully analogous to the previous commit,
with the pointer constant replaced to be something non-null.
The comparison here can be strength-reduced,
but the second operand of the comparison happens to be identical
to the constant pointer in the `catch` case of `landingpad`.
While LSRInstance::CollectLoopInvariantFixupsAndFormulae()
already gave up on uses in blocks ending up with EH pads,
it didn't consider this case.
Eventually, `LSRInstance::AdjustInsertPositionForExpand()`
will be called, but the original insertion point it will get
is the user instruction itself, and it doesn't want to
deal with EH pads, and asserts as much.
It would seem that this basically never happens in-the-wild,
otherwise it would have been reported already,
so it seems safe to take the cautious approach,
and just not deal with such users.
Roman Lebedev [Sat, 13 Mar 2021 08:27:48 +0000 (11:27 +0300)]
[NFC][LSR] Add test case that from https://reviews.llvm.org/D98147#2623549
With that patch, this test fails with an assertion
```
opt: /repositories/llvm-project/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp:5169: BasicBlock::iterator (anonymous namespace)::LSRInstance::AdjustInsertPositionForExpand(BasicBlock::iterator, const (anonymous namespace)::LSRFixup &, const (anonymous namespace)::LSRUse &, llvm::SCEVExpander &) const: Assertion `!isa<PHINode>(LowestIP) && !LowestIP->isEHPad() && !isa<DbgInfoIntrinsic>(LowestIP) && "Insertion point must be a normal instruction"' failed.
```
George Rokos [Wed, 3 Mar 2021 19:48:32 +0000 (11:48 -0800)]
[libomptarget] Add allocator support for target memory
This patch adds the infrastructure for allocator support for target memory.
Three allocators are introduced for device, host and shared memory.
The corresponding API functions have the llvm_ prefix temporarily, until they become part of the OpenMP standard.
Differential Revision: https://reviews.llvm.org/D97883
Nikita Popov [Sat, 13 Mar 2021 10:37:31 +0000 (11:37 +0100)]
[MemCpyOpt] Use AA to check for MustAlias between memset and memcpy
Rather than checking for simple equality, check for MustAlias, as
we do in other transforms. This catches equivalent GEPs.
Nikita Popov [Sat, 13 Mar 2021 10:34:58 +0000 (11:34 +0100)]
[MemCpyOpt] Don't generate zero-size memset
If a memset destination is overwritten by a memcpy and the sizes
are exactly the same, then the memset is simply dead. We can
directly drop it, instead of replacing it with a memset of zero
size, which is particularly ugly for the case of a dynamic size.
Nikita Popov [Sat, 13 Mar 2021 10:32:24 +0000 (11:32 +0100)]
[MemCpyOpt] Add additional tests for memset+memcpy overwrite (NFC)
Nikita Popov [Fri, 12 Mar 2021 22:03:36 +0000 (23:03 +0100)]
[MemorySSA] Don't bail on phi starting access
When calling getClobberingMemoryAccess() with MemoryLocation on a
MemoryPHI starting access, the walker currently immediately bails
and returns the starting access. This makes sense for the API that
does not accept a location (as we wouldn't know what clobber we
should be checking for), but doesn't make sense for the
MemoryLocation-based API. This means that it can't look through
a MemoryPHI if it's the starting access, but can if there is one
more non-clobbering def in between. This patch removes the limitation.
Differential Revision: https://reviews.llvm.org/D98557
luxufan [Sat, 20 Feb 2021 06:02:56 +0000 (14:02 +0800)]
change rvv frame layout
This patch change the rvv frame layout that proposed in D94465. In patch D94465, In the eliminateFrameIndex function,
to eliminate the rvv frame index, create temp virtual register is needed. This virtual register should be scavenged by class
RegsiterScavenger. If the machine function has other unused registers, there is no problem. But if there isn't unused registers,
we need a emergency spill slot. Because of the emergency spill slot belongs to the scalar local variables field, to access emergency
spill slot, we need a temp virtual register again. This makes the compiler report the "Incomplete scavenging after 2nd pass" error.
So I change the rvv frame layout as follows:
```
|--------------------------------------|
| arguments passed on the stack |
|--------------------------------------|<--- fp
| callee saved registers |
|--------------------------------------|
| rvv vector objects(local variables |
| and outgoing arguments |
|--------------------------------------|
| realignment field |
|--------------------------------------|
| scalar local variable(also contains|
| emergency spill slot) |
|--------------------------------------|<--- bp
| variable-sized local variables |
|--------------------------------------|<--- sp
```
Differential Revision: https://reviews.llvm.org/D97111
luxufan [Mon, 22 Feb 2021 05:46:46 +0000 (13:46 +0800)]
[RISCV] Remove redundancy -mattr=+d in test file
Differential Revision: https://reviews.llvm.org/D97177
Roman Lebedev [Sat, 13 Mar 2021 06:10:28 +0000 (09:10 +0300)]
Temporairly evert "[SCEV] Improve modelling for (null) pointer constants"
This appears to have broken ubsan bot:
https://lab.llvm.org/buildbot/#/builders/85/builds/3062
https://reviews.llvm.org/D98147#2623549
It looks like LSR needs some kind of a change around insertion point handling.
Reverting until i have a fix.
This reverts commit
61f006ac655431bd44b9e089f74c73bec0c1a48c.
George Balatsouras [Thu, 11 Mar 2021 22:22:15 +0000 (14:22 -0800)]
[dfsan] Update shadow-args-zext.ll test
Remove hard-coded shadow width references.
Reviewed By: stephan.yichao.zhao
Differential Revision: https://reviews.llvm.org/D98454
xling-Liao [Fri, 12 Mar 2021 21:19:43 +0000 (15:19 -0600)]
[NFC] Adjust SmallVector.h header to workaround XL build compiler issue
In order to prevent further building issues related to the usage of SmallVector
in other compilation unit, this patch adjusts the llvm.h header as a workaround
instead.
Besides, this patch reverts previous workarounds:
1. Revert "[NFC] Use llvm::SmallVector to workaround XL compiler problem on AIX"
This reverts commit
561fb7f60ab631e712c3fb6bbeb47061222c6818.
2.Revert "[clang][cli] Fix build failure in CompilerInvocation"
This reverts commit
8dc70bdcd0fe4efb65876dce0144d9c3386a2f07.
Differential Revision: https://reviews.llvm.org/D98552
Lang Hames [Sat, 13 Mar 2021 03:13:42 +0000 (19:13 -0800)]
[ORC] Fix some comments in the LLJITWithObjectLinkingLayerPlugin example.
Lang Hames [Sat, 13 Mar 2021 01:02:01 +0000 (17:02 -0800)]
[JITLink][ORC] Make the LinkGraph available to modifyPassConfig.
This makes the target triple, graph name, and full graph content available
when making decisions about how to populate the linker pass pipeline.
Also updates the LLJITWithObjectLinkingLayerPlugin example to show more
API use, including use of the API changes in this patch.
Petr Hosek [Sat, 13 Mar 2021 02:29:20 +0000 (18:29 -0800)]
[Fuchsia] Add check-polly to CLANG_BOOTSTRAP_TARGETS
This is necessary so we can run Polly tests in 2 stage build.
Differential Revision: https://reviews.llvm.org/D98572
peter klausler [Sat, 13 Mar 2021 01:17:00 +0000 (17:17 -0800)]
[flang] Fix static build of flang
An older version of a function (Fortran::semantics::FindFunctionResult) was
left in flang/lib/Semantics/tools.cpp, and this breaks the static library
build due to a conflict with the intended final version in another
file and library. Remove the old code.
Differential Revision: https://reviews.llvm.org/D98568
Giorgis Georgakoudis [Sat, 20 Feb 2021 04:22:14 +0000 (20:22 -0800)]
Replace func name with regex for update test scripts
The patch adds an argument to update test scripts, such as update_cc_test_checks, for replacing a function name matching a regex. This functionality is needed to match generated function signatures that include file hashes. Example:
The function signature for the following function:
`__omp_offloading_50_b84c41e__Z9ftemplateIiET_i_l30_worker`
with `--replace-function-regex "__omp_offloading_[0-9]+_[a-z0-9]+_(.*)"` will become:
`CHECK-LABEL: @{{__omp_offloading_[0-9]+_[a-z0-9]+__Z9ftemplateIiET_i_l30_worker}}(`
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D97107
Jason Molenda [Sat, 13 Mar 2021 01:18:56 +0000 (17:18 -0800)]
Don't load kexts/kernels without dSYMs present
One of the backup schemes I use for finding kexts and kernels
on the local filesystem is to load a solitary binary when I don't
find any with a dSYM. This usually is a more confusing behavior
than helpful; people expect to get no binary loaded, or a binary
with debug information. This change stops loading kexts and
kernels that do not have an associated dSYM.
rdar://
74291888
Giorgis Georgakoudis [Sat, 13 Mar 2021 01:20:00 +0000 (17:20 -0800)]
Revert "Replace func name with regex for update test scripts"
This reverts commit
5eaf70afb5f8ae6789587e60d51c60f56caf18b0.
Giorgis Georgakoudis [Sat, 20 Feb 2021 04:22:14 +0000 (20:22 -0800)]
Replace func name with regex for update test scripts
The patch adds an argument to update test scripts, such as update_cc_test_checks, for replacing a function name matching a regex. This functionality is needed to match generated function signatures that include file hashes. Example:
The function signature for the following function:
`__omp_offloading_50_b84c41e__Z9ftemplateIiET_i_l30_worker`
with `--replace-function-regex "__omp_offloading_[0-9]+_[a-z0-9]+_(.*)"` will become:
`CHECK-LABEL: @{{__omp_offloading_[0-9]+_[a-z0-9]+__Z9ftemplateIiET_i_l30_worker}}(`
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D97107
Aart Bik [Fri, 12 Mar 2021 22:56:23 +0000 (14:56 -0800)]
[mlir][sparse] disable nonunit stride dense vectorization
This is a temporary work-around to get our all-annotations-all-flags
stress testing effort run clean. In the long run, we want to provide
efficient implementations of strided loads and stores though
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D98563
Matheus Izvekov [Sat, 6 Mar 2021 01:50:36 +0000 (02:50 +0100)]
[clang] Fix ICE on invalid type parameters for concepts
See PR48593.
Constraints with invalid type parameters were causing a null pointer
dereference.
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Reviewed By: rsmith
Differential Revision: https://reviews.llvm.org/D98095
Matheus Izvekov [Tue, 9 Mar 2021 02:02:09 +0000 (03:02 +0100)]
[clang] Improve diagnostics on implicitly deleted defaulted comparisons
This patch just makes the error message clearer by reinforcing the cause
was a lack of viable **three-way** comparison function for the
**complete object**.
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Reviewed By: rsmith
Differential Revision: https://reviews.llvm.org/D97990
peter klausler [Fri, 12 Mar 2021 21:51:33 +0000 (13:51 -0800)]
[flang] Ensure pointer function results are acceptable variables
Fortran permits a reference to a function whose result is a pointer
to be used as a definable variable in any context where a
designator could appear. This patch wrings out remaining bugs
with such usage and adds more testing.
The utility predicate IsProcedurePointer(expr) had a misleading
name which has been corrected to IsProcedurePointerTarget(expr).
Differential Revision: https://reviews.llvm.org/D98555
Jez Ng [Fri, 12 Mar 2021 23:43:33 +0000 (18:43 -0500)]
[lld-macho] Make range-check.s test more tolerant
Summary: The exact out-of-range value seems to differ by 8 bytes on the
buildbots compared to my local machine. I'm guessing it has something to
do with what inputs we are getting from llvm-mc. Not sure why, but I
don't think it's super important -- let's just ignore the number, the
out-of-range message is the important thing here
peter klausler [Fri, 12 Mar 2021 21:33:50 +0000 (13:33 -0800)]
[flang] Update DE/ALLOCATE statement runtime message processing
Make error message descriptors on runtime DE/ALLOCATE API calls constant.
Fix a bug in error message truncation/padding.
Differential Revision: https://reviews.llvm.org/D98551
Fangrui Song [Fri, 12 Mar 2021 23:10:12 +0000 (15:10 -0800)]
[gcov] Delete ancient MSVC workaround
Fangrui Song [Fri, 12 Mar 2021 23:07:58 +0000 (15:07 -0800)]
[gcov] Delete FreeBSD<10 (reached end of life for years) workaround
Stanislav Mekhanoshin [Fri, 12 Mar 2021 21:28:51 +0000 (13:28 -0800)]
[AMDGPU] Fix getAlignedAGPRClassID
Not all register classes were listed.
Differential Revision: https://reviews.llvm.org/D98550
Matt Morehouse [Fri, 12 Mar 2021 22:36:57 +0000 (14:36 -0800)]
[libFuzzer] Use macro instead of __attribute__.
This should fix the Windows buildbot errors.
Jez Ng [Fri, 12 Mar 2021 22:26:14 +0000 (17:26 -0500)]
[lld-macho] Only codesign by default on arm64 macOS
instead of doing it on all arm64 platforms.
Reviewed By: #lld-macho, gkm
Differential Revision: https://reviews.llvm.org/D98446
Jez Ng [Fri, 12 Mar 2021 22:26:12 +0000 (17:26 -0500)]
[lld-macho][nfc] Give every SyntheticSection a fake InputSection
Previously, it was difficult to write code that handled both synthetic
and regular sections generically. We solve this problem by creating a
fake InputSection at the start of every SyntheticSection.
This refactor allows us to handle DSOHandle like a regular Defined
symbol (since Defined symbols must be attached to an InputSection), and
paves the way for supporting `__mh_*header` symbols. Additionally, it
simplifies our binding/rebase code.
I did have to extend Defined a little -- it now has a `linkerInternal`
flag, to indicate that `___dso_handle` should not be in the final symbol
table.
I've also added some additional testing for `___dso_handle`.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D98545
Jez Ng [Fri, 12 Mar 2021 22:26:11 +0000 (17:26 -0500)]
[lld-macho] Check address ranges when applying relocations
This diff required fixing `getEmbeddedAddend` to apply sign
extension to 32-bit values. We were previously passing around wrong
64-bit addend values that became "right" after being truncated back to
32-bit.
I've also made `getEmbeddedAddend` return a signed int, which is similar
to what LLD-ELF does for its `getImplicitAddend`.
`reportRangeError`, `checkUInt`, and `checkInt` are counterparts of similar
functions in LLD-ELF.
Reviewed By: #lld-macho, thakis
Differential Revision: https://reviews.llvm.org/D98387
Siva Chandra Reddy [Fri, 12 Mar 2021 21:56:52 +0000 (13:56 -0800)]
[libc][Obvious] Add string tests to non-full-build mode.
Jordan Rupprecht [Fri, 12 Mar 2021 21:58:37 +0000 (13:58 -0800)]
Revert "[CodeGenPrepare] Fix isIVIncrement (PR49466)"
This reverts commit
cf82700af8c658ae09b14c3d01bb1e73e48d3bd3 due to a compile timeout when building the following with `clang -O2`:
```
template <class, class = int> class a;
struct b {
using d = int *;
};
struct e {
using f = b::d;
};
class g {
public:
e::f h;
e::f i;
};
template <class, class> class a : g {
public:
long j() const { return i - h; }
long operator[](long) const noexcept;
};
template <class c, class k> long a<c, k>::operator[](long l) const noexcept {
return h[l];
}
template <typename m, typename n> int fn1(m, n, const char *);
int o, p;
class D {
void q(const a<long> &);
long r;
};
void D::q(const a<long> &l) {
int s;
if (l[0])
for (; l.j(); ++s) {
if (l[s])
while (fn1(o, 0, ""))
;
r = l[s] / p;
}
}
```
Nikita Popov [Fri, 12 Mar 2021 21:53:49 +0000 (22:53 +0100)]
[MemCpyOpt] Add test for memcpy in loop (NFC)
This is currently not being optimized.
Siva Chandra [Fri, 12 Mar 2021 21:50:09 +0000 (13:50 -0800)]
[libc] Adjust full build entrypoints for aarch64.
Wei Mi [Fri, 12 Mar 2021 19:34:56 +0000 (11:34 -0800)]
[IndirectCallPromotion] Recommit "Don't strip ".__uniq." suffix when it strips
".llvm." suffix".
The recommit fixed a bug that symbols with "." at the beginning is not
properly handled in the last commit.
Original commit message:
Currently IndirectCallPromotion simply strip everything after the first "."
in LTO mode, in order to match the symbol name and the name with ".llvm."
suffix in the value profile. However, if -funique-internal-linkage-names
and thinlto are both enabled, the name may have both ".__uniq." suffix and
".llvm." suffix, and the current mechanism will strip them both, which is
unexpected. The patch fixes the problem.
Differential Revision: https://reviews.llvm.org/D98389
Siva Chandra Reddy [Thu, 11 Mar 2021 23:25:24 +0000 (15:25 -0800)]
[libc] Introduce a full build mode CMake option.
This option will build LLVM libc as a full libc by itself. In this mode,
it is not expected that it will be mixed with other libcs. The
non-full-build mode will be the default LLVM libc build mode. In a future
where LLVM libc is complete enough, the full libc build will be made the
default mode.
Philip Reames [Fri, 12 Mar 2021 21:11:25 +0000 (13:11 -0800)]
[tests] Cover a case brought up in review of D98222
Muiez Ahmed [Fri, 12 Mar 2021 20:22:03 +0000 (15:22 -0500)]
[SystemZ][z/OS] Missing wchar functions libc++
The aim is to add the missing z/OS specific implementations for mbsnrtowcs and wcsnrtombs, as part of libc++.
Differential Revision: https://reviews.llvm.org/D98207
Amy Huang [Tue, 16 Feb 2021 21:13:52 +0000 (13:13 -0800)]
[DebugInfo] Add an attribute to force type info to be emitted for types that are required to be complete.
This was motivated by the fact that constructor type homing (debug info
optimization that we want to turn on by default) drops some libc++ types,
so an attribute would allow us to override constructor homing and emit
them anyway. I'm currently looking into the particular libc++ issue, but
even if we do fix that, this issue might come up elsewhere and it might be
nice to have this.
As I've implemented it now, the attribute isn't specific to the
constructor homing optimization and overrides all of the debug info
optimizations.
Open to discussion about naming, specifics on what the attribute should do, etc.
Differential Revision: https://reviews.llvm.org/D97411
Sanjay Patel [Fri, 12 Mar 2021 19:15:27 +0000 (14:15 -0500)]
[InstCombine] add test for zext-of-icmps; NFC
PR49475 shows an infinite loop outcome, but this
tries to show the root cause with a minimal test.
Craig Topper [Fri, 12 Mar 2021 20:07:46 +0000 (12:07 -0800)]
[DAGCombiner] Use isConstantSplatVectorAllZeros/Ones instead of isBuildVectorAllZeros/Ones in visitMSTORE and visitMLOAD.
This allows us to optimize when the mask is a splat_vector in
addition to build_vector.
Craig Topper [Fri, 12 Mar 2021 20:05:00 +0000 (12:05 -0800)]
[RISCV] Add test cases for masked load/store with all ones/zeros mask. NFC
These should be removed for all zeros mask or optimized to
unmasked for all ones.
Anastasia Stulova [Fri, 12 Mar 2021 20:11:26 +0000 (20:11 +0000)]
[OpenCL] Use spir target for CIndex tests for OpenCL.
This fixes failing bots.
Patch by azabaznov (Anton Zabaznov)!
Differential Revision: https://reviews.llvm.org/D98539
Nico Weber [Fri, 12 Mar 2021 20:04:20 +0000 (15:04 -0500)]
Arnamoy Bhattacharyya [Fri, 12 Mar 2021 20:00:47 +0000 (15:00 -0500)]
[flang][OpenMP][FIX] Fix function to check nesting level of current directive.
Nikita Popov [Thu, 11 Mar 2021 17:59:49 +0000 (18:59 +0100)]
[OpaquePtrs] Remove some uses of type-less CreateGEP() (NFC)
This removes some (but not all) uses of type-less CreateGEP()
and CreateInBoundsGEP() APIs, which are incompatible with opaque
pointers.
There are a still a number of tricky uses left, as well as many
more variation APIs for CreateGEP.
Craig Topper [Fri, 12 Mar 2021 19:46:22 +0000 (11:46 -0800)]
[RISCV] Teach normaliseSetCC to canonicalize X > -1 to X >= 0 and X < 1 to 0 >= X.
This allows the use of BGE with X0 instead of puting -1/1 in a
register.
Reviewed By: jrtc27
Differential Revision: https://reviews.llvm.org/D98542
Hubert Tong [Fri, 12 Mar 2021 19:48:00 +0000 (14:48 -0500)]
Revert "[AsmParser][SystemZ][z/OS] Introducing HLASM Comment Syntax"
This reverts commit
bcdd40f802a5dfd7b3ac11304e6099bfcdd25b1e.
See https://reviews.llvm.org/D98543.
Nico Weber [Fri, 12 Mar 2021 19:37:37 +0000 (14:37 -0500)]
Revert "[Clang][ARM] Reenable arm_acle.c test."
This reverts commit
5ae949a9276542b46f41374fbe7aee01e480d9d6.
Test fails everywhere.
Eugene Zhulenev [Fri, 12 Mar 2021 18:39:16 +0000 (10:39 -0800)]
[mlir] Annotate functions used only in debug mode with LLVM_ATTRIBUTE_UNUSED
Functions used only in `assert` cause warnings in release mode
Reviewed By: mehdi_amini, dcaballe, ftynse
Differential Revision: https://reviews.llvm.org/D98476
David Green [Fri, 12 Mar 2021 19:21:21 +0000 (19:21 +0000)]
[Clang][ARM] Reenable arm_acle.c test.
This test was apparently disabled in
6fcd4e080f09c9765d6, without any
sign of how it was going to be reenabled. This patch rewrites the test
to use update_cc_test_checks, with midend optimizations other that
mem2reg disabled.