http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58679
--- Comment #12 from Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> --- (In reply to Jorn Wolfgang Rennecke from comment #10) > (In reply to Uroš Bizjak from comment #7) > > > CC author. Hopefully, following part will be reverted: > > > > 2013-10-25 Vladimir Makarov <vmaka...@redhat.com> > > > > [...] > > * lra-spills.c (lra_final_code_change): Remove useless move insns. > > For the return value sanity checks, we need only a subset of these moves > preserved. > Ones that are > - in the exit block, and > - likely_spilled_p, and > - pertain to the function result register, or a part of it. P.S.: the fact that we have no-op moves like that indicates potential trouble - it means this likely spilled register is also live before the return value copy. So if we need to spill it to do a mode switch, we are between a rock and a hard place.