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