* gcc.dg/stack-check-5.c: Skip with -fstack-protector.
[official-gcc.git] / gcc / testsuite / gcc.dg / compat / struct-layout-1_y2.h
blob02a341e1ccf2436055adde289c1bc945dc7e170a
1 #undef F
2 #undef N
3 #undef B
4 #undef TX
6 #ifdef SKIP_VA
7 const int test_va = 0;
8 #else
9 const int test_va = 1;
10 #endif
12 #define F(n, x, v, w) \
13 if (p->x != arg.x) FAIL (n, 74);
14 #define N(n, x)
15 #define B(n, x, v, w) \
16 if (p->x != arg.x) FAIL (n, 74);
17 #define TX(n, type, attrs, fields, ops) \
18 void \
19 check##n##va (int z, ...) \
20 { \
21 type S##n arg, *p; \
22 va_list ap; \
23 int i; \
25 if (test_va) \
26 { \
27 va_start (ap, z); \
28 for (i = 0; i < 5; ++i) \
29 { \
30 p = NULL; \
31 switch ((z << 4) | i) \
32 { \
33 case 0x10: \
34 if (va_arg (ap, double) != 1.0) \
35 FAIL (n, 70); \
36 break; \
37 case 0x12: \
38 if (va_arg (ap, long long) != 2LL) \
39 FAIL (n, 71); \
40 break; \
41 case 0x22: \
42 if (va_arg (ap, long double) != 2.0L) \
43 FAIL (n, 72); \
44 break; \
45 case 0x11: \
46 case 0x20: \
47 case 0x21: \
48 case 0x24: \
49 p = &s##n; \
50 arg = va_arg (ap, type S##n); \
51 break; \
52 case 0x13: \
53 case 0x14: \
54 case 0x23: \
55 p = &a##n[2]; \
56 arg = va_arg (ap, type S##n); \
57 break; \
58 default: \
59 FAIL (n, 73); \
60 break; \
61 } \
62 if (p) \
63 { \
64 ops \
65 } \
66 } \
67 va_end (ap); \
68 } \