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]

Re: [RFA][PATCH][pr target/60648] Fix non-canonical RTL from x86 backend -- P1 regression


On Thu, Mar 27, 2014 at 10:17:26AM -0600, Jeff Law wrote:
> >Did you mean Jeff's original change, or say:
> >--- gcc/config/i386/i386.c	2014-03-20 17:41:45.917689676 +0100
> >+++ gcc/config/i386/i386.c	2014-03-27 14:47:21.876254288 +0100
> >@@ -13925,13 +13925,13 @@ ix86_legitimize_address (rtx x, rtx oldx
> >        if (GET_CODE (XEXP (x, 0)) == MULT)
> >  	{
> >  	  changed = 1;
> >-	  XEXP (x, 0) = force_operand (XEXP (x, 0), 0);
> >+	  XEXP (x, 0) = copy_addr_to_reg (XEXP (x, 0));
> >  	}
> >
> >        if (GET_CODE (XEXP (x, 1)) == MULT)
> >  	{
> >  	  changed = 1;
> >-	  XEXP (x, 1) = force_operand (XEXP (x, 1), 0);
> >+	  XEXP (x, 1) = copy_addr_to_reg (XEXP (x, 1));
> >  	}
> >
> >        if (changed
> >(or copy_to_reg, should be the same thing).
> copy_addr_to_reg is probably better since it forces us into Pmode
> (which is useful if we had a mode-less constant).

Well, but in both of these cases you know that what you pass in is
a MULT and thus never mode-less.  That said, copy_addr_to_reg has the
advantage that it will ICE if the MULT isn't Pmode, but that really should
never happen for addresses, so not a big difference.

	Jakub


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