Mariya Podchishchaeva [Thu, 26 Jan 2023 15:43:27 +0000 (10:43 -0500)]
[clang] Fix sizeof of boolean vector
Ensure it is at least 8 bits.
Fixes #59801
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D142550
Florian Hahn [Thu, 26 Jan 2023 15:28:49 +0000 (15:28 +0000)]
[SCCP] Regenerate check lines for test.
The auto-generated check lines for the test are missing `align`.
Re-generate the check lines to avoid unrelated changes in upcoming
change.
Martin Fink [Thu, 26 Jan 2023 14:25:58 +0000 (15:25 +0100)]
[SelectionDAG] Add missing setValue calls in visitIntrinsicCall
Add missing setValue calls in SelectionDAGBuilder for mem-transfer
intrinsic calls. These setValue calls are required in order to propagate
pcsections metadata from IR to MIR.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D141048
Martin Fink [Thu, 26 Jan 2023 14:25:58 +0000 (15:25 +0100)]
[SelectionDAG] Add pcsections recursively on SDNode values
When adding pcsections to SDNodes, recursively add them to all values of
the node as well.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D141048
eopXD [Sun, 15 Jan 2023 17:56:23 +0000 (09:56 -0800)]
[15/15][Clang][RISCV][NFC] Set data member under Policy as constants
The object is now correct by construction.
This is the 15th commit of a patch-set that aims to change the default policy
for RVV intrinsics from TAMU to TAMA.
Please refer to the cover letter in the 1st commit (D141573) for an
overview.
Depends on D141793.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D141796
Joachim Protze [Thu, 26 Jan 2023 14:31:24 +0000 (15:31 +0100)]
Re-apply "[OpenMP][Archer] Use dlsym rather than weak symbols for TSan annotations"
Explicitly link libdl this time.
Differential Revision: https://reviews.llvm.org/D142378
Samuel Parker [Thu, 26 Jan 2023 14:25:38 +0000 (14:25 +0000)]
[WebAssembly] Trying to fix expensive buildbot
Johannes de Fine Licht [Thu, 26 Jan 2023 14:03:41 +0000 (15:03 +0100)]
[MLIR][LLVM] Support inlining of LLVM::AllocaOp.
If inlining into an LLVM function, move allocas of constant size from
the callee's entry block to the new entry block, as this will fold into
the prologue/epilogue code during code generation.
We still allow inlining allocas even if we cannot do this
post-processing (i.e., when we are not inlining into an `LLVM::FuncOp`),
since this is an optimization (and thus not necessary for correctness).
Depends on D141682
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D142436
Nikita Popov [Thu, 26 Jan 2023 14:09:48 +0000 (15:09 +0100)]
[LVI] Use !range metadata for supported intrinsics
Even if the intrinsic is supported by ConstantRange, we should
still make use of !range metadata. This doesn't matter much now,
but is important if we want to support ctlz style intrinsics,
which always have KnownBits-based !range metadata attached, which
might be better than what we can compute using ranges.
Nikita Popov [Thu, 26 Jan 2023 14:06:19 +0000 (15:06 +0100)]
[CVP] Add test for !range being ignored on supported intrinsic (NFC)
Sanjay Patel [Wed, 25 Jan 2023 21:27:29 +0000 (16:27 -0500)]
[InstCombine] reduce compare of signbits of 2 values, signed variant
(X s>> BitWidth - 1) == sext (Y s> -1) --> (X ^ Y) < 0
(X s>> BitWidth - 1) != sext (Y s> -1) --> (X ^ Y) > -1
This is the same logic as:
7cbfc39c77ca
...extended to deal with "signed" cast+shift instructions.
https://alive2.llvm.org/ce/z/LLidya
Sanjay Patel [Wed, 25 Jan 2023 20:10:41 +0000 (15:10 -0500)]
[InstCombine] improve description of not+shift transform; NFC
This was added recently with:
e44a305690add9f75
Sanjay Patel [Wed, 25 Jan 2023 20:08:17 +0000 (15:08 -0500)]
[InstCombine] add tests for cmp-of-signbits using sext+ashr; NFC
These are copied from the zext+lshr variants from:
e76c95fb40b108
d1511ed8d19ac
David Spickett [Thu, 26 Jan 2023 13:54:38 +0000 (13:54 +0000)]
[llvm][TableGen][Jupyter] Add notebook links to README
This folder contains the kernel and notebooks
so let's make that obvious and list them in the
readme.
Nikita Popov [Tue, 24 Jan 2023 09:43:40 +0000 (10:43 +0100)]
[Docs] Add best practices for regression tests
There are a lot of conventions for writing tests that don't seem
to be documented anywhere right now, so this takes a stab at
writing down some "best practices".
Differential Revision: https://reviews.llvm.org/D142441
Tim Northover [Thu, 26 Jan 2023 13:26:10 +0000 (13:26 +0000)]
Revert "ARM: skip debug instructions when matching jump-table patterns."
This reverts commit
ce4fcea59e1d5829b4355b6401d7265be23f617a.
I committed it accidentally.
Tim Northover [Thu, 26 Jan 2023 12:52:59 +0000 (12:52 +0000)]
AArch64: remove SM4 support from Apple CPUs.
The CPUs never supported SM4 instructions, but until recently I think crypto
was folded into the baseline architecture as a monolithic feature so it was
difficult to represent that. Now it's split we can, and the CPUs that support
v8.4 onwards only handle AES, SHA2, SHA3 by way of crypto instructions.
Tim Northover [Wed, 18 Jan 2023 15:12:29 +0000 (15:12 +0000)]
ARM: skip debug instructions when matching jump-table patterns.
When working out whether we can see a compressible jump-table pattern during
ConstantIslands, we were stopping when we saw a debug instruction. Instead it's
better to keep iterating backwards to the first real instruction.
Samuel Parker [Thu, 26 Jan 2023 11:52:24 +0000 (11:52 +0000)]
[DAGCombine] fp_to_sint isSaturatingMinMax
Check for single smax pattern against zero when converting from a
small enough float.
Differential Revision: https://reviews.llvm.org/D142481
Paul Walker [Thu, 26 Jan 2023 12:33:10 +0000 (12:33 +0000)]
[SVE] Move isel for casting between NEON and SVE vector types into tablegen.
This is purely refactoring to remove some unecessary C++ code.
Differential Revision: https://reviews.llvm.org/D142516
David Spickett [Wed, 14 Dec 2022 13:46:27 +0000 (13:46 +0000)]
[LLVM][TableGen] Notebook describing how to write a Python backend
This tutorial uses the dump json option to write a backend for
SQL queries.
It is based on the work of Min-Yih Hsu:
* https://github.com/mshockwave/SQLGen
* https://www.youtube.com/watch?v=UP-LBRbvI_U
I hope that having the same concepts in 3 forms will allow people
to choose the style that fits them.
The main drawback here being that it's in Python. C++ can be used
in a notebook (https://github.com/jupyter-xeus/xeus-cling) but I
decided against it for a few reasons:
* Python is the default for Jupyter, no extra installs needed.
* Having the code in a second language may help people who
know one or the other.
* There is no upstream example of a JSON powered backend.
(and although we would be unlikely to accept one upstream,
I think it's a great option for quick development before
translating into C++)
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D142364
Paul Walker [Wed, 18 Jan 2023 16:33:42 +0000 (16:33 +0000)]
[SVE] Fix incorrect lowering of predicate permute builtins.
When lowering predicate permute builtins we incorrectly assume only
the typically "active" bits for the specified element type play a
role with all other bits zero'd. This is not the case because all
bits are significant, with the element type specifying how they
are grouped:
b8 - permute using a block size of 1 bit
b16 - permute using a block size of 2 bits
b32 - permute using a block size of 4 bits
b64 - permute using a block size of 8 bits
The affected builtins are svrev, svtrn1, svtrn2, svuzp1, svuzp2,
svzip1 and svzip2.
This patch adds new intrinsics to support these operations and
changes the builtin lowering code to emit them. The b8 case remains
unchanged because for that operation the existing intrinsics work
as required and their support for other predicate types has been
maintained as useful if only as a way to test the correctness of
their matching ISD nodes that code generation relies on.
Differential Revision: https://reviews.llvm.org/D142065
Florian Hahn [Thu, 26 Jan 2023 12:04:20 +0000 (12:04 +0000)]
[SCCP] Adjust test after
cdeaf5f28c3dca.
Matt Devereau [Thu, 26 Jan 2023 12:02:16 +0000 (12:02 +0000)]
Revert "[LoopVectorize] Enable integer Mul and Add as select reduction patterns"
This reverts commit
f90103851f9a381bbf7ed6da250217577afd00d2.
Florian Hahn [Thu, 26 Jan 2023 11:45:10 +0000 (11:45 +0000)]
Recommit "[SCCP] Use range info to prove AddInst has NUW flag."
This reverts commit
531756b9544b3e164b9ab998292fce3ebbc7c746.
The recommitted version fixes a crash when one of the operands is a
constant other than a ConstantInt. Test for that case have been added
in
5b16cd97b8e1c273.
It splits off the new logic into a separate function because setting the
flags is quite different compared to the other cases handled in replaceSignedInst
which all require replacing an existing instruction.
It also guards makeGuaranteedNoWrapRegion by `if (!Inst.hasNoUnsignedWrap())`
as discussed in the review.
Fixes #60280.
Fixes #60278.
Original message:
This patch updates SCCP to use the value ranges of AddInst operands to
try to prove the AddInst does not overflow in the unsigned sense and
adds the NUW flag. The reasoning is done with
makeGuaranteedNoWrapRegion (thanks @nikic for point it out!).
Follow-ups will include adding NSW and extension to more
OverflowingBinaryOperators.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D142387
Jannik Silvanus [Thu, 26 Jan 2023 11:42:08 +0000 (12:42 +0100)]
[Coroutine] Fix typos in comment
Vlad Serebrennikov [Thu, 26 Jan 2023 11:07:30 +0000 (14:07 +0300)]
[clang] Add test for CWG1960
P1787: "CWG1960 (currently closed as NAD) is resolved by removing the rule in question (which is widely ignored by implementations and gives subtle interactions between using-declarations)."
Wording: "In a using-declarator that does not name a constructor, every declaration named shall be accessible."
Reviewed By: #clang-language-wg, erichkeane, shafik
Differential Revision: https://reviews.llvm.org/D142381
Luke Lau [Wed, 25 Jan 2023 16:19:11 +0000 (16:19 +0000)]
[RISCV][NFC] Rename narrowing patterns to use W suffix
To match up with the pseudo instruction names
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D142553
Kerry McLaughlin [Thu, 26 Jan 2023 10:55:06 +0000 (10:55 +0000)]
[AArch64][SME2] Add multi-vector saturating rounding shift right intrinsics
Adds IR intrinsics for the following SME2 instructions:
- sqrshr (2 and 4 vector)
- uqrshr (2 and 4 vector)
- sqrshru (2 and 4 vector)
- sqrshrn (4 vector)
- uqrshrn (4 vector)
- sqrshrun (4 vector)
Also adds intrinsics for the following SVE2p1 instructions:
- sqrshrn (2 vector)
- uqrshrn (2 vector)
- sqrshrun (2 vector)
NOTE: These intrinsics are still in development and are subject to future changes.
Reviewed By: CarolineConcatto
Differential Revision: https://reviews.llvm.org/D142466
Akash Banerjee [Tue, 24 Jan 2023 11:29:50 +0000 (11:29 +0000)]
[MLIR][OpenMP] Add Lowering support for OpenMP Target Data, Exit Data and Enter Data directives
This patch adds Fortran Lowering support for the OpenMP Target Data, Target Exit Data and Target Enter Data constructs.
operation.
Differential Revision: https://reviews.llvm.org/D142357
Jay Foad [Wed, 25 Jan 2023 12:02:54 +0000 (12:02 +0000)]
[SPIRV] Fix build warnings
Fix these build warnings:
SPIRVBuiltins.cpp:1590:30: warning: 'getPrefTypeAlignment' is deprecated: use getPrefTypeAlign instead [-Wdeprecated-declarations]
SPIRVUtils.cpp:209:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
Differential Revision: https://reviews.llvm.org/D142532
Kerry McLaughlin [Thu, 26 Jan 2023 09:56:39 +0000 (09:56 +0000)]
[AArch64][SME2] Add multi-vector saturating doubling multiply high intrinsics
Adds intrinsics for the following SME2 instructions:
- sqdmulh, 2 vector (single & multi)
- sqdmulh, 4 vector (single & multi)
NOTE: These intrinsics are still in development and are subject to future changes.
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D142368
Nikita Popov [Thu, 26 Jan 2023 09:10:01 +0000 (10:10 +0100)]
[SROA] Break typed pointer support
This removes typed pointer support in a prominent place in the
optimization pipeline, to ensure that any non-trivial consumers
of tip-of-tree LLVM are aware that this is no longer a supported
configuration.
Haojian Wu [Thu, 26 Jan 2023 09:46:51 +0000 (10:46 +0100)]
Revert "[clang] Build UsingType for elaborated type specifiers."
This reverts commit
e70ca7b35319a3621f9d9c6475926428f8c5c000 and the
followup patch "[clang] Fix the location of UsingTypeLoc"
(
ebbeb164c25a40cb6ba9c6b18dce5dcd06c0bb07).
The patch causes an incorrect lookup result:
```
namespace ns { struct Foo { };}
using ns::Foo;
void test() {
struct Foo {
} k; // the type of k refers to ns::Foo, rather than the local Foo!
}
```
Nikita Popov [Thu, 26 Jan 2023 09:18:42 +0000 (10:18 +0100)]
[Clang] Convert some tests to opaque pointers (NFC)
These are all tests that end up running SROA.
Samuel Parker [Thu, 26 Jan 2023 10:26:24 +0000 (10:26 +0000)]
[NFC][WebAssembly] Updated tests
Run update_llc_test_checks on a number of codegen tests.
Dana Jansens [Thu, 26 Jan 2023 08:53:59 +0000 (09:53 +0100)]
Allow getRawCommentForDecl to find comments in macros
The key part of getRawCommentForDecl() required to find a comment
is determining where to look for it. The location of the decl
itself is usually right, except when macros get involved. The
comment in the macro is stored in RawCommentList at the spelling
location of the decl, not at the place where the decl comes into
being as the macro is instantiated.
getDeclLocForCommentSearch() already contained to branches to try
handle comments inside macros, and we are able to replace them
and handle more cases as well, by returning the spelling location
of the decl's begin location. That is:
SourceMgr.getSpellingLoc(D->getBeginLoc())
Reviewed By: gribozavr2
Differential Revision: https://reviews.llvm.org/D142560
Nikolas Klauser [Wed, 25 Jan 2023 09:02:04 +0000 (10:02 +0100)]
[libc++][NFC] Rename multidimentional uninitialized algorithms
Reviewed By: Mordante, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D142526
Jay Foad [Wed, 25 Jan 2023 14:31:09 +0000 (14:31 +0000)]
[AMDGPU] sendmsg(MSG_ORDERED_PS_DONE) is not supported on GFX11
Differential Revision: https://reviews.llvm.org/D142537
Matthias Springer [Thu, 26 Jan 2023 08:15:49 +0000 (09:15 +0100)]
[mlir] GreedyPatternRewriteDriver: Keep track of surviving ops
This change adds `allErased` to the `applyOpPatternsAndFold(ArrayRef<Operation *>, ...)` overload. This overload now supports all functionality that is also supported by `applyOpPatternsAndFold(Operation *, ...)` and can be used as a replacement.
This change has no performance implications when `allErased = nullptr`.
The single-operation overload is removed in a subsequent NFC change.
Differential Revision: https://reviews.llvm.org/D141920
Sylvestre Ledru [Thu, 26 Jan 2023 08:18:00 +0000 (09:18 +0100)]
flang: fix a copy and paste mistake
Reviewed By: clementval
Differential Revision: https://reviews.llvm.org/D142488
Timm Bäder [Thu, 26 Jan 2023 06:50:14 +0000 (07:50 +0100)]
Re-apply "[clang][Interp] Fix left-/right-shifting more than sizeof(unsigned)"
Kazu Hirata [Thu, 26 Jan 2023 06:59:51 +0000 (22:59 -0800)]
[AST] Use llvm::bit_width (NFC)
serge-sans-paille [Wed, 25 Jan 2023 19:43:06 +0000 (20:43 +0100)]
[llvm] Replace array allocation pattern by SmallVector in ComputeMappedEditDistance
Differential Revision: https://reviews.llvm.org/D142574
serge-sans-paille [Tue, 24 Jan 2023 13:52:43 +0000 (14:52 +0100)]
[llvm] Do not zero out write_unsigned_impl internal buffer
Current implementation uselessly calls memset on its internal buffer
while it does not read the non overwritten part.
Differential Revision: https://reviews.llvm.org/D142464
Timm Bäder [Thu, 26 Jan 2023 06:49:10 +0000 (07:49 +0100)]
Revert "[clang][Interp] Fix left-/right-shifting more than sizeof(unsigned)"
This reverts commit
00e967f6c2d626d1913f5af5763beab7946978ce.
This breaks builders where long is only 32 bits, e.g.
https://lab.llvm.org/buildbot/#/builders/65/builds/7721
https://lab.llvm.org/buildbot/#/builders/245/builds/3899
Timm Bäder [Sat, 7 Jan 2023 07:10:48 +0000 (08:10 +0100)]
[clang][Interp][NFCI] Don't crash on void builtin functions
classifyPrim() runs into a llvm_unreachable() for those.
Craig Topper [Thu, 26 Jan 2023 06:08:02 +0000 (22:08 -0800)]
[RISCV] Add Zcd and Zcf to RISCVUsage.rst. NFC
Timm Bäder [Mon, 2 Jan 2023 14:11:27 +0000 (15:11 +0100)]
[clang][Interp] Fix left-/right-shifting more than sizeof(unsigned)
We were just casting to `unsigned` before, so that caused problems when
shifting more bits than `unsigned` has.
Differential Revision: https://reviews.llvm.org/D140845
Kazu Hirata [Thu, 26 Jan 2023 06:05:06 +0000 (22:05 -0800)]
[SystemZ] Use llvm::countl_zero and llvm::countr_zero (NFC)
isVectorConstantLegal calls findFirstSet and findLastSet, but we don't
rely on their ability to return std::numeric_limits<T>::max() on input
0.
This patch replaces those calls with calls to llvm::countl_zero and
llvm::countr_zero.
Due to an off-by-one error in the original code, the value of Upper
could change at bit N, where N is the index of the highest set bit in
SplatBitsZ, but the difference doesn't matter at the end. Without
this patch, Upper could have bit N set. With this patch, Upper never
has bit N set. Either way, both calls to tryValue have this bit set
because the argument is ORed with SplatBitsZ.
Timm Bäder [Sat, 31 Dec 2022 19:04:41 +0000 (20:04 +0100)]
[clang][Interp] Implement logical and/or operators
Differential Revision: https://reviews.llvm.org/D140809
Kazu Hirata [Thu, 26 Jan 2023 05:34:09 +0000 (21:34 -0800)]
Use llvm::Log2_32 and llvm::Log2_64 instead of llvm::findLastSet (NFC)
For a nonzero argument, llvm::findLastSet(x) is equivalent to
llvm::Log2_32(x) or llvm::Log2_64(x). None of the calls to
llvm::findLastSet in this patch relies on llvm::findLastSet's ability
to return std::numeric_limits<T>::max() on input 0.
Kazu Hirata [Thu, 26 Jan 2023 05:22:11 +0000 (21:22 -0800)]
[Support] Use llvm::countr_zero and llvm::Log2_64 in APInt.cpp (NFC)
partMSB and partLSB never get 0 as the argument. That is, we don't
rely on find{First,Last}Set's ability to return
std::numeric_limits<T>::max() on input 0.
This patch replaces partLSB and partMSB with llvm::countr_zero and
llvm::Log2_64, respectively.
FWIW, nobody in LLVM (except unit test MathExtrasTest.cpp) relies on
find{First,Last}Set's ability to return std::numeric_limits<T>::max()
on input 0.
Owen Anderson [Sat, 14 Jan 2023 04:40:04 +0000 (21:40 -0700)]
Resolve a FIXME in MachineCopyPropagation by allowig propagation to subregister uses.
Reviewed By: barannikov88
Differential Revision: https://reviews.llvm.org/D141747
Kazu Hirata [Thu, 26 Jan 2023 04:54:43 +0000 (20:54 -0800)]
[Mips] Simplify loadImmediate (NFC)
loadImmediate computes ShiftAmount in an unnecessarily complicated
manner. We just need to know the minimum right shift amount to bring
the immediate down to an unsigned 16-bit value, so
unsigned ShiftAmount = llvm::bit_width((uint64_t)ImmValue) - 16;
is sufficient. In other words, the following are all equivalent:
unsigned ShiftAmount = FirstSet - (15 - (LastSet - FirstSet));
unsigned ShiftAmount = llvm::countr_zero(IV) - (15 - (63 - llvm::countl_zero(IV) - llvm::countr_zero(IV)));
unsigned ShiftAmount = llvm::countr_zero(IV) - 15 + (63 - llvm::countl_zero(IV) - llvm::countr_zero(IV));
unsigned ShiftAmount = 48 - llvm::countl_zero(IV);
unsigned ShiftAmount = 64 - llvm::countl_zero(IV) - 16;
unsigned ShiftAmount = llvm::bit_width(IV) - 16;
where IV represents (uint64)ImmValue. I've also checked the
equivalence empirically up to 2u << 32.
Kazu Hirata [Thu, 26 Jan 2023 04:44:53 +0000 (20:44 -0800)]
[Mips] Simplify isShiftedUIntAtAnyPosition (NFC)
isShiftedUIntAtAnyPosition never gets zero as the argument because the
caller processes ImmValue satisfying isInt<16>(ImmValue), which
includes zero, long before it calls isShiftedUIntAtAnyPosition.
Given that the argument is always nonzero, findFirstSet is identical
to llvm::countr_zero. Also, x == x >> BitNum << BitNum is always
true, so we are left with:
isUInt<N>(x >> llvm::countr_zero(x))
Just in case the caller changes its behavior and starts passing zero
to us, we can protect the shift from undefined behavior "x << 64" by
adding "x &&".
Douglas Yung [Thu, 26 Jan 2023 03:11:08 +0000 (19:11 -0800)]
Revert "[llvm-cov] Look up object files using debuginfod"
This reverts commit
efbc8bb18eda63007216ad0cb5a8de04963eddd5.
This change is causing failures when detecting curl on several build bots:
- https://lab.llvm.org/buildbot/#/builders/247/builds/884
- https://lab.llvm.org/buildbot/#/builders/231/builds/7688
- https://lab.llvm.org/buildbot/#/builders/121/builds/27389
- https://lab.llvm.org/buildbot/#/builders/230/builds/8464
- https://lab.llvm.org/buildbot/#/builders/57/builds/24209
- https://lab.llvm.org/buildbot/#/builders/127/builds/42722
Douglas Yung [Thu, 26 Jan 2023 03:10:29 +0000 (19:10 -0800)]
Revert "Fix compilation failure in CoverageMapping.cpp"
This reverts commit
46013fc10a6879f4c9b4c9b9fbd43e4dc70f3c8b.
The original commit
efbc8bb18eda63007216ad0cb5a8de04963eddd5 is failing on several bots, so
reverting this follow-up commit as well as the original commit.
Matt Arsenault [Mon, 23 Jan 2023 20:16:44 +0000 (16:16 -0400)]
AMDGPU: Add fneg from integer tests
Matt Arsenault [Mon, 9 Jan 2023 17:17:38 +0000 (12:17 -0500)]
Verifier: Add checks for associated metadata
Also add missing assembler test for the valid cases.
Craig Topper [Thu, 26 Jan 2023 01:08:42 +0000 (17:08 -0800)]
[RISCV] Rename CS_ALU tablegen class to CA_ALU. NFC
The format this uses is CA. I think it may have once shared CS and
this didn't get renamed when that changed in D54302.
Andrew Young [Thu, 26 Jan 2023 01:01:11 +0000 (17:01 -0800)]
[MLIR] Fix python tests for LocationAttr
Follow up to https://reviews.llvm.org/D142522. I forgot to push the
test changes, was caught only in the post-merge builds.
NAKAMURA Takumi [Thu, 26 Jan 2023 00:52:38 +0000 (09:52 +0900)]
GVN.cpp: Suppress a warning in D141712 [-Wunused-variable]
Benjamin Kramer [Thu, 26 Jan 2023 00:49:59 +0000 (01:49 +0100)]
Paul Scoropan [Wed, 25 Jan 2023 23:23:42 +0000 (23:23 +0000)]
[flang] Add driver install directory to AIX toolchain program paths list.
flang-new encounters an issue where its unable to invoke itself because the
install directory was missing from the program paths on AIX.
Reviewed By: w2yehia
Differential Revision: https://reviews.llvm.org/D140628
David Blaikie [Thu, 26 Jan 2023 00:14:30 +0000 (00:14 +0000)]
Migrate away from C++20-deprecated POD type traits
Matt Arsenault [Wed, 25 Jan 2023 19:10:44 +0000 (15:10 -0400)]
AMDGPU: Remove redundant test
implicit-arg-v5-opt.ll already covers this with more cases.
Andrew Young [Thu, 19 Jan 2023 23:01:46 +0000 (15:01 -0800)]
[MLIR] Add LocationAttr to the Python API
This is a follow up to D142182, to expose LocationAttrs through Python.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D142522
Shilei Tian [Thu, 26 Jan 2023 00:05:53 +0000 (19:05 -0500)]
[NFC] clang-format OpenMPOpt.cpp
Paul Kirth [Wed, 25 Jan 2023 23:55:02 +0000 (23:55 +0000)]
[clang-doc] Removed unused method in the Info class
Reviewed By: brettw
Differential Revision: https://reviews.llvm.org/D142577
Michael Jones [Tue, 24 Jan 2023 22:41:28 +0000 (14:41 -0800)]
[libc] add scanf pointer conversion
This patch adds the last conversion for scanf, %p. It is set up to match
the %p implementation in our printf.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D142510
Michael Jones [Tue, 24 Jan 2023 19:25:54 +0000 (11:25 -0800)]
[libc] add scanf current position conversion
To add the current position (%n) conversion, some reorganization needed
to be done. The "write a number to this pointer using the length
modifier" utilities and a couple other shared parsing functions have
been moved into converter_utils.h. This made implementing
current_pos_converter very simple.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D142495
Paul Kirth [Wed, 25 Jan 2023 21:34:01 +0000 (21:34 +0000)]
[llvm][NFC] Rename variables to match style guide in Local.cpp
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D142579
Arthur Lafrance [Wed, 25 Jan 2023 21:02:16 +0000 (13:02 -0800)]
[mlir-translate] More specific error message for BlockAddress
BlockAddress is currently unimplemented in the LLVM dialect of MLIR;
when converting to LLVM dialect MLIR from LLVM IR, mlir-translate
currently terminates with an "unhandled constant" error message.
Instead, this message could be made more specific, to let the user know
that the specific issue is that BlockAddress is unimplemented in the
LLVM dialect.
Differential Revision: https://reviews.llvm.org/D142337
Daniel Thornburgh [Wed, 25 Jan 2023 22:34:45 +0000 (14:34 -0800)]
Fix compilation failure in CoverageMapping.cpp
Joseph Huber [Wed, 25 Jan 2023 22:20:16 +0000 (16:20 -0600)]
[CUDA] Fix output from `ptxas` being removes as a temporary file
Summary:
The logic here is to add the `.cubin` temporary file if we had to create
a new filename to handle it. Unfortuantely the logic was wrong because
we compare `const char *` values here. This logic seems to have been
wrong for some time, but was never noticed since we never used the
relocatable output.
Fixes https://github.com/llvm/llvm-project/issues/60301
Paul Kirth [Thu, 19 Jan 2023 20:47:43 +0000 (20:47 +0000)]
Reland [pgo] Avoid introducing relocations by using private alias
In many cases, we can use an alias to avoid a symbolic relocations,
instead of using the public, interposable symbol. When the instrumented
function is in a COMDAT, we can use a hidden alias, and still avoid
references to discarded sections.
Previous versions of this patch allowed the compiler to name the
generated alias, but that would only be valid when the functions were
local. Since the alias may be used across TUs we use a more
deterministic naming convention, and add a ".local" suffix to the alias
name just as we do for relative vtables aliases.
https://reviews.llvm.org/rG20894a478da224bdd69c91a22a5175b28bc08ed9
removed an incorrect assertion on Mach-O which caused assertion failures in LLD.
We prevent duplicate symbols under ThinLTO + PGO + CFI by disabling
alias generation when the target function has MD_type metadata used in
CFI.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D137982
Daniel Thornburgh [Mon, 24 Oct 2022 22:35:00 +0000 (15:35 -0700)]
[llvm-cov] Look up object files using debuginfod
Reviewed By: gulfem
Differential Revision: https://reviews.llvm.org/D136702
Paul Robinson [Wed, 25 Jan 2023 21:58:34 +0000 (13:58 -0800)]
[unittests] Use GTEST_SKIP() instead of return when appropriate
Basically NFC: A TEST/TEST_F/etc that bails out early (usually because
setup failed or some other runtime condition wasn't met) generally
should use GTEST_SKIP() to report its status correctly, unless it
takes steps to report another status (e.g., FAIL()).
I did see a handful of tests show up as SKIPPED after this change,
which is not unexpected. The status seemed appropriate in all the new
cases.
Michael Jones [Wed, 25 Jan 2023 00:08:41 +0000 (16:08 -0800)]
[libc] fix strtointmax tests
The strtointmax tests weren't running because they depend on the same
shared logic as strtol tests and the target for that was being defined
after the inttypes targets, causing them to be skipped. This patch moves
the inttypes test directory later in the order so that the shared tests
are defined before inttypes tests try to use them.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D142515
Florian Hahn [Wed, 25 Jan 2023 21:41:14 +0000 (21:41 +0000)]
[SCCP] Add additional tests for Add NUW/NSW flag inference.
Jon Chesterfield [Wed, 25 Jan 2023 21:38:49 +0000 (21:38 +0000)]
[amdgpuarch] Delete stray hsa #include line
Craig Topper [Wed, 25 Jan 2023 21:09:58 +0000 (13:09 -0800)]
[CodeGen] Split some functionality from DetectDeadLanes into its own class to be reused. NFC
This is an alternative to D140382.
This moves the first part of runOnce into a new class that can be
reused by D129735. This encapsulates the ownership of the worklist,
and VRegInfos into the new class. The code for updating the dead
lanes stays in the DetectDeadLanes class.
The new class is created on the stack during runOnMachineFunction
so all the data structures will be deleted after each run.
Previously we only cleared them after each run so the memory might
have stayed allocated across runs. Except for VRegInfo which was
always deleted. Hopefully this allocation change isn't a big deal.
Reviewed By: BeMg
Differential Revision: https://reviews.llvm.org/D141993
Rafael Auler [Wed, 25 Jan 2023 19:38:07 +0000 (11:38 -0800)]
[BOLT][NFC] Remove C-style out of bounds array ref
Old code breaks build with libstdc++ with assertions. Fix it.
Aaron Ballman [Wed, 25 Jan 2023 20:52:49 +0000 (15:52 -0500)]
Fix clang-tools-extra Sphinx build
This addresses the issue found in:
https://lab.llvm.org/buildbot/#/builders/115/builds/41077
Stanislav Mekhanoshin [Wed, 25 Jan 2023 19:58:58 +0000 (11:58 -0800)]
[AMDGPU] Remove predicates from real dot instructions. NFCI.
These are copied from pseudos automatically.
Differential Revision: https://reviews.llvm.org/D142575
Elizabeth Andrews [Tue, 10 Jan 2023 12:32:05 +0000 (04:32 -0800)]
[Clang] Fix compilation errors for unsupported __bf16 intrinsics
This patch uses existing deferred diagnostics framework to emit error
for unsupported type __bf16 in device code. Error is not emitted in
host code.
Differential Revision: https://reviews.llvm.org/D141375
rkayaith [Wed, 9 Nov 2022 04:23:28 +0000 (23:23 -0500)]
[mlir][Pass] Make PassManager default to op-agnostic
Currently `PassManager` defaults to being anchored on `builtin.module`.
Switching the default makes `PassManager` consistent with
`OpPassManager` and avoids the implicit dependency on `builtin.module`.
Specifying the anchor op type isn't strictly necessary when using
explicit nesting (existing pipelines will continue to work), but I've
updated most call sites to specify the anchor since it allows for better
error-checking during pipeline construction.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D137731
Aaron Ballman [Wed, 25 Jan 2023 20:07:14 +0000 (15:07 -0500)]
Fix a dead link in the docs
The link used to go to a page on Chris Lattner's site that has been
gone since at least 2015. Replaced the link with one that has similar
information to what Chris had.
Fixes #60238
Denis Nikitin [Wed, 25 Jan 2023 19:58:38 +0000 (19:58 +0000)]
[clang-tidy] Fix segfault in bugprone-standalone-empty
The check incorrectly identified empty() method call in the template
class definition as a stand-alone function call.
This led to a crash because the checker did not expect empty() function
calls without arguments.
Fixes: https://github.com/llvm/llvm-project/issues/59487
Reviewed By: cjdb
Differential Revision: https://reviews.llvm.org/D142423
Joseph Huber [Wed, 25 Jan 2023 20:04:25 +0000 (14:04 -0600)]
[Libomptarget] Add correct relative path for the nexgen plugin
Summary:
I forgot that this file "borrowed" the source from the other file tree.
Fix that.
Joseph Huber [Wed, 25 Jan 2023 19:39:02 +0000 (13:39 -0600)]
[Libomptarget] Clean up CUDA plugin CMake files
Clean up this file after changing it in D142568.
Depends on D142568
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142573
Joseph Huber [Wed, 25 Jan 2023 19:19:37 +0000 (13:19 -0600)]
[Libomptarget] Remove find_package(CUDA) as it has been deprecated
Since D137724 and the LLVM 17 release we have updated to CMake version
3.20. This means that `find_package(CUDA)` is officially deprecated and
can be replaced with `find_package(CUDAToolkit)` instead. This patch
does this and also cleans up a bit of the CMake.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142568
Joseph Huber [Wed, 25 Jan 2023 19:24:34 +0000 (13:24 -0600)]
[nvptx-arch] Remove `find_package(CUDA)` as it has been deprecated.
Since D137724 and the LLVM 17 release we have updated to CMake version
3.20. This means we can use `find_package(CUDAToolkit)` instead as the
legacy module is deprecated.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142570
Guozhi Wei [Wed, 25 Jan 2023 19:45:01 +0000 (19:45 +0000)]
[GVN] Improve PRE on load instructions
This patch implements the enhancement proposed by
https://github.com/llvm/llvm-project/issues/59312.
Suppose we have following code
v0 = load %addr
br %LoadBB
LoadBB:
v1 = load %addr
...
PredBB:
...
br %cond, label %LoadBB, label %SuccBB
SuccBB:
v2 = load %addr
...
Instruction v1 in LoadBB is partially redundant, edge (PredBB, LoadBB) is a
critical edge. SuccBB is another successor of PredBB, it contains another load
v2 which is identical to v1. Current GVN splits the critical edge
(PredBB, LoadBB) and inserts a new load in it. A better method is move the load
of v2 into PredBB, then v1 can be changed to a PHI instruction.
If there are two or more similar predecessors, like the test case in the bug
entry, current GVN simply gives up because otherwise it needs to split multiple
critical edges. But we can move all loads in successor blocks into predecessors.
Differential Revision: https://reviews.llvm.org/D141712
Amir Ayupov [Wed, 25 Jan 2023 19:37:55 +0000 (11:37 -0800)]
[BOLT] Use LTO fuzzy name matching in function-order
Allow partial name matching wrt LTO suffixes in `function-order`
user-supplied function list, the same as permitted by profile matching.
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D142269
Amir Ayupov [Wed, 25 Jan 2023 19:37:42 +0000 (11:37 -0800)]
[BOLT] Emit a warning about invalid entries in function-order list
Move individual warnings under verbosity >= 1, print out a warning with
aggregate number.
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D142397
wren romano [Tue, 24 Jan 2023 21:23:52 +0000 (13:23 -0800)]
[mlir][sparse] (re)introducing getRankedTensorType/getMemrefType
The bulk of D142074 seems to have gotten overwritten due to some sort of merge conflict (afaict there's no record of it having been reverted intentionally). So this commit redoes those changes. In addition to the original changes, this commit also:
* moves the definition of `getRankedTensorType` (from `Transforms/CodegenUtils.h` to `IR/SparseTensor.h`), so that it can be used by `IR/SparseTensorDialect.cpp`.
* adds `getMemRefType` as another abbreviation.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D142503
Ingo Müller [Wed, 25 Jan 2023 16:22:11 +0000 (16:22 +0000)]
[mlir][scf] Fix typo in comment in BufferizableOpInterfaceImpl.cpp (NFC).
Reviewed By: ingomueller-net
Differential Revision: https://reviews.llvm.org/D142554
Dave Lee [Wed, 11 Jan 2023 19:37:07 +0000 (11:37 -0800)]
[lldb][test] Replace use of p with expression (NFC)
In API tests, replace use of the `p` alias with the `expression` command.
To avoid conflating tests of the alias with tests of the expression command,
this patch canonicalizes to the use `expression`.
Differential Revision: https://reviews.llvm.org/D141539