Tanya Lattner | 4c4d0b8 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | opt -condprop | llvm-dis | not grep phi |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 2 | |
Tanya Lattner | 4c4d0b8 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 3 | define i32 @test(i32 %C, i1 %Val) { |
| 4 | switch i32 %C, label %T1 [ |
| 5 | i32 4, label %T2 |
| 6 | i32 17, label %T3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 7 | ] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 8 | |
Tanya Lattner | 4c4d0b8 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 9 | T1: ; preds = %0 |
| 10 | call void @a( ) |
| 11 | br label %Cont |
| 12 | |
| 13 | T2: ; preds = %0 |
| 14 | call void @b( ) |
| 15 | br label %Cont |
| 16 | |
| 17 | T3: ; preds = %0 |
| 18 | call void @c( ) |
| 19 | br label %Cont |
| 20 | |
| 21 | Cont: ; preds = %T3, %T2, %T1 |
| 22 | ;; PHI becomes dead after threading T2 |
| 23 | %C2 = phi i1 [ %Val, %T1 ], [ true, %T2 ], [ %Val, %T3 ] ; <i1> [#uses=1] |
| 24 | br i1 %C2, label %L2, label %F2 |
| 25 | |
| 26 | L2: ; preds = %Cont |
| 27 | call void @d( ) |
| 28 | ret i32 17 |
| 29 | |
| 30 | F2: ; preds = %Cont |
| 31 | call void @e( ) |
| 32 | ret i32 1 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 33 | } |
Tanya Lattner | 4c4d0b8 | 2008-03-01 09:15:35 +0000 | [diff] [blame] | 34 | |
| 35 | declare void @a() |
| 36 | |
| 37 | declare void @b() |
| 38 | |
| 39 | declare void @c() |
| 40 | |
| 41 | declare void @d() |
| 42 | |
| 43 | declare void @e() |