Combining analyses, combining optimizations
- 1 March 1995
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 17 (2), 181-196
- https://doi.org/10.1145/201059.201061
Abstract
Modern optimizing compilers use several passes over a program's intermediate representation to generate good code. Many of these optimizations exhibit a phase-ordering problem. Getting the best code may require iterating optimizations until a fixed point is reached. Combining these phases can lead to the discovery of more facts about the program, exposing more opportunities for optimization. This article presents a framework for describing optimizations. It shows how to combine two such frameworks and how to reason about the properties of the resulting framework. The structure of the frame work provides insight into when a combination yields better results. To make the ideas more concrete, this article presents a framework for combining constant propagation, value numbering, and unreachable-code elimination. It is an open question as to what other frameworks can be combined in this way.Keywords
This publication has 5 references indexed in Scilit:
- Constant propagation with conditional branchesACM Transactions on Programming Languages and Systems, 1991
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- A Unified Approach to Path ProblemsJournal of the ACM, 1981
- Monotone data flow analysis frameworksActa Informatica, 1977
- A lattice-theoretical fixpoint theorem and its applicationsPacific Journal of Mathematics, 1955