From ccb4e87e83e9f1e21ba9c79ce21f2d31dcf16a51 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Thu, 2 Jun 2005 08:55:01 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 2 ++ gcc/local-alloc.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9891a770fd6..b33675159f4 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 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. */ -- 2.30.2