1 /* PR c/44715 */
2 /* { dg-do run } */
3 /* { dg-options "" } */
4
5 void
6 foo (int x, int y)
7 {
8 int z;
9 switch (x)
10 {
11 case 0:
12 while (({ if (y) break; 0; }))
13 ;
14 __builtin_abort ();
15 break;
16 case 1:
17 do
18 ;
19 while (({ if (y) break; 0; }));
20 __builtin_abort ();
21 break;
22 case 2:
23 for (z = ({ if (y) break; 0; }); z < 5; z++)
24 ;
25 __builtin_abort ();
26 break;
27 case 3:
28 for (z = 0; z < ({ if (y) break; 5; }); z++)
29 ;
30 __builtin_abort ();
31 break;
32 case 4:
33 for (z = 0; z < 5; z += ({ if (y) break; 1; }))
34 ;
35 __builtin_abort ();
36 break;
37 case 5:
38 switch (({ if (y) break; 1; }))
39 {
40 default: break;
41 }
42 __builtin_abort ();
43 break;
44 default:
45 __builtin_abort ();
46 break;
47 }
48 }
49
50 void
51 bar (int x, int y)
52 {
53 int z;
54 while (x >= 0)
55 {
56 if (x == 0)
57 {
58 while (({ if (y) break; 0; }))
59 ;
60 __builtin_abort ();
61 }
62 if (x == 1)
63 {
64 do
65 ;
66 while (({ if (y) break; 0; }));
67 __builtin_abort ();
68 }
69 if (x == 2)
70 {
71 for (z = ({ if (y) break; 0; }); z < 5; z++)
72 ;
73 __builtin_abort ();
74 }
75 if (x == 3)
76 {
77 for (z = 0; z < ({ if (y) break; 5; }); z++)
78 ;
79 __builtin_abort ();
80 }
81 if (x == 4)
82 {
83 for (z = 0; z < 5; z += ({ if (y) break; 1; }))
84 ;
85 __builtin_abort ();
86 }
87 if (x == 5)
88 {
89 switch (({ if (y) break; 1; }))
90 {
91 default: break;
92 }
93 __builtin_abort ();
94 }
95 }
96 }
97
98 void
99 baz (int x, int y)
100 {
101 int z;
102 while (x >= 0)
103 {
104 if (++y == 2)
105 return;
106 if (x == 0)
107 {
108 while (({ if (y) continue; 0; }))
109 ;
110 __builtin_abort ();
111 }
112 if (x == 1)
113 {
114 do
115 ;
116 while (({ if (y) continue; 0; }));
117 __builtin_abort ();
118 }
119 if (x == 2)
120 {
121 for (z = ({ if (y) continue; 0; }); z < 5; z++)
122 ;
123 __builtin_abort ();
124 }
125 if (x == 3)
126 {
127 for (z = 0; z < ({ if (y) continue; 5; }); z++)
128 ;
129 __builtin_abort ();
130 }
131 if (x == 4)
132 {
133 for (z = 0; z < 5; z += ({ if (y) continue; 1; }))
134 ;
135 __builtin_abort ();
136 }
137 if (x == 5)
138 {
139 switch (({ if (y) continue; 1; }))
140 {
141 default: break;
142 }
143 __builtin_abort ();
144 }
145 }
146 __builtin_abort ();
147 }
148
149 int
150 main ()
151 {
152 foo (0, 1);
153 foo (1, 1);
154 foo (2, 1);
155 foo (3, 1);
156 foo (4, 1);
157 foo (5, 1);
158 bar (0, 1);
159 bar (1, 1);
160 bar (2, 1);
161 bar (3, 1);
162 bar (4, 1);
163 bar (5, 1);
164 baz (0, 0);
165 baz (1, 0);
166 baz (2, 0);
167 baz (3, 0);
168 baz (4, 0);
169 baz (5, 0);
170 return 0;
171 }