Fix IRA issue, PR79728

Bernd Schmidt bschmidt@redhat.com
Fri Mar 3 13:51:00 GMT 2017


This is an ICE where setup_pressure_classes fails if xmm0 is a global 
reg. Instead of GENERAL/FLOAT/SSE/MMX_REGS, it computes only 
SSE_FIRST_REG as the third register class. The problem is that the costs 
for moving between SSE_FIRST_REG and SSE_REGS are inflated because we 
think we have no available registers in SSE_FIRST_REG (since the only 
register in that class is global), and that somewhat confuses the algorithm.

The following fixes it by tweaking contains_regs_of_mode. Out of 
caution, I've retained the old meaning for code in reload which uses this.

Bootstrapped and tested on x86_64-linux. Ok?


Bernd
-------------- next part --------------
A non-text attachment was scrubbed...
Name: global-reg-cost.diff
Type: text/x-patch
Size: 4413 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20170303/200faa71/attachment.bin>


More information about the Gcc-patches mailing list