------- Comment #4 from jakub at gcc dot gnu dot org 2009-04-23 08:50 ------- Even more reduced:
extern double pow (double, double); extern double fabs (double); void foo (double *); static double bar (double x, double e) { if ((int) e == 1) return x; return pow (x, e); } void test (double *x, double *y) { double r; if (x[2]) bar (x[2], y[1]); if (x[0]) r = bar (fabs (x[1]), y[0]); if (x[2]) x[2] *= (1 + r); foo (x); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39856