This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
IRA_COVER_CLASSES
- From: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- To: gcc at gcc dot gnu dot org
- Cc: vmakarov at redhat dot com
- Date: Sat, 30 Aug 2008 07:59:12 +0200
- Subject: IRA_COVER_CLASSES
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