aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@issan.cs.uni-dortmund.de>1998-12-30 21:51:53 +0000
committerJeff Law <law@gcc.gnu.org>1998-12-30 14:51:53 -0700
commit2c74fb2bf089989bff9918b995397df004a4c406 (patch)
tree880f03b2c51711302c749758efcf3185e2a2341c /gcc
parentff381587ecb48a6d844d87d0d22399da71716b56 (diff)
downloadgcc-2c74fb2bf089989bff9918b995397df004a4c406.zip
gcc-2c74fb2bf089989bff9918b995397df004a4c406.tar.gz
gcc-2c74fb2bf089989bff9918b995397df004a4c406.tar.bz2
loop.c (check_dbra_loop): While reversing the loop...
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/loop.c8
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9f27896..015af04 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/loop.c b/gcc/loop.c
index 082fc81..f1cdd03 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -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