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]

Re: ia32: regmove


Maybe this is what you meant?

Wed Sep  1 02:56:50 1999  J"orn Rennecke <amylaar@cygnus.co.uk>

	* regmove.c (fixup_match_1): Don't move INSN in front of P if
	it would end up in the shadow of a live flags regsiter.

Index: regmove.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/regmove.c,v
retrieving revision 1.62
diff -p -r1.62 regmove.c
*** regmove.c	1999/08/31 19:39:06	1.62
--- regmove.c	1999/09/01 01:57:41
*************** fixup_match_1 (insn, set, src, src_subre
*** 1844,1851 ****
  	break;
        if (! src_note && reg_overlap_mentioned_p (src, PATTERN (p)))
  	{
! 	  /* INSN was already checked to be movable when
! 	     we found no REG_DEAD note for src on it.  */
  	  overlap = p;
  	  src_note = find_reg_note (p, REG_DEAD, src);
  	}
--- 1850,1862 ----
  	break;
        if (! src_note && reg_overlap_mentioned_p (src, PATTERN (p)))
  	{
! 	  /* INSN was already checked to be movable wrt. the registers that it
! 	     sets / uses when we found no REG_DEAD note for src on it, but it
! 	     still might clobber the flags register.  Check that we wouldn't
! 	     insert it into the shadow of a live flags register.  */
! 	  if (GET_MODE (PREV_INSN (p)) != VOIDmode)
! 	    break;
! 
  	  overlap = p;
  	  src_note = find_reg_note (p, REG_DEAD, src);
  	}

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