This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ia32: regmove
- To: rth@cygnus.com (Richard Henderson)
- Subject: Re: ia32: regmove
- From: Joern Rennecke <amylaar@cygnus.co.uk>
- Date: Wed, 1 Sep 1999 02:59:35 +0100 (BST)
- Cc: gcc-patches@gcc.gnu.org, amylaar@cygnus.co.uk
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);
}