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