* expmed.c (emit_store_flag): Cope with FLOAT_STORE_FLAG_VALUE.
authorRichard Henderson <rth@redhat.com>
Wed, 9 Jun 2004 21:00:35 +0000 (14:00 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 9 Jun 2004 21:00:35 +0000 (14:00 -0700)
From-SVN: r82854

gcc/ChangeLog
gcc/expmed.c

index 7f5e57d0efda91ba01806bb27a0887b4a23298f8..1d85f75ebbd388de25b95629f09f4b9621987759 100644 (file)
@@ -1,3 +1,7 @@
+2004-06-09  Richard Henderson  <rth@redhat.com>
+
+       * expmed.c (emit_store_flag): Cope with FLOAT_STORE_FLAG_VALUE.
+
 2004-06-09  Geoffrey Keating  <geoffk@apple.com>
 
        * Makefile.in (CPPLIB_H): Put files in order of inclusion.
index b6012721479d2ae0111aa74a005d72ae12b31603..96ef1e7d2e5c6fb0fd3a4cda5c27f3cb78206bba 100644 (file)
@@ -4559,11 +4559,28 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
 
       comparison
        = compare_from_rtx (op0, op1, code, unsignedp, mode, NULL_RTX);
-      if (GET_CODE (comparison) == CONST_INT)
-       return (comparison == const0_rtx ? const0_rtx
-               : normalizep == 1 ? const1_rtx
-               : normalizep == -1 ? constm1_rtx
-               : const_true_rtx);
+      if (CONSTANT_P (comparison))
+       {
+         if (GET_CODE (comparison) == CONST_INT)
+           {
+             if (comparison == const0_rtx)
+               return const0_rtx;
+           }
+#ifdef FLOAT_STORE_FLAG_VALUE
+         else if (GET_CODE (comparison) == CONST_DOUBLE)
+           {
+             if (comparison == CONST0_RTX (GET_MODE (comparison)))
+               return const0_rtx;
+           }
+#endif
+         else
+           abort ();
+         if (normalizep == 1)
+           return const1_rtx;
+         if (normalizep == -1)
+           return constm1_rtx;
+         return const_true_rtx;
+       }
 
       /* The code of COMPARISON may not match CODE if compare_from_rtx
         decided to swap its operands and reverse the original code.