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 >