Merge branch 'master' into msp430
[llvm/msp430.git] / test / Transforms / CondProp / phisimplify2.ll
blob03d12e3e4c9724de9b45be670e71bf640c15f125
1 ; RUN: llvm-as < %s | opt -condprop | llvm-dis | not grep phi
3 declare i1 @foo()
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
10         ]
12 T1:             ; preds = %0
13         call void @a( )
14         br label %Cont
16 T2:             ; preds = %0
17         call void @b( )
18         br label %Cont
20 T3:             ; preds = %0
21         call void @c( )
22         br label %Cont
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
29 L2:             ; preds = %Cont
30         call void @d( )
31         ret i32 17
33 F2:             ; preds = %Cont
34         call void @e( )
35         ret i32 1
38 declare void @a()
40 declare void @b()
42 declare void @c()
44 declare void @d()
46 declare void @e()