Browse > Article

A Modular Pointer Analysis using Function Summaries  

Park, Sang-Woon (한국과학기술원 전자전산학과)
Kang, Hyun-Goo (한국과학기술원 전산학과)
Han, Tai-Sook (한국과학기술원 전자전산학과)
Abstract
In this paper, we present a modular pointer analysis algorithm based on the update history. We use the term 'module' to mean a set of mutually recursive procedures and the term 'modular analysis' to mean a program analysis that does not need the source codes of the other modules to analyze a module. Since a modular pointer analysis does not utilize any information on the callers, it is difficult to design a precise analysis that does not lose the information related to the program flow or the calling context. In this paper, we propose a modular and flow- and context-sensitive pointer analysis algorithm based on the update history that can memory states of a procedure independently of the information on the calling context and keep the information on the order of side effects performed. Such a memory representation not only enables the analysis to be formalized as a modular analysis, but also helps the analysis to effectively identify killed side effects and relevant alias contexts.
Keywords
pointer analysis; modular analysis; bottom-up analysis; summary;
Citations & Related Records
연도 인용수 순위
  • Reference
1 N. Heintze, O. Tardieu, Ultra-fast aliasing analysis using CLA: A million lines of C code in a second, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2001, pp. 254-263
2 A. Deutsch, Interprocedural may-alias analysis for pointers: Beyond k-limiting, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1994, pp. 230-241
3 M. Hind, M. Burke, P. Carini, J.-D. Choi, Interprocedural pointer alias analysis, ACM Transactions on Programming Language and Systems (1999) 848-894
4 R. P. Wilson, M. S. Lam, Efficient context-sensitive pointer analysis for C programs, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1995, pp. 1-12
5 R. P. Wilson, Efficient, context-sensitive pointer analysis for c programs, Ph.D. thesis, Stanford University (Dec. 1997)
6 M. Sagiv, T. Reps, R. Wilhelm, Parametric shape analysis via 3-valued logic, ACM Transactions on Programming Language and Systems (2002) 217-298
7 J. Zhu, Towards scalable flow and context sensitive pointer analysis, in: Proceedings of ACM Design Automation Conference, 2005, pp. 831-836
8 N. Rinetzky, M. Sagiv, E. Yahav, Interprocedural shape analysis for cutpoint-free programs, in: C. Hankin, I. Siveroni (Eds.), SAS, Vol. 3672 of Lecture Notes in Computer Science, Springer, 2005, pp. 284-302
9 M. Fähndrich, J.Rehof, M. Das, Scalable context- sensitive flow analysis using instantiation constraints, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2000, pp. 253-263
10 J. S. Foster, M. Fähndrich, A. Aiken, Polymorphic versus monomorphic flow-insensitive points-to analysis for C, in: Proceedings of the Annual International Static Analysis Symposium, 2000, pp. 175-198
11 W. Landi, B. G. Ryder, A safe approximate algorithm for interprocedural pointer aliasing, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1992, pp. 235-248
12 A. Rountev, B. G. Ryder, W. Landi, Data-flow analysis of program fragments, in: ACM SIGPLAN-SIGSOFT Symposium on the Foundations of Software Engineering, 1999, pp. 235-252
13 C. Calcagno, D. Distefano, P. W. O'Hearn, H. Yang, Footprint Analysis, in: Proceedings of Static Analysis Symposium, 2007, 402-418
14 G. C. Necula, S. McPeak, S. P. Rahul, W. Weimer, CIL: Intermediate languages and tools for analysis and transformation of C programs, in: Proceedings of International Conference on Compiler Construction, 2002, pp. 213-228
15 P. Cousot, R. Cousot, Abstract interpretation frameworks, Journal of Logic and Computation 2 (4) (1992) 511-547   DOI
16 E. Ruf, Effective synchronization removal for java, in: Proceedings of the ACM SIGPLAN Conferenceon Programming Language Design and Implementation, 2000, pp. 208-218
17 M. Emami, R. Ghiya, L. J. Hendren, Context- sensitive interprocedural points-to analysis in the presence of function pointers, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1994, pp. 242-256
18 J. Whaley, M. C. Rinard, Compositional pointer and escape analysis for java programs, in: OOPSLA, 1999, pp. 187-206
19 D. Distefano, P. W. O'Hearn, H. Yang, A local shape analysis based on separation logic, in: H. Hermanns, J. Palsberg (Eds.), TACAS, Vol. 3920 of Lecture Notes in Computer Science, Springer, 2006, pp. 287-302
20 A. Rountev, B. G. Ryder, Points-to and side-effect analyses for programs built with precompiled libraries, in: Proceedings of International Conference on Compiler Construction, 2002, pp. 20-36
21 H.-G. Kang, Y. Kim, T. Han, H. Han, A path sensitive type system for resource usage verification of C like languages, in: K. Yi (Ed.), APLAS, Vol. 3780 of Lecture Notes in Computer Science, Springer, 2005, pp. 264-280
22 A. Gotsman, J. Berdine, B. Cook, Interprocedural shape analysis with separated heap abstractions, in: K. Yi (Ed.), SAS, Vol. 4134 of Lecture Notes in Computer Science, Springer, 2006, pp. 240-260
23 R. Chatterjee, B. G. Ryder, W. A. Landi, Relevant context inference, in: Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1999, pp. 133-146
24 M. Buss, D. Brand, V. C. Sreedhar, S. A. Edwards, Flexible pointer analysis using assign-fetch graphs, in Proceedings of the ACM Symposium on Applied Computing, 2008, pp. 234-239
25 D. R. Chase, M. Wegman, F. K. Zadeck, Analysis of pointers and structures, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1990, pp. 296- 310
26 B.-C. Cheng, W. mei W. Hwu, Modular interprocedural pointer analysis using access paths: Design, implementation, and evaluation, in: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2000, pp. 57-69
27 N. Rinetzky, J. Bauer, T. W. Reps, S. Sagiv, R. Wilhelm, A semantics for procedure local heaps and its abstractions, in: J. Palsberg, M. Abadi (Eds.), POPL, ACM, 2005, pp. 296-309
28 M. J. Harrold, G. Rothermel, Separate computation of alias information for reuse, IEEE Transactions on Software Engineering (1996) 442-460