]> gcc.gnu.org Git - gcc.git/commitdiff
i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions properly.
authorJan Hubicka <jh@suse.cz>
Mon, 8 Jan 2001 12:47:15 +0000 (13:47 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 8 Jan 2001 12:47:15 +0000 (12:47 +0000)
* i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions
properly.

From-SVN: r38799

gcc/ChangeLog
gcc/config/i386/i386.c

index 362a7679fa1976c69ec63f62efb7fcc087f81329..52bb93d1bfad8d67d2f55107f1e69c0233f02a2e 100644 (file)
@@ -1,3 +1,8 @@
+Mon Jan  8 13:46:02 MET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions
+       properly.
+
 Sun Jan  7 18:37:43 2001  Mark P Mitchell  <mark@codesourcery.com>
 
        * ggc-page.c (max_alignment): New structure.
index 3afc75cd29fb92bb5c7a86a8e4a01046640570d3..53e33d4cbd634b1726afe32281c55d69cfb6c54c 100644 (file)
@@ -5399,8 +5399,20 @@ ix86_expand_int_movcc (operands)
          HOST_WIDE_INT tmp;
          tmp = ct, ct = cf, cf = tmp;
          diff = -diff;
-         compare_code = reverse_condition (compare_code);
-         code = reverse_condition (code);
+         if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0)))
+           {
+             /* We may be reversing unordered compare to normal compare, that
+                is not valid in general (we may convert non-trapping condition
+                to trapping one), however on i386 we currently emit all
+                comparisons unordered.  */
+             compare_code = reverse_condition_maybe_unordered (compare_code);
+             code = reverse_condition_maybe_unordered (code);
+           }
+         else
+           {
+             compare_code = reverse_condition (compare_code);
+             code = reverse_condition (code);
+           }
        }
       if (diff == 1 || diff == 2 || diff == 4 || diff == 8
          || diff == 3 || diff == 5 || diff == 9)
@@ -5489,8 +5501,20 @@ ix86_expand_int_movcc (operands)
            {
              ct = cf;
              cf = 0;
-             compare_code = reverse_condition (compare_code);
-             code = reverse_condition (code);
+             if (FLOAT_MODE_P (GET_MODE (ix86_compare_op0)))
+               {
+                 /* We may be reversing unordered compare to normal compare,
+                    that is not valid in general (we may convert non-trapping
+                    condition to trapping one), however on i386 we currently
+                    emit all comparisons unordered.  */
+                 compare_code = reverse_condition_maybe_unordered (compare_code);
+                 code = reverse_condition_maybe_unordered (code);
+               }
+             else
+               {
+                 compare_code = reverse_condition (compare_code);
+                 code = reverse_condition (code);
+               }
            }
 
          out = emit_store_flag (out, code, ix86_compare_op0,
This page took 0.086158 seconds and 5 git commands to generate.