https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609
--- Comment #28 from Richard Henderson <rth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #26) > Hmm, I don't see this documented anywhere. In fact there is no such > thing as a "vector register", there are only vector modes. And we > are using %xmm for plain SF/DFmode all over the place. > > Note that in the particular case the mode we subreg is TImode, > not a vector mode. You're right, my language was sloppy. The problem I describe is going to be true for any register whose reg_raw_mode is larger than word_mode. The assumption is that assignment to a word_mode subreg both (1) cannot affect bits outside the word_mode and (2) can be simplified to a plain hard register post-reload. Part deux is impossible when reg_raw_mode is larger than word_mode, because the subreg-y assignment result is indistinguishable from a normal word_mode assignment. > That may be a workaround for x86 but I don't see how this fixes the > issue in general given that targets may have general registers larger > than word_mode It doesn't fix other targets, true. But I don't see how to do that without changes to each target. > (is x32 TARGET_64BIT?). Yes.