This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

New register allocator branch created


Okay, I created new-regalloc-branch, and added the new register allocator
stuff to it (ChangeLog is named ChangeLog.RA)

The new register allocator is completely functional right now, the old
allocators and regmove are turned off in the branch.

I've worked with the new allocator on both x86, and PowerPC, and while
it is orders of magnitude better than the old allocator, at least on x86,
there is still a lot of room for improvement (mainly because you really want to use
different spill heuristics, etc. These can be plugged into the new
allocator pretty easily).

There's also the small issue of reload getting bored and always spilling
the value of insns that were deleted because they were coalesced moves
(these are the only "spills" reload doesn't find a register for).

And also, the fact that we aren't iterating when we spill, because i need
to get reload to just insert the spill code by creating a new temporary,
and let us redo register allocation.

Past that, we get perfect allocation on PowerPC when we don't spill (and
we rarely spill). We satisfy all constraints, and therefore reload just
fills in scratch registers and symbol_refs.

So feel free to check it out.

Graph coloring is your friend,
Dan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]