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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
use_internal_fn has:
```
      /* Skip the call if LHS == LHS.  If we reach here, EDOM is the only
         valid errno value and it is used iff the result is NaN.  */
      conds.quick_push (gimple_build_cond (EQ_EXPR, lhs, lhs,
                                           NULL_TREE, NULL_TREE));

```
Which is only a problem as `a == a` with signaling nans can trap and with non
call exceptions can cause an exception.

The easiest and correct way to fix this is s/EQ_EXPR/ORDERED_EXPR/ which is the
same when not having signaling NaNs but with signaling NaNs ORDERED_EXPR is
non-trapping so it will work here and such.

Reply via email to