diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-11-04 19:05:02 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-11-04 19:05:02 -0500 |
commit | 63d59526e325b820a4694f4e32b55400611753ae (patch) | |
tree | 887bd72b739fa2daabb7425d397940a61def907f | |
parent | 4eae5fe18f93432fde3d744d5ddeda6d85efdedd (diff) | |
download | gcc-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
-rw-r--r-- | gcc/loop.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -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)]; |