https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62642
--- Comment #3 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- The problem is in a live range splitting optimization to reduce register pressure. It was introduced by https://gcc.gnu.org/ml/gcc-patches/2011-12/msg01531.html It is easy to switch off for this kind of insns. I'll submit the patch on Monday.