/* PR target/64979 */ #include void __attribute__((noinline, noclone)) bar (int x, va_list *ap) { if (ap) { int i; for (i = 0; i < 10; i++) if (i != va_arg (*ap, int)) __builtin_abort (); if (va_arg (*ap, double) != 0.5) __builtin_abort (); } } void __attribute__((noinline, noclone)) foo (int x, ...) { va_list ap; int n; va_start (ap, x); n = va_arg (ap, int); bar (x, (va_list *) ((n == 0) ? ((void *) 0) : &ap)); va_end (ap); } int main () { foo (100, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0.5); return 0; }