loop.c (check_dbra_loop): While reversing the loop...
authorAndreas Schwab <schwab@issan.cs.uni-dortmund.de>
Wed, 30 Dec 1998 21:51:53 +0000 (21:51 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 30 Dec 1998 21:51:53 +0000 (14:51 -0700)
        * loop.c (check_dbra_loop): While reversing the loop, if the
        comparison value has a VOID mode use the mode of the other operand
        to compute the mask.

From-SVN: r24444

gcc/ChangeLog
gcc/loop.c

index 9f2789645e2dc3c754511596e43a26038bffdcbe..015af043b58b0c8c5a601499b494c916d4515f22 100644 (file)
@@ -1,3 +1,9 @@
+1998-12-30  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * loop.c (check_dbra_loop): While reversing the loop, if the
+       comparison value has a VOID mode use the mode of the other operand
+       to compute the mask.
+
 Wed Dec 30 22:24:00 1998  Michael Meissner  <meissner@cygnus.com>
 
        * rs6000.md ({save,restore}_stack_function): Take 2 operands to
index 082fc8170604dcb8c96905993ca8d893086b7c09..f1cdd03318541b97f7cea2170e1022e01f53baa8 100644 (file)
@@ -6857,8 +6857,12 @@ check_dbra_loop (loop_end, insn_count, loop_start, loop_info)
 
              add_val = INTVAL (bl->biv->add_val);
              comparison_value = XEXP (comparison, 1);
-             comparison_const_width
-               = GET_MODE_BITSIZE (GET_MODE (XEXP (comparison, 1)));
+             if (GET_MODE (comparison_value) == VOIDmode)
+               comparison_const_width
+                 = GET_MODE_BITSIZE (GET_MODE (XEXP (comparison, 0)));
+             else
+               comparison_const_width
+                 = GET_MODE_BITSIZE (GET_MODE (comparison_value));
              if (comparison_const_width > HOST_BITS_PER_WIDE_INT)
                comparison_const_width = HOST_BITS_PER_WIDE_INT;
              comparison_sign_mask