aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-12-19 17:53:11 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-12-19 17:53:11 -0800
commit935149165b83d8d409584384729c059b34e20590 (patch)
tree3e6ab93a42ed6931678d9e070f4fb62d10f05b22
parentbff3fc417e1cf2f06de047ed02282bc988cd8370 (diff)
downloadgcc-935149165b83d8d409584384729c059b34e20590.zip
gcc-935149165b83d8d409584384729c059b34e20590.tar.gz
gcc-935149165b83d8d409584384729c059b34e20590.tar.bz2
(mark_set_1): For multi-reg hard register, clear all
reg_next_use entries. From-SVN: r8670
-rw-r--r--gcc/flow.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index e38aceb..c53ddd9 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -2019,9 +2019,6 @@ mark_set_1 (needed, dead, x, insn, significant)
register rtx y = reg_next_use[regno];
register int blocknum = BLOCK_NUM (insn);
- /* The next use is no longer "next", since a store intervenes. */
- reg_next_use[regno] = 0;
-
/* If this is a hard reg, record this function uses the reg. */
if (regno < FIRST_PSEUDO_REGISTER)
@@ -2031,12 +2028,20 @@ mark_set_1 (needed, dead, x, insn, significant)
for (i = regno; i < endregno; i++)
{
+ /* The next use is no longer "next", since a store
+ intervenes. */
+ reg_next_use[i] = 0;
+
regs_ever_live[i] = 1;
reg_n_sets[i]++;
}
}
else
{
+ /* The next use is no longer "next", since a store
+ intervenes. */
+ reg_next_use[regno] = 0;
+
/* Keep track of which basic blocks each reg appears in. */
if (reg_basic_block[regno] == REG_BLOCK_UNKNOWN)