The effects of the precision of pointer analysis
In order to analyze programs that manipulate pointers, it is necessary to have safe information about what each pointer might point to. There are many algorithms that can be used to determine this information, with varying degrees of accuracy. However, there has been very little previous work that addresses how much the relative accuracies of different pointer-analysis algorithms affect “transitive” results: the results of a subsequent analysis.
- How are the transitive effects of pointer analysis affected by the precision of the analysis?
- How good are the “direct” effects of pointer analysis (the sizes of the computed points-to sets) at predicting the transitive effects?
- What are the time trade-offs?
We found that using a more precise pointer analysis does in general lead to more precise transitive results. However, the magnitude of the payoff in precision depends on the particular use of the points-to information. We also found that direct effects are good predictors of transitive effects, and that increased precision in points-to information not only causes a subsequent analysis to produce more precise results, it also causes the subsequent analysis to run faster.
KeywordsPointer Analysis Transitive Effect Program Language Design Dataflow Analysis System Dependence Graph
Unable to display preview. Download preview PDF.
- [ABS94]T. Austin, S. Breach, and G. Sohi. Efficient detection of all pointer and array access errors. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 290–301, June 1994.Google Scholar
- [And94]L. O. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994. (DIKU report 94/19).Google Scholar
- [EGH94]M. Emami, R. Ghiya, and L. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In SIGPLAN Conference on Programming Languages Design and Implementation, 1994.Google Scholar
- [GMW81]R. Giegerich, U. Moncke, and R. Wilhelm. Invariance of approximative semantics with respect to program transformation. In GI 81-11th GI Annual Conference, Informatik-Fachberichte 50, pages 1–10, New York, NY, 1981. Springer-Verlag.Google Scholar
- [HRB90]S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems, 12(1):26–60, January 1990.Google Scholar
- [HRSR94]S. Horwitz, T. Reps, M. Sagiv, and G. Rosay. Speeding up slicing. In Proceedings of the Third ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 11–20, December 1994. (Available on the WWW from URL http://www.cs.wisc.edu/wpis/papers/fse94.ps).Google Scholar
- [Ki173]G.A. Kildall. A unified approach to global program optimization. In ACM Symposium on Principles of Programming Languages, pages 194–206, January 1973.Google Scholar
- [LR92]W. Landi and B. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 235–248, June 1992.Google Scholar
- [LRZ93]W. Landi, B. Ryder, and S. Zhang. Interprocedural modification side effect analysis with pointer aliasing. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 56–67, June 1993.Google Scholar
- [NW74]John Neter and William Wasserman. Applied Linear Statistical Models, chapter 5.5, pages 156–159. Richard D. Irwin, Inc., 1974.Google Scholar
- [RHS95]T. Reps, S. Horwitz, and M. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In ACM Symposium on Principles of Programming Languages, pages 49–61, January 1995. (Available on the WWW from URL http://www.cs.wisc.edu/wpis/papers/popl95.ps).Google Scholar
- [Ruf95]E. Ruf. Context-sensitive alias analysis reconsidered. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 13–22, June 1995.Google Scholar
- [SH97]M. Shapiro and S. Horwitz. Fast and accurate flow-insensitive points-to analysis. In ACM Symposium on Principles of Programming Languages. ACM, New York, January 1997.Google Scholar
- [Ste96]B. Steensgaard. Points-to analysis in almost linear time. In ACM Symposium on Principles of Programming Languages, pages 32–41, January 1996.Google Scholar
- [Tar83]R. Tarjan. Data structures and network flow algorithms. volume CMBS44 of Regional Conference Series in Applied Mathematics. SIAM, 1983.Google Scholar
- [Wei84]M. Weiser. Program slicing. IEEE Transactions on Software Engineering, SE-10(4):352–357, July 1984.Google Scholar
- [WL95]R. Wilson and M. Lam. Efficient context-sensitive pointer analysis for C programs. In SIGPLAN Conference on Programming Language Design and Implementation, pages 1–12, June 1995.Google Scholar