Besides Arm, there are three other ports that define both CCFPmode and
CCFPEmode.  AArch64 and Sparc return CCFPEmode for LTGT; the other,
Visium, doesn't support LTGT at all.

AArch64 was changed in r8-5286-g8332c5ee8c5f3b, and Sparc with
r10-2926-g000a5f8d23c04c.

I suspect this issue is latent on Arm because cbranch?f4 and cstore?f4
reject LTGT and UNEQ and we fall back to a generic expansion which
happens to work.  Nevertheless, this patch updates the relevant bits
of the Arm port to match the specification introduced in
r10-2926-g000a5f8d23c04c.

gcc/ChangeLog:

        PR target/91323
        * config/arm/arm.cc (arm_select_cc_mode): Use CCFPEmode for LTGT.
---
 gcc/config/arm/arm.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc
index fccddb0e7bc..6bdb68aa788 100644
--- a/gcc/config/arm/arm.cc
+++ b/gcc/config/arm/arm.cc
@@ -16211,13 +16211,13 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
        case UNGT:
        case UNGE:
        case UNEQ:
-       case LTGT:
          return CCFPmode;
 
        case LT:
        case LE:
        case GT:
        case GE:
+       case LTGT:
          return (flag_finite_math_only
                  ? CCFPmode
                  : CCFPEmode);
-- 
2.34.1

Reply via email to