[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / Transforms / SimplifyCFG / branch-phi-thread.ll
blob4c1b7e68e25f38e9b8e9cd083b2f3c9875352cb6
1 ; RUN: opt < %s -simplifycfg -adce -S | \
2 ; RUN:   not grep "call void @f1"
3 ; END.
5 declare void @f1()
7 declare void @f2()
9 declare void @f3()
11 declare void @f4()
13 define i32 @test1(i32 %X, i1 %D) {
15         %C = icmp eq i32 %X, 0          ; <i1> [#uses=2]
16         br i1 %C, label %T, label %F
17 T:              ; preds = %A, %E
18         br i1 %C, label %B, label %A
19 A:              ; preds = %T
20         call void @f1( )
21         br i1 %D, label %T, label %F
22 B:              ; preds = %T
23         call void @f2( )
24         ret i32 345
25 F:              ; preds = %A, %E
26         call void @f3( )
27         ret i32 123
30 define i32 @test2(i32 %X, i1 %D) {
32         %C = icmp eq i32 %X, 0          ; <i1> [#uses=2]
33         br i1 %C, label %T, label %F
34 T:              ; preds = %A, %E
35         %P = phi i1 [ true, %E ], [ %C, %A ]            ; <i1> [#uses=1]
36         br i1 %P, label %B, label %A
37 A:              ; preds = %T
38         call void @f1( )
39         br i1 %D, label %T, label %F
40 B:              ; preds = %T
41         call void @f2( )
42         ret i32 345
43 F:              ; preds = %A, %E
44         call void @f3( )
45         ret i32 123
48 define i32 @test3(i32 %X, i1 %D, i32* %AP, i32* %BP) {
50         %C = icmp eq i32 %X, 0          ; <i1> [#uses=2]
51         br i1 %C, label %T, label %F
52 T:              ; preds = %A, %E
53         call void @f3( )
54         %XX = load i32, i32* %AP                ; <i32> [#uses=1]
55         store i32 %XX, i32* %BP
56         br i1 %C, label %B, label %A
57 A:              ; preds = %T
58         call void @f1( )
59         br i1 %D, label %T, label %F
60 B:              ; preds = %T
61         call void @f2( )
62         ret i32 345
63 F:              ; preds = %A, %E
64         call void @f3( )
65         ret i32 123