------- 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