comparison gcc/testsuite/gcc.c-torture/execute/pr92904.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* PR target/92904 */
2
3 #include <stdarg.h>
4
5 struct S { long long a, b; };
6 struct __attribute__((aligned (16))) T { long long a, b; };
7 struct U { double a, b, c, d; };
8 struct __attribute__((aligned (32))) V { double a, b, c, d; };
9 struct W { double a; long long b; };
10 struct __attribute__((aligned (16))) X { double a; long long b; };
11 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
12 __int128 b;
13 #endif
14 struct S c;
15 struct T d;
16 struct U e;
17 struct V f;
18 struct W g;
19 struct X h;
20
21 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
22 __attribute__((noipa)) __int128
23 f1 (int x, ...)
24 {
25 __int128 r;
26 va_list ap;
27 va_start (ap, x);
28 while (x--)
29 va_arg (ap, int);
30 r = va_arg (ap, __int128);
31 va_end (ap);
32 return r;
33 }
34 #endif
35
36 __attribute__((noipa)) struct S
37 f2 (int x, ...)
38 {
39 struct S r;
40 va_list ap;
41 va_start (ap, x);
42 while (x--)
43 va_arg (ap, int);
44 r = va_arg (ap, struct S);
45 va_end (ap);
46 return r;
47 }
48
49 __attribute__((noipa)) struct T
50 f3 (int x, ...)
51 {
52 struct T r;
53 va_list ap;
54 va_start (ap, x);
55 while (x--)
56 va_arg (ap, int);
57 r = va_arg (ap, struct T);
58 va_end (ap);
59 return r;
60 }
61
62 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
63 __attribute__((noipa)) void
64 f4 (int x, ...)
65 {
66 va_list ap;
67 va_start (ap, x);
68 while (x--)
69 va_arg (ap, int);
70 b = va_arg (ap, __int128);
71 va_end (ap);
72 }
73 #endif
74
75 __attribute__((noipa)) void
76 f5 (int x, ...)
77 {
78 va_list ap;
79 va_start (ap, x);
80 while (x--)
81 va_arg (ap, int);
82 c = va_arg (ap, struct S);
83 va_end (ap);
84 }
85
86 __attribute__((noipa)) void
87 f6 (int x, ...)
88 {
89 va_list ap;
90 va_start (ap, x);
91 while (x--)
92 va_arg (ap, int);
93 d = va_arg (ap, struct T);
94 va_end (ap);
95 }
96
97 __attribute__((noipa)) struct U
98 f7 (int x, ...)
99 {
100 struct U r;
101 va_list ap;
102 va_start (ap, x);
103 while (x--)
104 va_arg (ap, double);
105 r = va_arg (ap, struct U);
106 va_end (ap);
107 return r;
108 }
109
110 __attribute__((noipa)) struct V
111 f8 (int x, ...)
112 {
113 struct V r;
114 va_list ap;
115 va_start (ap, x);
116 while (x--)
117 va_arg (ap, double);
118 r = va_arg (ap, struct V);
119 va_end (ap);
120 return r;
121 }
122
123 __attribute__((noipa)) void
124 f9 (int x, ...)
125 {
126 va_list ap;
127 va_start (ap, x);
128 while (x--)
129 va_arg (ap, double);
130 e = va_arg (ap, struct U);
131 va_end (ap);
132 }
133
134 __attribute__((noipa)) void
135 f10 (int x, ...)
136 {
137 va_list ap;
138 va_start (ap, x);
139 while (x--)
140 va_arg (ap, double);
141 f = va_arg (ap, struct V);
142 va_end (ap);
143 }
144
145 __attribute__((noipa)) struct W
146 f11 (int x, ...)
147 {
148 struct W r;
149 va_list ap;
150 va_start (ap, x);
151 while (x--)
152 {
153 va_arg (ap, int);
154 va_arg (ap, double);
155 }
156 r = va_arg (ap, struct W);
157 va_end (ap);
158 return r;
159 }
160
161 __attribute__((noipa)) struct X
162 f12 (int x, ...)
163 {
164 struct X r;
165 va_list ap;
166 va_start (ap, x);
167 while (x--)
168 {
169 va_arg (ap, int);
170 va_arg (ap, double);
171 }
172 r = va_arg (ap, struct X);
173 va_end (ap);
174 return r;
175 }
176
177 __attribute__((noipa)) void
178 f13 (int x, ...)
179 {
180 va_list ap;
181 va_start (ap, x);
182 while (x--)
183 {
184 va_arg (ap, int);
185 va_arg (ap, double);
186 }
187 g = va_arg (ap, struct W);
188 va_end (ap);
189 }
190
191 __attribute__((noipa)) void
192 f14 (int x, ...)
193 {
194 va_list ap;
195 va_start (ap, x);
196 while (x--)
197 {
198 va_arg (ap, int);
199 va_arg (ap, double);
200 }
201 h = va_arg (ap, struct X);
202 va_end (ap);
203 }
204
205 int
206 main ()
207 {
208 union Y {
209 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
210 __int128 b;
211 #endif
212 struct S c;
213 struct T d;
214 struct U e;
215 struct V f;
216 struct W g;
217 struct X h;
218 } u, v;
219 u.c.a = 0x5555555555555555ULL;
220 u.c.b = 0xaaaaaaaaaaaaaaaaULL;
221 #define C(x) \
222 do { \
223 if (u.c.a != x.c.a || u.c.b != x.c.b) __builtin_abort (); \
224 u.c.a++; \
225 u.c.b--; \
226 } while (0)
227 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
228 v.b = f1 (0, u.b); C (v);
229 v.b = f1 (1, 0, u.b); C (v);
230 v.b = f1 (2, 0, 0, u.b); C (v);
231 v.b = f1 (3, 0, 0, 0, u.b); C (v);
232 v.b = f1 (4, 0, 0, 0, 0, u.b); C (v);
233 v.b = f1 (5, 0, 0, 0, 0, 0, u.b); C (v);
234 v.b = f1 (6, 0, 0, 0, 0, 0, 0, u.b); C (v);
235 v.b = f1 (7, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
236 v.b = f1 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
237 v.b = f1 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.b); C (v);
238 #endif
239 v.c = f2 (0, u.c); C (v);
240 v.c = f2 (1, 0, u.c); C (v);
241 v.c = f2 (2, 0, 0, u.c); C (v);
242 v.c = f2 (3, 0, 0, 0, u.c); C (v);
243 v.c = f2 (4, 0, 0, 0, 0, u.c); C (v);
244 v.c = f2 (5, 0, 0, 0, 0, 0, u.c); C (v);
245 v.c = f2 (6, 0, 0, 0, 0, 0, 0, u.c); C (v);
246 v.c = f2 (7, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
247 v.c = f2 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
248 v.c = f2 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.c); C (v);
249 v.d = f3 (0, u.d); C (v);
250 v.d = f3 (1, 0, u.d); C (v);
251 v.d = f3 (2, 0, 0, u.d); C (v);
252 v.d = f3 (3, 0, 0, 0, u.d); C (v);
253 v.d = f3 (4, 0, 0, 0, 0, u.d); C (v);
254 v.d = f3 (5, 0, 0, 0, 0, 0, u.d); C (v);
255 v.d = f3 (6, 0, 0, 0, 0, 0, 0, u.d); C (v);
256 v.d = f3 (7, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
257 v.d = f3 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
258 v.d = f3 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.d); C (v);
259 #if __SIZEOF_INT128__ == 2 * __SIZEOF_LONG_LONG__
260 f4 (0, u.b); v.b = b; C (v);
261 f4 (1, 0, u.b); v.b = b; C (v);
262 f4 (2, 0, 0, u.b); v.b = b; C (v);
263 f4 (3, 0, 0, 0, u.b); v.b = b; C (v);
264 f4 (4, 0, 0, 0, 0, u.b); v.b = b; C (v);
265 f4 (5, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
266 f4 (6, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
267 f4 (7, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
268 f4 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
269 f4 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.b); v.b = b; C (v);
270 #endif
271 f5 (0, u.c); v.c = c; C (v);
272 f5 (1, 0, u.c); v.c = c; C (v);
273 f5 (2, 0, 0, u.c); v.c = c; C (v);
274 f5 (3, 0, 0, 0, u.c); v.c = c; C (v);
275 f5 (4, 0, 0, 0, 0, u.c); v.c = c; C (v);
276 f5 (5, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
277 f5 (6, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
278 f5 (7, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
279 f5 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
280 f5 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.c); v.c = c; C (v);
281 f6 (0, u.d); v.d = d; C (v);
282 f6 (1, 0, u.d); v.d = d; C (v);
283 f6 (2, 0, 0, u.d); v.d = d; C (v);
284 f6 (3, 0, 0, 0, u.d); v.d = d; C (v);
285 f6 (4, 0, 0, 0, 0, u.d); v.d = d; C (v);
286 f6 (5, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
287 f6 (6, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
288 f6 (7, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
289 f6 (8, 0, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
290 f6 (9, 0, 0, 0, 0, 0, 0, 0, 0, 0, u.d); v.d = d; C (v);
291 u.e.a = 1.25;
292 u.e.b = 2.75;
293 u.e.c = -3.5;
294 u.e.d = -2.0;
295 #undef C
296 #define C(x) \
297 do { \
298 if (u.e.a != x.e.a || u.e.b != x.e.b \
299 || u.e.c != x.e.c || u.e.d != x.e.d) __builtin_abort ();\
300 u.e.a++; \
301 u.e.b--; \
302 u.e.c++; \
303 u.e.d--; \
304 } while (0)
305 v.e = f7 (0, u.e); C (v);
306 v.e = f7 (1, 0.0, u.e); C (v);
307 v.e = f7 (2, 0.0, 0.0, u.e); C (v);
308 v.e = f7 (3, 0.0, 0.0, 0.0, u.e); C (v);
309 v.e = f7 (4, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
310 v.e = f7 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
311 v.e = f7 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
312 v.e = f7 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
313 v.e = f7 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
314 v.e = f7 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); C (v);
315 v.f = f8 (0, u.f); C (v);
316 v.f = f8 (1, 0.0, u.f); C (v);
317 v.f = f8 (2, 0.0, 0.0, u.f); C (v);
318 v.f = f8 (3, 0.0, 0.0, 0.0, u.f); C (v);
319 v.f = f8 (4, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
320 v.f = f8 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
321 v.f = f8 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
322 v.f = f8 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
323 v.f = f8 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
324 v.f = f8 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); C (v);
325 f9 (0, u.e); v.e = e; C (v);
326 f9 (1, 0.0, u.e); v.e = e; C (v);
327 f9 (2, 0.0, 0.0, u.e); v.e = e; C (v);
328 f9 (3, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
329 f9 (4, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
330 f9 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
331 f9 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
332 f9 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
333 f9 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
334 f9 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.e); v.e = e; C (v);
335 f10 (0, u.f); v.f = f; C (v);
336 f10 (1, 0.0, u.f); v.f = f; C (v);
337 f10 (2, 0.0, 0.0, u.f); v.f = f; C (v);
338 f10 (3, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
339 f10 (4, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
340 f10 (5, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
341 f10 (6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
342 f10 (7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
343 f10 (8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
344 f10 (9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, u.f); v.f = f; C (v);
345 u.g.a = 9.5;
346 u.g.b = 0x5555555555555555ULL;
347 #undef C
348 #define C(x) \
349 do { \
350 if (u.e.a != x.e.a || u.e.b != x.e.b) __builtin_abort (); \
351 u.e.a++; \
352 u.e.b--; \
353 } while (0)
354 v.g = f11 (0, u.g); C (v);
355 v.g = f11 (1, 0, 0.0, u.g); C (v);
356 v.g = f11 (2, 0, 0.0, 0, 0.0, u.g); C (v);
357 v.g = f11 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
358 v.g = f11 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
359 v.g = f11 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
360 v.g = f11 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
361 v.g = f11 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
362 v.g = f11 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
363 v.g = f11 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); C (v);
364 v.h = f12 (0, u.h); C (v);
365 v.h = f12 (1, 0, 0.0, u.h); C (v);
366 v.h = f12 (2, 0, 0.0, 0, 0.0, u.h); C (v);
367 v.h = f12 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
368 v.h = f12 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
369 v.h = f12 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
370 v.h = f12 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
371 v.h = f12 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
372 v.h = f12 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
373 v.h = f12 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); C (v);
374 f13 (0, u.g); v.g = g; C (v);
375 f13 (1, 0, 0.0, u.g); v.g = g; C (v);
376 f13 (2, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
377 f13 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
378 f13 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
379 f13 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
380 f13 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
381 f13 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
382 f13 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
383 f13 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.g); v.g = g; C (v);
384 f14 (0, u.h); v.h = h; C (v);
385 f14 (1, 0, 0.0, u.h); v.h = h; C (v);
386 f14 (2, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
387 f14 (3, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
388 f14 (4, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
389 f14 (5, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
390 f14 (6, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
391 f14 (7, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
392 f14 (8, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
393 f14 (9, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, u.h); v.h = h; C (v);
394 return 0;
395 }