Fix a bug that prevented llvm-extract -delete from working.
[oota-llvm.git] / test / Transforms / CondProp / phisimplify.ll
1 ; RUN: llvm-as < %s | opt -condprop | llvm-dis | not grep phi
2
3 define i32 @test(i32 %C, i1 %Val) {
4         switch i32 %C, label %T1 [
5                  i32 4, label %T2
6                  i32 17, label %T3
7         ]
8
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
33 }
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()