

Static single assignment for functional programmers (2011) - smcgivern
https://wingolog.org/archives/2011/07/12/static-single-assignment-for-functional-programmers

======
FullyFunctional
This is very well written. I want to mention two other IL that takes SSA even
closer to a functional representation: thinned gated single-assignment (TGSA)
form and the Value Dependence Graph.

I've used the former with pleasure as a lot of traditional passes become
trivially done by construction: global common subexpression elimination, copy
propagation, dead code elimination, and constant propagation. With very little
extra work you also get strength reduction, expression hoisting, and a host of
other things that I'm forgetting.

I never understood why this wasn't more popular as old-school SSA, as used by
even LLVM, is so terribly clunky and inefficient.

------
mdaniel
I always love reading his blog posts. I honestly don't know how one finds the
time to write that well at that length and still turn out guile et al., plus
whatever his "day job" is.

