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