The following code extern double f(double, double); void g (double x) { double z, y; z = 0.0; y = 1.0 - x; again: z = y - z; f(z, 1.0); if (z == 0.0) goto again; } has a fld1 instruction when compiled with "-mfpmath=sse -msse2 -msseregparm -mtune=pentiumpro -O2". This instruction is caused by a reload into a FLOAT_REGS register, and moving the value to a SSE register needs secondary memory.
Vladimir, I believe your rematerialization pass would help a lot in this case and in other SSE pessimizations.
*** This bug has been marked as a duplicate of 19653 ***