This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RFA: Fix PR middle-end/20793
- From: Joern RENNECKE <joern dot rennecke at st dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 08 Apr 2005 20:04:51 +0100
- Subject: RFA: Fix PR middle-end/20793
Bootstrapped & regtested on i686-pc-linux-gnu.
2005-04-08 J"orn Rennecke <joern.rennecke@st.com>
PR middle-end/20793:
* integrate.c (allocate_initial_values): Update register liveness
information.
Index: integrate.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/integrate.c,v
retrieving revision 1.273
retrieving revision 1.273.20.1
diff -p -r1.273 -r1.273.20.1
*** integrate.c 19 Nov 2004 02:58:33 -0000 1.273
--- integrate.c 8 Apr 2005 18:27:56 -0000 1.273.20.1
*************** allocate_initial_values (rtx *reg_equiv_
*** 395,404 ****
reg_equiv_memory_loc[regno] = x;
else if (REG_P (x))
{
! reg_renumber[regno] = REGNO (x);
/* Poke the regno right into regno_reg_rtx
so that even fixed regs are accepted. */
! REGNO (ivs->entries[i].pseudo) = REGNO (x);
}
else abort ();
}
--- 395,415 ----
reg_equiv_memory_loc[regno] = x;
else if (REG_P (x))
{
! basic_block bb;
! int new_regno = REGNO (x);
!
! reg_renumber[regno] = new_regno;
/* Poke the regno right into regno_reg_rtx
so that even fixed regs are accepted. */
! REGNO (ivs->entries[i].pseudo) = new_regno;
! /* Update global register liveness information. */
! FOR_EACH_BB (bb)
! {
! if (REGNO_REG_SET_P(bb->global_live_at_start, regno))
! SET_REGNO_REG_SET (bb->global_live_at_start, new_regno);
! if (REGNO_REG_SET_P(bb->global_live_at_end, regno))
! SET_REGNO_REG_SET (bb->global_live_at_end, new_regno);
! }
}
else abort ();
}