Merge from mainline
[official-gcc.git] / gcc / testsuite / consistency.vlad / layout / minimal-struct-size-align.c
blob131ea4d41d8a64901eb3c15b50d0a1172d03b32a
1 #include <stdio.h>
2 #include <stddef.h>
4 static struct {} s0;
5 static union {} u0;
6 static struct {int :0;} s1;
7 static union {int :0;} u1;
8 static struct {char m;} s2;
9 static union {char m;} u2;
10 static struct {short m;} s3;
11 static union {short m;} u3;
12 static struct {int m;} s4;
13 static union {int m;} u4;
14 static struct {long m;} s5;
15 static union {long m;} u5;
16 static struct {long long m;} s6;
17 static union {long long m;} u6;
18 static struct {char * m;} s7;
19 static union {char * m;} u7;
20 static struct {float m;} s8;
21 static union {float m;} u8;
22 static struct {double m;} s9;
23 static union {double m;} u9;
24 static struct {long double m;} s10;
25 static union {long double m;} u10;
26 static struct {ptrdiff_t m;} s11;
27 static union {ptrdiff_t m;} u11;
28 static struct {size_t m;} s12;
29 static union {size_t m;} u12;
30 static struct {wchar_t m;} s13;
31 static union {wchar_t m;} u13;
32 static struct {struct {char m;}m;} s14;
33 static union {struct {char m;}m;} u14;
34 static struct {union {char m;}m;} s15;
35 static union {union {char m;}m;} u15;
36 static struct {struct {short m;}m;} s16;
37 static union {struct {short m;}m;} u16;
38 static struct {union {short m;}m;} s17;
39 static union {union {short m;}m;} u17;
40 static struct {struct {int m;}m;} s18;
41 static union {struct {int m;}m;} u18;
42 static struct {union {int m;}m;} s19;
43 static union {union {int m;}m;} u19;
44 static struct {struct {long m;}m;} s20;
45 static union {struct {long m;}m;} u20;
46 static struct {union {long m;}m;} s21;
47 static union {union {long m;}m;} u21;
48 static struct {struct {long long m;}m;} s22;
49 static union {struct {long long m;}m;} u22;
50 static struct {union {long long m;}m;} s23;
51 static union {union {long long m;}m;} u23;
52 static struct {struct {char * m;}m;} s24;
53 static union {struct {char * m;}m;} u24;
54 static struct {union {char * m;}m;} s25;
55 static union {union {char * m;}m;} u25;
56 static struct {struct {float m;}m;} s26;
57 static union {struct {float m;}m;} u26;
58 static struct {union {float m;}m;} s27;
59 static union {union {float m;}m;} u27;
60 static struct {struct {double m;}m;} s28;
61 static union {struct {double m;}m;} u28;
62 static struct {union {double m;}m;} s29;
63 static union {union {double m;}m;} u29;
64 static struct {struct {long double m;}m;} s30;
65 static union {struct {long double m;}m;} u30;
66 static struct {union {long double m;}m;} s31;
67 static union {union {long double m;}m;} u31;
68 static struct {struct {ptrdiff_t m;}m;} s32;
69 static union {struct {ptrdiff_t m;}m;} u32;
70 static struct {union {ptrdiff_t m;}m;} s33;
71 static union {union {ptrdiff_t m;}m;} u33;
72 static struct {struct {size_t m;}m;} s34;
73 static union {struct {size_t m;}m;} u34;
74 static struct {union {size_t m;}m;} s35;
75 static union {union {size_t m;}m;} u35;
76 static struct {struct {wchar_t m;}m;} s36;
77 static union {struct {wchar_t m;}m;} u36;
78 static struct {union {wchar_t m;}m;} s37;
79 static union {union {wchar_t m;}m;} u37;
80 static struct {struct {}m;} s38;
81 static union {struct {}m;} u38;
82 static struct {union {}m;} s39;
83 static union {union {}m;} u39;
84 static struct {struct {int :0;}m;} s40;
85 static union {struct {int :0;}m;} u40;
86 static struct {union {int :0;}m;} s41;
87 static union {union {int :0;}m;} u41;
88 static struct {char m [0];} s42;
89 static union {char m [0];} u42;
90 static struct {short m [0];} s43;
91 static union {short m [0];} u43;
92 static struct {int m [0];} s44;
93 static union {int m [0];} u44;
94 static struct {long m [0];} s45;
95 static union {long m [0];} u45;
96 static struct {long long m [0];} s46;
97 static union {long long m [0];} u46;
98 static struct {char * m [0];} s47;
99 static union {char * m [0];} u47;
100 static struct {float m [0];} s48;
101 static union {float m [0];} u48;
102 static struct {double m [0];} s49;
103 static union {double m [0];} u49;
104 static struct {long double m [0];} s50;
105 static union {long double m [0];} u50;
106 static struct {ptrdiff_t m [0];} s51;
107 static union {ptrdiff_t m [0];} u51;
108 static struct {size_t m [0];} s52;
109 static union {size_t m [0];} u52;
110 static struct {wchar_t m [0];} s53;
111 static union {wchar_t m [0];} u53;
112 int main (void) {
113 int min_size = 0;
114 int min_align = 0;
115 printf ("+++Minimal struct size/alignment:\n");
116 if (min_size > sizeof (s0))
117 min_size = sizeof (s0);
118 if (min_align > __alignof__ (s0))
119 min_align = __alignof__ (s0);
120 if (min_size > sizeof (u0))
121 min_size = sizeof (u0);
122 if (min_align > __alignof__ (u0))
123 min_align = __alignof__ (u0);
124 if (min_size > sizeof (s1))
125 min_size = sizeof (s1);
126 if (min_align > __alignof__ (s1))
127 min_align = __alignof__ (s1);
128 if (min_size > sizeof (u1))
129 min_size = sizeof (u1);
130 if (min_align > __alignof__ (u1))
131 min_align = __alignof__ (u1);
132 if (min_size > sizeof (s2))
133 min_size = sizeof (s2);
134 if (min_align > __alignof__ (s2))
135 min_align = __alignof__ (s2);
136 if (min_size > sizeof (u2))
137 min_size = sizeof (u2);
138 if (min_align > __alignof__ (u2))
139 min_align = __alignof__ (u2);
140 if (min_size > sizeof (s3))
141 min_size = sizeof (s3);
142 if (min_align > __alignof__ (s3))
143 min_align = __alignof__ (s3);
144 if (min_size > sizeof (u3))
145 min_size = sizeof (u3);
146 if (min_align > __alignof__ (u3))
147 min_align = __alignof__ (u3);
148 if (min_size > sizeof (s4))
149 min_size = sizeof (s4);
150 if (min_align > __alignof__ (s4))
151 min_align = __alignof__ (s4);
152 if (min_size > sizeof (u4))
153 min_size = sizeof (u4);
154 if (min_align > __alignof__ (u4))
155 min_align = __alignof__ (u4);
156 if (min_size > sizeof (s5))
157 min_size = sizeof (s5);
158 if (min_align > __alignof__ (s5))
159 min_align = __alignof__ (s5);
160 if (min_size > sizeof (u5))
161 min_size = sizeof (u5);
162 if (min_align > __alignof__ (u5))
163 min_align = __alignof__ (u5);
164 if (min_size > sizeof (s6))
165 min_size = sizeof (s6);
166 if (min_align > __alignof__ (s6))
167 min_align = __alignof__ (s6);
168 if (min_size > sizeof (u6))
169 min_size = sizeof (u6);
170 if (min_align > __alignof__ (u6))
171 min_align = __alignof__ (u6);
172 if (min_size > sizeof (s7))
173 min_size = sizeof (s7);
174 if (min_align > __alignof__ (s7))
175 min_align = __alignof__ (s7);
176 if (min_size > sizeof (u7))
177 min_size = sizeof (u7);
178 if (min_align > __alignof__ (u7))
179 min_align = __alignof__ (u7);
180 if (min_size > sizeof (s8))
181 min_size = sizeof (s8);
182 if (min_align > __alignof__ (s8))
183 min_align = __alignof__ (s8);
184 if (min_size > sizeof (u8))
185 min_size = sizeof (u8);
186 if (min_align > __alignof__ (u8))
187 min_align = __alignof__ (u8);
188 if (min_size > sizeof (s9))
189 min_size = sizeof (s9);
190 if (min_align > __alignof__ (s9))
191 min_align = __alignof__ (s9);
192 if (min_size > sizeof (u9))
193 min_size = sizeof (u9);
194 if (min_align > __alignof__ (u9))
195 min_align = __alignof__ (u9);
196 if (min_size > sizeof (s10))
197 min_size = sizeof (s10);
198 if (min_align > __alignof__ (s10))
199 min_align = __alignof__ (s10);
200 if (min_size > sizeof (u10))
201 min_size = sizeof (u10);
202 if (min_align > __alignof__ (u10))
203 min_align = __alignof__ (u10);
204 if (min_size > sizeof (s11))
205 min_size = sizeof (s11);
206 if (min_align > __alignof__ (s11))
207 min_align = __alignof__ (s11);
208 if (min_size > sizeof (u11))
209 min_size = sizeof (u11);
210 if (min_align > __alignof__ (u11))
211 min_align = __alignof__ (u11);
212 if (min_size > sizeof (s12))
213 min_size = sizeof (s12);
214 if (min_align > __alignof__ (s12))
215 min_align = __alignof__ (s12);
216 if (min_size > sizeof (u12))
217 min_size = sizeof (u12);
218 if (min_align > __alignof__ (u12))
219 min_align = __alignof__ (u12);
220 if (min_size > sizeof (s13))
221 min_size = sizeof (s13);
222 if (min_align > __alignof__ (s13))
223 min_align = __alignof__ (s13);
224 if (min_size > sizeof (u13))
225 min_size = sizeof (u13);
226 if (min_align > __alignof__ (u13))
227 min_align = __alignof__ (u13);
228 if (min_size > sizeof (s14))
229 min_size = sizeof (s14);
230 if (min_align > __alignof__ (s14))
231 min_align = __alignof__ (s14);
232 if (min_size > sizeof (u14))
233 min_size = sizeof (u14);
234 if (min_align > __alignof__ (u14))
235 min_align = __alignof__ (u14);
236 if (min_size > sizeof (s15))
237 min_size = sizeof (s15);
238 if (min_align > __alignof__ (s15))
239 min_align = __alignof__ (s15);
240 if (min_size > sizeof (u15))
241 min_size = sizeof (u15);
242 if (min_align > __alignof__ (u15))
243 min_align = __alignof__ (u15);
244 if (min_size > sizeof (s16))
245 min_size = sizeof (s16);
246 if (min_align > __alignof__ (s16))
247 min_align = __alignof__ (s16);
248 if (min_size > sizeof (u16))
249 min_size = sizeof (u16);
250 if (min_align > __alignof__ (u16))
251 min_align = __alignof__ (u16);
252 if (min_size > sizeof (s17))
253 min_size = sizeof (s17);
254 if (min_align > __alignof__ (s17))
255 min_align = __alignof__ (s17);
256 if (min_size > sizeof (u17))
257 min_size = sizeof (u17);
258 if (min_align > __alignof__ (u17))
259 min_align = __alignof__ (u17);
260 if (min_size > sizeof (s18))
261 min_size = sizeof (s18);
262 if (min_align > __alignof__ (s18))
263 min_align = __alignof__ (s18);
264 if (min_size > sizeof (u18))
265 min_size = sizeof (u18);
266 if (min_align > __alignof__ (u18))
267 min_align = __alignof__ (u18);
268 if (min_size > sizeof (s19))
269 min_size = sizeof (s19);
270 if (min_align > __alignof__ (s19))
271 min_align = __alignof__ (s19);
272 if (min_size > sizeof (u19))
273 min_size = sizeof (u19);
274 if (min_align > __alignof__ (u19))
275 min_align = __alignof__ (u19);
276 if (min_size > sizeof (s20))
277 min_size = sizeof (s20);
278 if (min_align > __alignof__ (s20))
279 min_align = __alignof__ (s20);
280 if (min_size > sizeof (u20))
281 min_size = sizeof (u20);
282 if (min_align > __alignof__ (u20))
283 min_align = __alignof__ (u20);
284 if (min_size > sizeof (s21))
285 min_size = sizeof (s21);
286 if (min_align > __alignof__ (s21))
287 min_align = __alignof__ (s21);
288 if (min_size > sizeof (u21))
289 min_size = sizeof (u21);
290 if (min_align > __alignof__ (u21))
291 min_align = __alignof__ (u21);
292 if (min_size > sizeof (s22))
293 min_size = sizeof (s22);
294 if (min_align > __alignof__ (s22))
295 min_align = __alignof__ (s22);
296 if (min_size > sizeof (u22))
297 min_size = sizeof (u22);
298 if (min_align > __alignof__ (u22))
299 min_align = __alignof__ (u22);
300 if (min_size > sizeof (s23))
301 min_size = sizeof (s23);
302 if (min_align > __alignof__ (s23))
303 min_align = __alignof__ (s23);
304 if (min_size > sizeof (u23))
305 min_size = sizeof (u23);
306 if (min_align > __alignof__ (u23))
307 min_align = __alignof__ (u23);
308 if (min_size > sizeof (s24))
309 min_size = sizeof (s24);
310 if (min_align > __alignof__ (s24))
311 min_align = __alignof__ (s24);
312 if (min_size > sizeof (u24))
313 min_size = sizeof (u24);
314 if (min_align > __alignof__ (u24))
315 min_align = __alignof__ (u24);
316 if (min_size > sizeof (s25))
317 min_size = sizeof (s25);
318 if (min_align > __alignof__ (s25))
319 min_align = __alignof__ (s25);
320 if (min_size > sizeof (u25))
321 min_size = sizeof (u25);
322 if (min_align > __alignof__ (u25))
323 min_align = __alignof__ (u25);
324 if (min_size > sizeof (s26))
325 min_size = sizeof (s26);
326 if (min_align > __alignof__ (s26))
327 min_align = __alignof__ (s26);
328 if (min_size > sizeof (u26))
329 min_size = sizeof (u26);
330 if (min_align > __alignof__ (u26))
331 min_align = __alignof__ (u26);
332 if (min_size > sizeof (s27))
333 min_size = sizeof (s27);
334 if (min_align > __alignof__ (s27))
335 min_align = __alignof__ (s27);
336 if (min_size > sizeof (u27))
337 min_size = sizeof (u27);
338 if (min_align > __alignof__ (u27))
339 min_align = __alignof__ (u27);
340 if (min_size > sizeof (s28))
341 min_size = sizeof (s28);
342 if (min_align > __alignof__ (s28))
343 min_align = __alignof__ (s28);
344 if (min_size > sizeof (u28))
345 min_size = sizeof (u28);
346 if (min_align > __alignof__ (u28))
347 min_align = __alignof__ (u28);
348 if (min_size > sizeof (s29))
349 min_size = sizeof (s29);
350 if (min_align > __alignof__ (s29))
351 min_align = __alignof__ (s29);
352 if (min_size > sizeof (u29))
353 min_size = sizeof (u29);
354 if (min_align > __alignof__ (u29))
355 min_align = __alignof__ (u29);
356 if (min_size > sizeof (s30))
357 min_size = sizeof (s30);
358 if (min_align > __alignof__ (s30))
359 min_align = __alignof__ (s30);
360 if (min_size > sizeof (u30))
361 min_size = sizeof (u30);
362 if (min_align > __alignof__ (u30))
363 min_align = __alignof__ (u30);
364 if (min_size > sizeof (s31))
365 min_size = sizeof (s31);
366 if (min_align > __alignof__ (s31))
367 min_align = __alignof__ (s31);
368 if (min_size > sizeof (u31))
369 min_size = sizeof (u31);
370 if (min_align > __alignof__ (u31))
371 min_align = __alignof__ (u31);
372 if (min_size > sizeof (s32))
373 min_size = sizeof (s32);
374 if (min_align > __alignof__ (s32))
375 min_align = __alignof__ (s32);
376 if (min_size > sizeof (u32))
377 min_size = sizeof (u32);
378 if (min_align > __alignof__ (u32))
379 min_align = __alignof__ (u32);
380 if (min_size > sizeof (s33))
381 min_size = sizeof (s33);
382 if (min_align > __alignof__ (s33))
383 min_align = __alignof__ (s33);
384 if (min_size > sizeof (u33))
385 min_size = sizeof (u33);
386 if (min_align > __alignof__ (u33))
387 min_align = __alignof__ (u33);
388 if (min_size > sizeof (s34))
389 min_size = sizeof (s34);
390 if (min_align > __alignof__ (s34))
391 min_align = __alignof__ (s34);
392 if (min_size > sizeof (u34))
393 min_size = sizeof (u34);
394 if (min_align > __alignof__ (u34))
395 min_align = __alignof__ (u34);
396 if (min_size > sizeof (s35))
397 min_size = sizeof (s35);
398 if (min_align > __alignof__ (s35))
399 min_align = __alignof__ (s35);
400 if (min_size > sizeof (u35))
401 min_size = sizeof (u35);
402 if (min_align > __alignof__ (u35))
403 min_align = __alignof__ (u35);
404 if (min_size > sizeof (s36))
405 min_size = sizeof (s36);
406 if (min_align > __alignof__ (s36))
407 min_align = __alignof__ (s36);
408 if (min_size > sizeof (u36))
409 min_size = sizeof (u36);
410 if (min_align > __alignof__ (u36))
411 min_align = __alignof__ (u36);
412 if (min_size > sizeof (s37))
413 min_size = sizeof (s37);
414 if (min_align > __alignof__ (s37))
415 min_align = __alignof__ (s37);
416 if (min_size > sizeof (u37))
417 min_size = sizeof (u37);
418 if (min_align > __alignof__ (u37))
419 min_align = __alignof__ (u37);
420 if (min_size > sizeof (s38))
421 min_size = sizeof (s38);
422 if (min_align > __alignof__ (s38))
423 min_align = __alignof__ (s38);
424 if (min_size > sizeof (u38))
425 min_size = sizeof (u38);
426 if (min_align > __alignof__ (u38))
427 min_align = __alignof__ (u38);
428 if (min_size > sizeof (s39))
429 min_size = sizeof (s39);
430 if (min_align > __alignof__ (s39))
431 min_align = __alignof__ (s39);
432 if (min_size > sizeof (u39))
433 min_size = sizeof (u39);
434 if (min_align > __alignof__ (u39))
435 min_align = __alignof__ (u39);
436 if (min_size > sizeof (s40))
437 min_size = sizeof (s40);
438 if (min_align > __alignof__ (s40))
439 min_align = __alignof__ (s40);
440 if (min_size > sizeof (u40))
441 min_size = sizeof (u40);
442 if (min_align > __alignof__ (u40))
443 min_align = __alignof__ (u40);
444 if (min_size > sizeof (s41))
445 min_size = sizeof (s41);
446 if (min_align > __alignof__ (s41))
447 min_align = __alignof__ (s41);
448 if (min_size > sizeof (u41))
449 min_size = sizeof (u41);
450 if (min_align > __alignof__ (u41))
451 min_align = __alignof__ (u41);
452 if (min_size > sizeof (s42))
453 min_size = sizeof (s42);
454 if (min_align > __alignof__ (s42))
455 min_align = __alignof__ (s42);
456 if (min_size > sizeof (u42))
457 min_size = sizeof (u42);
458 if (min_align > __alignof__ (u42))
459 min_align = __alignof__ (u42);
460 if (min_size > sizeof (s43))
461 min_size = sizeof (s43);
462 if (min_align > __alignof__ (s43))
463 min_align = __alignof__ (s43);
464 if (min_size > sizeof (u43))
465 min_size = sizeof (u43);
466 if (min_align > __alignof__ (u43))
467 min_align = __alignof__ (u43);
468 if (min_size > sizeof (s44))
469 min_size = sizeof (s44);
470 if (min_align > __alignof__ (s44))
471 min_align = __alignof__ (s44);
472 if (min_size > sizeof (u44))
473 min_size = sizeof (u44);
474 if (min_align > __alignof__ (u44))
475 min_align = __alignof__ (u44);
476 if (min_size > sizeof (s45))
477 min_size = sizeof (s45);
478 if (min_align > __alignof__ (s45))
479 min_align = __alignof__ (s45);
480 if (min_size > sizeof (u45))
481 min_size = sizeof (u45);
482 if (min_align > __alignof__ (u45))
483 min_align = __alignof__ (u45);
484 if (min_size > sizeof (s46))
485 min_size = sizeof (s46);
486 if (min_align > __alignof__ (s46))
487 min_align = __alignof__ (s46);
488 if (min_size > sizeof (u46))
489 min_size = sizeof (u46);
490 if (min_align > __alignof__ (u46))
491 min_align = __alignof__ (u46);
492 if (min_size > sizeof (s47))
493 min_size = sizeof (s47);
494 if (min_align > __alignof__ (s47))
495 min_align = __alignof__ (s47);
496 if (min_size > sizeof (u47))
497 min_size = sizeof (u47);
498 if (min_align > __alignof__ (u47))
499 min_align = __alignof__ (u47);
500 if (min_size > sizeof (s48))
501 min_size = sizeof (s48);
502 if (min_align > __alignof__ (s48))
503 min_align = __alignof__ (s48);
504 if (min_size > sizeof (u48))
505 min_size = sizeof (u48);
506 if (min_align > __alignof__ (u48))
507 min_align = __alignof__ (u48);
508 if (min_size > sizeof (s49))
509 min_size = sizeof (s49);
510 if (min_align > __alignof__ (s49))
511 min_align = __alignof__ (s49);
512 if (min_size > sizeof (u49))
513 min_size = sizeof (u49);
514 if (min_align > __alignof__ (u49))
515 min_align = __alignof__ (u49);
516 if (min_size > sizeof (s50))
517 min_size = sizeof (s50);
518 if (min_align > __alignof__ (s50))
519 min_align = __alignof__ (s50);
520 if (min_size > sizeof (u50))
521 min_size = sizeof (u50);
522 if (min_align > __alignof__ (u50))
523 min_align = __alignof__ (u50);
524 if (min_size > sizeof (s51))
525 min_size = sizeof (s51);
526 if (min_align > __alignof__ (s51))
527 min_align = __alignof__ (s51);
528 if (min_size > sizeof (u51))
529 min_size = sizeof (u51);
530 if (min_align > __alignof__ (u51))
531 min_align = __alignof__ (u51);
532 if (min_size > sizeof (s52))
533 min_size = sizeof (s52);
534 if (min_align > __alignof__ (s52))
535 min_align = __alignof__ (s52);
536 if (min_size > sizeof (u52))
537 min_size = sizeof (u52);
538 if (min_align > __alignof__ (u52))
539 min_align = __alignof__ (u52);
540 if (min_size > sizeof (s53))
541 min_size = sizeof (s53);
542 if (min_align > __alignof__ (s53))
543 min_align = __alignof__ (s53);
544 if (min_size > sizeof (u53))
545 min_size = sizeof (u53);
546 if (min_align > __alignof__ (u53))
547 min_align = __alignof__ (u53);
548 printf ("min struct/union size =%d\n", min_size);
549 printf ("min struct/union align=%d\n", min_align);
550 return 0;