summaryrefslogtreecommitdiff
path: root/test/Transforms/LoopUnroll/pr2253.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/LoopUnroll/pr2253.ll')
-rw-r--r--test/Transforms/LoopUnroll/pr2253.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/Transforms/LoopUnroll/pr2253.ll b/test/Transforms/LoopUnroll/pr2253.ll
new file mode 100644
index 0000000000..1ff6d27527
--- /dev/null
+++ b/test/Transforms/LoopUnroll/pr2253.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-as < %s | opt -loop-unroll -unroll-count 2 | llvm-dis | grep add | count 2
+; PR2253
+
+; There's a use outside the loop, and the PHI needs an incoming edge for
+; each unrolled iteration, since the trip count is unknown and any iteration
+; could exit.
+
+define i32 @fib(i32 %n) nounwind {
+entry:
+ br i1 false, label %bb, label %return
+
+bb:
+ %t0 = phi i32 [ 0, %entry ], [ %t1, %bb ]
+ %t1 = add i32 %t0, 1
+ %c = icmp ne i32 %t0, %n
+ br i1 %c, label %bb, label %return
+
+return:
+ %f2.0.lcssa = phi i32 [ -1, %entry ], [ %t0, %bb ]
+ ret i32 %f2.0.lcssa
+}