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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
                 CC|                            |jsm28 at gcc dot gnu.org
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-12-05
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
This is fold_builtin_interclass_mathfn doing

    CASE_FLT_FN (BUILT_IN_ISNAN):
    case BUILT_IN_ISNAND32:
    case BUILT_IN_ISNAND64:
    case BUILT_IN_ISNAND128:
      {
        /* In IBM extended NaN and Inf are encoded in the high-order double
           value only.  The low-order value is not significant.  */
        if (is_ibm_extended)
          arg = fold_build1_loc (loc, NOP_EXPR, double_type_node, arg);
        arg = builtin_save_expr (arg);
        tree type = TREE_TYPE (TREE_TYPE (fndecl));
        return fold_build2_loc (loc, UNORDERED_EXPR, type, arg, arg);

and for the isnan() case it's likely glibc "interfering".

Confirmed what the reporter says, not sure if that's correct.
isunordered() says it does not raise any flags.

Reply via email to