Skip to main content

The program dependence graph and its use in optimization

  • Conference paper
  • First Online:
International Symposium on Programming (Programming 1984)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 167))

Included in the following conference series:

Abstract

In this paper we present an intermediate program representation, called a program dependence graph or PDG, which summarizes not only the data dependences of each operation but also summarizes the control dependences of the operations. Data dependences represent only the relevant data flow relationships of the program. Analagously, control dependences represent only the relevant control flow relationships of the program, in contrast to the usual control flow graph. The PDG allows transformations such as vectorization, which previously required special treatuent of control dependence, to be performed in a manner which is uniform for both control and data dependences. Program transformations which require interaction of the two can also be easily handled by the representation. As an example, a new incremental approach to modifying data dependences resulting from branch deletion is introduced. Another value of our representation is that many traditional optimizations operate more efficiently on the PDG. Since dependences in the PDG connect computationally relevant parts of the program, a single walk of these dependences is sufficient to perform many optimizations.

Karl Ottenstein was supported in part by the National Science Foundation under Grant No. MCS-8203487.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Allen, Frances E. and Cocke, John. A catalogue of optimizing transformations in Design and Optimization of Compilers (Randall Rustin, Ed.) Prentice-Hall (1972) 1–30.

    Google Scholar 

  2. Allen, J.R., Kennedy, Ken, Porterfield, Carrie, and Warren, Joe. Conversion of control dependence to data dependence. 10th Ann. ACM Symp. on Princ. of Prog. Lang. Austin, Texas (January, 1983) 177–189.

    Google Scholar 

  3. Arvind, Gostelow, Kim, and Plouffe, Wil. An asynchronous programming language and computing machine. University of California at Irvine Tech Report TR114A (December, 1978)

    Google Scholar 

  4. Dennis, Jack B. Data flow supercomputers. IEEE Computer 13, 11 (Nov. 1980) 48–56.

    Google Scholar 

  5. Ferrante, Jeanne, and Ottenstein, Karl. A program form based on data dependency in predicate regions. 10th Ann. ACM Symp. on Princ. of Prog. Lang. Austin, Texas (January, 1983) 217–231.

    Google Scholar 

  6. Ferrante, Jeanne, Ottenstein, Karl, and Warren, Joe D. The program dependence graph and its use in optimization. In preparation.

    Google Scholar 

  7. Graham, Susan and Wegman, Mark. A fast and usually linear algorithm for global flow analysis. JACM 231 (January, 1976) 172–202.

    Google Scholar 

  8. Kas'janov, V.N. Distinguishing hammocks in a directed graph. Soviet Math. Doklady 165 (1975) 448–450.

    Google Scholar 

  9. Kuck, D. J; Kuhn, R. H., Padua, D. A.; Leasure, B. and Wolfe, M. Dependence graphs and compiler optimizations. 8th Ann. ACM Symp. on Princ. of Prog. Lang. Williamsburg, VA (Jan. 26–28, 1981) 207–218.

    Google Scholar 

  10. Ottenstein, Karl J. Data-flow graphs as an intermediate program form. Ph.D. Thesis. Computer Sciences Dept., Purdue Univ. (August 1978) 283 pages.

    Google Scholar 

  11. Padua, David A., Kuck, David J., and Lawrie, Duncan. High-Speed multiprocessors and their compilers. IEEE Transactions on Computers 29,9 (September, 1980) 763–776.

    Google Scholar 

  12. Padua Haiek, David Alejan. Multiprocessors: Discussion of some theoretical and practical problems. Ph.D. Thesis. Computer Sciences Dept., University of Illinois (1980).

    Google Scholar 

  13. Ryder, Barbara G. Incremental data flow analysis. 10th Ann. ACM Symp. on Princ. of Prog. Lang. Austin, Texas (January, 1983) 167–176.

    Google Scholar 

  14. Warren, Joe. A hierarchical basis for reordering transformations. 11th Ann. ACM Symp. on Princ. of Prog. Lang. Salt Lake City, Utah (January, 1984), 272–282.

    Google Scholar 

  15. Wegman, Mark. Summarizing graphs by regular expressions. 10th Ann. ACM Symp. on Princ. of Prog. Lang. Austin, Texas (January, 1983) 203–212.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

M. Paul B. Robinet

Rights and permissions

Reprints and permissions

Copyright information

© 1984 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ferrante, J., Ottenstein, K.J., Warren, J.D. (1984). The program dependence graph and its use in optimization. In: Paul, M., Robinet, B. (eds) International Symposium on Programming. Programming 1984. Lecture Notes in Computer Science, vol 167. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-12925-1_33

Download citation

  • DOI: https://doi.org/10.1007/3-540-12925-1_33

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-12925-7

  • Online ISBN: 978-3-540-38809-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics