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