Thomas Bernard writes:

 > I have a question about retargeting the back-end of GCC 4.1.
 > Our targeted architecture uses four classes of registers: global ($RG), 
 > locals ($RL), dependents ($RD), shareds ($RS). In total 31 hard 
 > registers available for the all previous classes.
 > The amount of each register is only known at compile-time depending on 
 > the needs of the program.
 > 
 > Normally I would have to specify the number of registers for each class 
 > in the .md and .h files which describe the targeted architecture.
 > But is it possible to have an arbitrary number of register in each class 
 > and the number would be given by the compiler depending on the needs of 
 > registers at compile-time (when the compiler discovers how many 
 > registers of each class are needed) ???
 > 
 > Let's take an example...
 > A source file A needs 10 registers for the globals, 11 for the locals, 5 
 > for dependents and 5 for shareds (10RG+11RL+5RD+5RS<=31). And for a 
 > program B needs 11 globals, 13 for the locals, 3 for dependents and 4 
 > for shareds (11RG+13RL+3RD+4RS<=31). Finally the program C needs 3 
 > globals and 10 locals (3RG+10RL<<31).
 > 
 > So basically this is known at compile-time. Such as "dynamic" register 
 > allocator.
 > Is it that possible and what are the implications on the register 
 > allocator ???

That's more or less what the IA-64 does.  You could look at how that
port works.

Andrew.

Reply via email to