"Dave Korn" <[EMAIL PROTECTED]> writes: > The intermediate cause is that lreg considers all the special-purpose reg > classes when allocating, and for some reason decides that several of the > special-purpose classes have equal cost (zero) to GENERAL_REGS. The bit I > find strange about this is that it then decides to take the highest-numbered > class as the preferred register class, despite the fact that it has a lot less > members in it than GENERAL_REGS. (There is no overlap between the classes, so > I haven't put them in the "wrong order", as one is not a subset of the other).
Did you set REGISTER_MOVE_COST for your new registers? > Q. Is it possible to do what I really want: to make the compiler aware of > some registers, but limit their usage to a single insn; to allow reload to use > these registers when directed to by a constraint letter, but for the rest of > the compiler to basically pretend they don't even exist. This is more or less what the MIPS backend does with the HI and LO registers. You might want to look at that. Ian