From a47f48d8fc2ca345f52c851f0ce711d76fcc7a89 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Mon, 2 Aug 1999 23:50:36 +0000 Subject: [PATCH] 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: r28423 --- gcc/ChangeLog | 5 +++++ gcc/loop.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ec52047468..fe7eec16a01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 3 00:45:02 1999 J"orn Rennecke + + * loop.c (strength_reduce): When doing biv->giv conversion, update + reg note of NEXT->insn. + 1999-08-02 Jakub Jelinek * real.c (PUT_REAL): Clear unused bytes if long double is IEEE quad. diff --git a/gcc/loop.c b/gcc/loop.c index 0b02cc2a41c..255af0e5703 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -4205,7 +4205,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 @@ -4311,7 +4311,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; -- 2.30.2