https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization --- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Richard Biener from comment #4) > (In reply to Uroš Bizjak from comment #3) > > The doc says: > > > > When used as an lvalue, 'subreg' is a word-based accessor. > > Storing to a 'subreg' modifies all the words of REG that > > overlap the 'subreg', but it leaves the other words of REG > > alone. > > But UNITS_PER_WORD is 8 so (subreg:DF (TI)) should leave the upper half > of the TImode register unchanged. Indeed, and -m32 creates correct code. So, it is register allocator that fails. Reconfirmed as rtl-optimization problem.