aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/LoopDeletion/multiple-exit-conditions.ll
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-10-23 17:10:01 +0000
committerDan Gohman <gohman@apple.com>2009-10-23 17:10:01 +0000
commitaf1c05ad386e69449b53582da8f2b94c044e57db (patch)
tree63e26f3b716231fe01959ca4a5ba2a760c923bf5 /test/Transforms/LoopDeletion/multiple-exit-conditions.ll
parenta737af39c9cb53e5d3c82eef853b48212e0e5e6f (diff)
downloadexternal_llvm-af1c05ad386e69449b53582da8f2b94c044e57db.zip
external_llvm-af1c05ad386e69449b53582da8f2b94c044e57db.tar.gz
external_llvm-af1c05ad386e69449b53582da8f2b94c044e57db.tar.bz2
Make LoopDeletion check the maximum backedge taken count, rather than the
exact backedge taken count, when checking for infinite loops. This allows it to delete loops with multiple exit conditions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84952 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/LoopDeletion/multiple-exit-conditions.ll')
-rw-r--r--test/Transforms/LoopDeletion/multiple-exit-conditions.ll27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Transforms/LoopDeletion/multiple-exit-conditions.ll b/test/Transforms/LoopDeletion/multiple-exit-conditions.ll
new file mode 100644
index 0000000..87f8f46
--- /dev/null
+++ b/test/Transforms/LoopDeletion/multiple-exit-conditions.ll
@@ -0,0 +1,27 @@
+; RUN: opt < %s -loop-deletion -S | FileCheck %s
+
+; ScalarEvolution can prove the loop iteration is finite, even though
+; it can't represent the exact trip count as an expression. That's
+; good enough to let the loop be deleted.
+
+; CHECK: entry:
+; CHECK-NEXT: br label %return
+
+; CHECK: return:
+; CHECK-NEXT: ret void
+
+define void @foo(i64 %n, i64 %m) nounwind {
+entry:
+ br label %bb
+
+bb:
+ %x.0 = phi i64 [ 0, %entry ], [ %t0, %bb ]
+ %t0 = add i64 %x.0, 1
+ %t1 = icmp slt i64 %x.0, %n
+ %t3 = icmp sgt i64 %x.0, %m
+ %t4 = and i1 %t1, %t3
+ br i1 %t4, label %bb, label %return
+
+return:
+ ret void
+}