https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91804
--- Comment #2 from Peter Bergner <bergner at gcc dot gnu.org> --- The copy us inserted by IRA's find_moveable_pseudos() function. The problem seems to be that the new pseudo r134 has a different preferred reg class than the original pseudo r133. r134: preferred VSX_REGS, alternative NO_REGS, allocno VSX_REGS a7 (r134,l0) best VSX_REGS, allocno VSX_REGS r133: preferred ALTIVEC_REGS, alternative VSX_REGS, allocno VSX_REGS This leads to: ... Popping a7(r134,l0) -- assign reg 32 Popping a4(r127,l0) -- assign reg 64 Popping a6(r133,l0) -- assign reg 64 So r134 is assigned the first VSX reg and r133 gets the first Altivec reg.