------- Comment #2 from vmakarov at redhat dot com  2008-10-22 13:51 -------
The problem is in that hard regs (like r10) which have class GENERAL_REGS (from
REGNO_REG_CLASS) are translated into ACR_REGS.  Such translation results in
wrong register pressure calculation for ACR_REGS and failed assert.  IRA
translates classes which are not inside a cover class into the first
intersected cover class and that is ACR_REGS for GENERAL_REGS.  We could
translate to the biggest cover class but I am afraid it would be wrong for
other targets, e.g. INT_FLOAT_REGS for x86 would be translated into FLOAT_REGS
which is more costly than GENERAL_REGS.

So the right solution would be correct finding cover class of specific hard
register.  I hope I'll make a patch today and submit it for approval.

Thanks for reporting the problem and reducing the test.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37813

Reply via email to