Reload v2
This project lives in svn://gcc.gnu.org/svn/gcc/branches/reload-v2a. It's written and maintained by Jeff Law.
What reload-v2 tries to do
1. When a pseudo doesn't get a hard reg (or the wrong kind), split the pseudo so that its lifetime is easily tracked.
2. Update IRA's data structures to account for the new pseudos/allocnos and call back into ira_reallocate_pseudos.
3. If after that we still have unallocated pseudos, we spill an allocno/pseudo that is transparent across a decreasing range (starting with pseudos that are transparent across an entire block).
4. "spilling" in step #3 is implemented by removing edges in the conflict graph, then we attempt to allocate anything without a hard reg again.
5. Insert compensation code to actually implement the spills. Often this is a single dynamic load/store pair, though in ugly cases it can be more.
Current status
The code on the branch does #1 and #2. I've written #3, #4 and #5 a couple times, but haven't been happy with the implementations yet
The plan
The "plan" is to tidy up the splitting code that's on the branch now which gives us measurable benefits, get that into the mainline, then write the transparent spiller code for the 4th time.