gcc bootstrap broken on i686-linux-gnu

Roger Sayle roger@eyesopen.com
Tue Jul 30 03:30:00 GMT 2002


Hi Dave,
> > Certainly.  Sorry for any inconvenience.  The two possible
> > changes in behaviour are that -1.0*x is now tranformed into
> > -x by default (this previously only happened with -ffast-math),
>
> This transformation is going to cause a problem on hppa1* machines
> because prior to PA2.0 the HP IEEE implementation didn't have a
> fneg instruction.  So, to get correct behavior we convert -x to
> -1.0*x (see for example negsf2 pattern in pa.md) except when
> flag_unsafe_math_optimizations is set where we use fsub.

Fortunately, the -1.0*x into x transformation is being applied in
fold-const.c, so works on the tree representation of the expression.
This should be completely safe, and allows things like
"x = (y<0)? -1.0*y : y" to be recognized as "x = fabs(y)".
If the "-y" survives until RTL generation time, the PA backend will
convert it back into the multiplication.

I agree there could be an issue if this transformation were to be
added to the RTL optimizers.

Roger
--



More information about the Gcc mailing list