OSDN Git Service

PR testsuite/37628
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / 20071213-1.c
1 /* PR target/34281 */
2
3 #include <stdarg.h>
4
5 extern void abort (void);
6
7 void
8 h (int x, va_list ap)
9 {
10   switch (x)
11     {
12     case 1:
13       if (va_arg (ap, int) != 3 || va_arg (ap, int) != 4)
14         abort ();
15       return;
16     case 5:
17       if (va_arg (ap, int) != 9 || va_arg (ap, int) != 10)
18         abort ();
19       return;
20     default:
21       abort ();
22     }
23 }
24
25 void
26 f1 (int i, long long int j, ...)
27 {
28   va_list ap;
29   va_start (ap, j);
30   h (i, ap);
31   if (i != 1 || j != 2)
32     abort ();
33   va_end (ap);
34 }
35
36 void
37 f2 (int i, int j, int k, long long int l, ...)
38 {
39   va_list ap;
40   va_start (ap, l);
41   h (i, ap);
42   if (i != 5 || j != 6 || k != 7 || l != 8)
43     abort ();
44   va_end (ap);
45 }
46
47 int
48 main ()
49 {
50   f1 (1, 2, 3, 4);
51   f2 (5, 6, 7, 8, 9, 10);
52   return 0;
53 }