diff options
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll | 32 |
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} |

