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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #5)
> (In reply to Jakub Jelinek from comment #4)
> > Yeah, all those look quite questionable, -fno-signed-zeros doesn't mean 0.0
> > or -0.0 won't appear, just that it shouldn't matter if 0.0 or -0.0 appears.
> 
> Yeah, it means that when a is 0. or -0. the behavior can either
> match 0. > 0 ? 1. : -1. or -0. > 0 ? 1. : -1.  So probably the
> cases where we negate X are OK-ish in that regard?

Well, AFAIK 0. > 0 is 0 and -0. > 0 is also 0.
And similarly 0.0 >= 0 is 1 and -0.0 >= 0 is also 1.  So the a > 0 ? 1.0 : -1.0
expression is completely insensitive to signed zeros and so is a >= 0 ? 1.0 :
-1.0.  With the a > 0 ? 1.0 : -1.0 to copysign (1.0, a) transformation it is
also insensitive to sign of zero, but wrong for both -0.0 and 0.0.  With the a
>= 0 ? 1.0 : -1.0 to copysign (1.0, a) it is correct for +0.0 and incorrect for
-0.0, so
what has been previously insensitive to the sign of zero is now sensitive to
it.

Reply via email to