I have constructed a minimal test program that reproduces the bug: Compile with: gcc-4.1 -c -O4 -o test.o test.c
#include <complex.h> void testit(double complex* t, double* b) { b[0] = t[0]==0.0?0.0:-t[0]; } main(void) { static double complex k = 5; static double b; testit(&k,&b); } The following modification fixes the problem: void testit(double complex* t, double* b) { b[0] = t[0]==0.0?0.0:__real__(-t[0]); } Note that the above modification is a default conversion that the compiler should be able to handle automatically. Regards, //Anders -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]