Compiling with Continuations, Continued (2007) [pdf]
research.microsoft.com
research.microsoft.com
I never really understood the big deal about SSA as it's just a really weak version of models from the functional world. (Disclaimer: I've worked on both sides of the fence).
(Including to the paper here, incidentally.)
This paper would not be complete without a mention of Static Single Assignment form (SSA), the currently fashionable intermediate representation for imperative languages. As is well known, SSA is in some sense equivalent to CPS (Kelsey 1995) and to ANF (Appel 1998). Its focus is intra-procedural optimization (as with ANF, it’s necessary to renormalize when inlining functions, in contrast to CPS) and there is a large body of work on such optimizations. Future work is to transfer SSA-based optimizations to CPS. We conjecture that CPS is a good fit for both functional and imperative paradigms.
A summary is that there is no advantage to CPS, since it is SSA with a scope nesting requirement that gets in the way of some beneficial transformations.
This paper is really good because, unlike a lot of compiler literature, it treats both semantics and term representation.
It would be more accurate to say that SSA is a particularly efficient data structure for representing a subset of CPS terms.