- May 15, 2023
-
-
Diana Picus authored
The docs say the interpolation attribute should be between 0..32 [1][2], but we currently accept values all the way up to 63. This patch makes the ASMParser error out for values > 32. It does not touch codegen though because we're currently not checking anything at all for codegen (llvm.amdgcn.lds.param.load will happily accept even 128 as an attr, although that won't fit in the encoding). [1] https://llvm.org/docs/AMDGPU/gfx8_attr.html#amdgpu-synid-gfx8-attr [2] https://llvm.org/docs/AMDGPU/gfx11_attr.html#amdgpu-synid-gfx11-attr Differential Revision: https://reviews.llvm.org/D150261
-
Fangrui Song authored
D150282 does not add support for derived trace file names with -fno-integrated-as, e.g. `clang -c -fno-integrated-as a.c -o e/a.o`. Add -fintegrated-as to fix AIX.
-
Jake Egan authored
This test is failing due to D150282. XFAIL this test for now while it's being investigated to get the AIX bot green.
-
Craig Topper authored
Use it to replace isel patterns with a DAG combine of FP_EXTEND_VL+VFMADD_VL. This makes it similar to how other widening operations are handled. I plan to use this to make it easier to form tail undisturbed vfwmacc.
-
Craig Topper authored
-
Martin Braenne authored
As a replacement, we provide the accessors `getImplicitObjectLocation()` and `getBaseObjectLocation()`, which are higher-level constructs that cover the use cases in which `SkipPast::ReferenceThenPointer` was typically used. Unfortunately, it isn't possible to use these accessors in UncheckedOptionalAccessModel.cpp; I've added a FIXME to the code explaining the details. I initially attempted to resolve the issue as part of this patch, but it turned out to be non-trivial to fix. Instead, I have therefore added a lower-level replacement for `SkipPast::ReferenceThenPointer` that is used only within this file. The wider context of this change is that `SkipPast` will be going away entirely. See also the RFC at https://discourse.llvm.org/t/70086. Reviewed By: ymandel, gribozavr2 Differential Revision: https://reviews.llvm.org/D149838
-
Xi Ruoyao authored
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. The previous test issues are fixed by 626849c7. 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
-
Jonas Devlieghere authored
Group related functions together and remove inconsistencies between them in the implementation.
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/62705 This reverts commit cf47e9fe. This introduces a breaking change in https://github.com/llvm/llvm-project/issues/62705. Revert this one to fix it quickly.
-
Jonas Devlieghere authored
Make the `Get.*Value` and `Set.*Value` function private and migrate the last remaining call sites to the new overloaded/templated functions.
-
Manna, Soumi authored
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 authored
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 authored
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 authored
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 authored
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 authored
-
Douglas Yung authored
This reverts commit 77df976a. 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 authored
-
Fangrui Song authored
Fixes: 05b58910 (D47545)
-
Mark de Wever authored
This was discovered while working on modules. Reviewed By: #libc, philnik Differential Revision: https://reviews.llvm.org/D149351
-
Sergei Barannikov authored
Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D150520
-
- May 14, 2023
-
-
Ricky Zhou authored
-
Luo, Yuanke authored
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 authored
-
Serguei Katkov authored
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 authored
NFC. Add missing const on affine analysis utils ComputationSliceState methods. Differential Revision: https://reviews.llvm.org/D150523
-
Uday Bondhugula authored
Make isSliceValid const correct. NFC.
-
Phoebe Wang authored
-
Vitaly Buka authored
-
Joshua Cao authored
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 authored
This reverts commit ce990b54. 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 authored
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 authored
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 authored
-
Xi Ruoyao authored
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 94f7c961 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 authored
This reverts commit 94f7c961. Differential Revision: https://reviews.llvm.org/D150505
-
Fangrui Song authored
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 authored
Reviewed By: #libc, ldionne, Mordante Spies: Mordante, libcxx-commits Differential Revision: https://reviews.llvm.org/D150421
-
Thurston Dang authored
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 authored
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.
-