------- 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