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

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

int n1 = 30;
int n2 = 324;
void *n3 = (void *) &n2;
int n4 = 407;

int e1;
int e2;
void *e3;
int e4;

static void
__attribute__((noinline))
foo (va_list va_arglist)
{
  e2 = va_arg (va_arglist, int);
  e3 = va_arg (va_arglist, void *);
  e4 = va_arg (va_arglist, int);
}

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);
  assert (n1 == e1);
  assert (n2 == e2);
  assert (n3 == e3);
  assert (n4 == e4);
  return 0;
}
