Abstract
Pointer analysis is essential for optimizing and parallelizing compilers. It examines pointer assignment statements and estimates pointer-induced aliases among pointer variables or possible shapes of dynamic recursive data structures. However, previously proposed techniques perform pointer analysis without the knowledge of traversal patterns of dynamic recursive data structures to be constructed. This paper presents an algorithm to identify the traversal patterns of recursive data structures and propagate this information back to those statements that define the data structures. This approach recognizes the DEF/USE relationships between the statements that define and traverse dynamic recursive data structures. The outcome of this technique will be useful for pointer analysis and parallelization. Algorithms to perform pointer analysis and dependence test using the knowledge of traversal patterns will also be presented.
This work was sponsored in part by NSF (ASC-9213821 and CDA9401151).
Preview
Unable to display preview. Download preview PDF.
References
J. Barnes and P. Hut. A hierarchical O(N1ogN) force-calculation algorithm. Nature, pages 446–449, December 1976.
David R. Chase, Mark Wegman, and F. Kenneth Zadeck. Analysis of pointers and structures. SIGPLAN Notices, 25(6):296–310, June 1990. Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation.
Jong-Deok Choi, Michael Burke, and Paul Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 232–245, Charleston, South Carolina, January 1993.
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451–490, October 1991.
Alain Deutsch. Interprocedural May-Alias analysis for pointers: Beyond k-limiting. SIGPLAN Notices, 29(6):230–241, June 1994. Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation.
Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. Context-sensitive interprocedural Points-to analysis in the presence of function pointers. SIGPLAN Notices, 29(6):242–256, June 1994. Proceedings of the ACM SIGPLAN'94 Conference on Programming Language Design and Implementation.
Rakesh Ghiya and Laurie J. Hendren. Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C. In Conference Record of POPL '96: 23nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 1–15, St. Petersburg Beach, Florida, January 1996.
Laurie J. Hendren and Alexandru Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed Systems, 1(1):35–47, January 1990.
William Landi and Barbara G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. SIGPLAN Notices, 27(7):235–248, July 1992. Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation.
William Landi, Barbara G. Ryder, and Sean Zhang. Interprocedural side effect analysis with pointer aliasing. SIGPLAN Notices, 28(6):56–67, June 1993. Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation.
James R. Larus and Paul N. Hilfinger. Detecting conflicts between structure accesses. SIGPLAN Notices, 23(7):21–34, July 1988. Proceedings of the ACM SIGPLAN '88 Conference on Programming Language Design and Implementation.
Jenq Kuen Lee, Dan Ho, and Yue-Chee Chuang. Data distribution analysis and optimization for pointer-based distributed programs. In Proceedings of the 26th International Conference on Parallel Processing (ICPP), Bloomingdale, IL, August 1997.
N.K. Madsen. Divergence preserving discrete surface integral methods for maxwel l's curl equations using non-orthogonal grids. Technical Report 92.04, RIACS, February 1992.
Pedro C. Diniz Martin C. Rinard. Commutativity analysis: A new analysis framework for parallelizing compilers. SIGPLAN Notices, 31(5):54–67, May 1996. Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation.
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing, pages 37–56, Portland, Oregon, August 1993. Lecture Notes in Computer Science, Vol. 768, Springer Verlag.
Mooly Sagiv, Thomas Reps, and Reinhard Wilhelm. Solving shape-analysis problems in languages with destructive updating. In Conference Record of POPL '96: 23nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 16–31, St. Petersburg Beach, Florida, January 1996.
Robert P. Wilson and Monica S. Lam. Efficient context-sensitive pointer analysis for C programs. SIGPLAN Notices, 30(6):1–12, June 1995. Proceedings of the ACM SIGPLAN'95 Conference on Programming Language Design and Implementation.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hwang, YS., Saltz, J. (1998). Identifying DEF/USE information of statements that construct and traverse dynamic recursive data structures. In: Li, Z., Yew, PC., Chatterjee, S., Huang, CH., Sadayappan, P., Sehr, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1997. Lecture Notes in Computer Science, vol 1366. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0032688
Download citation
DOI: https://doi.org/10.1007/BFb0032688
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64472-9
Online ISBN: 978-3-540-69788-6
eBook Packages: Springer Book Archive