/* { dg-do run { target { ! ia32 } } } */
/* { dg-options "-O2" } */

#include <stdarg.h>
#include <assert.h>

int n1 = 30;
double n2 = 324;
double n3 = 39494.94;
double n4 = 407;
double n5 = 32.304;
double n6 = 394.14;
double n7 = 4.07;
double n8 = 32.4;
double n9 = 314.194;
double n10 = 0.1407;

int e1;
double e2;
double e3;
double e4;
double e5;
double e6;
double e7;
double e8;
double e9;
double e10;

static void
__attribute__((noinline))
foo (va_list va_arglist)
{
  e2 = va_arg (va_arglist, double);
  e3 = va_arg (va_arglist, double);
  e4 = va_arg (va_arglist, double);
  e5 = va_arg (va_arglist, double);
  e6 = va_arg (va_arglist, double);
  e7 = va_arg (va_arglist, double);
  e8 = va_arg (va_arglist, double);
  e9 = va_arg (va_arglist, double);
  e10 = va_arg (va_arglist, double);
}

static void
__attribute__((noinline))
test (int a1, ...)
{
  va_list va_arglist;
  e1 = a1;
  va_start (va_arglist, a1);
  foo (va_arglist);
  va_end (va_arglist);
}

int
main ()
{
  test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10);
  assert (n1 == e1);
  assert (n2 == e2);
  assert (n3 == e3);
  assert (n4 == e4);
  assert (n5 == e5);
  assert (n6 == e6);
  assert (n7 == e7);
  assert (n8 == e8);
  assert (n9 == e9);
  assert (n10 == e10);
  return 0;
}
