I've just rewritten my original linear scan register allocator for my toy compiler rat. The new one is a custom-ish mix between a binpacking allocator and a linscan allocator. The original was about 1500LoC, and the one is only about 600 LoC, with slightly better perf, and its easier to understand :D. I'm thinking about writing a blog post about it as well, Current bench results (-O1):