[llvm] [InstCombine] Split GEPs with multiple variable indices (PR #137297)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 25 01:58:37 PDT 2025
================
@@ -1141,10 +1141,12 @@ define i64 @test59(ptr %foo, i64 %i) {
define i64 @test60(ptr %foo, i64 %i, i64 %j) {
; CHECK-LABEL: @test60(
-; CHECK-NEXT: [[GEP1_IDX:%.*]] = mul nsw i64 [[J:%.*]], 100
-; CHECK-NEXT: [[GEP1_OFFS:%.*]] = add nsw i64 [[GEP1_IDX]], [[I:%.*]]
-; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i8, ptr [[FOO:%.*]], i64 [[GEP1_OFFS]]
-; CHECK-NEXT: [[GEPDIFF:%.*]] = add nsw i64 [[GEP1_OFFS]], -4200
+; CHECK-NEXT: [[GEP1_SPLIT:%.*]] = getelementptr inbounds [100 x [100 x i8]], ptr [[FOO:%.*]], i64 0, i64 [[J:%.*]]
+; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds [100 x i8], ptr [[GEP1_SPLIT]], i64 0, i64 [[I:%.*]]
+; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds nuw i8, ptr [[FOO]], i64 4200
+; CHECK-NEXT: [[CAST1:%.*]] = ptrtoint ptr [[GEP1]] to i64
+; CHECK-NEXT: [[CAST2:%.*]] = ptrtoint ptr [[GEP2]] to i64
+; CHECK-NEXT: [[GEPDIFF:%.*]] = sub i64 [[CAST1]], [[CAST2]]
----------------
nikic wrote:
Similar here, but subtraction of gep and gep.
https://github.com/llvm/llvm-project/pull/137297
More information about the llvm-commits
mailing list