/* { dg-do compile } */
/* { dg-options "-O2 -fgnu89-inline" } */

int bar (int, const char *, int, ...);
int baz (int, const char *, long int);

int
f1 (int x, ...)
{
  return bar (5, "", 6, __builtin_va_arg_pack ());	/* { dg-error "invalid use of" } */
}

extern inline __attribute__((always_inline)) int
f2 (int y, ...)
{
  return bar (y, "", __builtin_va_arg_pack ());		/* { dg-error "invalid use of" } */
}

extern inline __attribute__((always_inline)) int
f3 (int y, ...)
{
  return bar (y, "", 5, __builtin_va_arg_pack ());
}

extern inline __attribute__((always_inline)) int
f4 (int y, ...)
{
  return bar (y, "", 4, __builtin_va_arg_pack (), 6);	/* { dg-error "invalid use of" } */
}

extern inline __attribute__((always_inline)) int
f5 (int y, ...)
{
  return baz (y, "", __builtin_va_arg_pack ());		/* { dg-error "invalid use of" } */
}

extern inline __attribute__((always_inline)) int
f6 (int y, ...)
{
  return __builtin_va_arg_pack ();			/* { dg-error "invalid use of" } */
}

int
test (void)
{
  int a = f2 (5, "a", 6);
  a += f3 (6, "ab", 17LL);
  a += f4 (7, 1, 2, 3);
  a += f5 (8, 7L);
  a += f6 (9);
  return a;
}
