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

--- Comment #17 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to Andreas Krebbel from comment #16)
> (In reply to Segher Boessenkool from comment #15)
> > (In reply to Andreas Krebbel from comment #14)
> > > > So you are suggesting that every strict_low_part after reload can just 
> > > > be
> > > > removed?  If that is true, should we not just do exactly that then?
> > > 
> > > I think we have 3 options:
> > > (1) Prevent reload from removing SUBREGs in STRICT_LOW_PARTs.
> > > (2) Remove the STRICT_LOW_PART when resolving the inner SUBREG
> > > (3) Define what a (STRICT_LOW_PART (reg:mode x)) means. 
> ...
> > > (3) E.g. it means that the bits of hardreg x in its hardware mode (the 
> > > mode
> > > for UNITS_PER_WORD) which are not covered by MODE are not touched by the 
> > > SET.
> > 
> > But say you have (strict_low_part (subreg:HI (reg:SI) 0)) and the hardware
> > is 64-bit.  That only means the low 32 bits of the reg aren't clobbered, the
> > high 32 bits are fair game.  That does not agree with your proposed
> > semantics.
> 
> In that case I would have expected reload to turn this into 
> (strict_low_part (reg:HI xx))
> already.

Yes, but that says the high 48 bits of the hardware reg are untouched, which
is not true (only the high 16 of the low 32 are guaranteed unmodified).

Reply via email to