/* Undefined behavior from a call to va_arg with a type other than that of the argument passed (in particular, with a type such as "float" that can never be the type of an argument passed through "...") does not appear until after the va_list expression is evaluated. PR 38483. */ /* Origin: Joseph Myers */ #include extern void exit (int); extern void abort (void); va_list ap; float f; va_list * foo (void) { exit (0); return ≈ } void bar (int i, ...) { va_start (ap, i); f = va_arg (*foo (), float); va_end (ap); } int main (void) { bar (1, 0); abort (); }