register allocation

Jeff Law law@redhat.com
Thu Dec 23 17:22:00 GMT 2010


On 12/23/10 09:50, Vladimir Makarov wrote:
>
> Defining classes for pseudos is already one of the most expensive 
> operation in IRA.  Looking at the flow would make it even more 
> complicated (I even don't know how to use this to improve the 
> allocation because it means live range splitting before coloring and 
> before defining classes which could help do live range splitting 
> reasonably taking register pressure into account).
I've often wondered if we could use some of the class information to 
guide range splitting.  If a pseudo has contexts where it must be in 
class A and other contexts where it could be in class B, then there may 
be a reasonable split point where we could split the pseudo so that the 
split pseudos could be allocated into A & B respectively.

I looked at this eons ago with trying to split pseudos which had to be 
allocated to a particular hard reg over a small range, but could be 
allocated in a much larger class of regs elsewhere.  It worked, but was 
unmaintainable.  The other downside is we had defined the problem so 
narrowly that while the generated code clearly looked better, the net 
effect was unmeasurable as the reloads we avoided were typically outside 
of loops.

Jeff



More information about the Gcc mailing list