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

--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 2 Sep 2019, ebotcazou at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91323
> 
> --- Comment #16 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> > Other than that my view is that the GENERIC/GIMPLE side is correct.
> > Besides even RTL "high-level" get's this consistent (may_trap_p_1),
> > likewise simplify-rtx if my quick survey is correct.
> 
> Yes, the RTL middle-end indeed says that LTGT signals on NaNs.
> 
> > So IMHO siding with the non-target interpretation feels quite
> > natural to me.  rtl.texi has no entry for LTGT and both tree.def
> > and rtl.def agree.
> 
> IMO that's less clear for rtl.def:
> 
> /* This is an ordered NE, ie !UNEQ, ie false for NaN.  */
> 
> Do you read "ordered" as "signaling on NaNs"?  Then what about EQ?

Yes.

> And even less clear for tree.def:
> 
> /* This is the reverse of uneq_expr.  */
> 
> > The only disagreeing part is LTGT_EXPR in generic.texi which is "fuzzy" 
> > (says
> > unordered but then "With the possible exception of @code{LTGT_EXPR}, all of
> > these operations are guaranteed not to generate a floating point exception."
> > So even that can be read as "agreement".
> 
> IMO it's just aligned with rtl.def/tree.def, i.e. it doesn't really take side.
> 
> 
> So we need to modify rtl.def, tree.def and generic.texi to clearly state that
> LTGT signals on NaNs, like GE/GT/LE/LT.  And actually fix generic.texi because
> LTGT_EXPR is *not* an unordered comparison operator: as rtl.def says, it's the
> ordered NE, i.e. it returns false for NaNs.

Lets do it.

Reply via email to