OSDN Git Service

* optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 May 2001 01:33:53 +0000 (01:33 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 May 2001 01:33:53 +0000 (01:33 +0000)
        operands unless the operation is commutative.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42366 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/optabs.c

index 582f100..dc32386 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-20  Richard Henderson  <rth@redhat.com>
+
+       * optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
+       operands unless the operation is commutative.
+
 2001-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * fold-const.c (tree_expr_nonnegative_p): Detect more non-negative
index a2a42c6..1bc8aaf 100644 (file)
@@ -3289,13 +3289,16 @@ emit_cmp_and_jump_insns (x, y, comparison, size, mode, unsignedp, align, label)
 {
   rtx op0;
   rtx op1;
-         
-  if (swap_commutative_operands_p (x, y))
+
+  /* We may not swap in the general case, since this is called from 
+     compare_from_rtx, and we have no way of reporting the changed
+     comparison code.  */
+  if (comparison == swap_condition (comparison)
+      && swap_commutative_operands_p (x, y))
     {
       /* Swap operands and condition to ensure canonical RTL.  */
       op0 = y;
       op1 = x;
-      comparison = swap_condition (comparison);
     }
   else
     {