https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106101
--- Comment #16 from Andreas Krebbel <krebbel at gcc dot gnu.org> --- (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.