1 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
2 // { dg-options "-O2" }
3 
4 #include <stdarg.h>
5 
6 struct dummy0 { };
7 struct dummy1 { };
8 struct dummy : dummy0, dummy1 { };
9 
10 void
test(struct dummy a,int m,...)11 test (struct dummy a, int m, ...)
12 {
13   va_list va_arglist;
14   int i;
15   int count = 0;
16 
17   if (m == 0)
18     count++;
19   va_start (va_arglist, m);
20   i = va_arg (va_arglist, int);
21   if (i == 1)
22     count++;
23   i = va_arg (va_arglist, int);
24   if (i == 2)
25   i = va_arg (va_arglist, int);
26     count++;
27   if (i == 3)
28     count++;
29   i = va_arg (va_arglist, int);
30   if (i == 4)
31     count++;
32   i = va_arg (va_arglist, int);
33   if (i == 5)
34     count++;
35   i = va_arg (va_arglist, int);
36   if (i == 6)
37     count++;
38   va_end (va_arglist);
39   if (count != 7)
40     __builtin_abort ();
41 }
42 
43 struct dummy a0;
44 
45 int
main()46 main ()
47 {
48   test (a0, 0, 1, 2, 3, 4, 5, 6);
49   return 0;
50 }
51