------- Additional Comments From bonzini at gcc dot gnu dot org 2005-07-13 11:51 ------- Smaller testcase from PR22453:
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. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19653