Proceedings Article10.1145/507635.507639
Contification using dominators
Matthew Fluet,Stephen Weeks +1 more
- 01 Oct 2001
- Vol. 36, Iss: 10, pp 2-13
34
TL;DR: This paper gives a formal presentation of contification in MLton, a whole-program optimizing Standard ML compiler, as well as a new algorithm based on the dominator tree of a program's call graph that is optimal.
read more
Abstract: Contification is a compiler optimization that turns a function that always returns to the same place into a continuation. Compilers for functional languages use contification to expose the control-flow information that is required by many optimizations, including traditional loop optimizations. This paper gives a formal presentation of contification in MLton, a whole-program optimizing Standard ML compiler. We present two existing algorithms for contification in our framework, as well as a new algorithm based on the dominator tree of a program's call graph. We prove that the dominator algorithm is optimal. We present benchmark results on realistic SML programs demonstrating that contification has minimal overhead on compile time and significantly improves run time.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Pilsner: a compositionally verified compiler for a higher-order imperative language
Georg Neis,Chung-Kil Hur,Jan-Oliver Kaiser,Craig McLaughlin,Derek Dreyer,Viktor Vafeiadis +5 more
- 29 Aug 2015
TL;DR: A novel approach to compositional compiler verification based on parametric inter-language simulations (PILS) is developed, involving several person-years of work and over 55,000 lines of Coq.
CEAL: a C-based language for self-adjusting computation
Matthew A. Hammer,Umut A. Acar,Yan Chen +2 more
- 15 Jun 2009
TL;DR: The design and implementation of CEAL are described and it is shown that CEAL is effective in practice: compiled self-adjusting programs respond to small modifications to their data by orders of magnitude faster than recomputing from scratch while slowing down a from-scratch run by a moderate constant factor.
Compiling without continuations
Luke Maurer,Paul Downen,Zena M. Ariola,Simon Jones +3 more
- 14 Jun 2017
TL;DR: It is shown that adding join points to a direct-style functional intermediate language is a simple but powerful change that allows new optimizations to be performed, including a significant improvement to list fusion.
Optimizing Nested Loops Using Local CPS Conversion
John Reppy
- 01 Sep 2002
TL;DR: This paper has implemented Local CPS conversion in the MOBY compiler, and presents results from preliminary experiments with the compiler that show significant reductions in loop overhead as a result of LCPS conversion.
Automatic SIMD vectorization for Haskell
Leaf Petersen,Dominic Orchard,Neal Glew +2 more
- 25 Sep 2013
TL;DR: An implementation of automatic SIMD vectorization in a Haskell compiler which gives substantial vector speedups for a range of programs written in a natural programming style is described.
References
•Book
Compilers: Principles, Techniques, and Tools
Alfred V. Aho,Ravi Sethi,Jeffrey D. Ullman +2 more
- 01 Jan 1986
TL;DR: This book discusses the design of a Code Generator, the role of the Lexical Analyzer, and other topics related to code generation and optimization.
9.7K
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
Patrick Cousot,Radhia Cousot +1 more
- 01 Jan 1977
TL;DR: In this paper, the abstract interpretation of programs is used to describe computations in another universe of abstract objects, so that the results of abstract execution give some information on the actual computations.
•Book
Advanced Compiler Design and Implementation
Steven S. Muchnick
- 01 Jan 1997
TL;DR: Advanced Compiler Design and Implementation by Steven Muchnick Preface to Advanced Topics
2.6K
Efficiently computing static single assignment form and the control dependence graph
TL;DR: In this article, the authors present new algorithms that efficiently compute static single assignment forms and control dependence graphs for arbitrary control flow graphs using the concept of {\em dominance frontiers} and give analytical and experimental evidence that these data structures are usually linear in the size of the original program.
•Book
Compiling with continuations
Andrew W. Appel
- 29 Nov 1991
TL;DR: In this article, the authors show how continuation-passing style is used as an intermediate representation to perform optimizations and program transformations for modern languages like ML, and show how concepts from the theory of programming languages can be applied to the production of practical optimizing compilers.
Related Papers (5)
Cormac Flanagan,Amr Sabry,Bruce F. Duba,Matthias Felleisen +3 more
- 01 Jun 1993
Andrew W. Appel
- 29 Nov 1991