1 /* { dg-do run } */
2 /* { dg-options "-Os -Wno-overflow -fno-tree-switch-conversion" } */
3
4 #include "exit-abort.h"
5 volatile unsigned char y;
6
7 unsigned char __attribute__((noinline,noclone))
8 foo1 (char x)
9 {
10 switch (x)
11 {
12 case (char)0x11: y = 7; break;
13 case (char)0x12: y = 4; break;
14 case (char)0x13: y = 8; break;
15 case (char)0x14: y = 21; break;
16 case (char)0x15: y = 65; break;
17 case (char)0x16: y = 27; break;
18 case (char)0x17: y = 72; break;
19 case (char)0x18: y = 39; break;
20 default: y=0;
21 }
22 return y;
23 }
24
25 unsigned char __attribute__((noinline,noclone))
26 foo2 (char x)
27 {
28 switch (x)
29 {
30 case 0x01: y = 7; break;
31 case 0x02: y = 4; break;
32 case 0x03: y = 8; break;
33 case 0x04: y = 21; break;
34 case 0x05: y = 65; break;
35 case 0x06: y = 27; break;
36 case 0x07: y = 72; break;
37 case 0x08: y = 39; break;
38 default: y=0;
39 }
40 return y;
41 }
42
43 unsigned char __attribute__((noinline,noclone))
44 foo3 (char x)
45 {
46 switch (x)
47 {
48 case 0x1000001L: y = 7; break;
49 case 0x1000002L: y = 4; break;
50 case 0x1000003L: y = 8; break;
51 case 0x1000004L: y = 21; break;
52 case 0x1000005L: y = 65; break;
53 case 0x1000006L: y = 27; break;
54 case 0x1000007L: y = 72; break;
55 case 0x1000008L: y = 39; break;
56 default: y=0;
57 }
58 return y;
59 }
60
61 unsigned char __attribute__((noinline,noclone))
62 foo4 (char x)
63 {
64 switch (x)
65 {
66 case 0x100000001LL: y = 7; break;
67 case 0x100000002LL: y = 4; break;
68 case 0x100000003LL: y = 8; break;
69 case 0x100000004LL: y = 21; break;
70 case 0x100000005LL: y = 65; break;
71 case 0x100000006LL: y = 27; break;
72 case 0x100000007LL: y = 72; break;
73 case 0x100000008LL: y = 39; break;
74 default: y=0;
75 }
76 return y;
77 }
78
79 unsigned char __attribute__((noinline,noclone))
80 foo5 (int x)
81 {
82 switch (x)
83 {
84 case (char)0x11: y = 7; break;
85 case (char)0x12: y = 4; break;
86 case (char)0x13: y = 8; break;
87 case (char)0x14: y = 21; break;
88 case (char)0x15: y = 65; break;
89 case (char)0x16: y = 27; break;
90 case (char)0x17: y = 72; break;
91 case (char)0x18: y = 39; break;
92 default: y=0;
93 }
94 return y;
95 }
96
97 unsigned char __attribute__((noinline,noclone))
98 foo6 (int x)
99 {
100 switch (x)
101 {
102 case 0x101: y = 7; break;
103 case 0x102: y = 4; break;
104 case 0x103: y = 8; break;
105 case 0x104: y = 21; break;
106 case 0x105: y = 65; break;
107 case 0x106: y = 27; break;
108 case 0x107: y = 72; break;
109 case 0x108: y = 39; break;
110 default: y=0;
111 }
112 return y;
113 }
114
115 unsigned char __attribute__((noinline,noclone))
116 foo7 (int x)
117 {
118 switch (x)
119 {
120 case 0x1000001L: y = 7; break;
121 case 0x1000002L: y = 4; break;
122 case 0x1000003L: y = 8; break;
123 case 0x1000004L: y = 21; break;
124 case 0x1000005L: y = 65; break;
125 case 0x1000006L: y = 27; break;
126 case 0x1000007L: y = 72; break;
127 case 0x1000008L: y = 39; break;
128 default: y=0;
129 }
130 return y;
131 }
132
133 unsigned char __attribute__((noinline,noclone))
134 foo8 (int x)
135 {
136 switch (x)
137 {
138 case 0x100000001LL: y = 7; break;
139 case 0x100000002LL: y = 4; break;
140 case 0x100000003LL: y = 8; break;
141 case 0x100000004LL: y = 21; break;
142 case 0x100000005LL: y = 65; break;
143 case 0x100000006LL: y = 27; break;
144 case 0x100000007LL: y = 72; break;
145 case 0x100000008LL: y = 39; break;
146 default: y=0;
147 }
148 return y;
149 }
150
151 unsigned char __attribute__((noinline,noclone))
152 foo9 (long x)
153 {
154 switch (x)
155 {
156 case (char)0x11: y = 7; break;
157 case (char)0x12: y = 4; break;
158 case (char)0x13: y = 8; break;
159 case (char)0x14: y = 21; break;
160 case (char)0x15: y = 65; break;
161 case (char)0x16: y = 27; break;
162 case (char)0x17: y = 72; break;
163 case (char)0x18: y = 39; break;
164 default: y=0;
165 }
166 return y;
167 }
168
169 unsigned char __attribute__((noinline,noclone))
170 foo10 (unsigned long x)
171 {
172 switch (x)
173 {
174 case 0x100: y = 39; break;
175 case 0x101: y = 7; break;
176 case 0x102: y = 4; break;
177 case 0x103: y = 8; break;
178 case 0x104: y = 21; break;
179 case 0x105: y = 65; break;
180 case 0x106: y = 27; break;
181 case 0x107: y = 72; break;
182 default: y=0;
183 }
184 return y;
185 }
186
187 unsigned char __attribute__((noinline,noclone))
188 foo11 (long x)
189 {
190 switch (x)
191 {
192 case 0x1000001L: y = 7; break;
193 case 0x1000002L: y = 4; break;
194 case 0x1000003L: y = 8; break;
195 case 0x1000004L: y = 21; break;
196 case 0x1000005L: y = 65; break;
197 case 0x1000006L: y = 27; break;
198 case 0x1000007L: y = 72; break;
199 case 0x1000008L: y = 39; break;
200 default: y=0;
201 }
202 return y;
203 }
204
205 unsigned char __attribute__((noinline,noclone))
206 foo12 (long x)
207 {
208 switch (x)
209 {
210 case 0x100000001LL: y = 7; break;
211 case 0x100000002LL: y = 4; break;
212 case 0x100000003LL: y = 8; break;
213 case 0x100000004LL: y = 21; break;
214 case 0x100000005LL: y = 65; break;
215 case 0x100000006LL: y = 27; break;
216 case 0x100000007LL: y = 72; break;
217 case 0x100000008LL: y = 39; break;
218 default: y=0;
219 }
220 return y;
221 }
222
223 unsigned char __attribute__((noinline,noclone))
224 foo13 (long long x)
225 {
226 switch (x)
227 {
228 case (char)0x11: y = 7; break;
229 case (char)0x12: y = 4; break;
230 case (char)0x13: y = 8; break;
231 case (char)0x14: y = 21; break;
232 case (char)0x15: y = 65; break;
233 case (char)0x16: y = 27; break;
234 case (char)0x17: y = 72; break;
235 case (char)0x18: y = 39; break;
236 default: y=0;
237 }
238 return y;
239 }
240
241 unsigned char __attribute__((noinline,noclone))
242 foo14 (long long x)
243 {
244 switch (x)
245 {
246 case 0x101: y = 7; break;
247 case 0x102: y = 4; break;
248 case 0x103: y = 8; break;
249 case 0x104: y = 21; break;
250 case 0x105: y = 65; break;
251 case 0x106: y = 27; break;
252 case 0x107: y = 72; break;
253 case 0x108: y = 39; break;
254 default: y=0;
255 }
256 return y;
257 }
258
259 unsigned char __attribute__((noinline,noclone))
260 foo15 (long long x)
261 {
262 switch (x)
263 {
264 case 0x1000001L: y = 7; break;
265 case 0x1000002L: y = 4; break;
266 case 0x1000003L: y = 8; break;
267 case 0x1000004L: y = 21; break;
268 case 0x1000005L: y = 65; break;
269 case 0x1000006L: y = 27; break;
270 case 0x1000007L: y = 72; break;
271 case 0x1000008L: y = 39; break;
272 default: y=0;
273 }
274 return y;
275 }
276
277
278 unsigned char __attribute__((noinline,noclone))
279 foo16 (long long x)
280 {
281 switch (x)
282 {
283 case 0x100000001LL: y = 7; break;
284 case 0x100000002LL: y = 4; break;
285 case 0x100000003LL: y = 8; break;
286 case 0x100000004LL: y = 21; break;
287 case 0x100000005LL: y = 65; break;
288 case 0x100000006LL: y = 27; break;
289 case 0x100000007LL: y = 72; break;
290 case 0x100000008LL: y = 39; break;
291 default: y=0;
292 }
293 return y;
294 }
295
296 int main ()
297 {
298 if (foo1 (0x13) != 8)
299 abort();
300
301 if (foo2 (0x06) != 27)
302 abort();
303
304 if (foo3 (0x02) != 4)
305 abort();
306
307 if (foo4 (0x01) != 7)
308 abort();
309
310 if (foo5 (0x15) != 65)
311 abort();
312
313 if (foo6 (0x103) != 8)
314 abort();
315
316 if (foo7 (0x04) != 21)
317 abort();
318
319 if (foo8 (0x07) != 72)
320 abort();
321
322 if (foo9 (0x10000011L) != 0)
323 abort();
324
325 if (foo10 (0x1000105L) != 0)
326 abort();
327
328 if (foo11 (0x1000008L) != 39)
329 abort();
330
331 if (foo12 (0x1000004L) != 0)
332 abort();
333
334 if (foo13 (0x109LL) != 0)
335 abort();
336
337 if (foo14 (0x108LL) != 39)
338 abort();
339
340 if (foo15 (0x1000001LL) != 7)
341 abort();
342
343 if (foo16 (0x100000004LL) != 21)
344 abort();
345
346 return 0;
347 }