On 03/09/2018 09:16 AM, Vladimir Makarov wrote: > The following patch fixes > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83712 > > It is another "cannot find a spill reg for reload" problem. LRA has > already a code splitting hard reg live ranges to avoid such problem. > This code is in LRA inheritance pass. Unfortunately, the code does > splitting for small class pseudos only. This PR is a more complicated > code and it is hard to adapt the inheritance sub-pass to reliably solve > such problems. > > To fix the PR, I added a sub-pass which works in very rare cases after > we already found that we have no hard regs for a reload pseudo. It > tries to split a hard reg live range for the pseudo. After that it tries > again to assign a hard reg to the pseudo. The patch changes LRA-subpass > flow for this. I hope that the patch will finally solved all such > problems but I am not sure to be completely certain. > > The patch was bootstrapped and tested on x86-64 and ppc64. Thanks. Once my builders pick up the change (a few hours) we'll have wider test coverage. I can also test the change against a closely related regression BZ (I don't have the number handy, but it's a few years old and is definitely related).
Jeff