Skip to main content

Identifying DEF/USE information of statements that construct and traverse dynamic recursive data structures

  • Data Locality
  • Conference paper
  • First Online:

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

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).

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. Barnes and P. Hut. A hierarchical O(N1ogN) force-calculation algorithm. Nature, pages 446–449, December 1976.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Zhiyuan Li Pen-Chung Yew Siddharta Chatterjee Chua-Huang Huang P. Sadayappan David Sehr

Rights and permissions

Reprints 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

Publish with us

Policies and ethics