[llvm] [IndVars] Use context for proving same sign (PR #181093)
Antonio Frighetto via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 12 06:01:01 PST 2026
================
@@ -827,11 +827,13 @@ define void @func_22(ptr %length.ptr) {
; CHECK-NEXT: [[ENTRY_COND:%.*]] = icmp sgt i32 [[LENGTH]], 1
; CHECK-NEXT: br i1 [[ENTRY_COND]], label [[LOOP_PREHEADER:%.*]], label [[LEAVE:%.*]]
; CHECK: loop.preheader:
+; CHECK-NEXT: [[TMP0:%.*]] = add nuw nsw i32 [[LENGTH]], 1
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[IV_INC:%.*]], [[BE:%.*]] ], [ 0, [[LOOP_PREHEADER]] ]
; CHECK-NEXT: [[IV_INC]] = add nuw nsw i32 [[IV]], 1
-; CHECK-NEXT: br i1 true, label [[BE]], label [[LEAVE_LOOPEXIT:%.*]]
+; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[IV]], [[TMP0]]
+; CHECK-NEXT: br i1 [[EXITCOND1]], label [[BE]], label [[LEAVE_LOOPEXIT:%.*]]
----------------
antoniofrighetto wrote:
It looks like SCEV cannot prove the exit condition anymore here, is this orthogonal to the changes?
https://github.com/llvm/llvm-project/pull/181093
More information about the llvm-commits
mailing list