PR target/84226
[official-gcc.git] / gcc / testsuite / gcc.target / avr / pr71676-1.c
blob0d41a600905445f66ff0fd26ed3d77ce59ee13df
1 /* { dg-do run } */
2 /* { dg-options "-Os -Wno-overflow -fno-tree-switch-conversion" } */
4 #include "exit-abort.h"
5 volatile unsigned char y;
7 unsigned char __attribute__((noinline,noclone))
8 foo1 (char x)
10 switch (x)
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;
22 return y;
25 unsigned char __attribute__((noinline,noclone))
26 foo2 (char x)
28 switch (x)
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;
40 return y;
43 unsigned char __attribute__((noinline,noclone))
44 foo3 (char x)
46 switch (x)
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;
58 return y;
61 unsigned char __attribute__((noinline,noclone))
62 foo4 (char x)
64 switch (x)
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;
76 return y;
79 unsigned char __attribute__((noinline,noclone))
80 foo5 (int x)
82 switch (x)
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;
94 return y;
97 unsigned char __attribute__((noinline,noclone))
98 foo6 (int x)
100 switch (x)
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;
112 return y;
115 unsigned char __attribute__((noinline,noclone))
116 foo7 (int x)
118 switch (x)
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;
130 return y;
133 unsigned char __attribute__((noinline,noclone))
134 foo8 (int x)
136 switch (x)
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;
148 return y;
151 unsigned char __attribute__((noinline,noclone))
152 foo9 (long x)
154 switch (x)
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;
166 return y;
169 unsigned char __attribute__((noinline,noclone))
170 foo10 (unsigned long x)
172 switch (x)
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;
184 return y;
187 unsigned char __attribute__((noinline,noclone))
188 foo11 (long x)
190 switch (x)
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;
202 return y;
205 unsigned char __attribute__((noinline,noclone))
206 foo12 (long x)
208 switch (x)
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;
220 return y;
223 unsigned char __attribute__((noinline,noclone))
224 foo13 (long long x)
226 switch (x)
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;
238 return y;
241 unsigned char __attribute__((noinline,noclone))
242 foo14 (long long x)
244 switch (x)
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;
256 return y;
259 unsigned char __attribute__((noinline,noclone))
260 foo15 (long long x)
262 switch (x)
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;
274 return y;
278 unsigned char __attribute__((noinline,noclone))
279 foo16 (long long x)
281 switch (x)
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;
293 return y;
296 int main ()
298 if (foo1 (0x13) != 8)
299 abort();
301 if (foo2 (0x06) != 27)
302 abort();
304 if (foo3 (0x02) != 4)
305 abort();
307 if (foo4 (0x01) != 7)
308 abort();
310 if (foo5 (0x15) != 65)
311 abort();
313 if (foo6 (0x103) != 8)
314 abort();
316 if (foo7 (0x04) != 21)
317 abort();
319 if (foo8 (0x07) != 72)
320 abort();
322 if (foo9 (0x10000011L) != 0)
323 abort();
325 if (foo10 (0x1000105L) != 0)
326 abort();
328 if (foo11 (0x1000008L) != 39)
329 abort();
331 if (foo12 (0x1000004L) != 0)
332 abort();
334 if (foo13 (0x109LL) != 0)
335 abort();
337 if (foo14 (0x108LL) != 39)
338 abort();
340 if (foo15 (0x1000001LL) != 7)
341 abort();
343 if (foo16 (0x100000004LL) != 21)
344 abort();
346 return 0;