void f(void * a, double y) { } double g (double a, double b, double c, double d) { double x, y, z; void *p; x = a + b; y = c * d; p = alloca (16); f(p, y); z = x * y * a; return z + b; } main () { double a, b, c, d; a = 1.0; b = 0.0; c = 10.0; d = 0.0; if (g (a, b, c, d) != 0.0) abort (); if (a != 1.0 || b != 0.0 || c != 10.0 || d != 0.0) abort (); exit (0); }