[llvm] [polly] [SCEV] Use SCEVPtrToAddr instead of SCEVPtrToInt in SCEV. (PR #180244)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 23 02:28:35 PDT 2026


================
@@ -8,33 +8,45 @@ declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly
 
 define void @redundant_int_iv(ptr %first) {
 ; CHECK-LABEL: define void @redundant_int_iv(
-; CHECK-SAME: ptr [[FIRST:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
+; CHECK-SAME: ptr [[FIRST:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
 ; CHECK-NEXT:  [[ENTRY:.*]]:
 ; CHECK-NEXT:    [[PTR_INT1:%.*]] = ptrtoint ptr [[FIRST]] to i64
 ; CHECK-NEXT:    [[OFF2:%.*]] = add i64 [[PTR_INT1]], 1
 ; CHECK-NEXT:    [[EC_OUTER3:%.*]] = icmp slt i64 [[OFF2]], 0
 ; CHECK-NEXT:    br i1 [[EC_OUTER3]], label %[[INNER_PH:.*]], label %[[EXIT:.*]]
 ; CHECK:       [[INNER_PH]]:
+; CHECK-NEXT:    [[PTR_INT5:%.*]] = phi i64 [ [[PTR_INT:%.*]], %[[INNER_PH]] ], [ [[PTR_INT1]], %[[ENTRY]] ]
 ; CHECK-NEXT:    [[PTR_IV4:%.*]] = phi ptr [ [[LAST:%.*]], %[[INNER_PH]] ], [ [[FIRST]], %[[ENTRY]] ]
 ; CHECK-NEXT:    [[LAST]] = getelementptr i8, ptr [[PTR_IV4]], i64 7
 ; CHECK-NEXT:    [[CUR_NEXT:%.*]] = getelementptr i8, ptr [[PTR_IV4]], i64 1
-; CHECK-NEXT:    [[TMP0:%.*]] = load i8, ptr [[PTR_IV4]], align 1
-; CHECK-NEXT:    store i8 [[TMP0]], ptr [[CUR_NEXT]], align 1
+; CHECK-NEXT:    [[CUR_INT:%.*]] = ptrtoint ptr [[CUR_NEXT]] to i64
----------------
fhahn wrote:

this is a reduced version of the biggest regression in `stockfish/tbprobe __merge_sort_with_buffer` from https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/734

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


More information about the llvm-commits mailing list