------- Comment #3 from jakub at gcc dot gnu dot org 2009-04-23 08:45 ------- Simplified testcase (ICEs with both C and C++ FEs):
extern double pow (double, double); extern double fabs (double); void foo (double *); void bar (double *); static double baz (double x, double e) { if ((int) e == 1) return x; return pow (x, e); } void test (double *x, double *y) { double P[3], r; bar (P); if (P[2] != 0) baz (fabs (P[2]), y[2]); if (fabs (P[0]) > fabs (P[1])) r = baz (fabs (P[1] / P[0]), y[0]); if (P[2]) P[2] *= (1 + r); foo (x); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39856