https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89271
--- Comment #5 from Alan Modra <amodra at gmail dot com> --- Created attachment 45760 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45760&action=edit Current set of patches It turns out there is a lot more than just wrong register_move_cost. This patchset does fix the PR without introducing too many regressions, but it is a work in progress. I have some questions about union register classes: 1) What should register_move_cost return for a union class like GEN_OR_VSX_REGS and some other class? Worst case, best case, or doesn't it matter? 2) What should preferred_reload_class return for union classes? Looking at other ports doesn't shed much light..