https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973
--- Comment #4 from Michael Meissner <meissner at gcc dot gnu.org> --- I haven't looked at the bug, but on PowerPC systems before power8, the following is illegal: (insn 258 153 259 8 (set (reg:DI 9 9) (reg/f:DI 63 31 [orig:185 p3$_M_node ] [185])) pr67211.C:28 540 {*movdi_internal64} (nil)) That is because register 9 is a GPR register and register 63 is a FPR register. Power8 systems in 64-bit mode have the ability to move values between GPRs and FPRs/VSX registers, but earlier systems don't. In order to transfer stuff between the two register sets, you would need to do a store and a load. Power8 32-bit (big endian only) would need scratch registers and multiple instructions to transfer 64-bit values.