https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91804
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW CC| |bergner at gcc dot gnu.org --- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> --- This extra move is created by IRA: Examining insn 22, def for 133 all ok and transp Creating newreg=134 from oldreg=133 rescanning insn with uid = 22. scanning new insn with uid = 25. New r134: setting preferred ALTIVEC_REGS, alternative VSX_REGS Why?! It was (insn 22 11 20 2 (set (reg:V16QI 133) (vec_duplicate:V16QI (const_int 8 [0x8]))) "vec-rlmi-rlnm.c":45:10 1204 {xxspltib_v16qi} (nil)) and it is used only in (insn 23 19 9 2 (set (reg:V2DI 127) (unspec:V2DI [ (reg:V16QI 133) ] UNSPEC_VSX_SIGN_EXTEND)) "vec-rlmi-rlnm.c":45:10 1533 {vsx_sign_extend_qi_v2di} (expr_list:REG_DEAD (reg:V16QI 133) (expr_list:REG_EQUAL (const_vector:V2DI [ (const_int 8 [0x8]) repeated x2 ]) (nil)))) so copying it to another reg cannot help anything here? Peter, can you take a look?