From 09d556630a0042c7166fc50ca90a660eab280e21 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 23 Jun 2008 23:41:14 +0000 Subject: 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52655 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../PowerPC/2008-06-23-LiveVariablesCrash.ll | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll (limited to 'test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll') diff --git a/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll b/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll new file mode 100644 index 0000000..d3238d2 --- /dev/null +++ b/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll @@ -0,0 +1,25 @@ +; RUN: llvm-as < %s | llc -march=ppc32 +; + +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 +} -- cgit v1.1