x86: Tune Skylake, Cannonlake and Icelake as Haswell
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / va-arg-22.c
blob46b8dcbe825e499af470908851fa6a3e92fa8ac0
1 #include <stdarg.h>
3 extern void abort (void);
4 extern void exit (int);
6 void bar (int n, int c)
8 static int lastn = -1, lastc = -1;
10 if (lastn != n)
12 if (lastc != lastn)
13 abort ();
14 lastc = 0;
15 lastn = n;
18 if (c != (char) (lastc ^ (n << 3)))
19 abort ();
20 lastc++;
23 #define D(N) typedef struct { char x[N]; } A##N;
24 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
25 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
26 D(16) D(31) D(32) D(35) D(72)
27 #undef D
29 void foo (int size, ...)
31 #define D(N) A##N a##N;
32 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
33 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
34 D(16) D(31) D(32) D(35) D(72)
35 #undef D
36 va_list ap;
37 int i;
39 if (size != 21)
40 abort ();
41 va_start (ap, size);
42 #define D(N) \
43 a##N = va_arg (ap, typeof (a##N)); \
44 for (i = 0; i < N; i++) \
45 bar (N, a##N.x[i]);
46 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
47 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
48 D(16) D(31) D(32) D(35) D(72)
49 #undef D
50 va_end (ap);
53 int main (void)
55 #define D(N) A##N a##N;
56 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
57 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
58 D(16) D(31) D(32) D(35) D(72)
59 #undef D
60 int i;
62 #define D(N) \
63 for (i = 0; i < N; i++) \
64 a##N.x[i] = i ^ (N << 3);
65 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
66 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
67 D(16) D(31) D(32) D(35) D(72)
68 #undef D
70 foo (21
71 #define D(N) , a##N
72 D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
73 D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
74 D(16) D(31) D(32) D(35) D(72)
75 #undef D
77 exit (0);