diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1999-06-17 13:35:59 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1999-06-17 14:35:59 +0100 |
commit | a1c0cf1f767932c1bb32a644e8ee354d33a005a3 (patch) | |
tree | 7447583b489738be9329dc52cea9006141c36e53 | |
parent | 51f0646f8a46b03d0fd01c79daf82a9ae5a2fceb (diff) | |
download | gcc-a1c0cf1f767932c1bb32a644e8ee354d33a005a3.zip gcc-a1c0cf1f767932c1bb32a644e8ee354d33a005a3.tar.gz gcc-a1c0cf1f767932c1bb32a644e8ee354d33a005a3.tar.bz2 |
loop.c (strength_reduce): When doing biv->giv conversion, update reg note of NEXT->insn.
* loop.c (strength_reduce): When doing biv->giv conversion, update
reg note of NEXT->insn.
From-SVN: r27574
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop.c | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dabee24..fe6a60c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 17 21:34:24 1999 J"orn Rennecke <amylaar@cygnus.co.uk> + + * loop.c (strength_reduce): When doing biv->giv conversion, update + reg note of NEXT->insn. + Thu Jun 17 14:25:08 1999 Jeffrey A Law (law@cygnus.com) * loop.c (move_movables): Note issues with replacing REGs with @@ -4198,7 +4198,7 @@ strength_reduce (scan_start, end, loop_top, insn_count, for (vp = &bl->biv, next = *vp; v = next, next = v->next_iv;) { HOST_WIDE_INT offset; - rtx set, add_val, old_reg, dest_reg, last_use_insn; + rtx set, add_val, old_reg, dest_reg, last_use_insn, note; int old_regno, new_regno; if (! v->always_executed @@ -4304,7 +4304,13 @@ strength_reduce (scan_start, end, loop_top, insn_count, REG_IV_TYPE (new_regno) = GENERAL_INDUCT; REG_IV_INFO (new_regno) = v; - + + /* If next_insn has a REG_EQUAL note that mentiones OLD_REG, + it must be replaced. */ + note = find_reg_note (next->insn, REG_EQUAL, NULL_RTX); + if (note && reg_mentioned_p (old_reg, XEXP (note, 0))) + XEXP (note, 0) = copy_rtx (SET_SRC (single_set (next->insn))); + /* Remove the increment from the list of biv increments, and record it as a giv. */ *vp = next; |