summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll32
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll b/llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll
index 30249828107..0ce4baacedd 100644
--- a/llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll
+++ b/llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll
@@ -355,6 +355,38 @@ exit:
ret void
}
+; check that we can prove that a recurrency is greater than another recurrency
+; in the same loop, with the same step, and with smaller starting value.
+define void @test12(i64* %inc_ptr) {
+; CHECK-LABEL: @test12
+entry:
+ %inc = load i64, i64* %inc_ptr, !range !0
+ %inc.minus.1 = sub i64 %inc, 1
+ br label %loop
+
+loop:
+ %iv = phi i64 [ %inc, %entry ], [ %iv.next, %backedge ]
+ %iv.minus.1 = phi i64 [ %inc.minus.1, %entry ], [ %iv.minus.1.next, %backedge ]
+ %iv.next = add i64 %iv, 1
+ %iv.minus.1.next = add i64 %iv.minus.1, 1
+ %brcond = icmp sgt i64 %iv.next, %iv.minus.1.next
+ ; CHECK: br i1 true, label %if.true, label %if.false
+ br i1 %brcond, label %if.true, label %if.false
+
+if.true:
+ br label %backedge
+
+if.false:
+ br label %backedge
+
+backedge:
+ %loopcond = icmp slt i64 %iv, 200
+ br i1 %loopcond, label %loop, label %exit
+
+exit:
+ ret void
+}
+
!1 = !{i64 -1, i64 100}
OpenPOWER on IntegriCloud