On Wed, Nov 21, 2018 at 1:45 PM Vladimir Makarov <vmaka...@redhat.com> wrote: > > > > On 11/21/2018 02:33 PM, Uros Bizjak wrote: > > Hello! > > > > Before the recent patch to post-reload mode switching, vzeroupper > > insertion depended on the existence of the return copy instructions > > pair in functions that return a value. The first instruction in the > > pair represents a move to a function return hard register, and the > > second was a USE of the function return hard register. Sometimes a nop > > move was generated (e.g. %eax->%eax) for the first instruction of the > > return copy instructions pair and the patch [1] teached LRA to remove > > these useless instructions on the fly. > > > > The removal caused optimize mode switching to trigger the assert, > > since the first instruction of a return pair was not found. The > > relevant part of the patch was later reverted. With the recent > > optimize mode switching patch, this is no longer necessary for > > vzeroupper insertion pass, so attached patch reverts the revert. > > > > 2018-11-21 Uros Bizjak <ubiz...@gmail.com> > > > > Revert the revert: > > 2013-10-26 Vladimir Makarov <vmaka...@redhat.com> > > > > Revert: > > 2013-10-25 Vladimir Makarov <vmaka...@redhat.com> > > > > * lra-spills.c (lra_final_code_change): Remove useless move insns. > > > > Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. > > > > OK for mainline? > Sure. Thank you, Uros. > > [1] https://gcc.gnu.org/ml/gcc-patches/2013-10/msg02208.html > > > > Uros. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90178 -- H.J.