summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2008-06-23 23:41:14 +0000
committerBill Wendling <isanbard@gmail.com>2008-06-23 23:41:14 +0000
commitc44659b92a956e7a8264dc463d923eb537c2d1aa (patch)
treefce4ee3f9fffcad2b9f69c2bd8be36fde0f7910e /llvm/test
parent0d8a61eb60091b607fe4673a4c09276bf418676c (diff)
downloadbcm5719-llvm-c44659b92a956e7a8264dc463d923eb537c2d1aa.tar.gz
bcm5719-llvm-c44659b92a956e7a8264dc463d923eb537c2d1aa.zip
This situation can occur:
,------. | | | v | t2 = phi ... t1 ... | | | v | t1 = ... | ... = ... t1 ... | | `------' where there is a use in a PHI node that's a predecessor to the defining block. We don't want to mark all predecessors as having the value "alive" in this case. Also, the assert was too restrictive and didn't handle this case. llvm-svn: 52655
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll b/llvm/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll
new file mode 100644
index 00000000000..d3238d23c0e
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-as < %s | llc -march=ppc32
+; <rdar://problem/6020042>
+
+define i32 @bork() nounwind {
+entry:
+ br i1 true, label %bb1, label %bb3
+
+bb1:
+ %tmp1 = load i8* null, align 1
+ %tmp2 = icmp eq i8 %tmp1, 0
+ br label %bb2
+
+bb2:
+ %val1 = phi i32 [ 0, %bb1 ], [ %val2, %bb2 ]
+ %val2 = select i1 %tmp2, i32 -1, i32 %val1
+ switch i32 %val2, label %bb2 [
+ i32 -1, label %bb3
+ i32 0, label %bb1
+ i32 1, label %bb3
+ i32 2, label %bb1
+ ]
+
+bb3:
+ ret i32 -1
+}
OpenPOWER on IntegriCloud