[Bug c/85957] i686: Integers appear to be different, but compare as equal

bugdal at aerifal dot cx gcc-bugzilla@gcc.gnu.org
Sun Feb 9 16:03:00 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85957

--- Comment #19 from Rich Felker <bugdal at aerifal dot cx> ---
Test case provided by Szabolcs Nagy showing that GCC does seem to spill right
if it can't assume there's no excess precision to begin with:

double h();
double ff(double x, double y)
{
    return x+y+h();
}

In theory this doesn't force a spill, but GCC seems to choose to do one, I
guess to avoid having to preserve two incoming values (although they're already
in stack slots that would be naturally preserved).

Here GCC 9.2 with -fexcess-precision=standard -O3 it emits fstpt/fldt.


More information about the Gcc-bugs mailing list