ABSTRACT
We propose a framework for improving both the scalability as well as the accuracy of pointer alias analysis, irrespective of its flow or context-sensitivities, by leveraging a three-pronged strategy that effectively combines divide and conquer, parallelization and function summarization. A key step in our approach is to first identify small subsets of pointers such that the problem of computing aliases of any pointer can be reduced to computing them in these small subsets instead of the entire program. In order to identify these subsets, we first apply a series of increasingly accurate but highly scalable (context and flow-insensitive) alias analyses in a cascaded fashion such that each analysis Ai works on the subsets generated by the previous one Ai-1. Restricting the application of Ai to subsets generated by Ai-1, instead of the entire program, improves it scalability, i.e., Ai is bootstrapped by Ai-1. Once these small subsets have been computed, in order to make our overall analysis accurate, we employ our new summarization-based flow and context-sensitive alias analysis. The small size of each subset offsets the higher computational complexity of the context-sensitive analysis. An important feature of our framework is that the analysis for each of the subsets can be carried out independently of others thereby allowing us to leverage parallelization further improving scalability.
- Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. In PhD. Thesis, DIKU, 1994.]]Google Scholar
- Marc Berndl, Ondrej Lhoták, Feng Qian, Laurie J. Hendren, and NavindraUmanee. Points-to analysis using BDDs. In PLDI, 2003.]] Google Scholar
Digital Library
- Manuvir Das. Unification-based pointer analysis with directional assignments. In PLDI, 2000.]] Google Scholar
Digital Library
- Manuvir Das, Ben Liblit, Manuel F"ahndrich, and Jakob Rehof. Estimating the impact of scalable pointer analysis on optimization. In SAS, 2001.]] Google Scholar
Digital Library
- Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers. In PLDI, 1994.]] Google Scholar
Digital Library
- Manuel Fähndrich, Jakob Rehof, and Manuvir Das. Scalable context-sensitive flow analysis using instantiation constraints. In PLDI, 2000.]] Google Scholar
Digital Library
- Jeffrey S. Foster, Manuel Fähndrich, and Alexander Aiken. Polymorphic versus Monomorphic Flow-Insensitive Points-to Analysis for C. In SAS, 2000.]] Google Scholar
Digital Library
- Brian Hackett and Alex Aiken. How is aliasing used in systems software? In FSE, 2006.]] Google Scholar
Digital Library
- B. Hardekof and C. Lin. The ant and the grasshopper: fast and accurate pointer analysis for million lines of code. In PLDI, 2007.]] Google Scholar
Digital Library
- Nevin Heintze and Olivier Tardieu. Ultra-fast Aliasing Analysis using CLA: A Million Lines of C Code in a Second. In PLDI, 2001.]] Google Scholar
Digital Library
- Ondrej Lhoták and Laurie J. Hendren. Scaling Java Points-to Analysis Using SPARK. In CC, 2003.]]Google Scholar
- Barbara G. Ryder, Willian Landi, Phil Stocks, Sean Zhang, and Rita Al-tucher. A Schema for Interprocedural Modification Side-Effect Analysis with Pointer Aliasing. In ACM Trans. Program. Lang. Sys., volume 23,pages 105--186, 2001.]] Google Scholar
Digital Library
- Bjarne Steensgaard. Points-to Analysis in Almost Linear Time. In POPL, 1996.]] Google Scholar
Digital Library
- John Whaley and Monica S. Lam. An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages. In SAS, 2002.]] Google Scholar
Digital Library
- John Whaley and Monica S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, 2004.]] Google Scholar
Digital Library
- John Whaley and Martin C. Rinard. Compositional Pointer and Escape Analysis for Java Programs. In OOPSLA, 1999.]] Google Scholar
Digital Library
- John Whaley, C. Unkel, and M. Lam. A BDD-based deductive database for program analysis. In http://suif.stanford.edu/bddbddb, 2004.]]Google Scholar
- Robert P. Wilson and Monica S. Lam. Efficient Context Sensitive Pointer Analysis for C Programs. In PLDI, 1995.]] Google Scholar
Digital Library
- S. Zhang, B. G. Ryder, and W. Landi. Program Decomposition for Pointer Aliasing: A Step Towards Practical Analyses. In FSE, 1996.]] Google Scholar
Digital Library
- Jianwen Zhu. Symbolic pointer analysis. In ICCAD, pages 150--157, 2002.]] Google Scholar
Digital Library
- Jianwen Zhu and Silvian Calman. Context sensitive symbolic pointer analysis. In IEEE Trans. on CAD of Integrated Circuits and Systems, volume 24, pages 516--531, 2005.]] Google Scholar
Digital Library
Index Terms
Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis
Recommendations
Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis
PLDI '08We propose a framework for improving both the scalability as well as the accuracy of pointer alias analysis, irrespective of its flow or context-sensitivities, by leveraging a three-pronged strategy that effectively combines divide and conquer, ...
Refinement-based context-sensitive points-to analysis for Java
Proceedings of the 2006 PLDI ConferenceWe present a scalable and precise context-sensitive points-to analysis with three key properties: (1) filtering out of unrealizable paths, (2) a context-sensitive heap abstraction, and (3) a context-sensitive call graph. Previous work [21] has shown ...
Refinement-based context-sensitive points-to analysis for Java
PLDI '06: Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and ImplementationWe present a scalable and precise context-sensitive points-to analysis with three key properties: (1) filtering out of unrealizable paths, (2) a context-sensitive heap abstraction, and (3) a context-sensitive call graph. Previous work [21] has shown ...







Comments