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)
- REFERENCES
- 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.
- Daniel Brand. A software falsifier. In International Symposium on Software Reliability Engineering, pages 174-185, October 2000.
- Marcio Buss. Phd thesis (to appear). Department of Computer Science, Columbia University.
- Ramkrishna Chatterjee, Barbara Ryder, and William A. Landi. Relevant context inference. In Proceedings of Principles of Programming Languagues (POPL), pages 133-146, 1999.
- 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.
- Manuvir Das. Unification-based pointer analysis with directional assignments. In Proceedings of Programming Language Design and Implementation (PLDI), pages 35-46, 2000.
- 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.
- Mary Jean Harrold and Gregg Rothermel. Separate computation of alias information for reuse. IEEE Transactions of Software Engineering, 22(7):442-460, 1996.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Frederic Vivien and Martin Rinard. Incrementalized pointer and escape analysis. In Proceedings of Programming Language Design and Implementation (PLDI), pages 35-46, 2001.
- 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.
- 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.