aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-11-04 19:05:02 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-11-04 19:05:02 -0500
commit63d59526e325b820a4694f4e32b55400611753ae (patch)
tree887bd72b739fa2daabb7425d397940a61def907f /gcc
parent4eae5fe18f93432fde3d744d5ddeda6d85efdedd (diff)
downloadgcc-63d59526e325b820a4694f4e32b55400611753ae.zip
gcc-63d59526e325b820a4694f4e32b55400611753ae.tar.gz
gcc-63d59526e325b820a4694f4e32b55400611753ae.tar.bz2
(strength_reduce): Ignore initial value if it is the wrong mode.
(record_initial): Don't ignore any set of the register. From-SVN: r6002
Diffstat (limited to 'gcc')
-rw-r--r--gcc/loop.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index e519a3b..99b2170 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -3410,7 +3410,8 @@ strength_reduce (scan_start, end, loop_top, insn_count,
"Biv %d initialized at insn %d: initial value ",
bl->regno, INSN_UID (bl->init_insn));
- if (valid_initial_value_p (src, bl->init_insn, call_seen, loop_start))
+ if (GET_MODE (src) == GET_MODE (regno_reg_rtx[bl->regno])
+ && valid_initial_value_p (src, bl->init_insn, call_seen, loop_start))
{
bl->initial_value = src;
@@ -6239,9 +6240,7 @@ record_initial (dest, set)
if (GET_CODE (dest) != REG
|| REGNO (dest) >= max_reg_before_loop
- || reg_iv_type[REGNO (dest)] != BASIC_INDUCT
- /* Reject this insn if the source isn't valid for the mode of DEST. */
- || GET_MODE (dest) != GET_MODE (SET_DEST (set)))
+ || reg_iv_type[REGNO (dest)] != BASIC_INDUCT)
return;
bl = reg_biv_class[REGNO (dest)];