1 ; RUN: llvm-upgrade < %s | llvm-as | \
2 ; RUN: opt -predsimplify -instcombine -simplifycfg | llvm-dis > %t
3 ; RUN: grep -v declare %t | not grep fail
4 ; RUN: grep -v declare %t | grep -c pass | grep 4
9 br bool %A, label %then.1, label %else.1
12 br bool %B, label %then.2, label %else.1
14 call void (...)* %fail( )
24 br bool %A, label %then.1, label %else.1
26 br bool %B, label %then.2, label %else.1
28 call void (...)* %fail( )
38 br bool %A, label %then.1, label %else.1
40 br bool %B, label %then.2, label %else.1
42 call void (...)* %fail( )
48 void %test4(int %x, int %y) {
53 br bool %C, label %then.1, label %else.1
56 br bool %D, label %then.2, label %else.2
59 br bool %E, label %else.1, label %else.2
63 call void (...)* %fail( )
70 br bool %A, label %then.1, label %else.1
74 call void (...)* %fail( )
78 br bool %B, label %then.2, label %then.1
81 void %test6(int %x, int %y) {
86 br bool %C, label %then.1, label %else.1
90 call void (...)* %fail( )
94 br bool %D, label %then.2, label %else.2
97 br bool %E, label %then.1, label %then.2
100 void %test7(int %x) {
103 %B = xor bool %A, true
104 br bool %B, label %then.1, label %else.1
107 br bool %C, label %then.2, label %else.1
109 call void (...)* %fail( )
115 void %test8(int %x) {
119 br bool %B, label %then.1, label %then.2
122 br bool %C, label %then.2, label %else.2
126 call void (...)* %fail( )
130 void %test9(int %y, int %z) {
136 br bool %C, label %cond_true, label %return
140 br bool %D, label %then, label %oops
143 call void (...)* %pass( )
147 call void (...)* %fail( )
157 %B = seteq int* %A, null
158 br bool %B, label %cond_true, label %cond_false
161 call void (...)* %fail ( )
165 call void (...)* %pass ( )
169 void %switch1(int %x) {
171 %A = seteq int %x, 10
172 br bool %A, label %return, label %cond_false
175 switch int %x, label %return [
181 call void (...)* %pass( )
185 call void (...)* %fail( )
192 void %switch2(int %x) {
194 %A = seteq int %x, 10
195 br bool %A, label %return, label %cond_false
198 switch int %x, label %return [
206 br bool %B, label %then2, label %return
209 call void (...)* %pass( )
216 void %switch3(int %x) {
218 %A = seteq int %x, 10
219 br bool %A, label %return, label %cond_false
222 switch int %x, label %return [
229 br bool %B, label %return, label %oops
232 call void (...)* %fail( )
239 void %switch4(int %x) {
241 %A = seteq int %x, 10
242 br bool %A, label %then1, label %cond_false
245 switch int %x, label %default [
258 br bool %B, label %oops, label %then1
261 call void (...)* %fail( )
265 void %select1(int %x) {
267 %A = seteq int %x, 10
268 %B = select bool %A, int 1, int 2
270 br bool %C, label %then, label %else
273 br bool %A, label %return, label %oops
276 br bool %A, label %oops, label %return
279 call void (...)* %fail( )
286 void %select2(int %x) {
288 %A = seteq int %x, 10
289 %B = select bool %A, int 1, int 2
291 br bool %A, label %then, label %else
294 br bool %C, label %return, label %oops
297 br bool %C, label %oops, label %return
300 call void (...)* %fail( )
307 declare void %fail(...)
309 declare void %pass(...)