https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655
--- Comment #14 from rguenther at suse dot de <rguenther at suse dot de> --- On Fri, 24 Nov 2023, amonakov at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655 > > --- Comment #13 from Alexander Monakov <amonakov at gcc dot gnu.org> --- > > Then there is the MULT_EXPR x * x case > > This is PR 111701. > > It would be nice to clarify what "nonnegative" means in the contracts of this > family of functions, because it's ambiguous for NaNs and negative zeros (x < 0 > is false while signbit is set, and x >= 0 is also false for positive NaNs). Agreed, I think we're using it in both ways which is the problem in the end. Maybe having _compares_nonnegative and _sign_positive would clarify this.