https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90248
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- In fact the copysign transform, for the cases where we negate X _relies_ on signed zeros... Only exact /* Transform (X >= 0.0 ? 1.0 : -1.0) into copysign(1, X). */ and /* Transform (X < 0.0 ? -1.0 : 1.0) into copysign(1,X). */ look correct to me?