ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Realistic compilation by program transformation (detailed summary)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Essentials of programming languages
Essentials of programming languages
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Is continuation-passing useful for data flow analysis?
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Effective partial redundancy elimination
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Rabbit: A Compiler for Scheme
Contification using dominators
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Optimizing Nested Loops Using Local CPS Conversion
Higher-Order and Symbolic Computation
Taming the IXP network processor
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Higher-order control-flow analysis in retrospect: lessons learned, lessons abandoned
ACM SIGPLAN Notices - Best of PLDI 1979-1999
The essence of compiling with continuations
ACM SIGPLAN Notices - Best of PLDI 1979-1999
The anatomy of a loop: a story of scope and control
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A type system equivalent to static single assignment
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Functional Elimination of Φ-instructions
Electronic Notes in Theoretical Computer Science (ENTCS)
Compiling with continuations, continued
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Reverse-mode AD in a functional framework: Lambda the ultimate backpropagator
ACM Transactions on Programming Languages and Systems (TOPLAS)
Flattening tuples in an SSA intermediate representation
Higher-Order and Symbolic Computation
CEAL: a C-based language for self-adjusting computation
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Integrated Java Bytecode Verification
Electronic Notes in Theoretical Computer Science (ENTCS)
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Bottom-up β-reduction: Uplinks and λ-DAGs
Fundamenta Informaticae - From Mathematical Beauty to the Truth of Nature: to Jerzy Tiuryn on his 60th Birthday
Bottom-up β-reduction: uplinks and λ-DAGs
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
A bytecode logic for JML and types
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
A data flow language for hybrid query and programming languages
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Simple and efficient construction of static single assignment form
CC'13 Proceedings of the 22nd international conference on Compiler Construction
Formal verification of SSA-based optimizations for LLVM
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
We define syntactic transformations that convert continuation passing style (CPS) programs into static single assignment form (SSA) and vice versa. Some CPS programs cannot be converted to SSA, but these are not produced by the usual CPS transformation. The CPS→SSA transformation is especially helpful for compiling functional programs. Many optimizations that normally require flow analysis can be performed directly on functional CPS programs by viewing them as SSA programs. We also present a simple program transformation that merges CPS procedures together and by doing so greatly increases the scope of the SSA flow information. This transformation is useful for analyzing loops expressed as recursive procedures.