[llvm] [InstCombine] Canonicalize gep scaling factor (PR #180216)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 2 07:47:48 PST 2026
================
@@ -322,9 +341,10 @@ define ptr @gep_not_inbounds_sext_add_nonneg(ptr %ptr, i32 %a) {
; CHECK-SAME: ptr [[PTR:%.*]], i32 [[A:%.*]]) {
; CHECK-NEXT: [[A_NNEG:%.*]] = icmp sgt i32 [[A]], -1
; CHECK-NEXT: call void @llvm.assume(i1 [[A_NNEG]])
-; CHECK-NEXT: [[TMP1:%.*]] = zext nneg i32 [[A]] to i64
-; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i32, ptr [[PTR]], i64 [[TMP1]]
-; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[TMP2]], i64 40
+; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[A]], 10
+; CHECK-NEXT: [[IDX:%.*]] = zext nneg i32 [[ADD]] to i64
+; CHECK-NEXT: [[TMP1:%.*]] = shl nuw nsw i64 [[IDX]], 2
+; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[PTR]], i64 [[TMP1]]
----------------
nikic wrote:
Various cases here where we no longer convert gep of add to gep of gep because there is a shl between them now.
https://github.com/llvm/llvm-project/pull/180216
More information about the llvm-commits
mailing list