This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 ();
      }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]