OSDN Git Service

* gcc.c-torture/execute/990628-1.c: Tweak to work on targets
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / strct-varg-1.c
1 #ifdef NO_VARARGS
2 #include <stdarg.h>
3 #define va_alist int x_attr, ...
4 #define va_dcl
5 #else
6 #include <varargs.h>
7 #endif
8
9 struct s { int x, y; };
10
11 f (va_alist)
12      va_dcl
13 {
14   struct s va_values;
15   va_list va;
16   int attr;
17   int i;
18
19 #ifdef NO_VARARGS
20   va_start (va, x_attr);
21   attr = x_attr;
22 #else
23   va_start (va);
24   attr = va_arg (va, int);
25 #endif
26
27   if (attr != 2)
28     abort ();
29
30   va_values = va_arg (va, struct s);
31   if (va_values.x != 0xaaaa || va_values.y != 0x5555)
32     abort ();
33
34   attr = va_arg (va, int);
35   if (attr != 3)
36     abort ();
37
38   va_values = va_arg (va, struct s);
39   if (va_values.x != 0xffff || va_values.y != 0x1111)
40     abort ();
41
42   va_end (va);
43 }
44
45 main ()
46 {
47   struct s a, b;
48
49   a.x = 0xaaaa;
50   a.y = 0x5555;
51   b.x = 0xffff;
52   b.y = 0x1111;
53
54   f (2, a, 3, b);
55   exit (0);
56 }