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.
Preview
Unable to display preview. Download preview PDF.
References
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).
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).
Binkley, D., Horwitz, S., and Reps, T., “The Multi-Procedure Equivalence Theorem,” TR-890, Computer Sciences Department, University of Wisconsin, Madison, WI (November 1989).
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).
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).
Choi, J., “Parallel Program Debugging with Flowback Analysis,” Ph.D. dissertation and TR-871, Computer Sciences Department, University of Wisconsin, Madison, WI (August 1989).
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).
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).
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).
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).
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).
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).
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).
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).
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).
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).
Manna, Z., Mathematical Theory of Computation, McGraw-Hill, New York, NY (1974).
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).
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).
Ramalingam, G. and Reps, T., “Semantics of program representation graphs,” TR-900, Computer Sciences Department, University of Wisconsin, Madison, WI (December 1989).
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).
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).
Selke, R.P., “Program Dependence Graphs: A Formal Treatment,” Technical Report TR90-130, Dept. of Computer Science, Rice Univ., Houston, TX (1990).
Selke, R.P., “Transforming Program Dependence Graphs,” Technical Report TR90-131, Dept. of Computer Science, Rice Univ., Houston, TX (August 1990).
Author information
Authors and Affiliations
Editor information
Rights 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