https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102169
HaoChen Gui <guihaoc at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |guihaoc at gcc dot gnu.org --- Comment #4 from HaoChen Gui <guihaoc at gcc dot gnu.org> --- In this case, it picks up "GEN_OR_VSX_REGS" as FLOAT_REGS costs zero in ira pass. There is a "d,Z" alternative pair in "*movsi_internal1" expand. When the second operand is not a "indexed_or_indirect_operand", the reload is need. In this case, the reload is needed when it's a d-form address and doesn't match the 'Z'. So we should punish the reload of 'Z'. Change the alternative to '^Z'.