- Feb 09, 2024
-
-
Nikita Popov authored
The fold for icmp (gep (p, i1), gep (p, i2)) to icmp (i1, i2) is currently limited to one of the GEPs either having one use or a constant offset. I believe this is to avoid duplicating complex arithmetic both in the GEP and the offset comparison. This patch instead does the same thing that the indexed compare fold does, which is to rewrite the GEP into i8 form if necessary, so that the offset arithmetic is not repeated after the transform. I ran into this problem in a case where there are multiple conditions on the same pointer, which prevents them from getting folded.
-
stephenpeckham authored
yaml2obj creates invalid object files even when the input was created by obj2yaml using a valid object file. On the other hand, yaml2obj is used to intentionally create invalid object files for testing purposes. This update balances using specified input values when provided and computing file offsets and sizes if necessary.
-
Jay Foad authored
Return *this from operator++. NFC, this just allows using ++Iter in an expression in future patches.
-
Tomas Matheson authored
Almost all uses of `*TreePatternNode` expect it to be non-null. There was the occasional check that it wasn't, which I have removed. Making them references makes it clear that they exist. This was attempted in 2018 (1b465767) for `TreePatternNode::getChild()` but that was reverted.
-
Benjamin Maxwell authored
These are added to the ArmSVE dialect for consistency with LLVM, which registers SME2 intrinsics that don't require ZA under SVE.
-
Nico Weber authored
-
Wang Pengcheng authored
This mechanism is introduced by #68324. This refactor makes the prototype and attributes clear. Reviewers: asb, kito-cheng, philnik777, topperc, preames Reviewed By: topperc Pull Request: https://github.com/llvm/llvm-project/pull/80280
-
Wang Pengcheng authored
RISCV target will use this parameter, so we need a way to specify it. Reviewers: AaronBallman, philnik777 Reviewed By: AaronBallman Pull Request: https://github.com/llvm/llvm-project/pull/80279
-
Simon Pilgrim authored
[X86] ReplaceNodeResults - shrink i64 CTPOP to (shifted) CTPOP i32 if 32 or less active bits to avoid SSE2 codegen 32-bit targets perform i64 CTPOP as a v2i64 CTPOP - if we can perform this as a i32 CTPOP by shifting the source bits, then do so to avoid the gpr<->xmm This also triggers on non-SSE2 capable targets, as can be seen with the minor codegen diffs in ctpop_shifted_mask16
-
Simon Pilgrim authored
32-bit targets will try to use SSE2 <2 x i64> CTPOP expansion for i64 CTPOP
-
Simon Pilgrim authored
[X86] PromoteMaskArithmetic - share the same SDLoc argument instead of recreating it over and over again.
-
Stephen Tozer authored
Polly currently uses `getDebugLoc` in a few places to produce diagnostic output; this is correct when interacting with specific instructions, but may be incorrect when dealing with instruction ranges if debug intrinsics are included. As a general rule, the debug locations attached to debug intrinsics may be misleading compared to the surrounding instructions, and are not generally used for anything other than determining variable scope info; the recommended approach is therefore to use `getStableDebugLoc` instead, which skips over debug intrinsics. This is necessary to fix test failures that occur when enabling non-instruction debug info, which removes debug intrinsics from basic blocks and thus alters the diagnostic output of Polly (despite causing no functional change).
-
David Spickett authored
After a lot of churn in expandCALL_BTI, it ended up doing the exact same thing that expandCALL_RVMARKER does. This change factors out the common code to make that clear.
-
Timm Bäder authored
-
Simon Pilgrim authored
[X86] PromoteMaskArithmetic - explicitly attempt to constant fold zext(c) instead of relying on getNode() Don't rely on isBuildVectorOfConstantSDNodes/getNode to constant fold, this could also help in cases where the constant is behind a bitcast. Noticed while investigating #80668
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
LLVM GN Syncbot authored
-
Nikita Popov authored
Remove the LoopReroll pass, which is both unused (in any default pipeline) and unmaintained, with numerous open correctness issues (https://github.com/llvm/llvm-project/issues?q=is%3Aissue+is%3Aopen+loop-reroll). The removal is in line with https://discourse.llvm.org/t/rfc-disallow-unmaintained-unused-passes/75151. There is also a defunct `-freroll-loops` option in clang, which I'll remove separately. Migrated from https://reviews.llvm.org/D150684.
-
Owen Pan authored
-
Timm Bäder authored
-
Timm Bäder authored
Just push a constant bool value.
-
Timm Bäder authored
-
Timm Bäder authored
Instead of using !T && CPlusPlus, just check the BinaryOperator's opcode. Turns out we also hit this code path for some assignments of structs in C++.
-
Pierre van Houtryve authored
-
Jan Patrick Lehr authored
Revert "[AMDGPU] Compiler should synthesize private buffer resource descriptor from flat_scratch_init" (#81234) Reverts llvm/llvm-project#79586 This broke the AMDGPU OpenMP Offload buildbot. The typical error message was that the GPU attempted to read beyong the largest legal address. Error message: AMDGPU fatal error 1: Received error in queue 0x7f8363f22000: HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION: The agent attempted to access memory beyond the largest legal address.
-
Jean Perier authored
Fix https://lab.llvm.org/buildbot/#/builders/268/builds/7826 IsDerivedTypeWithLengthParameter cannot be used here, it would make libFortranEvaluate dependent on linFortranSemantics. Replace by loop through parameter values.
-
Nikita Popov authored
SROA currently supports converting a gep of select into select of gep if the select is in the pointer operand. This patch expands support to selects in an index operand. This is intended to address the regression reported in https://github.com/llvm/llvm-project/pull/68882#issuecomment-1924909922.
-
Pierre van Houtryve authored
``` find llvm/utils/TableGen -iname "*.h" -o -iname "*.cpp" | xargs clang-format-16 -i ``` Split from #80847
-
Owen Pan authored
-
Timm Bäder authored
Their type might be a null type, in which case we need to abort here.
-
Diana Picus authored
At the moment, the emergency spill slot is a fixed object for entry functions and chain functions, and a regular stack object otherwise. This patch adopts the latter behaviour for entry/chain functions too. It seems this was always the intention [1] and it will also save us a bit of stack space in cases where the first stack object has a large alignment. [1] https://github.com/llvm/llvm-project/commit/34c8b835b16fb3879f1b9770e91df21883356bb6
-
jeanPerier authored
Runtime derived type info contains information to tell the runtime if some argument in a user defined assignment must be passed with a descriptor or not. This information was not properly build, it would tell the runtime that TARGET argument must be passed via descriptor, which is incorrect. Share the logic between lowering and runtime info generation to determine if an argument must be passed by descriptor or not.
-
David Green authored
This is a fix for #80818, as pointed out in #81144 it should be checking the abs of Scale. The added test changes from NoAlias to MayAlias.
-
Craig Topper authored
We need explicitly cast to XLenVT to avoid tablegen picking i32. If the SelectionDAG scheduler is used it can't find a register class for i32 if i32 isn't a legal type. Fixes #81192, but I might have missed some patterns.
-
Quentin Dian authored
Fixes #79718. Fixes #71178. The same instructions may exist in an iteration. We cannot immediately delete instructions in `ErasedInstrs`.
-