On 12/27/10 08:43, roy rosen wrote:
I'd recommend to try ira-improv branch. I think that part of the problem is
in usage of cover classes. The branch removes the cover classes and permits
IRA to use intersected register classes and that helps to assign better hard
registers.
I tried now this branch and got better results for some cases but
still in other cases I get lots of redundent register copies.
I might be missing something from the gcc history but I wonder why do
we need to limit the coloring stage to select a hard reg from a class
that was chosen by a prior stage.
It was a design decision with the introduction of IRA. It made certain
problems easier to resolve at the time and in reality, most of the time
the set of legitimate and profitable hard registers for a given pseudo
maps to a register class reasonably well.
Why not simply put in the interference graph edges for all registers
which are not possible for a pseudo and let the coloring algorithm
select the best hard reg.
That's largely what the ira-improv branch does. Register classes at
that point are used primarily to drive the costing model.
jeff