I couldn't find the authors' logic in a cursory look at the source code. Does anyone know where it actually is?
In general this is true, here however, we are targeting LLMV IR which is register based with infinite registers; so it's kinda easy again :-) The hard part, register allocation, is actually done by LLVM.
This class implements the conversion: https://github.com/lambdageek/mono/blob/mjit/mcs/class/Mono....
https://github.com/johandanforth/good-for-nothing-compiler (not my github)
And read an expanded/in depth version of the original article (with a link to download the original source) here:
https://www.cs.helsinki.fi/u/vihavain/k14/code_generation/pr...