The program dependence graph and its use in optimization
- 1 July 1987
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 9 (3) , 319-349
- https://doi.org/10.1145/24039.24041
Abstract
In this paper we present an intermediate program representation, called theprogram dependence graph(PDG), that makes explicit both the data and control dependences for each operation in a program. Data dependences have been used to represent only the relevant data flow relationships of a program. Control dependences are introduced to analogously represent only the essential control flow relationships of a program. Control dependences are derived from the usual control flow graph. Many traditional optimizations operate more efficiently on the PDG. Since dependences in the PDG connect computationally related parts of the program, a single walk of these dependences is sufficient to perform many optimizations. The PDG allows transformations such as vectorization, that previously required special treatment of control dependence, to be performed in a manner that is uniform for both control and data dependences. Program transformations that require interaction of the two dependence types can also be easily handled with our representation. As an example, an incremental approach to modifying data dependences resulting from branch deletion or loop unrolling is introduced. The PDG supports incremental optimization, permitting transformations to be triggered by one another and applied only to affected dependences.Keywords
This publication has 10 references indexed in Scilit:
- Interprocedural dependence analysis and parallelizationPublished by Association for Computing Machinery (ACM) ,1986
- The program dependence graph and its use in optimizationPublished by Springer Nature ,1984
- A Program Development ToolIBM Journal of Research and Development, 1984
- Static analysis of programs as an aid to debuggingPublished by Association for Computing Machinery (ACM) ,1983
- Programmers use slices when debuggingCommunications of the ACM, 1982
- Combining data flow and control flow computingThe Computer Journal, 1982
- Prettyprinting in an interactive programming environmentPublished by Association for Computing Machinery (ACM) ,1981
- Data Flow SupercomputersComputer, 1980
- A fast algorithm for finding dominators in a flowgraphACM Transactions on Programming Languages and Systems, 1979
- A Fast and Usually Linear Algorithm for Global Flow AnalysisJournal of the ACM, 1976