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