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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |rsandifo at gcc dot gnu.org
   Last reconfirmed|                            |2025-02-24
     Ever confirmed|0                           |1

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The new code uses
      /* See whether the operands might be unordered.  */                       
      if (HONOR_NANS (GET_MODE (XEXP (op0, 0))))                                
        all = 15;                                                               
but that is not correct here, GET_MODE (XEXP (op0, 0)) is MODE_CC, not
MODE_FLOAT and it is still a floating point comparison.
Now, dunno if we have a target independent check whether MODE_CC mode is for
floating point comparison or integral comparison and whether all targets
actually differentiate between those.
If not, the code either would need to assume all MODE_CC (or all non-integral?)
modes perhaps could have NaNs if any NaNs are possible at all, or would need to
look up at the setter of the flags register to see if it is floating point or
integral comparison.

Reply via email to