https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80546
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #5) > Unfortunately it breaks bootstrap on powerpc64le-linux: > ../../../libgcc/libgcc2.c: In function ‘__mulvti3’: > ../../../libgcc/libgcc2.c:396:1: internal compiler error: Max. number of > generated reload insns per insn is achieved (90) > > Vlad, any thoughts on this? > Does IRA have any code which would estimate if two pseudos where one dies in > a simple move insn and another one defined in there can be sharing the same > register? Should IRA itself estimate in those cases that a noop move would > be for free (0 cost)? > Or would ^^r instead of ??r work here? Or something else? Perhaps ??r <- r and <VSa>#r <- 0 alternatives? Though I guess it would work only if IRA actually can handle 0 in simple moves reasonably, by trying to guess if it is likely the two pseudos can be allocated into the same register (and then using corresponding alternative cost), and if it is unlikely using some other alternative instead.