I think the necessity and urgency of IRA_COVER_CLASSES, calls
for a few more details to be documented.

tm.texi says for it:
Cover classes are a set of non-intersecting register
classes covering all hard registers used for register allocation
purposes.

Ok, so I can construct a set from reg_class already.  It's so
simple a gen* program could do it.  But I hear, some tweaking is
usually at least recommended.

Should I prune that set and if so, what's a good huristic to
prune it?  Which classes *must* I keep?  The ones used with
REG_CLASS_FROM_CONSTRAINT/REG_CLASS_FROM_LETTER?  Should
e.g. singleton classes be avoided for some reason?


It also says:
Any move between two registers in the same cover class
should be cheaper than load or store of the registers.

But, one of the classes, is such that I can't move between
registers *within* the same class (just between that class and
GENERAL_REGS or memory)!  How should I treat that class?  Or
maybe the documentation should be amended to say "If a move
between two registers in the same cover class are possible, it
should be cheaper than a load or store"?  (Looking at the ARM
port, it looks like the answer to the last question is "yes".)

Thanks.

brgds, H-P

Reply via email to