[clang] [llvm] [IRBuilder] Produce canonical constexpr GEPs (PR #226425)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 25 03:14:47 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-risc-v

Author: Nikita Popov (nikic)

<details>
<summary>Changes</summary>

This switches the IRBuilder to always produce canonical constexpr GEPs in ptradd form, including in the case where ConstantFolder rather than TargetFolder is used.

This is done in a slightly hacky way, by passing the DataLayout from the insertion point into FoldGEP. In the future, when we start canonicalizing the non-constant GEPs as well, we'll do the canonicalization directly in IRBuilder and replace FoldGEP with FoldPtrAdd. (Though it would be even better to make IRBuilder always require a DataLayout...)

---
Full diff: https://github.com/llvm/llvm-project/pull/226425.diff


90 Files Affected:

- (modified) clang/test/Profile/branch-logical-mixed.cpp (+22-22) 
- (modified) clang/test/Profile/c-captured.c (+5-5) 
- (modified) clang/test/Profile/c-general.c (+107-107) 
- (modified) clang/test/Profile/c-ternary.c (+1-1) 
- (modified) clang/test/Profile/cxx-class.cpp (+6-6) 
- (modified) clang/test/Profile/cxx-lambda.cpp (+5-5) 
- (modified) clang/test/Profile/cxx-rangefor.cpp (+4-4) 
- (modified) clang/test/Profile/cxx-stmt-initializers.cpp (+4-4) 
- (modified) clang/test/Profile/cxx-templates.cpp (+2-2) 
- (modified) clang/test/Profile/cxx-throws.cpp (+10-10) 
- (modified) clang/test/Profile/objc-general.m (+2-2) 
- (modified) llvm/include/llvm/Analysis/InstSimplifyFolder.h (+2-2) 
- (modified) llvm/include/llvm/Analysis/TargetFolder.h (+2-2) 
- (modified) llvm/include/llvm/IR/ConstantFolder.h (+5-3) 
- (modified) llvm/include/llvm/IR/IRBuilder.h (+1-1) 
- (modified) llvm/include/llvm/IR/IRBuilderFolder.h (+2-1) 
- (modified) llvm/include/llvm/IR/NoFolder.h (+2-2) 
- (modified) llvm/lib/Transforms/Vectorize/VPlanUtils.cpp (+3-3) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-dynamic-lds-test-asan.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-dynamic-lds-test.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-lower-all.ll (+4-4) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-multi-static-dynamic-indirect-access-asan.ll (+16-16) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-multi-static-dynamic-indirect-access.ll (+16-16) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-multiple-blocks-return-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-multiple-blocks-return.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-non-kernel-declaration.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-dynamic-indirect-access-asan.ll (+8-8) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-dynamic-indirect-access.ll (+8-8) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-dynamic-lds-test-asan.ll (+8-8) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-dynamic-lds-test.ll (+8-8) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-function-param-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-function-param.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-lower-all.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-nested-asan.ll (+12-12) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-nested.ll (+12-12) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access-no-kernel-lds-id.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-indirect-access.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-O0.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-no-heap-ptr.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-test-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-test-atomic-cmpxchg-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-test-atomicrmw-asan.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-test-memintrinsic-asan.ll (+12-12) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-test.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-static-lds-vector-ptrs.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/lower-ctor-dtor-constexpr-alias.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/lower-ctor-dtor.ll (+2-2) 
- (modified) llvm/test/CodeGen/AMDGPU/lower-multiple-ctor-dtor.ll (+2-2) 
- (modified) llvm/test/CodeGen/DirectX/bugfix_150050_data_scalarize_const_gep.ll (+10-10) 
- (modified) llvm/test/CodeGen/DirectX/flatten-array.ll (+4-4) 
- (modified) llvm/test/CodeGen/DirectX/flatten-bug-117273.ll (+2-2) 
- (modified) llvm/test/CodeGen/DirectX/legalize-i8.ll (+2-2) 
- (modified) llvm/test/CodeGen/DirectX/llc-vector-load-scalarize.ll (+31-28) 
- (modified) llvm/test/CodeGen/DirectX/llc-vector-store-scalarize.ll (+1-1) 
- (modified) llvm/test/CodeGen/DirectX/scalar-load.ll (+1-1) 
- (modified) llvm/test/CodeGen/DirectX/scalar-store.ll (+12-11) 
- (modified) llvm/test/CodeGen/DirectX/scalarize-static-array-of-float-vectors.ll (+6-6) 
- (modified) llvm/test/CodeGen/RISCV/riscv-promote-constant.ll (+4-4) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll (+13-13) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll (+2-2) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll (+1-1) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll (+1-1) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll (+10-10) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll (+1-1) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll (+10-10) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll (+6-6) 
- (modified) llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll (+1-1) 
- (modified) llvm/test/Instrumentation/InstrProfiling/amdgpu-contiguous-counters.ll (+1-1) 
- (modified) llvm/test/Instrumentation/InstrProfiling/conditional-counter-updates.ll (+4-4) 
- (modified) llvm/test/Instrumentation/NumericalStabilitySanitizer/basic.ll (+6-6) 
- (modified) llvm/test/Instrumentation/SanitizerCoverage/missing_dbg.ll (+2-2) 
- (modified) llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt-inseltpoison.ll (+1-1) 
- (modified) llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt.ll (+1-1) 
- (modified) llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt-inseltpoison.ll (+1-1) 
- (modified) llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt.ll (+1-1) 
- (modified) llvm/test/Transforms/LowerIFunc/ifunc-alias.ll (+3-3) 
- (modified) llvm/test/Transforms/LowerIFunc/ifunc-program-addrspace.ll (+8-8) 
- (modified) llvm/test/Transforms/LowerIFunc/lower-ifunc.ll (+16-16) 
- (modified) llvm/test/Transforms/LowerMatrixIntrinsics/const-gep.ll (+2-2) 
- (modified) llvm/test/Transforms/PGOProfile/counter_promo.ll (+8-8) 
- (modified) llvm/test/Transforms/PGOProfile/counter_promo_exit_catchswitch.ll (+6-6) 
- (modified) llvm/test/Transforms/PGOProfile/counter_promo_exit_merge.ll (+6-6) 
- (modified) llvm/test/Transforms/PGOProfile/counter_promo_mexits.ll (+12-12) 
- (modified) llvm/test/Transforms/PGOProfile/counter_promo_sampling.ll (+6-6) 
- (modified) llvm/test/Transforms/PGOProfile/instr_entry_bb.ll (+2-2) 
- (modified) llvm/test/Transforms/SROA/phi-gep.ll (+1-1) 
- (modified) llvm/test/tools/llvm-reduce/ifunc-alias.ll (+2-2) 
- (modified) llvm/test/tools/llvm-reduce/remove-ifunc-program-addrspace.ll (+8-8) 
- (modified) llvm/test/tools/llvm-reduce/remove-ifunc.ll (+12-12) 


``````````diff
The server is unavailable at this time. Please wait a few minutes before you try again.
``````````

</details>


https://github.com/llvm/llvm-project/pull/226425


More information about the llvm-commits mailing list