OSDN Git Service

2011-08-19 Andrew Stubbs <ams@codesourcery.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / amd64-abi-6.c
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))
31 foo (va_list va_arglist)
32 {
33   e2 = va_arg (va_arglist, double);
34   e3 = va_arg (va_arglist, double);
35   e4 = va_arg (va_arglist, double);
36   e5 = va_arg (va_arglist, double);
37   e6 = va_arg (va_arglist, double);
38   e7 = va_arg (va_arglist, double);
39   e8 = va_arg (va_arglist, double);
40   e9 = va_arg (va_arglist, double);
41   e10 = va_arg (va_arglist, double);
42 }
43
44 static void
45 __attribute__((noinline))
46 test (int a1, ...)
47 {
48   va_list va_arglist;
49   e1 = a1;
50   va_start (va_arglist, a1);
51   foo (va_arglist);
52   va_end (va_arglist);
53 }
54
55 int
56 main ()
57 {
58   test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10);
59   assert (n1 == e1);
60   assert (n2 == e2);
61   assert (n3 == e3);
62   assert (n4 == e4);
63   assert (n5 == e5);
64   assert (n6 == e6);
65   assert (n7 == e7);
66   assert (n8 == e8);
67   assert (n9 == e9);
68   assert (n10 == e10);
69   return 0;
70 }