Choosing A Compiler Backend
SSA with phi nodes
By far the most common backend design.
SSA with parameters
Used in the Swift compiler.
Intuitive, but some tradeoffs for optimisation: http://blog.ezyang.com/2020/10/the-hidden-problem-with-basic-block-procedures-in-ssa/
Popular in the literature and in a few functional language implementations.
MLton moved from CPS to SSA and has a great discussion of tradeoffs: http://mlton.org/pipermail/mlton/2003-January/023054.html