patch applied to reload1.c

Joern Rennecke amylaar@cygnus.co.uk
Wed Mar 17 13:34:00 GMT 1999


Reviewed by Jim Wilson.

Wed Mar 17 21:29:12 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for
	things that were eliminated.

Index: reload1.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/reload1.c,v
retrieving revision 1.218.2.4
diff -p -r1.218.2.4 reload1.c
*** reload1.c	1999/03/10 22:39:56	1.218.2.4
--- reload1.c	1999/03/17 16:11:00
*************** eliminate_regs (x, mem_mode, insn)
*** 2875,2881 ****
  	{
  	  new = eliminate_regs (XEXP (x, 0), mem_mode, insn);
  	  if (new != XEXP (x, 0))
! 	    x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new, XEXP (x, 1));
  	}
  
        /* ... fall through ...  */
--- 2882,2898 ----
  	{
  	  new = eliminate_regs (XEXP (x, 0), mem_mode, insn);
  	  if (new != XEXP (x, 0))
! 	    {
! 	      /* If this is a REG_DEAD note, it is not valid anymore.
! 		 Using the eliminated version could result in creating a
! 		 REG_DEAD note for the stack or frame pointer.  */
! 	      if (GET_MODE (x) == REG_DEAD)
! 		return (XEXP (x, 1)
! 			? eliminate_regs (XEXP (x, 1), mem_mode, insn)
! 			: NULL_RTX);
! 
! 	      x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new, XEXP (x, 1));
! 	    }
  	}
  
        /* ... fall through ...  */


More information about the Gcc-patches mailing list