blob: 056d8c97dc05704cd85c253a1039f31991f31ae6 [file] [log] [blame]
Nick Lewycky05450ae2006-08-28 22:44:55 +00001; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail
2
3void %test1(int %x) {
4entry:
5 %A = seteq int %x, 0
6 br bool %A, label %then.1, label %else.1
7then.1:
8 %B = seteq int %x, 1
9 br bool %B, label %then.2, label %else.1
10then.2:
11 call void (...)* %fail( )
12 ret void
13else.1:
14 ret void
15}
16
17void %test2(int %x) {
18entry:
19 %A = seteq int %x, 0
20 %B = seteq int %x, 1
21 br bool %A, label %then.1, label %else.1
22then.1:
23 br bool %B, label %then.2, label %else.1
24then.2:
25 call void (...)* %fail( )
26 ret void
27else.1:
28 ret void
29}
30
31void %test3(int %x) {
32entry:
33 %A = seteq int %x, 0
34 %B = seteq int %x, 1
35 br bool %A, label %then.1, label %else.1
36then.1:
37 br bool %B, label %then.2, label %else.1
38then.2:
39 call void (...)* %fail( )
40 ret void
41else.1:
42 ret void
43}
44
45void %test4(int %x, int %y) {
46entry:
47 %A = seteq int %x, 0
48 %B = seteq int %y, 0
49 %C = and bool %A, %B
50 br bool %C, label %then.1, label %else.1
51then.1:
52 %D = seteq int %x, 0
53 br bool %D, label %then.2, label %else.2
54then.2:
55 %E = seteq int %y, 0
56 br bool %E, label %else.1, label %else.2
57else.1:
58 ret void
59else.2:
60 call void (...)* %fail( )
61 ret void
62}
63
64void %test5(int %x) {
65entry:
66 %A = seteq int %x, 0
67 br bool %A, label %then.1, label %else.1
68then.1:
69 ret void
70then.2:
71 call void (...)* %fail( )
72 ret void
73else.1:
74 %B = seteq int %x, 0
75 br bool %B, label %then.2, label %then.1
76}
77
78void %test6(int %x, int %y) {
79entry:
80 %A = seteq int %x, 0
81 %B = seteq int %y, 0
82 %C = or bool %A, %B
83 br bool %C, label %then.1, label %else.1
84then.1:
85 ret void
86then.2:
87 call void (...)* %fail( )
88 ret void
89else.1:
90 %D = seteq int %x, 0
91 br bool %D, label %then.2, label %else.2
92else.2:
93 %E = setne int %y, 0
94 br bool %E, label %then.1, label %then.2
95}
96
97void %test7(int %x) {
98entry:
99 %A = setne int %x, 0
100 %B = xor bool %A, true
101 br bool %B, label %then.1, label %else.1
102then.1:
103 %C = seteq int %x, 1
104 br bool %C, label %then.2, label %else.1
105then.2:
106 call void (...)* %fail( )
107 ret void
108else.1:
109 ret void
110}
111
112void %test8(int %x) {
113entry:
114 %A = add int %x, 1
115 %B = seteq int %x, 0
116 br bool %B, label %then.1, label %then.2
117then.1:
118 %C = seteq int %A, 1
119 br bool %C, label %then.2, label %else.2
120then.2:
121 ret void
122else.2:
123 call void (...)* %fail( )
124 ret void
125}
126
127
128declare void %fail(...)
129
130declare void %pass(...)