On Wed, Mar 26, 2014 at 09:53:47PM +0000, Richard Sandiford wrote:
> Richard Henderson <r...@redhat.com> writes:
> > On 03/26/2014 12:40 PM, Jakub Jelinek wrote:
> >> On Wed, Mar 26, 2014 at 01:32:44PM -0600, Jeff Law wrote:
> >>> On 03/26/14 12:28, Jakub Jelinek wrote:
> >>>> (mult:SI (const_int 0) (const_int 4)) is IMHO far from being canonical.
> >>>> And, I'd say it is likely other target legitimization hooks would also 
> >>>> try
> >>>> to simplify it similarly.
> >>>> simplify_gen_binary is used in several other places during expansion,
> >>>> so I don't see why it couldn't be desirable here.
> >>> No particular reason.  I'll try that since we disagree about the
> >>> validity of the RTL and we can both agree that using
> >>> simplify_gen_binary is reasonable.
> >> 
> >> Other possibility if you want to change it in the i386.c legitimize_address
> >> hook would be IMHO using force_reg instead of force_operand, it should be
> >> the same thing in most cases, except for these corner cases, and there 
> >> would
> >> be no need to canonizalize anything afterwards.
> >> But, if the i?86 maintainers feel otherwise on this and think your patch is
> >> ok, I don't feel that strongly about this.
> >
> > I like this as a solution.  Let the combiner clean things up if it's
> > gotten so far.

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).

> How about doing both?  Jakub's simplify_gen_binary change looked like a good
> idea regardless of whatever else happens.  Seems a shame not to go with it.

Agreed.

        Jakub

Reply via email to