summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2014-02-11 15:44:32 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2014-02-11 15:44:32 +0000
commitcb274415544470a5e655bc4cb823323fa43b844f (patch)
tree46d20ed07807b116e736fd6b41f00e0db0e2eeff /test
parenta63585a8f5fab55a4cd412eec632a98392b640ea (diff)
downloadllvm-cb274415544470a5e655bc4cb823323fa43b844f.tar.gz
llvm-cb274415544470a5e655bc4cb823323fa43b844f.tar.bz2
llvm-cb274415544470a5e655bc4cb823323fa43b844f.tar.xz
ScalarEvolution: Analyze trip count of loops with a switch guarding the exit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201159 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Analysis/ScalarEvolution/trip-count-switch.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Analysis/ScalarEvolution/trip-count-switch.ll b/test/Analysis/ScalarEvolution/trip-count-switch.ll
new file mode 100644
index 0000000000..2d2b6b4994
--- /dev/null
+++ b/test/Analysis/ScalarEvolution/trip-count-switch.ll
@@ -0,0 +1,30 @@
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+
+declare void @foo()
+
+define void @test1() nounwind {
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %if.end, %entry
+ %i.0 = phi i32 [ 2, %entry ], [ %dec, %if.end ]
+ switch i32 %i.0, label %if.end [
+ i32 0, label %for.end
+ i32 1, label %if.then
+ ]
+
+if.then: ; preds = %for.cond
+ tail call void @foo()
+ br label %if.end
+
+if.end: ; preds = %for.cond, %if.then
+ %dec = add nsw i32 %i.0, -1
+ br label %for.cond
+
+for.end: ; preds = %for.cond
+ ret void
+
+; CHECK-LABEL: @test1
+; CHECK: Loop %for.cond: backedge-taken count is 2
+; CHECK: Loop %for.cond: max backedge-taken count is 2
+}