aboutsummaryrefslogtreecommitdiff
path: root/gcc/unroll.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-05-12 11:47:43 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-05-12 11:47:43 -0700
commitef39bb951c50c757ca7f394ef8c832608ea2054f (patch)
tree674b2b49a5ea5e4be2a6af4c7b93c2b48b907b0a /gcc/unroll.c
parenta7d904019909ed6296425e321a61a779efdb0d4b (diff)
downloadgcc-ef39bb951c50c757ca7f394ef8c832608ea2054f.zip
gcc-ef39bb951c50c757ca7f394ef8c832608ea2054f.tar.gz
gcc-ef39bb951c50c757ca7f394ef8c832608ea2054f.tar.bz2
(copy_loop_body): Delete May 10 change.
From-SVN: r4432
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r--gcc/unroll.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 2041624..d93e3ba 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -1609,9 +1609,7 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
pattern = copy_rtx_and_substitute (pattern, map);
copy = emit_insn (pattern);
}
- /* We must copy the REG_NOTES now, because the register mapping
- might change later. */
- REG_NOTES (copy) = copy_rtx_and_substitute (REG_NOTES (insn), map);
+ /* REG_NOTES will be copied later. */
#ifdef HAVE_cc0
/* If this insn is setting CC0, it may need to look at
@@ -1655,9 +1653,6 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
case JUMP_INSN:
pattern = copy_rtx_and_substitute (PATTERN (insn), map);
copy = emit_jump_insn (pattern);
- /* We must copy the REG_NOTES now, because the register mapping
- might change later. */
- REG_NOTES (copy) = copy_rtx_and_substitute (REG_NOTES (insn), map);
if (JUMP_LABEL (insn) == start_label && insn == copy_end
&& ! last_iteration)
@@ -1759,9 +1754,6 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
case CALL_INSN:
pattern = copy_rtx_and_substitute (PATTERN (insn), map);
copy = emit_call_insn (pattern);
- /* We must copy the REG_NOTES now, because the register mapping
- might change later. */
- REG_NOTES (copy) = copy_rtx_and_substitute (REG_NOTES (insn), map);
#ifdef HAVE_cc0
if (cc0_insn)
@@ -1812,6 +1804,19 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
}
while (insn != copy_end);
+ /* Now copy the REG_NOTES. */
+ insn = copy_start;
+ do
+ {
+ insn = NEXT_INSN (insn);
+ if ((GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
+ || GET_CODE (insn) == CALL_INSN)
+ && map->insn_map[INSN_UID (insn)])
+ REG_NOTES (map->insn_map[INSN_UID (insn)])
+ = copy_rtx_and_substitute (REG_NOTES (insn), map);
+ }
+ while (insn != copy_end);
+
/* There may be notes between copy_notes_from and loop_end. Emit a copy of
each of these notes here, since there may be some important ones, such as
NOTE_INSN_BLOCK_END notes, in this group. We don't do this on the last