https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109610
--- Comment #5 from Hongtao.liu <crazylht at gmail dot com> --- One solution is add an peephole for handle such redudancy. +;; Peephole to catch memory loads to VSX_REG and then moves to GENERAL_REGS. +(define_peephole2 + [(set (match_operand:VSX_M 0 "vsx_register_operand") + (match_operand:VSX_M 1 "memory_operand")) + (set (match_operand:VSX_M 2 "int_reg_operand") + (match_dup 0))] + "TARGET_POWERPC64 && VECTOR_MEM_VSX_P (<MODE>mode) + && peep2_reg_dead_p (2, operands[0])" + [(set (match_dup 2) (match_dup 1))]) If powerpc maintainer doesn't like this way, another alternative is add a target hook in RA to still use GENEREAL_REGS for other targets, but use NO_REGS only for x86.