https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111770
--- Comment #6 from Joseph S. Myers <jsm28 at gcc dot gnu.org> --- X + 0. -> X is invalid for FP with signed zero or signaling NaN, and also gets the wrong quantum exponent for decimal FP unless the zero has the maximum possible quantum exponent (which is not what you get from all bits of the representation zero, which is a zero with the minimum possible quantum exponent, or from converting integer 0 to DFP, which has quantum exponent 0). (If you add -0. (with maximum quantum exponent, in the DFP case) instead of +0., that does produce X for X not a signaling NaN - except in FE_DOWNWARD mode. Whereas adding +0. is only correct in FE_DOWNWARD mode, since 0. - 0. has positive sign in all other modes.)