summaryrefslogtreecommitdiff
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-02 08:55:01 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-02 08:55:01 +0000
commite5965489f29633116438d1eb2ae51048ceff88ee (patch)
tree08e0583372079c1101e18aa959b090017f5a7ca5 /gcc/local-alloc.c
parent669d4c2374c87b24e60b76f9636ee1a1c2743308 (diff)
downloadgcc-e5965489f29633116438d1eb2ae51048ceff88ee.tar.gz
* local-alloc.c (update_equiv_regs): When substituting sole definition
into sole use of a reg, delete it from liveness information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100483 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r--gcc/local-alloc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 1cbc489e668..017530830cb 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -991,7 +991,7 @@ update_equiv_regs (void)
/* Now scan all regs killed in an insn to see if any of them are
registers only used that once. If so, see if we can replace the
- reference with the equivalent from. If we can, delete the
+ reference with the equivalent form. If we can, delete the
initializing reference and this register will go away. If we
can't replace the reference, and the initializing reference is
within the same loop (or in an inner loop), then move the register
@@ -1077,6 +1077,11 @@ update_equiv_regs (void)
reg_equiv[regno].init_insns
= XEXP (reg_equiv[regno].init_insns, 1);
+
+ /* Remember to clear REGNO from all basic block's live
+ info. */
+ SET_REGNO_REG_SET (&cleared_regs, regno);
+ clear_regnos++;
}
/* Move the initialization of the register to just before
INSN. Update the flow information. */