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  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
      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  }