https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92665
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note some of the moves were removed with g:8c8952918b75f4fa6adbbe44cd641d5fd0bb55e3 But it is not a general solution, it just "splits" the case where dst and source have the same register. my patch (which I have a few improvements to it and fixing it for GCC 10) handles the case where the dst and the source registers are different which is what is happening in this case.