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

--- Comment #12 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #11)
> Btw,
> 
> static inline bool
> finite_operands_p (const frange &op1, const frange &op2)
> {
>   return flag_finite_math_only || (!op1.maybe_isnan () && !op2.maybe_isnan
> ());
> }
> 
> is wrong, you should either test HONOR_NANS on the range type or even
> better, do this check in maybe_isnan ().


Yeah, I need to revisit this.  My patch still stands though, as we need to
correctly handle definite NANs everywhere.  I'll come back to finite_operands_p
though.

> 
> Btw, since you are "sanitizing" ranges at _set () time for other flag_*,
> it might be good to simply do that for HONOR_NANS as well so we have a
> single flag here and always ranges that do not need extra treatment?

The problem here is that the NAN was explicitly set by a pass (i.e. it's in the
IL).  Although perhaps frange::set_nan() should just set UNDEFINED?  Is that
what you had in mind?

Reply via email to