------- Additional Comments From jakub at gcc dot gnu dot org 2005-01-21 16:13 ------- Simplified testcase: extern void abort ();
__attribute__((pure)) _Complex float foo (int x) { _Complex float r; __real r = x + 1; __imag r = x - 1; return r; } void bar (float *f) { *f = foo (5); } int main (void) { float f; bar (&f); if (f != 6.0) abort (); return 0; } Likely the culprit is in libcall_dead_p. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19551