aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <bernd.schmidt@analog.com>2005-06-02 08:55:01 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2005-06-02 08:55:01 +0000
commitccb4e87e83e9f1e21ba9c79ce21f2d31dcf16a51 (patch)
tree08e0583372079c1101e18aa959b090017f5a7ca5
parentfbd4ef4ccdf895dd2833feee248ad5c0d069f418 (diff)
downloadgcc-ccb4e87e83e9f1e21ba9c79ce21f2d31dcf16a51.zip
gcc-ccb4e87e83e9f1e21ba9c79ce21f2d31dcf16a51.tar.gz
gcc-ccb4e87e83e9f1e21ba9c79ce21f2d31dcf16a51.tar.bz2
local-alloc.c (update_equiv_regs): When substituting sole definition into sole use of a reg...
* local-alloc.c (update_equiv_regs): When substituting sole definition into sole use of a reg, delete it from liveness information. From-SVN: r100483
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/local-alloc.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9891a77..b336751 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -2,6 +2,8 @@
* reload1.c (reload): Undo 2005-04-20 change. Make sure we detect
the correct set of init_insns that need deletion.
+ * local-alloc.c (update_equiv_regs): When substituting sole definition
+ into sole use of a reg, delete it from liveness information.
2005-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 1cbc489..0175308 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. */