diff options
author | Richard Henderson <rth@redhat.com> | 2002-07-19 09:31:40 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-07-19 09:31:40 -0700 |
commit | 544823b62164ff5086b472deb0e41d97dea8985c (patch) | |
tree | fafb870ae109ad3c315b6adeec4971854e4b7bf8 /gcc | |
parent | f4b2b0d665fcb888218782fe101046652fc30cf8 (diff) | |
download | gcc-544823b62164ff5086b472deb0e41d97dea8985c.zip gcc-544823b62164ff5086b472deb0e41d97dea8985c.tar.gz gcc-544823b62164ff5086b472deb0e41d97dea8985c.tar.bz2 |
* loop.c (loop_givs_rescan): Delete the REG_EQUAL note, not the insn.
From-SVN: r55590
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/loop.c | 14 |
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e943e4..b0b5810 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-07-19 Richard Henderson <rth@redhat.com> + + * loop.c (loop_givs_rescan): Delete the REG_EQUAL note, not the insn. + 2002-07-19 Alan Modra <amodra@bigpond.net.au> * prefix.c (update_path): Don't zap single `.' path components @@ -4875,6 +4875,7 @@ loop_givs_rescan (loop, bl, reg_map) else { rtx original_insn = v->insn; + rtx note; /* Not replaceable; emit an insn to set the original giv reg from the reduced giv, same as above. */ @@ -4882,12 +4883,13 @@ loop_givs_rescan (loop, bl, reg_map) gen_move_insn (v->dest_reg, v->new_reg)); - /* The original insn may have a REG_EQUAL note. This note is - now incorrect and may result in invalid substitutions later. - We could just delete the note, but we know that the entire - insn is dead, so we might as well save ourselves the bother - and remove the whole thing. */ - delete_insn (original_insn); + /* The original insn may have a REG_EQUAL note. This note is + now incorrect and may result in invalid substitutions later. + The original insn is dead, but may be part of a libcall + sequence, which doesn't seem worth the bother of handling. */ + note = find_reg_note (original_insn, REG_EQUAL, NULL_RTX); + if (note) + remove_note (original_insn, note); } /* When a loop is reversed, givs which depend on the reversed |