Jonas Devlieghere [Mon, 15 May 2023 03:20:03 +0000 (20:20 -0700)]
[lldb] Cleanup OptionValue header and implenentation (NFC)
Group related functions together and remove inconsistencies between them
in the implementation.
Chuanqi Xu [Mon, 15 May 2023 03:05:47 +0000 (11:05 +0800)]
Revert "[Serialization] Don't try to complete the redeclaration chain in"
Close https://github.com/llvm/llvm-project/issues/62705
This reverts commit
cf47e9fe86aa65b74b0476a5ad4d036dd7463bfb. This
introduces a breaking change in
https://github.com/llvm/llvm-project/issues/62705. Revert this one to
fix it quickly.
Jonas Devlieghere [Mon, 15 May 2023 02:58:16 +0000 (19:58 -0700)]
[lldb] Complete OptionValue cleanup (NFC)
Make the `Get.*Value` and `Set.*Value` function private and migrate the
last remaining call sites to the new overloaded/templated functions.
Manna, Soumi [Mon, 15 May 2023 03:07:19 +0000 (20:07 -0700)]
[NFC][CLANG] Fix Static Code Analysis Concerns
Reported by Static Analyzer Tool, Coverity:
Bad bit shift operation
The operation may have an undefined behavior or yield an unexpected result.
In <unnamed>::SVEEmitter::encodeFlag(unsigned long long, llvm::StringRef): A bit shift operation has a shift amount which is too large or has a negative value.
// Returns the SVETypeFlags for a given value and mask.
uint64_t encodeFlag(uint64_t V, StringRef MaskName) const {
auto It = FlagTypes.find(MaskName);
//Condition It != llvm::StringMap<unsigned long long, llvm::MallocAllocator>::const_iterator const(this->FlagTypes.end()), taking true branch.
if (It != FlagTypes.end()) {
uint64_t Mask = It->getValue();
//return_constant: Function call llvm::countr_zero(Mask) may return 64.
//assignment: Assigning: Shift = llvm::countr_zero(Mask). The value of Shift is now 64.
unsigned Shift = llvm::countr_zero(Mask);
//Bad bit shift operation (BAD_SHIFT)
//large_shift: In expression V << Shift, left shifting by more than 63 bits has undefined behavior. The shift amount, Shift, is 64.
return (V << Shift) & Mask;
}
llvm_unreachable("Unsupported flag");
}
Asserting Mask != 0 will not suffice to silence Coverity. While Coverity can specifically observe that countr_zero might return 0 (because TrailingZerosCounter<T, 8>::count() has a return 64 statement), It seems like Coverity can not determine that the function can't return 65 or higher. Coverity is reporting is that the shift might overflow,
so that is what should be guarded.
assert(Shift < 64 && "Mask value produced an invalid shift value");
Reviewed By: tahonermann, sdesmalen, erichkeane
Differential Revision: https://reviews.llvm.org/D150140
Manna, Soumi [Mon, 15 May 2023 02:49:22 +0000 (19:49 -0700)]
[NFC][Clang] Fix Coverity issues of copy without assign
This patch adds missing copy/move assignment operator to the class which has user-defined copy/move constructor.
Reviewed By: tahonermann
Differential Revision: https://reviews.llvm.org/D149718
David Green [Sun, 14 May 2023 22:28:11 +0000 (23:28 +0100)]
[AArch64] Update FP16 vector cmp costs
Without FP16, a fp16 v4f16 comparison will be converted to a v4f32 and back.
v8f16 get scalarized currently. Update the costs of v4f16 to match.
Fangrui Song [Sun, 14 May 2023 21:12:16 +0000 (14:12 -0700)]
[clang-tidy][test] Add trailing -- to suppress compile_commands.json read
This fixes some build bots if we reland D150505: specifically when using GCC to
build LLVM and then `-fno-lifetime-dse` ends up passed to compile_commands.json
and causing clang-tidy to pick up the Clang unknown option.
Florian Hahn [Sun, 14 May 2023 21:07:35 +0000 (22:07 +0100)]
[Matrix] Remove redundant transpose with dot product lowering.
Extend dot-product handling to skip transposes of the first operand. As
this is a vector, the conversion between column and row vector via the
transpose isn't needed.
Reviewed By: thegameg
Differential Revision: https://reviews.llvm.org/D148428
LLVM GN Syncbot [Sun, 14 May 2023 19:26:19 +0000 (19:26 +0000)]
[gn build] Port
b7932803dede
Douglas Yung [Sun, 14 May 2023 19:22:11 +0000 (12:22 -0700)]
Revert "[LV] Add test case for #51677."
This reverts commit
77df976a1219c0c6fd102358c15e71747aab4443.
Test is failing on many build bots including:
https://lab.llvm.org/buildbot/#/builders/247/builds/4488
https://lab.llvm.org/buildbot/#/builders/139/builds/40608
https://lab.llvm.org/buildbot/#/builders/216/builds/21169
https://lab.llvm.org/buildbot/#/builders/65/builds/9673
https://lab.llvm.org/buildbot/#/builders/119/builds/13302
https://lab.llvm.org/buildbot/#/builders/121/builds/30459
https://lab.llvm.org/buildbot/#/builders/230/builds/12967
https://lab.llvm.org/buildbot/#/builders/57/builds/26781
https://lab.llvm.org/buildbot/#/builders/214/builds/7458
https://lab.llvm.org/buildbot/#/builders/93/builds/14892
https://lab.llvm.org/buildbot/#/builders/231/builds/11764
Fangrui Song [Sun, 14 May 2023 18:59:02 +0000 (11:59 -0700)]
[MC] Remove redundant classof definitions for MCTargetDesc's derived classes
Fangrui Song [Sun, 14 May 2023 18:37:36 +0000 (11:37 -0700)]
[MC][X86] Fix != result for two register operands
Fixes:
05b589101e7dadce267881e5b0832882f95a9908 (D47545)
Mark de Wever [Thu, 20 Apr 2023 19:03:40 +0000 (21:03 +0200)]
[libc++] Moves unwrap_reference to type_traits.
This was discovered while working on modules.
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D149351
Sergei Barannikov [Sun, 14 May 2023 17:59:13 +0000 (20:59 +0300)]
[clang] Convert a few tests to opaque pointers
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D150520
Ricky Zhou [Sun, 14 May 2023 15:53:04 +0000 (16:53 +0100)]
[LV] Add test case for #51677.
Luo, Yuanke [Sun, 14 May 2023 08:15:32 +0000 (16:15 +0800)]
[X86] Fix the bug of pr62625
We should not call tryOptimizeLEAtoMOV() in eliminateFrameIndex() when
the base register is a virtual register, because tryOptimizeLEAtoMOV
would assume the base register be physical register. Although we can
also optimize LEA to MOV with virtual register, I'd like to leave the
optimization in another patch.
Differential Revision: https://reviews.llvm.org/D150521
Phoebe Wang [Sun, 14 May 2023 12:53:30 +0000 (20:53 +0800)]
[Coverity] Fix unchecked return value, NFC
Serguei Katkov [Wed, 10 May 2023 06:19:38 +0000 (13:19 +0700)]
[X86] Improve handling on zero constant for fminimum/fmaximum lowering
If we know that zero constant operand is already in the right place we do not need
to re-order anything.
Reviewed By: e-kud
Differential Revision: https://reviews.llvm.org/D150249
Uday Bondhugula [Sun, 14 May 2023 12:01:51 +0000 (17:31 +0530)]
[MLIR] NFC. Add missing const on affine analysis utils methods
NFC. Add missing const on affine analysis utils ComputationSliceState
methods.
Differential Revision: https://reviews.llvm.org/D150523
Uday Bondhugula [Sun, 14 May 2023 11:52:14 +0000 (17:22 +0530)]
[MLIR] NFC. Make affine analysis utils method const correct
Make isSliceValid const correct. NFC.
Phoebe Wang [Sun, 14 May 2023 09:14:49 +0000 (17:14 +0800)]
[Coverity] Fix unchecked return value, NFC
Vitaly Buka [Sun, 14 May 2023 08:22:49 +0000 (01:22 -0700)]
[test][sanitizer] Disable create_thread_loop on Android
Joshua Cao [Sun, 7 May 2023 05:13:16 +0000 (22:13 -0700)]
[IntervalTree] Initialize find_iterator::Point
There was initially a msan report for use-of-uninitialized value due to
a bug in https://reviews.llvm.org/D138526. find_iterator::Point is
uninitialized for the default constructor of find_iterator, which is
used by IntervalTree::end. This change is not required, but its good
practice to make sure all class members are initialized.
Differential Revision: https://reviews.llvm.org/D149698
Sam James [Sun, 14 May 2023 06:37:43 +0000 (07:37 +0100)]
Revert "[cmake] Disable GCC lifetime DSE"
This reverts commit
ce990b542617e5b52f69707b103a2424bec5e53b.
This breaks some build bots - specifically when using GCC to build LLVM and
then -fno-lifetime-dse ends up passed to Clang in some tests like at
https://lab.llvm.org/buildbot/#/builders/139/builds/40594.
Bug: https://github.com/llvm/llvm-project/issues/24952
Bug: https://github.com/llvm/llvm-project/issues/57740
Differential Revision: https://reviews.llvm.org/D150505
Craig Topper [Sun, 14 May 2023 06:33:00 +0000 (23:33 -0700)]
[LegalizeVectorOps][AArch64][RISCV][X86] Use OpVT for ISD::SETCC in LegalizeVectorOps.
Previously, LegalizeVectorOps used the result VT while LegalizeDAG
used the operand VT. This patch makes them both use the operand VT.
This also makes it consistent with how the default cost model works.
I've hacked the AArch64 cost model to maintain old behavior for some
f16 vectors.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D149572
Ian Anderson [Sat, 13 May 2023 01:36:57 +0000 (18:36 -0700)]
[libc++][PSTL] Make the PSTL submodules only have one header
Module map generation for the private detail headers is easier done if each private header is by itself in a submodule. Move the __algorithm/pstl_backends into their own submodules.
Reviewed By: philnik, #libc
Differential Revision: https://reviews.llvm.org/D150503
Craig Topper [Sun, 14 May 2023 06:01:32 +0000 (23:01 -0700)]
[M68k] Update divide-by-constant.ll after D150333.
Xi Ruoyao [Sun, 14 May 2023 02:42:45 +0000 (03:42 +0100)]
[cmake] Disable GCC lifetime DSE
LLVM data structures like llvm::User and llvm::MDNode rely on
the value of object storage persisting beyond the lifetime of the
object (#24952). This is not standard compliant and causes a runtime
crash if LLVM is built with GCC and LTO enabled (#57740). Until
these issues are fixed, we need to disable dead store eliminations
eliminations based on object lifetime.
Bug: https://github.com/llvm/llvm-project/issues/24952
Bug: https://github.com/llvm/llvm-project/issues/57740
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106943
(This was originally committed as
94f7c961c78d8fdbc05898cfbbf88094de45c1ad but
I reverted it in
b974991f4c4457a2104b648d9797a0ed438ecc9 to fix authorship.)
Reviewed By: MaskRay, thesamesam, nikic
Differential Revision: https://reviews.llvm.org/D150505
Signed-off-by: Sam James <sam@gentoo.org>
Sam James [Sun, 14 May 2023 02:42:27 +0000 (03:42 +0100)]
Revert "[cmake] Disable GCC lifetime DSE" (to fix authorship)
This reverts commit
94f7c961c78d8fdbc05898cfbbf88094de45c1ad.
Differential Revision: https://reviews.llvm.org/D150505
Fangrui Song [Sun, 14 May 2023 01:47:29 +0000 (18:47 -0700)]
MCSymbol: Split FragmentAndHasName to Fragment and HasName
The bit fields have plent of spare bits. Just reserve one for HasName so that we
can access Fragment without bitwise operations. Fragment is commonly accessed.
This change makes my x86-64 release build 5KiB smaller.
Nikolas Klauser [Fri, 12 May 2023 03:24:30 +0000 (20:24 -0700)]
[libc++][NFC] Use _LIBCPP_STD_VER instead of __cpp_lib_atomic_is_always_lock_free
Reviewed By: #libc, ldionne, Mordante
Spies: Mordante, libcxx-commits
Differential Revision: https://reviews.llvm.org/D150421
Thurston Dang [Fri, 12 May 2023 23:27:53 +0000 (23:27 +0000)]
ASan: fix potential use-after-free in backtrace interceptor
Various ASan interceptors may corrupt memory if passed a
pointer to freed memory (https://github.com/google/sanitizers/issues/321).
This patch fixes the issue for the backtrace interceptor,
by calling REAL(backtrace) with a known-good scratch buffer,
and performing an addressability check on the user-provided
buffer prior to writing to it.
Differential Revision: https://reviews.llvm.org/D150496
Aiden Grossman [Sat, 13 May 2023 22:43:39 +0000 (15:43 -0700)]
[Docs] Minor Fixups in Advanced Builds Documentation
This patch changes two instances of an ampersand to a written out and
for more consistency with the rest of the file and brevity. In addition,
the last `cmake --build` reference is removed, again for consistency
with the rest of the file which shows the ninja invocations. This cmake
invocation also passed in the `--parallel` flag which doesn't make sense
with ninja using all threads by default.
This was changed in the previous patch to touch this line
(https://reviews.llvm.org/D88990), but if we want to change this, it
should be done across the entire file.
Noah Goldstein [Sat, 13 May 2023 17:58:55 +0000 (12:58 -0500)]
[SelectionDAG] Use `computeKnownBits` if `Op` is not recognized by `isKnownNeverZero`
The current logic is pretty limitted unless the `Op` is a
constant. This at least covers more obvious cases.
Reviewed By: craig.topper, foad
Differential Revision: https://reviews.llvm.org/D149196
Noah Goldstein [Tue, 25 Apr 2023 17:53:33 +0000 (12:53 -0500)]
[SelectionDAG] Limit max recursion in `isKnownNeverZero` and `isKnownToBeAPowerOfTwo`
Both of these functions recursively call themselves so it makes sense
to limit that upper bound.
Differential Revision: https://reviews.llvm.org/D149195
Noah Goldstein [Sat, 13 May 2023 17:58:16 +0000 (12:58 -0500)]
[InstCombine] Add simplifications for div/rem with `i1` operands; PR62607
This is generally handled already in early CSE.
If a specialized pipeline is used, however, its possible for `i1`
operand with known-zero denominator to slip through. Generally the
known-zero denominator is caught and poison is returned, but if it is
indirect enough (known zero through a phi node) we can miss this case
in `InstructionSimplify` and then miss handling `i1`. This is because
`i1` is current handled with the following check:
`if(Known.countMinLeadingZeros() == Known.getBitWidth() - 1)`
which only works on the assumption we don't know the denominator to be
zero. If we know the denominator to be zero, this check fails:
https://github.com/llvm/llvm-project/issues/62607
This patch simply adds an explicit `if(Known.isZero) return poison;`
which fixes the issue.
Alive2 Link for tests:
https://alive2.llvm.org/ce/z/VTw54n
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D150142
Noah Goldstein [Sat, 13 May 2023 17:58:03 +0000 (12:58 -0500)]
[X86] Invert transforming `(x * (Pow2_Ceil(C1) - (1 << C0))) & C1` -> `(-x << C0) & C1`
We can detect the case under the following circumstances:
Take `(Pow2_Ceil(C1) - (1 << C0))` as `C2`.
1) `C2` is NOT a power of 2.
2) `C2 + LeastSignificantBit(C2)` is a nonzero power of 2.
3) `C2 u>= C1`
The motivation is the middle end transforms:
`(-x << C0) & C1`
to
`(x * (Pow2_Ceil(C1) - (1 << C2))) & C1`
As it saves IR instructions. On X86 the two instruction, `sub` and
`shl`, and better than the `mul` so we want to undo the transform.
This comes up when shifting a bit-mask by a byte-misalignment i.e:
`y << ((-(uintptr)x * 8) & 63)`
Alive2 Proofs (including all cases with undefs in the vector):
https://alive2.llvm.org/ce/z/f-65b6
Reviewed By: RKSimon, pengfei
Differential Revision: https://reviews.llvm.org/D150294
Noah Goldstein [Wed, 10 May 2023 19:49:23 +0000 (14:49 -0500)]
[X86] Add tests for inverting `(x * (Pow2_Ceil(C1) - (1 << C0))) & C1` -> `(-x << C0) & C1`; NFC
Differential Revision: https://reviews.llvm.org/D150293
Sam James [Sat, 13 May 2023 19:34:05 +0000 (20:34 +0100)]
[cmake] Disable GCC lifetime DSE
LLVM data structures like llvm::User and llvm::MDNode rely on
the value of object storage persisting beyond the lifetime of the
object (#24952). This is not standard compliant and causes a runtime
crash if LLVM is built with GCC and LTO enabled (#57740). Until
these issues are fixed, we need to disable dead store eliminations
eliminations based on object lifetime.
Bug: https://github.com/llvm/llvm-project/issues/24952
Bug: https://github.com/llvm/llvm-project/issues/57740
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106943
Reviewed By: MaskRay, thesamesam, nikic
Differential Revision: https://reviews.llvm.org/D150505
Amir Ayupov [Sat, 13 May 2023 17:34:50 +0000 (10:34 -0700)]
[Clang][CMake] Use perf-training for Clang-BOLT
Leverage perf-training flow for BOLT profile collection, enabling reproducible
BOLT optimization. Remove the use of bootstrapped build for profile collection.
Test Plan:
- Regular (single-stage) build
```
$ cmake ... -C .../clang/cmake/caches/BOLT.cmake
$ ninja clang-bolt
...
[21/24] Instrumenting clang binary with BOLT
[21/24] Generating BOLT profile for Clang
[23/24] Merging BOLT fdata
Profile from 2 files merged.
[24/24] Optimizing Clang with BOLT
...
1291202496 : executed instructions (-1.1%)
27005133 : taken branches (-71.5%)
...
```
- Two stage build (ThinLTO+InstPGO)
```
$ cmake ... -C .../clang/cmake/caches/BOLT.cmake -C .../clang/cmake/caches/BOLT-PGO.cmake
$ ninja clang-bolt
$ ninja stage2-clang-bolt
...
[2756/2759] Instrumenting clang binary with BOLT
[2756/2759] Generating BOLT profile for Clang
[2758/2759] Merging BOLT fdata
[2759/2759] Optimizing Clang with BOLT
...
BOLT-INFO: 7092 out of 184104 functions in the binary (3.9%) have non-empty execution profile
756531927 : executed instructions (-0.5%)
15399400 : taken branches (-40.3%)
...
```
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D143553
Nico Weber [Sat, 13 May 2023 15:16:23 +0000 (17:16 +0200)]
[gn] port
88c1242ed7e1 (begone, LLVMExegesisARMTests)
Florian Hahn [Sat, 13 May 2023 11:28:10 +0000 (12:28 +0100)]
[LV] Move selecting vectorization factor logic to LVP (NFC).
Split off from D143938. This moves the planning logic to select the
vectorization factor to LoopVectorizationPlanner as a step towards only
computing costs for individual VFs in LoopVectorizationCostModel and do
planning in LVP.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D150197
Florian Hahn [Sat, 13 May 2023 11:27:53 +0000 (12:27 +0100)]
[VPlan] Change LoopVectorizationPlanner::TTI to be const reference (NFC)
Uday Bondhugula [Sat, 13 May 2023 10:06:12 +0000 (15:36 +0530)]
[MLIR] NFC. Pass affine copy options by const ref
NFC. Pass affine copy options by const ref.
Differential Revision: https://reviews.llvm.org/D150507
Mark de Wever [Sat, 13 May 2023 09:42:25 +0000 (11:42 +0200)]
Reland "[CMake] Bumps minimum version to 3.20.0."
The owner of the last two failing buildbots updated CMake.
This reverts commit
e8e8707b4aa6e4cc04c0cffb2de01d2de71165fc.
Job Noorman [Sat, 13 May 2023 09:36:46 +0000 (11:36 +0200)]
[llvm-jitlink] Pass object features when creating MCSubtargetInfo
The reason for this patch is to allow the MCDisassembler used in tests
to disassemble instructions that are only available when a specific
feature is enabled.
For example, on RISC-V it's currently not possible to use
decode_operand() on a compressed instruction. This patch fixes this.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D149523
Mark de Wever [Sat, 6 May 2023 15:04:26 +0000 (17:04 +0200)]
[NFC][libc++][format] Tests formatter requirements.
Like done D149543 this validates the other formatter specializations.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D150041
Florian Hahn [Sat, 13 May 2023 09:17:09 +0000 (10:17 +0100)]
[LV] Move getVScaleForTuning out of LoopVectorizationCostModel (NFC).
Split off refactoring from D150197 to reduce diff.
Aiden Grossman [Sat, 13 May 2023 09:05:22 +0000 (09:05 +0000)]
[Docs][llvm-exegesis] Specify supported platforms and architectures
Currently, there is no documentation on what platforms and architectures
llvm-exegesis is supported on. This patch adds in user-facing
documentation in the CommandGuide about what architectures are supported
as well as developer facing documentation detailing the technical
reasons for why certain platforms are supported and some aren't.
This is a follow-up after discussion in
https://discourse.llvm.org/t/clarification-on-platform-support-for-llvm-exegesis/70206.
Reviewed By: kpdev42
Differential Revision: https://reviews.llvm.org/D149378
Aiden Grossman [Sat, 13 May 2023 08:56:42 +0000 (08:56 +0000)]
[llvm-exegesis] Remove Assembler Tests
The Assembler tests have been disabled for years in tree and at this
point don't test anything other than common MC infrastructure that is
already tested in other parts of the tree. This patch removes them due
to the mentioned reasons.
Reviewed By: courbet
Differential Revision: https://reviews.llvm.org/D149819
Aiden Grossman [Sat, 13 May 2023 08:49:52 +0000 (08:49 +0000)]
[Clang][Docs] Fix man page build
This patch fixes the man page build. It currently doesn't work as
SOURCE_DIR isn't set correctly (just undefined) within the
add_sphinx_target function. This patch also moves around the creation of
targets for autogenerated rst files so that both the man page and html
build can depend upon them as before only the html build depended on
them.
Fixes #62540
Reviewed By: tstellar
Differential Revision: https://reviews.llvm.org/D149809
Florian Hahn [Sat, 13 May 2023 08:40:16 +0000 (09:40 +0100)]
[Matrix] Add shape verification.
At the moment, lower-matrix-intrinsics accepts mis-matches between
shapes for operations. See shape-verification.ll for an example where
@llvm.matrix.column.major.load specifies 6x1 and then the use
(@llvm.matrix.multiply) specifies the operand to have 1x6.
This patch adds verification for shapes to check if shapes match.
Reviewed By: thegameg
Differential Revision: https://reviews.llvm.org/D147438
Fangrui Song [Sat, 13 May 2023 07:22:05 +0000 (00:22 -0700)]
[test] Driver/ftime-trace.cpp: work around -Wmsvc-not-found
There may be one extra warning. Just make the check less strict.
```
clang: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]
clang: warning: argument unused during compilation: '-ftime-trace' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-ftime-trace=e' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-ftime-trace-granularity=1' [-Wunused-command-line-argument]
```
Fangrui Song [Sat, 13 May 2023 06:58:39 +0000 (23:58 -0700)]
[ELF] Simplify getSectionRank and rewrite comments
Replace some RF_ flags with integer literals.
Rewrite the isWrite/isExec block to make the code block order reflect
the section order.
Rewrite some imprecise comments.
This is NFC, if we don't count invalid cases such as non-writable TLS
and non-writable RELRO.
Kazu Hirata [Sat, 13 May 2023 06:47:46 +0000 (23:47 -0700)]
[llvm] Fix typos in documentation
LLVM GN Syncbot [Sat, 13 May 2023 06:40:42 +0000 (06:40 +0000)]
[gn build] Port
b97859b67416
Craig Topper [Sat, 13 May 2023 06:36:27 +0000 (23:36 -0700)]
[RISCV] Teach doPeepholeMaskedRVV to handle FMA instructions.
This lets us remove some isel patterns.
Reviewed By: fakepaper56
Differential Revision: https://reviews.llvm.org/D150463
Tom Stellard [Sat, 13 May 2023 06:35:10 +0000 (23:35 -0700)]
docs: Document procedure for updating pull requests
See discussion in #56637.
Reviewed By: ldionne, jhenderson
Differential Revision: https://reviews.llvm.org/D147284
Tom Stellard [Sat, 13 May 2023 06:33:44 +0000 (23:33 -0700)]
workflows/release-tasks: Remove stray backslash
Reviewed By: thieta
Differential Revision: https://reviews.llvm.org/D150018
Vitaly Buka [Sat, 13 May 2023 06:26:59 +0000 (23:26 -0700)]
Revert "[RISCV][llvm-mca] Add mca tests for riscv lmul instruments"
Memory leaks https://lab.llvm.org/buildbot/#/builders/5/builds/33657
This reverts commit
1e317c3f819c7b42f8b45383438004193d3344d4.
Tom Stellard [Sat, 13 May 2023 06:29:02 +0000 (23:29 -0700)]
github: Remove pull request template
We've opened up pull requests for libcxx so we don't need this template
any more. Also, the repo-lockdown job already adds the same comment
when closing pull requests.
Reviewed By: ldionne
Differential Revision: https://reviews.llvm.org/D150317
Fangrui Song [Sat, 13 May 2023 06:21:14 +0000 (23:21 -0700)]
[ELF] Remove remnant ranks for PPC64 ELFv1 special sections
Tom Stellard [Sat, 13 May 2023 06:19:56 +0000 (23:19 -0700)]
workflows/repo-lockdown: Ignore libcxx and related sub-directories
https://discourse.llvm.org/t/opening-up-prs-experimentally-for-a-subset-of-the-llvm-project/70375/11
Reviewed By: ldionne
Differential Revision: https://reviews.llvm.org/D150314
Kazu Hirata [Sat, 13 May 2023 06:19:19 +0000 (23:19 -0700)]
[clang-tidy] Modernize RangeDescriptor (NFC)
Kazu Hirata [Sat, 13 May 2023 06:19:17 +0000 (23:19 -0700)]
[clang] Fix typos in documentation
Thurston Dang [Sat, 13 May 2023 05:56:28 +0000 (05:56 +0000)]
ASan: unbreak Windows build by limiting backtrace* tests to glibc
My newly added backtrace test (https://reviews.llvm.org/D150491)
broke the Windows buildbot (https://lab.llvm.org/buildbot/#/builders/127/builds/48103)
because they do not have execinfo.h.
I expect the same will happen with the backtrace_symbols test (https://reviews.llvm.org/D150498) as well.
This patch does a quick fix by restricting the test scope to glibc-2.27.
(A tricker fix would take into account SANITIZER_INTERCEPT_BACKTRACE,
which is defined as (SI_FREEBSD || SI_NETBSD || SI_GLIBC || SI_SOLARIS))
Thurston Dang [Sat, 13 May 2023 00:00:31 +0000 (00:00 +0000)]
ASan: add backtrace_symbols test and clarify code is correct
This is another patch for https://github.com/google/sanitizers/issues/321
(sanitizer interceptors can write to freed memory, causing corruption),
in this case for backtrace_symbols.
backtrace_symbols is already correct, hence this patch removes the
TODO note. Additionally, this patch adds a test case for it.
Differential Revision: https://reviews.llvm.org/D150498
Weining Lu [Sat, 13 May 2023 04:06:37 +0000 (12:06 +0800)]
[Clang][LoongArch] Add GPR alias handling without `$` prefix
Currenlty there is a mismatch between LoongArch gcc and clang about
handling register name in inlineasm, i.e. gcc allows both `$`-prefixed
and non-prefiexed names for GPRs while clang only allows `$`-prefixed
one. This patch fixes this mismatch by adding non-prefixed GPR names
in clang.
Take `$r4` for example. With this patch, clang accepts `$r4`, `r4`,
`$a0` and `a0` like what gcc does.
Reviewed By: xen0n
Differential Revision: https://reviews.llvm.org/D136436
Douglas Yung [Sat, 13 May 2023 02:01:52 +0000 (19:01 -0700)]
Add 'REQUIRES: asserts' to test added in D150002 (53a4adc) because it tests for a crash that is caused by an assertion failure.
Kazu Hirata [Sat, 13 May 2023 01:33:26 +0000 (18:33 -0700)]
Replace None with std::nullopt in comments (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Shengchen Kan [Sun, 7 May 2023 14:20:36 +0000 (22:20 +0800)]
[X86][AsmParser] Reapply "Refactor code and optimize more instructions from VEX3 to VEX2"
This was reverted in
d4994d0e7922 b/c a bolt test failed after the
encoding changed.
Relanded the patch with the updated test.
Tue Ly [Fri, 12 May 2023 19:53:59 +0000 (15:53 -0400)]
[libc][math] Implement fast division / modulus for UInt / (uint32_t * 2^e).
This is to improve a performance bottleneck of printf for long double.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D150475
Philip Reames [Sat, 13 May 2023 00:28:19 +0000 (17:28 -0700)]
[RISCVGatherScatterLowering] Use InstSimplifyFolder
Main value of this is simplifying code, and making a few of the tests easier to read.
Differential Revision: https://reviews.llvm.org/D150474
Philip Reames [Sat, 13 May 2023 00:25:26 +0000 (17:25 -0700)]
Reapply "[RISCVGatherScatterLowering] Minor code cleanup [NFC]"
This was reverted in
4e84149c0aea0e9f16c51cc92f50d90992b13d57 due to a problem report which has been confirmed to be misattributed.
Original commit message:
Use a switch to avoid repeat tests on the opcode, and factor out some common code out of another switch. (Not all branches had both common bits, but the one which didn't left the values unchanged and their starting value is the respective operand - so storing it back is a nop.)
Jessica Paquette [Sat, 13 May 2023 00:09:26 +0000 (17:09 -0700)]
Revert "[SuffixTree] Add suffix tree statistics"
This reverts commit
d3a6a05b1f95564f2c66f885a83cf0dbe1a004a9.
Some bots don't like it.
Boo.
Jessica Paquette [Fri, 12 May 2023 23:21:43 +0000 (16:21 -0700)]
[SuffixTree] Add suffix tree statistics
Sometimes you want to see how much is being allocated in your data structure
in general.
Add statistics that show how many internal and leaf nodes have been allocated
in the suffix tree over the course of its construction.
Also add a testcase that shows that we actually get these stats out when we're
outlining stuff.
The test shows that we get the expected O(n) leaf nodes, a split, and so on.
Valentin Clement [Fri, 12 May 2023 23:56:35 +0000 (16:56 -0700)]
[mlir][openacc] Add canonicalization pattern for acc.host_data
Add if condition removal pattern for acc.host_data in a same way as
acc.enter_data, acc.exit_data and acc.update.
The condition is removed from the op if it is a true constant. If
it is a false constant then the region is inlined before the op
and the op is removed.
Reviewed By: vzakhari
Differential Revision: https://reviews.llvm.org/D150480
Philip Reames [Fri, 12 May 2023 23:26:32 +0000 (16:26 -0700)]
[LV] Use interface routines instead of internal variables
This makes a (possible) change to the internal representation easier in the future, and makes the code easier to read now.
Alan Zhao [Fri, 12 May 2023 23:08:35 +0000 (16:08 -0700)]
Revert "[X86][AsmParser] Refactor code and optimize more instructions from VEX3 to VEX2"
This reverts commit
c13ed1cc75781fccc7cec91017e84341c3047229.
Reason: causes bolt tests to fail: https://crbug.com/1445243
Philip Reames [Fri, 12 May 2023 23:03:38 +0000 (16:03 -0700)]
Revert "[RISCVGatherScatterLowering] Minor code cleanup [NFC]"
This reverts commit
13984608992246e42e66c019f09764650d60af63. A problem was reported - the attribution seems slightly questionable, but this is low enough value after 297e06c that reverting is easy.
Thurston Dang [Fri, 12 May 2023 22:47:54 +0000 (22:47 +0000)]
ASan: add testcase for backtrace interceptor
It is a known, longstanding issue that some ASan interceptors
may write to freed memory, causing corruption
(https://github.com/google/sanitizers/issues/321). This patch
adds a testcase for the backtrace interceptor (one of the
known cases).
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D150491
Yaxun (Sam) Liu [Mon, 6 Mar 2023 01:25:56 +0000 (20:25 -0500)]
[AMDGPU] Emit predefined macro `__AMDGCN_CUMODE__`
Predefine __AMDGCN_CUMODE__ as 1 or 0 when compilation assumes CU or WGP modes.
If WGP mode is not supported, ignore -mno-cumode and emit a warning.
This is needed for implementing device functions like __smid
(https://github.com/ROCm-Developer-Tools/hipamd/blob/
312dff7b794337aa040be0691acc78e9f968a8d2/include/hip/amd_detail/amd_device_functions.h#L957)
Reviewed by: Matt Arsenault, Artem Belevich, Brian Sumner
Differential Revision: https://reviews.llvm.org/D145343
Teresa Johnson [Fri, 12 May 2023 21:57:58 +0000 (14:57 -0700)]
[MemProf] Set hot/cold new values with option
Adds support to set the hot/cold new hint values with an option. Change
the defaults slightly to make it easier to distinguish between compiler
synthesized vs manually inserted calls to the interface.
Differential Revision: https://reviews.llvm.org/D150488
Vadim Paretsky [Fri, 12 May 2023 22:38:46 +0000 (15:38 -0700)]
[OpenMP] remove an erroneous assert on the location argument
The 'loc' argument is optional, and some compilers (e.g. MSVC) do no supply it.
Differential Revision: https://reviews.llvm.org/D148393
Kazu Hirata [Fri, 12 May 2023 22:37:37 +0000 (15:37 -0700)]
[llvm] Migrate {starts,ends}with_insensitive to {starts,ends}_with_insensitive (NFC)
This patch migrates uses of StringRef::{starts,ends}with_insensitive
to StringRef::{starts,ends}_with_insensitive so that we can use names
similar to those used in std::string_view. I'm planning to deprecate
StringRef::{starts,ends}with_insensitive once the migration is
complete across the code base.
Differential Revision: https://reviews.llvm.org/D150426
Vadim Paretsky [Fri, 12 May 2023 21:39:16 +0000 (14:39 -0700)]
[OpenMP] Fix GCC build issues and restore "Additional APIs used by the MSVC compiler for loop collapse (rectangular and non-rectangular loops)"
Fixes a GCC build issue (an instance of unallowed typename keyword) and reworks memory allocation
to avoid the use of C++ library based primitives ) in and restores the earlier commit https://reviews.llvm.org/D148393
Differential Revision: https://reviews.llvm.org/D149010
Florian Mayer [Fri, 12 May 2023 21:24:14 +0000 (14:24 -0700)]
[HWASan] unflake test
The short granule logic made this test flaky because with low
probability there would be no tag mismatch by coincidence.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D150484
Jerry Ge [Fri, 12 May 2023 21:52:11 +0000 (22:52 +0100)]
Fix mlir trait documentation typo
Signed-off-by: Jerry Ge <jerry.ge@arm.com>
Change-Id: I922eeda95223da2c7da0653451e604651b7594bd
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D150487
ziqingluo-90 [Fri, 12 May 2023 21:40:58 +0000 (14:40 -0700)]
[-Wunsafe-buffer-usage] Remove an unnecessary const-qualifier
A follow-up change for
6d861d498de1320d22771c329ec69f9419ef06b7:
remove an unnecessary const-qualifier so that the code doesn't have to
remove the qualifier explicitly using `std::remove_const_t`, which
triggers a warning at some bots (e.g.,
https://lab.llvm.org/buildbot/#/builders/247/builds/4442).
Saleem Abdulrasool [Thu, 11 May 2023 22:07:51 +0000 (15:07 -0700)]
ObjCopy: support `--dump-section` on COFF
Add support for --dump-section on COFF files. This is helpful for
extracting specific content from an object file on Windows.
Differential Revision: https://reviews.llvm.org/D150305
Reviewed By: @alexander-shaposhnikov, @jhenderson, @hjyamauchi
Vitaly Buka [Fri, 12 May 2023 21:09:16 +0000 (14:09 -0700)]
[test][sanitizers] Disable new test on Android
Florian Hahn [Fri, 12 May 2023 20:54:34 +0000 (21:54 +0100)]
[AArch64] Add test for #62620.
William Huang [Fri, 12 May 2023 20:40:21 +0000 (20:40 +0000)]
[llvm-profdata] ProfileReader cleanup - preparation for MD5 refactoring - 3
Cleanup profile reader classes to prepare for complex refactoring as propsed in D147740, continuing D148872
This is patch 3/n. This patch changes the behavior of function offset table.
Previously when reading ExtBinary profile, the funcOffsetTable (map) is always populated, and in addition if the profile is CS, the orderedFuncOffsets (list) is also populated. However when reading the function samples, only one of the container is being used, never both, so it's a huge waste of time to populate both. Added logic to select which one to use, and completely skip reading function offset table if we are in tool mode (all function samples are to be read sequentially regardless)
Reviewed By: davidxl, wenlei
Differential Revision: https://reviews.llvm.org/D149124
Slava Zakharin [Wed, 10 May 2023 02:50:48 +0000 (19:50 -0700)]
[flang] Fixed global name creation for literal constants.
The global names were created using a hash based on the address
of std::vector::data address. Since the memory may be reused
by different std::vector's, this may cause non-equivalent
constant expressions to map to the same name. This is what is happening
in the modified flang/test/Lower/constant-literal-mangling.f90 test.
I changed the name creation to use a map between the constant expressions
and corresponding unique names. The uniquing is done using a name counter
in FirConverter. The effect of this change is that the equivalent
constant expressions are now mapped to the same global, and the naming
is "stable" (i.e. it does not change from compilation to compilation).
Though, the issue is not HLFIR specific it was affecting several tests
when using HLFIR lowering.
Differential Revision: https://reviews.llvm.org/D150380
TatWai Chong [Fri, 12 May 2023 19:55:45 +0000 (19:55 +0000)]
[mlir][tosa] Add accumulator type attribute to TOSA dialect
Tosa supports fp16 and fp32 accumulator type for fp16 input, but
no way to tell for computational operators whether accumulator
should be fp16 or fp32 from input type. Add this new attribute
to specify the type.
Set to fp32 by default for now. When the time fp16 is supported,
the accumulator type can be selected based on trade-off between
performance and accuracy.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D146317
Alex Langford [Fri, 12 May 2023 01:28:32 +0000 (18:28 -0700)]
[lldb][NFCI] Replace use of DWARFAttribute in DWARFAbbreviationDecl
DWARFAttribute is used in 2 classes: DWARFAbbreviationDecl and
DWARFAttributes. The former stores a std::vector of them and the latter
has a small structure called AttributeValue that contains a
DWARFAttribute. DWARFAttributes maintains a llvm::SmallVector of
AttributeValues.
My end goal is to have `DWARFAttributes` have a llvm::SmallVector
specialized on DWARFAttribute. In order to do that, we'll have to move
the other elements of AttributeValue into DWARFAttribute itself. But we
don't want to do this while DWARFAbbreviationDecl is using
DWARFAttribute because it will needlessly increase the size of
DWARFAbbreviationDecl. So instead I will create a small type containing
only what DWARFAbbreviationDecl needs and call it `AttributeSpec`. This
is the exact same thing that LLVM does today.
I've elected to swap std::vector for llvm::SmallVector here with a pre-allocated
size of 8. I've collected time and memory measurements before this change and
after it as well. Using a c++ project with 10,000 object files and no dSYM, I
place a breakpoint by file + lineno and see how long it takes to resolve.
Before this patch:
Time (mean ± σ): 13.577 s ± 0.024 s [User: 12.418 s, System: 1.247 s]
Total number of bytes allocated: 1.38 GiB
Total number of allocations: 6.47 million allocations
After this patch:
Time (mean ± σ): 13.287 s ± 0.020 s [User: 12.128 s, System: 1.250 s]
Total number of bytes allocated: 1.59 GiB
Total number of allocations: 4.61 million allocations
So we consume more memory than before, but we actually make less allocations on
average.
I also measured with an llvm::SmallVector with a pre-allocated size of 4 instead
of 8 to measure how well it performs:
Time (mean ± σ): 13.246 s ± 0.048 s [User: 12.074 s, System: 1.268 s]
Total memory consumption: 1.50 GiB
Total number of allocations: 5.74 million
Of course this data may look very different depending on the actual program
being debugged, but each of the object files had 100+ AbbreviationDeclarations
each with between 0 and 10 Attributes, so I feel this was a fair example to
consider.
Differential Revision: https://reviews.llvm.org/D150418
Nikolas Klauser [Tue, 9 May 2023 21:44:13 +0000 (14:44 -0700)]
[libc++][PSTL] Move the already implemented functions to the new dispatching scheme
Reviewed By: ldionne, #libc
Spies: arichardson, pcwang-thead, libcxx-commits, miyuki
Differential Revision: https://reviews.llvm.org/D150277
Jeffrey Byrnes [Thu, 4 May 2023 16:57:15 +0000 (09:57 -0700)]
[AMDGPU][GFX908] IndirectCopyToAGPR: Confirm modified register is dst reg of accvgpr_write
IndirectCopyToAGPR should be reworked as to avoid optimizing during copy lowering. However, as it stands, the code is buggy. This patch replaces the call to definesRegister with modifiesRegister, and confirms that the dest reg of the found accvgpr_write is in fact the src reg of our copy.
Differential Revision: https://reviews.llvm.org/D149873
Change-Id: Id8a61659ac15565dcb970069d0624f0925a46e6d
Craig Topper [Fri, 12 May 2023 19:34:07 +0000 (12:34 -0700)]
[RISCV] Move VFMADD_VL DAG combine to a function. NFC
This is preparation for an additional combine.
Alex Langford [Fri, 12 May 2023 19:33:07 +0000 (12:33 -0700)]
[lldb][NFCI] Delete commented out method OptionValueProperties::GetQualifiedName