This series improves register allocator by keeping track of temp's and register's live ranges, doing better spill choice and spilling early unneeded globals.
The patches do need testing and performance evaluation before they will be ready for final review. I decided to preliminary post them because it seems other people are working on the same thing and I'd like to avoid unnecessary work duplication if possible. Kirill Batuzov (8): Compute additional liveness information for register allocator. Propagate REG_NEXT_USE value through process of register allocation. Do better spill choice. Calculate NEXT_CALL liveness information. Track call-clobbered uses of registers Spill globals early if their next use is in call. Spill globals early if their next use is at the BB end. Add spill count profiling. tcg/tcg.c | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- tcg/tcg.h | 12 +++ 2 files changed, 248 insertions(+), 9 deletions(-) -- 1.7.4.1