Instead, teach SimplifyCFG to trim non-address-taken blocks from
[oota-llvm.git] / test / Transforms / SimplifyCFG / switch_create.ll
1 ; RUN: opt < %s -simplifycfg -S | not grep br
2
3 declare void @foo1()
4
5 declare void @foo2()
6
7 define void @test1(i32 %V) {
8         %C1 = icmp eq i32 %V, 4         ; <i1> [#uses=1]
9         %C2 = icmp eq i32 %V, 17                ; <i1> [#uses=1]
10         %CN = or i1 %C1, %C2            ; <i1> [#uses=1]
11         br i1 %CN, label %T, label %F
12 T:              ; preds = %0
13         call void @foo1( )
14         ret void
15 F:              ; preds = %0
16         call void @foo2( )
17         ret void
18 }
19
20 define void @test2(i32 %V) {
21         %C1 = icmp ne i32 %V, 4         ; <i1> [#uses=1]
22         %C2 = icmp ne i32 %V, 17                ; <i1> [#uses=1]
23         %CN = and i1 %C1, %C2           ; <i1> [#uses=1]
24         br i1 %CN, label %T, label %F
25 T:              ; preds = %0
26         call void @foo1( )
27         ret void
28 F:              ; preds = %0
29         call void @foo2( )
30         ret void
31 }
32
33 define void @test3(i32 %V) {
34         %C1 = icmp eq i32 %V, 4         ; <i1> [#uses=1]
35         br i1 %C1, label %T, label %N
36 N:              ; preds = %0
37         %C2 = icmp eq i32 %V, 17                ; <i1> [#uses=1]
38         br i1 %C2, label %T, label %F
39 T:              ; preds = %N, %0
40         call void @foo1( )
41         ret void
42 F:              ; preds = %N
43         call void @foo2( )
44         ret void
45 }
46
47