Academia.eduAcademia.edu

Outline

A new abstraction for summary-based pointer analysis

2007

https://doi.org/10.7916/D8NP2CDH

Abstract

We propose a new abstraction for pointer analysis based on the principle of matching pointer dereferences or “memory fetches” with pointer assignments. Our abstraction, the Assign-Fetch Graph (AFG), has several advantages over traditional points-to graphs. It leads to concise procedure summaries for pointer analysis and similar computations; each procedure’s summary information can be used effectively in arbitrary calling contexts. Different analysis variations can be formulated on the AFG— we present two possible variations. One is based on a standard flow-insensitive view of the program; the other takes some statement ordering into account and produces results that are both more precise and more quickly computed. Our abstraction also facilitates incremental summary-based pointer analysis, which is not generally possible with conventional points-to graphs. We show how the AFG simplifies certain steps in updating pointer graphs and computing procedure summaries. For efficiency and c...

References (21)

  1. REFERENCES
  2. L. O. Andersen. Program analysis and specialization for the C programming language. PhD thesis, DIKU, University of Copenhagen, May 1994. Available at ftp.diku.dk/pub/diku/semantics/papers/D-203.dvi.Z.
  3. Daniel Brand. A software falsifier. In International Symposium on Software Reliability Engineering, pages 174-185, October 2000.
  4. Marcio Buss. Phd thesis (to appear). Department of Computer Science, Columbia University.
  5. Ramkrishna Chatterjee, Barbara Ryder, and William A. Landi. Relevant context inference. In Proceedings of Principles of Programming Languagues (POPL), pages 133-146, 1999.
  6. J. Choi, M. Burke, and P. Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Proceedings of the 20th Annual ACM Symposium on Principles of Programming Languages, pages 232-245, 1993.
  7. Manuvir Das. Unification-based pointer analysis with directional assignments. In Proceedings of Programming Language Design and Implementation (PLDI), pages 35-46, 2000.
  8. Maryam. Emami, Rakesh Ghiya, and Laurie Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of Programming Language Design and Implementation (PLDI), pages 242-256, 1994.
  9. Mary Jean Harrold and Gregg Rothermel. Separate computation of alias information for reuse. IEEE Transactions of Software Engineering, 22(7):442-460, 1996.
  10. Nevin Heintze and Olivier Tardieu. Ultra-fast aliasing analysis using CLA: a million lines of C code in a second. In Proceedings of Programming Language Design and Implementation (PLDI), pages 254-263, 2001.
  11. William Landi and Barbara Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Proceedings of Programming Language Design and Implementation (PLDI), pages 235-248, 1992.
  12. V. Benjamin Livshits and Monica S. Lam. Tracking pointers with path and context sensitivity for bug detection in c programs. In Proceedings of the SIGSOFT Symposium on the Foundations of Software Engineering, 2003.
  13. Atanas Rountev, Barbara Ryder, and William Landi. Data-flow analysis of program fragments. In 7th European Software Engineering Conference/ACM SIGSOFT Symposium on the Foundations of Sofware Engineering, ESEC/SIGSOFT FSE, pages 235-252, 1999.
  14. Marc Shapiro and Susan Horwitz. Fast and accurate flow-insensitive points-to analysis. In Proceedings of Principles of Programming Languagues (POPL), pages 1-14, 1997.
  15. Jyh shiarn Yur, Barbara Ryder, and Willim Landi. An incremental flow-and context-sensitive pointer aliasing analysis. In Proceedings of the 21st International Conference on Software Engineering, pages 442-451, 1999.
  16. Manu Sridharan, , and Rastislav Bodik. Refinement-based context-sensitive points-to analysis for java. In Proceedings of Programming Language Design and Implementation (PLDI), pages 387-400, 2006.
  17. Manu Sridharan, Denis Gopan, Lexin Shan, and Rastislav Bodik. Demand-driven points-to analysis for java. In Proceedings of the SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA), 2005.
  18. Bjarne Steensgaard. Points-to analysis in almost linear time. In POPL '96: Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 32-41, 1996.
  19. Frederic Vivien and Martin Rinard. Incrementalized pointer and escape analysis. In Proceedings of Programming Language Design and Implementation (PLDI), pages 35-46, 2001.
  20. John Whaley and Martin Rinard. Compositional pointer and escape analysis for java programs. In Proceedings of the 14th Annual Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), 1999.
  21. R. Wilson and M. Lam. Efficient context-sensitive pointer analysis for C programs. In Proceedings of Programming Language Design and Implementation (PLDI), pages 1-12, 1995.