* local-alloc.c (update_equiv_regs): When substituting sole definition into sole use of a reg, delete it from liveness information. Index: local-alloc.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/local-alloc.c,v retrieving revision 1.147 diff -c -p -r1.147 local-alloc.c *** local-alloc.c 28 Apr 2005 05:38:32 -0000 1.147 --- local-alloc.c 2 Jun 2005 08:51:59 -0000 *************** update_equiv_regs (void) *** 991,997 **** /* 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 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 --- 991,997 ---- /* 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 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 *************** update_equiv_regs (void) *** 1077,1082 **** --- 1077,1087 ---- 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. */