aboutsummaryrefslogtreecommitdiff
path: root/gcc/unroll.c
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2002-10-05 04:06:17 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2002-10-05 00:06:17 -0400
commitf7a21c70b19653e62fe2fa606e15f7c187db56e1 (patch)
tree3f0ddf460aba7b63916a785d2153b6c8afca5dba /gcc/unroll.c
parent081d6fb9561010943ab28cfe8a30d291a835742c (diff)
downloadgcc-f7a21c70b19653e62fe2fa606e15f7c187db56e1.zip
gcc-f7a21c70b19653e62fe2fa606e15f7c187db56e1.tar.gz
gcc-f7a21c70b19653e62fe2fa606e15f7c187db56e1.tar.bz2
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
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r--gcc/unroll.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 97e646e..3e5ea7f 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.