aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-06-29 19:21:43 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-06-29 19:21:43 -0400
commit725fc5a08d59d147b38a004367b79e724b9f4655 (patch)
treed43358e48f352e5986b0673405416b24837db243 /gcc/loop.c
parent85d159a36aaad5d45fbe9c1a491e6e6e3923d5cb (diff)
downloadgcc-725fc5a08d59d147b38a004367b79e724b9f4655.zip
gcc-725fc5a08d59d147b38a004367b79e724b9f4655.tar.gz
gcc-725fc5a08d59d147b38a004367b79e724b9f4655.tar.bz2
(basic_induction_var, case REG): Allow previous insn to set a SUBREG
of X. From-SVN: r7611
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index 31e7a6e..c6caefe 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -4834,7 +4834,12 @@ basic_induction_var (x, mode, dest_reg, p, inc_val, mult_val)
if (insn)
set = single_set (insn);
- if (set != 0 && SET_DEST (set) == x)
+ if (set != 0
+ && (SET_DEST (set) == x
+ || (GET_CODE (SET_DEST (set)) == SUBREG
+ && (GET_MODE_SIZE (GET_MODE (SET_DEST (set)))
+ <= UNITS_PER_WORD)
+ && SUBREG_REG (SET_DEST (set)) == x)))
return basic_induction_var (SET_SRC (set),
(GET_MODE (SET_SRC (set)) == VOIDmode
? GET_MODE (x)