combine.c (gen_binary): Use swap_commutative_operands_p
authorJan Hubicka <jh@suse.cz>
Tue, 22 May 2001 07:40:26 +0000 (09:40 +0200)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 22 May 2001 07:40:26 +0000 (00:40 -0700)
        * combine.c (gen_binary): Use swap_commutative_operands_p
        (simplify_comparison): Likewise.
        * expmed.c (emit_store_flag): Likewise.
        * expr.c (compare_from_rtx): Likewise.
        (do_compare_rtx_and_jump): Likewise.
        * optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
        if not emitting a branch and operands want swapping.

From-SVN: r42433

gcc/ChangeLog
gcc/combine.c
gcc/expmed.c
gcc/expr.c
gcc/optabs.c
gcc/simplify-rtx.c

index 1442a191b51849351b0c3c67a6a73b6168a60f38..eeff21e01e5a527f9356d5a69e93e816073b6c2f 100644 (file)
@@ -1,3 +1,13 @@
+2001-05-22  Jan Hubicka  <jh@suse.cz>
+
+       * combine.c (gen_binary): Use swap_commutative_operands_p
+       (simplify_comparison): Likewise.
+       * expmed.c (emit_store_flag): Likewise.
+       * expr.c (compare_from_rtx): Likewise.
+       (do_compare_rtx_and_jump): Likewise.
+       * optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
+       if not emitting a branch and operands want swapping.
+
 2001-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * c-lex.c (c_lex): Just cast cpp's hashnode to gcc's one.
index 675b1fe3e915ec07aea745ad06c633107cfec202..e36cdefac45f459de4ddeba824360634ca018a8d 100644 (file)
@@ -9793,8 +9793,7 @@ gen_binary (code, mode, op0, op1)
   rtx tem;
 
   if (GET_RTX_CLASS (code) == 'c'
-      && (GET_CODE (op0) == CONST_INT
-         || (CONSTANT_P (op0) && GET_CODE (op1) != CONST_INT)))
+      && swap_commutative_operands_p (op0, op1))
     tem = op0, op0 = op1, op1 = tem;
 
   if (GET_RTX_CLASS (code) == '<')
@@ -9999,7 +9998,7 @@ simplify_comparison (code, pop0, pop1)
   /* If the first operand is a constant, swap the operands and adjust the
      comparison code appropriately, but don't do this if the second operand
      is already a constant integer.  */
-  if (CONSTANT_P (op0) && GET_CODE (op1) != CONST_INT)
+  if (swap_commutative_operands_p (op0, op1))
     {
       tem = op0, op0 = op1, op1 = tem;
       code = swap_condition (code);
index b2396ae9bd94f85bf5d5f421f8bec1cc9b62007a..b08d5353fa7cd4e913087931d3e06d36ae2454fe 100644 (file)
@@ -4226,8 +4226,7 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep)
   /* If one operand is constant, make it the second one.  Only do this
      if the other operand is not constant as well.  */
 
-  if ((CONSTANT_P (op0) && ! CONSTANT_P (op1))
-      || (GET_CODE (op0) == CONST_INT && GET_CODE (op1) != CONST_INT))
+  if (swap_commutative_operands_p (op0, op1))
     {
       tem = op0;
       op0 = op1;
index b654b460d3252e321fa59628ee6b23ee3d2c5e3c..7c7bee7f6d241cd625bb181c3783612e1da19255 100644 (file)
@@ -10107,8 +10107,7 @@ compare_from_rtx (op0, op1, code, unsignedp, mode, size, align)
   /* If one operand is constant, make it the second one.  Only do this
      if the other operand is not constant as well.  */
 
-  if ((CONSTANT_P (op0) && ! CONSTANT_P (op1))
-      || (GET_CODE (op0) == CONST_INT && GET_CODE (op1) != CONST_INT))
+  if (swap_commutative_operands_p (op0, op1))
     {
       tem = op0;
       op0 = op1;
@@ -10190,8 +10189,7 @@ do_compare_rtx_and_jump (op0, op1, code, unsignedp, mode, size, align,
   /* If one operand is constant, make it the second one.  Only do this
      if the other operand is not constant as well.  */
 
-  if ((CONSTANT_P (op0) && ! CONSTANT_P (op1))
-      || (GET_CODE (op0) == CONST_INT && GET_CODE (op1) != CONST_INT))
+  if (swap_commutative_operands_p (op0, op1))
     {
       tem = op0;
       op0 = op1;
index 1bc8aaf1f0e72616ceea27e0393b1de1eddb4da9..581fb9b95b21b8e8456cef08e5211a3c4107361e 100644 (file)
@@ -3287,23 +3287,18 @@ emit_cmp_and_jump_insns (x, y, comparison, size, mode, unsignedp, align, label)
      unsigned int align;
      rtx label;
 {
-  rtx op0;
-  rtx op1;
-
-  /* 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;
-    }
-  else
+  rtx op0 = x, op1 = y;
+
+  /* Swap operands and condition to ensure canonical RTL.  */
+  if (swap_commutative_operands_p (x, y))
     {
-      op0 = x;
-      op1 = y;
+      /* If we're not emitting a branch, this means some caller
+         is out of sync.  */
+      if (! label)
+       abort ();
+
+      op0 = y, op1 = x;
+      comparison = swap_condition (comparison);
     }
 
 #ifdef HAVE_cc0
index e586b015413379e04dddbe26c929b9fffd575460..a4ca80f4efdef7fd85334936e4577b7c617779ce 100644 (file)
@@ -1817,8 +1817,7 @@ simplify_relational_operation (code, mode, op0, op1)
     return 0;
 
   /* Make sure the constant is second.  */
-  if ((CONSTANT_P (op0) && ! CONSTANT_P (op1))
-      || (GET_CODE (op0) == CONST_INT && GET_CODE (op1) != CONST_INT))
+  if (swap_commutative_operands_p (op0, op1))
     {
       tem = op0, op0 = op1, op1 = tem;
       code = swap_condition (code);