https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91753
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Wilco from comment #2) > (In reply to Andrew Pinski from comment #1) > > lower-subreg should have be able to help here. I wonder why it did not ... > > I'm not sure how it can help. I think you misunderstood what this pass does. It does exactly what you think it should do: /* Decompose multi-word pseudo-registers into individual pseudo-registers when possible and profitable. This is possible when all the uses of a multi-word register are via SUBREG, or are copies of the register to another location. Breaking apart the register permits more CSE and permits better register allocation. The only difference is the creating part which missing.