On Thu, Aug 15, 2024 at 4:57 PM Jeff Law <jeffreya...@gmail.com> wrote:
>
>
>
> On 8/15/24 2:50 AM, Richard Sandiford wrote:
> > The PR points out that, for an address like:
> >
> >    (plus (zero_extend X) Y)
> >
> > decompose_normal_address doesn't establish a strong preference
> > between treating X as the base or Y as the base.  As the comment
> > in the patch says, zero_extend isn't enough on its own to assume
> > an index, at least not on POINTERS_EXTEND_UNSIGNED targets.
> > But in a construct like the one above, X and Y have different modes,
> > and it seems reasonable to assume that the one with the expected
> > address mode is the base.
> >
> > This matters on targets like m68k that support index extension
> > and that require different classes for bases and indices.
> >
> > Tested on aarch64-linux-gnu & x86_64-linux-gnu.  Andreas also confirms
> > that it fixes the m68k LRA problem.  OK to install?
> >
> > Richard
> >
> >
> > gcc/
> >       PR middle-end/116236
> >       * rtlanal.cc (decompose_normal_address): Try to distinguish
> >       bases and indices based on mode, before resorting to "baseness".
> OK.  Thanks to everyone for chasing this down.  No idea where we sit
> with the conversion of m68k to LRA but this looks like it'd be helpful
> irrespective of that effort.

I'll point out that this change merely adjusts heuristics and whether there's
an underlying issue in the target or LRA remains to be seen?

Richard.

> jeff
>

Reply via email to