In some rare cases, the register allocator can spill registers but end up not utilizi...
[llvm/msp430.git] / test / Transforms / SimplifyCFG / switch_create.ll
blob4994cd3960aa094012aafec58257e923c33ba53a
1 ; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep br
3 declare void @foo1()
5 declare void @foo2()
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
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
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