Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Constant propagation with conditional branches
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handbook of theoretical computer science (vol. B)
Correctness of fixpoint transformations
Theoretical Computer Science
Reasoning about programs in continuation-passing style
Lisp and Symbolic Computation - Special issue on continuations—part I
Combining analyses, combining optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Advanced compiler design and implementation
Advanced compiler design and implementation
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Composing dataflow analyses and transformations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Matrix Template Library: A Unifying Framework for Numerical Linear Algebra
ECOOP '98 Workshop ion on Object-Oriented Technology
ISCOPE '98 Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments
Functional Programming, Concurrency, Simulation and Automated Reasoning: International Lecture Series 1991-1992, McMaster University, Hamilton, Ontario, Canada
Automatic synthesis of optimal invariant assertions: Mathematical foundations
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
On the decidability of phase ordering problem in optimizing compilation
Proceedings of the 3rd conference on Computing frontiers
Hi-index | 0.00 |
Writing performance-critical programs can be frustrating because optimizing compilers for imperative languages tend to be unpredictable. For a subset of optimizations - those that simplify rather than reorder code - it would be useful to prove that a compiler reliably performs optimizations. We show that adopting a "superanalysis" approach to optimization enables such a proof. By analogy with linear algebra, we define the nullspace of an optimizer as those programs it reduces to the empty program. To span the nullspace, we define rewrite rules that de-optimize programs by introducing abstraction. For a model compiler we prove that any sequence of de-optimizing rewrite rule applications is undone by the optimizer. Thus, we are able to give programmers a clear mental model of what simplifications the compiler is guaranteed to perform, and make progress on the problem of "abstraction penalty" in imperative languages.