This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: IRA improvements 0/4

Removing cover classes makes coloring algorithm more complicated and
it slows down considerably the code for trivial colorability and the code for
cost caclulation (because more reg classes should be tried) therefore a
lot of work has been done to speedup IRA to compensate the slowing
I'll note that removal of cover classes will help with the range splitting part of my reload work.

First, when we split the range of an unallocated allocno, one or more of the new allocnos may be better off in a different cover class than the original allocno. This happens reasonably often when in one context we might want an FP reg, but in another a GPR is sufficient as we don't do any FP ops on the allocno. Supporting different cover classes for these split range allocnos has been problematical to say the least. Right now I'm forcing the split-range allocnos to have the same cover class as the original allocno.

The second area your work may help is when we split an existing allocno, we may create a scratch register and we don't know how to create an allocno for a completely new register without (for the split allocnos we copy key items from the original allocno, for a scratch reg, we don't have that luxury). Simply not having cover classes may be enough to make this problem go away. (For those interested, see emit_move_insn & compress_float_constant).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]