https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98519

--- Comment #28 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to Peter Bergner from comment #27)
> (In reply to Michael Meissner from comment #23)
> > If we change rs6000_legitimate_address_p to return false if we have a
> > prefixed address and we are in asm, we get an insn not found error:
> > 
> > --- /home/meissner/tmp/gcc-tmp/TskwFJ_rs6000.c  2021-02-16
> > 11:44:05.520201674 -0500
> > +++ gcc/config/rs6000/rs6000.c  2021-02-16 11:41:41.444740394 -0500
> > @@ -9532,7 +9532,7 @@ rs6000_legitimate_address_p (machine_mod
> >  
> >    /* Handle prefixed addresses (PC-relative or 34-bit offset).  */
> >    if (address_is_prefixed (x, mode, NON_PREFIXED_DEFAULT))
> > -    return 1;
> > +    return !recog_data.is_asm;
> >  
> >    /* Handle restricted vector d-form offsets in ISA 3.0.  */
> >    if (quad_offset_p)
> 
> I don't think this change is correct as is, since pcrel addresses could be
> legitimate in asm

All prefixed addresses, pcrel or R=0, are valid always.  The original code
is correct.

But lxsd cannot use "m" as constraint anyway.  It needs "wY", and that will
work fine here?

Reply via email to