https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106101
--- Comment #19 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Andreas Krebbel from comment #18) > (In reply to Segher Boessenkool from comment #17) > ... > > 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). > > Right, if the original register mode does not match the mode of the full > hardreg, we continue to need that mode as the upper bound. So with the > subreg folding in reload we appear to loose information we need to interpret > the STRICT_LOW_PART correctly. Exactly. This is why strict_low_part of anything else than a subreg is ill-defined.