patch to fix PR83712

Vladimir Makarov vmakarov@redhat.com
Fri Mar 9 16:16:00 GMT 2018


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.

Committed as rev. 258390.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr83712.patch
Type: text/x-patch
Size: 20624 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20180309/d3680fcb/attachment.bin>


More information about the Gcc-patches mailing list