------- Comment #5 from jakub at gcc dot gnu dot org 2007-11-16 14:50 ------- /usr/src/gcc/obj35/gcc/xgcc -B /usr/src/gcc/obj35/gcc/ -v 2>&1 | tail -n 1; /usr/src/gcc/obj35/gcc/xgcc -B /usr/src/gcc/obj35/gcc/ -m32 -O2 -ffloat-store -o pr33088{,.c} -lm; ./pr33088; echo $? gcc version 4.3.0 20071115 (experimental) (GCC) Aborted 134
And I doubt any CCP changes would have anything to do with this. The problem is that the hole complex number is one gimple register and if either __real__ and __imag__ setting isn't close enough to each other, or if -ffloat-store is used, then this means GCC reads the unitialized value from memory using floating point load and if there is a signalling NaN on the stack, already the load signals. And fill_stack fills the stack with 0x7ff000007ff00000, which is IEEE double signalling NaN. At -O0 this testcase doesn't trigger the abort, because the moves are done using integer registers rather than FPU. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33088