190223Sdes/* { dg-do run { target { ! { ia32 } } } } */
290223Sdes/* { dg-options "-O2" } */
390223Sdes
490223Sdes#include <stdarg.h>
590223Sdes#include <assert.h>
6149231Syar
7149231Syarint n1 = 30;
890223Sdesdouble n2 = 324;
990223Sdesdouble n3 = 39494.94;
1090223Sdesdouble n4 = 407;
1190223Sdesdouble n5 = 32.304;
1290223Sdesdouble n6 = 394.14;
1390223Sdesdouble n7 = 4.07;
1490223Sdesdouble n8 = 32.4;
1590223Sdesdouble n9 = 314.194;
16197428Skibdouble n10 = 0.1407;
1790223Sdes
1890223Sdesint e1;
1990223Sdesdouble e2;
2090223Sdesdouble e3;
2190223Sdesdouble e4;
2290223Sdesdouble e5;
2390223Sdesdouble e6;
2490223Sdesdouble e7;
2590223Sdesdouble e8;
2690223Sdesdouble e9;
2790223Sdesdouble e10;
2890223Sdes
2990223Sdesstatic void
3090223Sdes__attribute__((noinline))
31149234Syarfoo (va_list va_arglist)
32148960Syar{
33148960Syar  e2 = va_arg (va_arglist, double);
34149234Syar  e3 = va_arg (va_arglist, double);
35149234Syar  e4 = va_arg (va_arglist, double);
36162711Sru  e5 = va_arg (va_arglist, double);
37148960Syar  e6 = va_arg (va_arglist, double);
38148960Syar  e7 = va_arg (va_arglist, double);
39149234Syar  e8 = va_arg (va_arglist, double);
40148960Syar  e9 = va_arg (va_arglist, double);
41149234Syar  e10 = va_arg (va_arglist, double);
42148960Syar}
4390223Sdes
44static void
45__attribute__((noinline))
46test (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
55int
56main ()
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}
71