From f7a21c70b19653e62fe2fa606e15f7c187db56e1 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Sat, 5 Oct 2002 04:06:17 +0000 Subject: [PATCH] unroll.c (copy_loop_body): Remove REG_EQUAL note attached to copied instruction if... * unroll.c (copy_loop_body): Remove REG_EQUAL note attached to copied instruction if the note is not loop invariant. From-SVN: r57834 --- gcc/ChangeLog | 5 +++++ gcc/unroll.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f01ea2b90d4..b6dcbca9d69 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-10-04 David Edelsohn + + * unroll.c (copy_loop_body): Remove REG_EQUAL note attached to + copied instruction if the note is not loop invariant. + 2002-10-04 Loren J. Rittle * gcc/ginclude/stddef.h: Support the FreeBSD 5 typedef system. diff --git a/gcc/unroll.c b/gcc/unroll.c index 97e646eb25c..3e5ea7f069a 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -2033,6 +2033,13 @@ copy_loop_body (loop, copy_start, copy_end, map, exit_label, last_iteration, REG_NOTES (copy) = initial_reg_note_copy (REG_NOTES (insn), map); INSN_SCOPE (copy) = INSN_SCOPE (insn); + /* If there is a REG_EQUAL note present whose value + is not loop invariant, then delete it, since it + may cause problems with later optimization passes. */ + if ((tem = find_reg_note (copy, REG_EQUAL, NULL_RTX)) + && !loop_invariant_p (loop, XEXP (tem, 0))) + remove_note (copy, tem); + #ifdef HAVE_cc0 /* If this insn is setting CC0, it may need to look at the insn that uses CC0 to see what type of insn it is. -- 2.30.2