- Dec 15, 2023
-
-
Fangrui Song authored
For `__atomic_compare_exchange{,_n}/__c11_atomic_compare_exchange_{strong,weak}`, GCC checks both the success memory order and the failure memory order under the default -Winvalid-memory-model ("memory model" is confusing here and "memory order" is much more common in the atomic context). * The failure memory order, if a constant, must be one of relaxed/consume/acquire/seq_cst. Clang checks just the success memory order under the default -Watomic-memory-ordering. This patch checks the failure memory order. -
Fabian Mora authored
This patch fixes the error in issue #75434. The crash was being caused by not checking for a lack of target attributes in a GPU module. It's now considered an error to invoke the pass with a GPU module with no target attributes.
-
Aart Bik authored
-
Yinying Li authored
1. Added functions for printMemrefI16/f16/bf16. 2. Added a new integration test for all the printMemref functions.
-
Mirko Brkusanin authored
-
Arthur Eubanks authored
Reland [X86] Respect code models more when determining if a global reference can fit in 32 bits (#75386) For non-GlobalValue references, the small and medium code models can use 32 bit constants. For GlobalValue references, use TargetMachine::isLargeGlobalObject(). Look through aliases for determining if a GlobalValue is small or large. Even the large code model can reference small objects with 32 bit constants as long as we're in no-pic mode, or if the reference is offset from the GOT. Original commit broke the build...
-
David Blaikie authored
Crash identified internally in lld's use of StringMap in `compareSections`. Will investigate offline before recommitting. This reverts commit 67c631d2.
-
David Blaikie authored
Underlying StringMap API for providing a hash has caused some problems (observed a crash in lld) - so reverting this until I can figure out/fix what's going on there. This reverts commit 52ba0755. This reverts commit 2e197602.
-
Philip Reames authored
-
Arthur Eubanks authored
Revert "[X86] Respect code models more when determining if a global reference can fit in 32 bits" (#75500) Reverts llvm/llvm-project#75386 Breaks build.
-
Simon Pilgrim authored
[X86] combineLoad - allow constant loads to share matching 'lower constant bits' with larger VBROADCAST_LOAD/SUBV_BROADCAST_LOAD nodes We already had separate support for VBROADCAST_LOAD - merge this with the generic load handling and add SUBV_BROADCAST_LOAD support as well.
-
Arthur Eubanks authored
For non-GlobalValue references, the small and medium code models can use 32 bit constants. For GlobalValue references, use TargetMachine::isLargeGlobalObject(). Look through aliases for determining if a GlobalValue is small or large. Even the large code model can reference small objects with 32 bit constants as long as we're in no-pic mode, or if the reference is offset from the GOT.
-
Valentin Clement (バレンタイン クレメン) authored
There was some discussion on discourse[1] about allowing call to FIR generation functions from other part of lowering belonging to OpenMP. This solution exposes a simple `genEval` member function on the `AbstractConverter` so that IR generation for PFT Evaluation objects can be called from lowering outside of the FirConverter but not exposing it. [1] https://discourse.llvm.org/t/openmp-lowering-from-pft-to-fir/75263
-
Krzysztof Parzyszek authored
… NFC SmallVector has a constructor that fills it with a number of copies of a given value. Use it instead of a loop that does the same thing.
-
Juergen Ributzka authored
Currently, the dep scanner does not remove LLVM options from the argument list. Since LLVM options shouldn't affect the AST, it is safe to remove them all.
-
Jerry Wu authored
Use operand and result types to build the corresponding new types in `DropUnitDimFromElementwiseOps`.
-
paperchalice authored
Use pointer to represent semantic of `optional`.
-
Philip Reames authored
-
Joseph Huber authored
Summary: We shouldn't have the format specific ELF handling in the generic plugin manager. This patch moves that out of the implementation and into the ELF utilities. This patch changes the SHT_NOBITS case to be a hard error, which should be correct as the existing use already seemed to return an error if the result was a null pointer. This also uses a `const_cast`, which is bad practice. However, rebuilding the `constness` of all of this would be a massive overhaul, and this matches the previous behaviour (We would take a pointer to the image that is most likely read-only in the ELF).
-
Philip Reames authored
-
David Spickett authored
Fixes 481bb62e.
-
David Spickett authored
This is part of ongoing attempts to catch the test from 2684281d failing on Arm and AArch64. I did get logs for the failure but only on Arm, where the backtrace is truncated. So, let's do the assert that PopPlan was going to do, before we call it. Then I should know exactly which PopPlan is asserting. Technically I should take a mutex here, but technically I shouldn't be debugging via buildbot, so I'm going to take the risk temporarily.
-
Shih-Po Hung authored
…eRecipe This helps VPlanTransforms::removeDeadRecipes to work on VPInterleaveRecipe
-
Felipe de Azevedo Piovezan authored
These are usually difficult to reason about, and they were being used to pass raw pointers around with array semantic (i.e., we were using operator [] on raw pointers). To put it in InstrRef terminology: we were passing a pointer to a ValueTable but using it as if it were a FuncValueTable. These could have easily been SmallVectors, which now allow us to have reference semantics in some places, as well as simpler initialization. In the future, we can use even more pass-by-reference with some extra changes in the code.
-
David Spickett authored
``` [5323/5730] Building CXX object tools\llvm-exegesis\lib\CMakeFiles\LLVMExegesis.dir\Error.cpp.obj In file included from C:\Work\david.spickett\llvm-project\llvm\tools\llvm-exegesis\lib\Error.cpp:9: C:\Work\david.spickett\llvm-project\llvm\tools\llvm-exegesis\lib/Error.h(76,7): warning: private field 'SignalNumber' is not used [-Wunused-private-field] 76 | int SignalNumber; | ^ ``` `SignalNumber` was only being used on Unixes.
-
- Dec 14, 2023
-
-
Kazu Hirata authored
This patch replaces uses of StringRef::{starts,ends}with with StringRef::{starts,ends}_with for consistency with std::{string,string_view}::{starts,ends}_with in C++20. I'm planning to deprecate and eventually remove StringRef::{starts,ends}with. -
LLVM GN Syncbot authored
-
Philip Reames authored
When doing our backwards walk, we were not handling the case where the AVL was defined by a register whose definition was an ADDI xN, x0, <imm>. Doing so (as we already do in the forward pass) allows us to prune a few more transitions.
-
Simon Pilgrim authored
When trying to share constant pool entries, we can ignore the undef elements of the entry that is being removed
-
Simon Pilgrim authored
Reduces diff in #75229
-
Yingwei Zheng authored
Fixes #75369. This patch explicitly folds `~(~X >>u Y)` into `X >>s Y` to fix assertion failure in #75369.
-
Yusra Syeda authored
This PR implements part 1 of yaml2obj for the GOFF Object File Format. It adds support for the header and end records. --------- Co-authored-by:Yusra Syeda <yusra.syeda@ibm.com>
-
Jonas Paulsson authored
The SystemZ implementation of shouldCoalesce() is merely a workaround for the fact that regalloc can run out of registers when extending 128-bit intervals with subreg (GPR64/GPR32) COPYs. This patch adds more freedom to the coalescer as it now only checks that the subreg interval is local to MBB and does not have too many physreg clobbers.
-
Louis Dionne authored
We didn't save that much boilerplate with those anchors, but it made the pipeline description harder to understand because the definition of the jobs and the agents they run on were so far apart. Anchors are useful for the other common boilerplate we truly share between all jobs, but it seems reasonable to define agent queues in-line.
-
Maurice Heumann authored
SLP Vectorizer can discard vector entries at unknown positions. This example shows the behaviour: https://godbolt.org/z/or43EM594 The following instruction inserts an element at an unknown position: ``` %2 = insertelement <3 x i64> poison, i64 %value, i64 %position ``` The position depends on an argument that is unknown at compile time. After running SLP, one can see there is no more instruction present referencing `%position`. This happens as SLP parallelizes the two adds in the example. It then needs to merge the original vector with the new vector. Within `isUndefVector`, the SLP vectorizer constructs a bitmap indicating which elements of the original vector are poison values. It does this by walking the insertElement instructions. If it encounters an insert with a non-constant position, it is ignored. This will result in poison values to be used for all entries, where there are no inserts with constant positions. However, as the position is unknown, the element could be anywhere. Therefore, I think it is only safe to assume none of the entries are poison values and to simply take them all over when constructing the shuffleVector instruction. This fixes #75437
-
ostannard authored
In some cases, the machine outliner needs to preserve LR across an outlined call by pushing it onto the stack. Previously, this also generated unwind table instructions, which is incorrect because EHABI unwind tables cannot represent different stack frames a different points in the function, so the extra unwind info applied to the entire function. The outliner code already avoided generating CFI instructions, but EHABI unwind data is generated later from the actual instructions, so we need to avoid using the FrameSetup and FrameDestroy flags to prevent unwind data being generated.
-
Timm Bäder authored
Differential Revision: https://reviews.llvm.org/D155572
-
Nikita Popov authored
-
Nico Weber authored
-
Timm Bäder authored
We reach visitExpr() when evaluating standalone expressions. However, the RetValue() code path was unused before, because we never reach it, even with structs or arrays. RetValue expects a pointer on the stack it can take apart to return an APValue, so provide it with one. Differential Revision: https://reviews.llvm.org/D150661
-