[PATCH] combine: Convert subreg-of-lshiftrt to zero_extract properly (PR78390)
Michael Matz
matz@suse.de
Wed Nov 30 14:40:00 GMT 2016
Hi,
On Wed, 30 Nov 2016, Segher Boessenkool wrote:
> > I don't think mode-changing _extracts are valid in this context. From the
> > docu:
> >
> > `(sign_extract:M LOC SIZE POS)'
> > ...
> > The mode M is the same as the mode that would be used for LOC if
> > it were a register.
> >
> > Probably it could be made to work just fine, but I'm not sure it'd be
> > worth much, as then the targets would need to care for mode-changes
> > occuring not just through subregs as usual, but also through extracts.
>
> The patch https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02987.html I
> submitted yesterday deals with this same issue, FWIW -- some ports
> apparently already do mode-changing extracts.
Yeah, saw that a bit later. So, hmmm. I'm not sure what to make of it,
if the targets choose to use mode-changing extracts I guess that's fine,
as they presumably will have written patterns that recognize them. But I
don't think we should willy-nilly generate such patterns as we can't know
if the target deals with them or not. We could of course always generate
both variants: (subreg:M1 (extract:M2 (object:M2)) and
(extract:M1 (object:M2)) and see if either matches, but that seems a bit
too much work.
Ciao,
Michael.
More information about the Gcc-patches
mailing list