Skip to main content

On the adequacy of dependence-based representations for programs with heaps

  • Conference paper
  • First Online:
Theoretical Aspects of Computer Software (TACS 1991)

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

Included in the following conference series:

Abstract

Program dependence graphs (pdgs) are popular tools for reasoning about a program's semantics. This report proves two fundamental theorems about the representational soundness of pdgs for languages with heap-allocated storage and reference variables. The first, the Pointer-Language Equivalence Theorem, asserts that pdgs adequately represent a program's meaning. The second, the Pointer-Language Slicing Theorem, asserts that pdgs adequately represent a program's threads of computation. These theorems are demonstrated with two new lemmas about the semantics of pdgs for languages that lack pointer variables. These lemmas, the Dynamic Equivalence and Dynamic Slicing Theorems, state that an edge can safely be removed from a program's pdg if this edge represents a static dependence that does not arise at run-time.

This work was supported in part by a David and Lucile Packard Fellowship for Science and Engineering, by the National Science Foundation under grants DCR-8552602 and CCR-8958530, by the Defense Advanced Research Projects Agency, monitored by the Office of Naval Research under contract N00014-88-K-0590, as well as by grants from IBM, DEC, and Xerox.

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, J.R., “Dependence Analysis for Subscripted Variables and its Application to Program Transformations,” Ph.D. dissertation, Dept. of Math. Sciences, Rice Univ., Houston, TX (April 1983).

    Google Scholar 

  2. Ballance, R.A., Maccabe, A.B., and Ottenstein, K.J., “The Program Dependence Web: A Representation Supporting Control-, Data-, and Demand-Driven Interpretation of Imperative Languages,” Proceedings of the ACM SIGPLAN 90 Conference on Programming Language Design and Implementation, (White Plains, NY, June 20–22, 1990), ACM SIGPLAN Notices 25(6) pp. 257–271 (June 1990).

    Google Scholar 

  3. Binkley, D., Horwitz, S., and Reps, T., “The Multi-Procedure Equivalence Theorem,” TR-890, Computer Sciences Department, University of Wisconsin, Madison, WI (November 1989).

    Google Scholar 

  4. Bodin, F., “Preliminary Report: Data Structure Analysis in C Programs,” Proceedings of the Workshop on Parallelism in the Presence of Pointers and Dynamically-allocated Objects (Leesburg, Virginia, March 1990), Technical Note SRC-TN-90-292, pp. 4.3.1–4.3.34 Supercomputing Research Center/Institute for Defense Analysis, (1990).

    Google Scholar 

  5. Chase, D.R., “Safety Considerations for Storage Allocation Optimization,” Proceedings of the ACM SIGPLAN 88 Conference on Programming Language Design and Implementation, (Atlanta, GA, June 22–24, 1988), ACM SIGPLAN Notices 23(7) pp. 1–10 (July 1988).

    Google Scholar 

  6. Choi, J., “Parallel Program Debugging with Flowback Analysis,” Ph.D. dissertation and TR-871, Computer Sciences Department, University of Wisconsin, Madison, WI (August 1989).

    Google Scholar 

  7. Ferrante, J., Ottenstein, K., and Warren, J., “The Program Dependence Graph and Its Use in Optimization,” ACM Transactions on Programming Languages and Systems 9(3), pp. 319–349 (July 1987).

    Article  Google Scholar 

  8. Guarna Jr., V.A., “Dependence Analysis for C Programs Containing Pointers and Dynamic Data Structures,” Proceedings of the Workshop on Parallelism in the Presence of Pointers and Dynamically-allocated Objects (Leesburg, Virginia, March 1990), Technical Note SRC-TN-90-292, pp. 5.15.1–5.15.25 Supercomputing Research Center/Institute for Defense Analysis, (1990).

    Google Scholar 

  9. Horwitz, S., Prins, J., and Reps, T., “On the Adequacy of Program Dependence Graphs for Representing Programs,” pp. 146–157 in Conference Record of the Fifteenth ACM Symposium on Principles of Programming Languages, (San Diego, CA, January 13–15, 1988), ACM, New York, NY (1988).

    Google Scholar 

  10. Horwitz, S., Pfeiffer, P., and Reps, T., “Dependence Analysis for Pointer Variables,” Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation, (Portland, OR, June 21–23, 1989), ACM SIGPLAN Notices 24(7) pp. 28–40 (July 1989).

    Google Scholar 

  11. Horwitz, S., Prins, J., and Reps, T., “Integrating Non-interfering Versions of Programs,” ACM Transactions on Programming Languages and Systems 11(3) pp. 345–387 (July 1989).

    Article  Google Scholar 

  12. Horwitz, S., “Identifying the Semantic and Textual Differences Between Two Versions of a Program,” Proceedings of the ACM SIGPLAN 90 Conference on Programming Language Design and Implementation, (White Plains, NY, June 20–22, 1990), ACM SIGPLAN Notices 25(6)(July 1990).

    Google Scholar 

  13. Horwitz, S., Reps, T., and Binkley, D., “Interprocedural Slicing Using Dependence Graphs,” ACM Transactions on Programming Languages and Systems 12(1) pp. 26–60 (January 1990).

    Google Scholar 

  14. Kuck, D.J., Muraoka, Y., and Chen, S.C., “On the number of operations simultaneously executable in FORTRAN-like programs and their resulting speed-up,” IEEE Trans. on Computers C-21(12) pp. 1293–1310 (December 1972).

    Google Scholar 

  15. Kuck, D.J., Kuhn, R.H., Leasure, B., Padua, D.A., and Wolfe, M., “Dependence Graphs and Compiler Optimizations,” pp. 207–218 in Conference Record of the Eighth ACM Symposium on Principles of Programming Languages, (Williamsburg, VA, January 26–28, 1981), ACM, New York, NY (1981).

    Google Scholar 

  16. Larus, J.R., “Restructuring symbolic Programs for Concurrent Execution on Multiprocessors,” Ph.D. dissertation and Tech. Rep. UCB/CSD 89/502, Computer Science Division, Dept. of Elec. Eng. and Comp. Sci., Univ. of California — Berkeley, Berkeley, CA (May 1989).

    Google Scholar 

  17. Manna, Z., Mathematical Theory of Computation, McGraw-Hill, New York, NY (1974).

    Google Scholar 

  18. Ottenstein, K.J. and Ottenstein, L.M., “The Program Dependence Graph in a Software Development Environment,” Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, (Pittsburgh, PA, Apr. 23–25, 1984), ACM SIGPLAN Notices 19(5) pp. 177–184 (May 1984).

    Google Scholar 

  19. Pingali, K., Beck, M., Johnson, R., Moudgill, M., and Stodghill, P., “Dependence Flow Graphs: An Algebraic Approach to Program Dependencies,” pp. 67–78 in Conference Record of the Eighteenth ACM Symposium on Principles of Programming Languages, (Orlando, FL, January 21–23, 1991), ACM, New York, NY (1991).

    Google Scholar 

  20. Ramalingam, G. and Reps, T., “Semantics of program representation graphs,” TR-900, Computer Sciences Department, University of Wisconsin, Madison, WI (December 1989).

    Google Scholar 

  21. Reps, T. and Yang, W., “The Semantics of Program Slicing and Program Integration,” Proceedings of the International Joint Conference on Theory and Practice of Software Development (Colloquium on Current Issues in Programming Languages), (Barcelona, Spain, March 13–17, 1989), Lecture Notes in Computer Science 352 pp. 360–374 Springer-Verlag, (1989).

    Google Scholar 

  22. Selke, R.P., “A Rewriting Semantics for Program Dependence Graphs,” pp. 12–24 in Conference Record of the Sixteenth ACM Symposium on Principles of Programming Languages, (Austin, TX, Jan. 11–13, 1989), ACM, New York, NY (1989).

    Google Scholar 

  23. Selke, R.P., “Program Dependence Graphs: A Formal Treatment,” Technical Report TR90-130, Dept. of Computer Science, Rice Univ., Houston, TX (1990).

    Google Scholar 

  24. Selke, R.P., “Transforming Program Dependence Graphs,” Technical Report TR90-131, Dept. of Computer Science, Rice Univ., Houston, TX (August 1990).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Takayasu Ito Albert R. Meyer

Rights and permissions

Reprints and permissions

Copyright information

© 1991 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Pfeiffer, P., Selke, R.P. (1991). On the adequacy of dependence-based representations for programs with heaps. In: Ito, T., Meyer, A.R. (eds) Theoretical Aspects of Computer Software. TACS 1991. Lecture Notes in Computer Science, vol 526. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54415-1_55

Download citation

  • DOI: https://doi.org/10.1007/3-540-54415-1_55

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-54415-9

  • Online ISBN: 978-3-540-47617-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics