diff --git a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp index 29f68ed30602..4ebafd8ea78b 100644 --- a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp @@ -264,10 +264,6 @@ void SimplifyIndvar::eliminateIVComparison(ICmpInst *ICmp, Value *IVOperand) { ICmp->setPredicate(InvariantPredicate); ICmp->setOperand(0, NewLHS); ICmp->setOperand(1, NewRHS); - } else if (ICmpInst::isSigned(Pred) && - SE->isKnownNonNegative(S) && SE->isKnownNonNegative(X)) { - DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp << '\n'); - ICmp->setPredicate(ICmpInst::getUnsignedPredicate(Pred)); } else return; diff --git a/llvm/test/Analysis/ScalarEvolution/guards.ll b/llvm/test/Analysis/ScalarEvolution/guards.ll index d4b1f431ffc6..52ad4dc73d41 100644 --- a/llvm/test/Analysis/ScalarEvolution/guards.ll +++ b/llvm/test/Analysis/ScalarEvolution/guards.ll @@ -19,7 +19,7 @@ entry: loop: ; CHECK: loop: ; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 true) [ "deopt"() ] -; CHECK: %iv.inc.cmp = icmp ult i32 %iv.inc, %len +; CHECK: %iv.inc.cmp = icmp slt i32 %iv.inc, %len ; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %iv.inc.cmp) [ "deopt"() ] ; CHECK: leave: @@ -41,7 +41,7 @@ leave: define void @test_2(i32 %n, i32* %len_buf) { ; CHECK-LABEL: @test_2( -; CHECK: [[LEN_ZEXT:%[^ ]+]] = zext i32 %len to i64 +; CHECK: [[LEN_SEXT:%[^ ]+]] = sext i32 %len to i64 ; CHECK: br label %loop entry: @@ -52,7 +52,7 @@ loop: ; CHECK: loop: ; CHECK: %indvars.iv = phi i64 [ %indvars.iv.next, %loop ], [ 0, %entry ] ; CHECK: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 -; CHECK: %iv.inc.cmp = icmp ult i64 %indvars.iv.next, [[LEN_ZEXT]] +; CHECK: %iv.inc.cmp = icmp slt i64 %indvars.iv.next, [[LEN_SEXT]] ; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %iv.inc.cmp) [ "deopt"() ] ; CHECK: leave: diff --git a/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll b/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll deleted file mode 100644 index 93dc968af6ab..000000000000 --- a/llvm/test/Transforms/IndVarSimplify/canonicalize-cmp.ll +++ /dev/null @@ -1,52 +0,0 @@ -; RUN: opt -S -indvars < %s | FileCheck %s - -; Check that we replace signed comparisons between non-negative values with -; unsigned comparisons if we can. - -target datalayout = "n8:16:32:64" - -define i32 @test_01(i32 %a, i32 %b, i32* %p) { - -; CHECK-LABEL: @test_01( -; CHECK-NOT: icmp slt -; CHECK: %cmp1 = icmp ult i32 %iv, 100 -; CHECK: %cmp2 = icmp ult i32 %iv, 100 -; CHECK-NOT: %cmp3 -; CHECK: %exitcond = icmp ne i32 %iv.next, 1000 - -entry: - br label %loop.entry - -loop.entry: - %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.be ] - %cmp1 = icmp slt i32 %iv, 100 - br i1 %cmp1, label %b1, label %b2 - -b1: - store i32 %iv, i32* %p - br label %merge - -b2: - store i32 %a, i32* %p - br label %merge - -merge: - %cmp2 = icmp ult i32 %iv, 100 - br i1 %cmp2, label %b3, label %b4 - -b3: - store i32 %iv, i32* %p - br label %loop.be - -b4: - store i32 %b, i32* %p - br label %loop.be - -loop.be: - %iv.next = add i32 %iv, 1 - %cmp3 = icmp slt i32 %iv.next, 1000 - br i1 %cmp3, label %loop.entry, label %exit - -exit: - ret i32 %iv -} diff --git a/llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll b/llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll index a63617e62c0e..612f01e3cade 100644 --- a/llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll +++ b/llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll @@ -111,7 +111,7 @@ return: ; Indvars should not turn the second loop into an infinite one. ; CHECK-LABEL: @func_11( -; CHECK: %tmp5 = icmp ult i32 %__key6.0, 10 +; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10 ; CHECK-NOT: br i1 true, label %noassert68, label %unrolledend define i32 @func_11() nounwind uwtable { @@ -163,7 +163,7 @@ declare void @llvm.trap() noreturn nounwind ; In this case the second loop only has a single iteration, fold the header away ; CHECK-LABEL: @func_12( -; CHECK: %tmp5 = icmp ult i32 %__key6.0, 10 +; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10 ; CHECK: br i1 true, label %noassert68, label %unrolledend define i32 @func_12() nounwind uwtable { entry: diff --git a/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll b/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll index 2d24cd732ce8..b87cd0550192 100644 --- a/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll +++ b/llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll @@ -64,7 +64,7 @@ for.end: ; CHECK-LABEL: @test2 ; CHECK: for.body4.us ; CHECK: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 -; CHECK: %cmp2.us = icmp ult i64 +; CHECK: %cmp2.us = icmp slt i64 ; CHECK-NOT: %2 = trunc i64 %indvars.iv.next to i32 ; CHECK-NOT: %cmp2.us = icmp slt i32