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