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

Reply via email to