
Register Allocation by Graph Coloring (2003) - creolabs
http://www.lighterra.com/papers/graphcoloring/
======
nickpsecurity
I didn't realize it was that old. Also surprised that intraprocedural
techniques havent had as much adoption. There's potential there for
improvement in real-world compilers. Just gotta integrate it with Clang or GCC
which Im pretty sure academics already have in prototypes. Then make it fast.

~~~
prestonbriggs
Chaitin published his stuff in the early 80s. Presumably the implementation is
a bit older. But the idea of doing register allocation via graph coloring goes
back to the late 60s and the idea of using graph coloring to minimize storage
requirements generally goes back to around '63.

The interprocedural problem is mostly engineering - how to manage libraries,
make files, etc., in a way that programmer will use it.

~~~
nickpsecurity
So I'll add graph coloring to the list of great things that happened in the
1960's that still kick arse today. Burroughs architecture, graph coloring,
Dijkstra's methods... quite a few.

------
curiousDog
We did a lot of this in our compilers class. A lot of fun.

~~~
dmm
We spent lots of time talking about parsing in my compiler class :-/

~~~
greglindahl
Unfortunately, a lot of compiler classes are like that! Fortunately, the
availability of gcc / clang / path64 means that it doesn't have to be that
way.

------
zump
Doesn't libfirm utilize this?

~~~
UniQP
libfirm ([http://pp.ipd.kit.edu/firm/](http://pp.ipd.kit.edu/firm/)) uses SSA-
based register allocation
([http://d-nb.info/986273813/34](http://d-nb.info/986273813/34)), which allows
a decoupled spilling phase. Moreover, the register assignment becomes
polynomial, while register coalescing remains NP-complete.

