aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1998-11-23 02:39:24 -0700
committerJeff Law <law@gcc.gnu.org>1998-11-23 02:39:24 -0700
commit92691d7d53d25d4372c7c3fdde0f52097ddd051b (patch)
tree744b29bc5daf0b7b381bfe8540e411245aaa23f2 /gcc
parent193f66a952e8d2364b5bd9134795e3f03fe070a3 (diff)
downloadgcc-92691d7d53d25d4372c7c3fdde0f52097ddd051b.zip
gcc-92691d7d53d25d4372c7c3fdde0f52097ddd051b.tar.gz
gcc-92691d7d53d25d4372c7c3fdde0f52097ddd051b.tar.bz2
caller-save.c (insert_one_insn): Initialize the live_before and live_after register sets.
( * caller-save.c (insert_one_insn): Initialize the live_before and live_after register sets. From-SVN: r23789
Diffstat (limited to 'gcc')
-rw-r--r--gcc/caller-save.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 371b652..5fffe34 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -728,6 +728,10 @@ insert_one_insn (chain, before_p, code, pat)
chain->prev = new;
new->next = chain;
new->insn = emit_insn_before (pat, insn);
+ /* ??? It would be nice if we could exclude the already / still saved
+ registers from the live sets. */
+ COPY_REG_SET (new->live_before, chain->live_before);
+ COPY_REG_SET (new->live_after, chain->live_before);
if (chain->insn == basic_block_head[chain->block])
basic_block_head[chain->block] = new->insn;
}
@@ -739,6 +743,10 @@ insert_one_insn (chain, before_p, code, pat)
chain->next = new;
new->prev = chain;
new->insn = emit_insn_after (pat, insn);
+ /* ??? It would be nice if we could exclude the already / still saved
+ registers from the live sets, and observe REG_UNUSED notes. */
+ COPY_REG_SET (new->live_before, chain->live_after);
+ COPY_REG_SET (new->live_after, chain->live_after);
if (chain->insn == basic_block_end[chain->block])
basic_block_end[chain->block] = new->insn;
}