1 /* { dg-do run { target { ! ia32 } } } */
2 /* { dg-options "-O2" } */
3 
4 #include <stdarg.h>
5 #include <assert.h>
6 
7 int n1 = 30;
8 double n2 = 324;
9 double n3 = 39494.94;
10 double n4 = 407;
11 double n5 = 32.304;
12 double n6 = 394.14;
13 double n7 = 4.07;
14 double n8 = 32.4;
15 double n9 = 314.194;
16 double n10 = 0.1407;
17 
18 int e1;
19 double e2;
20 double e3;
21 double e4;
22 double e5;
23 double e6;
24 double e7;
25 double e8;
26 double e9;
27 double e10;
28 
29 static void
30 __attribute__((noinline))
test(int a1,...)31 test (int a1, ...)
32 {
33   e1 = a1;
34   va_list va_arglist;
35   va_start (va_arglist, a1);
36   e2 = va_arg (va_arglist, double);
37   e3 = va_arg (va_arglist, double);
38   e4 = va_arg (va_arglist, double);
39   e5 = va_arg (va_arglist, double);
40   e6 = va_arg (va_arglist, double);
41   e7 = va_arg (va_arglist, double);
42   e8 = va_arg (va_arglist, double);
43   e9 = va_arg (va_arglist, double);
44   e10 = va_arg (va_arglist, double);
45   va_end (va_arglist);
46 }
47 
48 int
main()49 main ()
50 {
51   test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10);
52   assert (n1 == e1);
53   assert (n2 == e2);
54   assert (n3 == e3);
55   assert (n4 == e4);
56   assert (n5 == e5);
57   assert (n6 == e6);
58   assert (n7 == e7);
59   assert (n8 == e8);
60   assert (n9 == e9);
61   assert (n10 == e10);
62   return 0;
63 }
64