http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60763
Michael Meissner <meissner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |meissner at gcc dot gnu.org --- Comment #8 from Michael Meissner <meissner at gcc dot gnu.org> --- Richard's analysis agrees with mine. The problem is with adding the check for REG_CANNOT_CHANGE_MODE_P, it breaks the direct moves between GPRs and VSX registers for SF. Because internally within the PowerPC, SFmode is stored as DFmode, CANNOT_CHANGE_MODE_CLASS returns true. The original direct mvoe code should not have generated a (SUBREG:DI (REG:SF ...)) in this case, since that is illegal.