summaryrefslogtreecommitdiff
path: root/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2006-06-12 07:05:47 +0000
committerOwen Anderson <resistor@mac.com>2006-06-12 07:05:47 +0000
commitb083af644892fe76b74509096c47e86af4a9b651 (patch)
treec7e5ccd746a796e5014e86a5e43bdbfe1b6f5866 /test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll
parentc2cc15cf9d926b8de41dabba86005a55806127a0 (diff)
downloadllvm-b083af644892fe76b74509096c47e86af4a9b651.tar.gz
llvm-b083af644892fe76b74509096c47e86af4a9b651.tar.bz2
llvm-b083af644892fe76b74509096c47e86af4a9b651.tar.xz
Make sure that LCSSA works properly when it encounters an exit block that has
more than one predecessor inside the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28749 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll')
-rw-r--r--test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll b/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll
new file mode 100644
index 0000000000..83a0f9f380
--- /dev/null
+++ b/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as < %s | opt -lcssa | llvm-dis | grep "%X.1.lcssa" &&
+; RUN: llvm-as < %s | opt -lcssa | llvm-dis | not grep "%X.1.lcssa1"
+
+declare bool %c1()
+declare bool %c2()
+
+int %foo() {
+entry:
+ br label %loop_begin
+
+loop_begin:
+ br bool true, label %loop_body.1, label %loop_exit2
+
+loop_body.1:
+ %X.1 = add int 0, 1
+ %rel.1 = call bool %c1()
+ br bool %rel.1, label %loop_exit, label %loop_body.2
+
+loop_body.2:
+ %rel.2 = call bool %c2()
+ br bool %rel.2, label %loop_exit, label %loop_begin
+
+loop_exit:
+ ret int %X.1
+
+loop_exit2:
+ ret int 1
+}