Change tests from "opt %s" to "opt < %s" so that opt doesn't see the
[llvm/avr.git] / test / Transforms / SimplifyCFG / branch-phi-thread.ll
blobf52d979ecd390520d175fa3fde05c3f3f654fc3f
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* %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