summaryrefslogtreecommitdiff
path: root/gcc/caller-save.c
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-11-09 20:07:35 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-11-09 20:07:35 +0000
commit31335c66ed628f4f89e0b1049a69ba35338903fe (patch)
tree06d7bab74438525a186eec6837d7829c5a3562a1 /gcc/caller-save.c
parent75f9a6ea69cef4a16b0a7f7cbd7a03f4ab51803c (diff)
downloadgcc-31335c66ed628f4f89e0b1049a69ba35338903fe.tar.gz
(save_call_clobbered_regs): Ensure any insns we add
are in the same basic block as the insn we added them for. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@2726 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/caller-save.c')
-rw-r--r--gcc/caller-save.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 4c921599974..f77eda9ae06 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -374,6 +374,7 @@ save_call_clobbered_regs (insn_mode)
for (b = 0; b < n_basic_blocks; b++)
{
regset regs_live = basic_block_live_at_start[b];
+ rtx prev_block_last = PREV_INSN (basic_block_head[b]);
REGSET_ELT_TYPE bit;
int offset, i, j;
int regno;
@@ -490,6 +491,9 @@ save_call_clobbered_regs (insn_mode)
? insn : NEXT_INSN (insn)), 0,
regno, insn_mode, MOVE_MAX / UNITS_PER_WORD);
+ /* If we added any insns at the start of the block, update the start
+ of the block to point at those insns. */
+ basic_block_head[b] = NEXT_INSN (prev_block_last);
}
}