> The best assignment is NP-hard to find, so all practical allocators use heuristics.
That said if you do the register allocation while the program is still in SSA form, it becomes polynomial (interference graph is a chordal graph).
https://compilers.cs.uni-saarland.de/projects/ssara/
This is a great high level overview of some the techniques and problems encountered with developing a register allocator!
LLVM 's FastRegAlloc also uses linear scan.
> The best assignment is NP-hard to find, so all practical allocators use heuristics.
That said if you do the register allocation while the program is still in SSA form, it becomes polynomial (interference graph is a chordal graph).
https://compilers.cs.uni-saarland.de/projects/ssara/