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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Perhaps without looking at the setter, it could:
  /* See whether the operands might be unordered.  */
  if (HONOR_NANS (GET_MODE (XEXP (op0, 0))))
    all = 15;
  else if (!flag_finite_math_only
           && GET_MODE_CLASS (GET_MODE (XEXP (op0, 0))) == MODE_CC)
    {
      machine_mode mode = GET_MODE (XEXP (op0, 0));
      if (!REVERSIBLE_CC_MODE (mode)
          || REVERSE_CONDITION (GT, mode) != LE)
        FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT)
          if (HONOR_NANS (mode))
            {
              all = 15;
              break;
            }
    }
?  I.e. use REVERSE_CONDITION if possible to find out if it is (maybe) floating
point MODE_CC comparison and if there is any floating point mode with NaNs,
assume it could be unordered.

Reply via email to