jump.c (reversed_comparison_code_parts): Allow reversal of unordered compares in...
authorJan Hubicka <jh@suse.cz>
Wed, 28 Feb 2001 16:19:16 +0000 (17:19 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 28 Feb 2001 16:19:16 +0000 (16:19 +0000)
* jump.c (reversed_comparison_code_parts): Allow reversal of
unordered compares in -ffast-math mode; reverse ordered compares
for FP even w/o -ffast-math.

From-SVN: r40118

gcc/ChangeLog
gcc/jump.c

index 6c3fa5d95572bba4087051aee9088bf5fa8d0fac..b8a2020ca362a00fbd11fd23985690bdd74cb014 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 28 17:17:29 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * jump.c (reversed_comparison_code_parts): Allow reversal of
+       unordered compares in -ffast-math mode; reverse ordered compares
+       for FP even w/o -ffast-math.
+
 2001-02-27  Richard Henderson  <rth@redhat.com>
 
        * print-rtl.c (print_rtx) [i]: Don't print field five on
index 5ff808ad0e3aff1e7170ae493b1c285bdfde7e8e..bda1c6b270dbb6ada0ecf67605924b3fb3685f7d 100644 (file)
@@ -1782,7 +1782,11 @@ reversed_comparison_code_parts (code, arg0, arg1, insn)
       case UNLE:
       case UNGT:
       case UNGE:
-       /* We don't have safe way to reverse these yet.  */
+       /* We don't have safe way to reverse these yet - we would need
+          ordered compares that may not trap.  */
+       if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
+           || flag_fast_math)
+         return reverse_condition_maybe_unordered (code);
        return UNKNOWN;
       default:
        break;
@@ -1841,6 +1845,12 @@ reversed_comparison_code_parts (code, arg0, arg1, insn)
        }
     }
 
+  /* In case of floating point modes, we may reverse here, since
+     we will be always converting an ordered compare to unordered.
+     The unsafe code has been caught earlier.  */
+  if (FLOAT_MODE_P (mode))
+    return reverse_condition_maybe_unordered (code);
+
   /* An integer condition.  */
   if (GET_CODE (arg0) == CONST_INT
       || (GET_MODE (arg0) != VOIDmode