[PATCH 1/2] MIPS: unaligned load: use SImode for SUBREG if OK (PR98996)

YunQiang Su syq@debian.org
Thu Feb 18 02:11:23 GMT 2021


Jeff Law <law@redhat.com> 于2021年2月17日周三 上午3:16写道:
>
>
>
> On 2/14/21 6:33 PM, YunQiang Su wrote:
> > It is found by ada s-pack96.adb ftbfs, due to 96bit load: 96 = 64 + 32.
> > While the 32bit pair of <load>l <load>r is mark as SUBREG, so they are
> > not in SImode, make it fail to find suitable insn.
> >
> > gcc/ChangeLog:
> >
> >        * config/mips/mips.c (mips_expand_ext_as_unaligned_load):
> >        If TARGET_64BIT and dest is SUBREG, we check the width, if it
> >        equal to SImode, we use SImode operation, just like what we are
> >        doing for REG one.
> > ---
> >  gcc/ChangeLog          | 8 ++++++++
> >  gcc/config/mips/mips.c | 2 +-
> >  2 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> > index ddf4c7f92d7..fb12eeb971d 100644
> > --- a/gcc/ChangeLog
> > +++ b/gcc/ChangeLog
> > @@ -1,3 +1,11 @@
> > +2021-02-15  YunQiang Su  <yunqiang.su@cipunited.com>
> > +
> > +     PR target/98996
> > +     * config/mips/mips.c (mips_expand_ext_as_unaligned_load):
> > +     If TARGET_64BIT and dest is SUBREG, we check the width, if it
> > +     equal to SImode, we use SImode operation, just like what we are
> > +     doing for REG one.
> Do you need to do any checking on the contents of the SUBREG?  ie, do
> you need to know if you've got (subreg (reg)) vs (subreg (mem))
>

Yes. you are right, we'd better to check it.

> Similarly I'd expect you may need to look at the mode of the inner
> object.  You could have a true subreg (outer mode is smaller than inner
> mode), but you might also be able to have a paradoxical subreg (outer
> mode is larger than inner mode).
>

I don't think that it is needed, since we we make sure that the mode
of `dest' is DImode,
and the width is SImode.

> Jeff
>


More information about the Gcc-patches mailing list