1 ; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail &&
2 ; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | grep pass | wc -l | grep 3
7 br bool %A, label %then.1, label %else.1
10 br bool %B, label %then.2, label %else.1
12 call void (...)* %fail( )
22 br bool %A, label %then.1, label %else.1
24 br bool %B, label %then.2, label %else.1
26 call void (...)* %fail( )
36 br bool %A, label %then.1, label %else.1
38 br bool %B, label %then.2, label %else.1
40 call void (...)* %fail( )
46 void %test4(int %x, int %y) {
51 br bool %C, label %then.1, label %else.1
54 br bool %D, label %then.2, label %else.2
57 br bool %E, label %else.1, label %else.2
61 call void (...)* %fail( )
68 br bool %A, label %then.1, label %else.1
72 call void (...)* %fail( )
76 br bool %B, label %then.2, label %then.1
79 void %test6(int %x, int %y) {
84 br bool %C, label %then.1, label %else.1
88 call void (...)* %fail( )
92 br bool %D, label %then.2, label %else.2
95 br bool %E, label %then.1, label %then.2
101 %B = xor bool %A, true
102 br bool %B, label %then.1, label %else.1
105 br bool %C, label %then.2, label %else.1
107 call void (...)* %fail( )
113 void %test8(int %x) {
117 br bool %B, label %then.1, label %then.2
120 br bool %C, label %then.2, label %else.2
124 call void (...)* %fail( )
128 void %test9(int %y, int %z) {
134 br bool %C, label %cond_true, label %return
138 br bool %D, label %then, label %oops
141 call void (...)* %pass( )
145 call void (...)* %fail( )
152 void %switch1(int %x) {
154 %A = seteq int %x, 10
155 br bool %A, label %return, label %cond_false
158 switch int %x, label %return [
164 call void (...)* %pass( )
168 call void (...)* %fail( )
175 void %switch2(int %x) {
177 %A = seteq int %x, 10
178 br bool %A, label %return, label %cond_false
181 switch int %x, label %return [
189 br bool %B, label %then2, label %return
192 call void (...)* %pass( )
199 void %switch3(int %x) {
201 %A = seteq int %x, 10
202 br bool %A, label %return, label %cond_false
205 switch int %x, label %return [
212 br bool %B, label %return, label %oops
215 call void (...)* %fail( )
222 void %switch4(int %x) {
224 %A = seteq int %x, 10
225 br bool %A, label %then1, label %cond_false
228 switch int %x, label %default [
241 br bool %B, label %oops, label %then1
244 call void (...)* %fail( )
248 void %select1(int %x) {
250 %A = seteq int %x, 10
251 %B = select bool %A, int 1, int 2
253 br bool %C, label %then, label %else
256 br bool %A, label %return, label %oops
259 br bool %A, label %oops, label %return
262 call void (...)* %fail( )
269 void %select2(int %x) {
271 %A = seteq int %x, 10
272 %B = select bool %A, int 1, int 2
274 br bool %A, label %then, label %else
277 br bool %C, label %return, label %oops
280 br bool %C, label %oops, label %return
283 call void (...)* %fail( )
290 declare void %fail(...)
292 declare void %pass(...)