Abstract
We present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. The idea is to use a pre-analysis to estimate the impact of context-sensitivity on the main analysis's precision, and to use this information to find out when and where the main analysis should turn on or off its context-sensitivity. We formalize this approach and prove that the analysis always benefits from the pre-analysis-guided context-sensitivity. We implemented this selective method for an existing industrial-strength interval analyzer for full C. The method reduced the number of (false) alarms by 24.4%, while increasing the analysis cost by 27.8% on average.
The use of the selective method is not limited to context-sensitivity. We demonstrate this generality by following the same principle and developing a selective relational analysis.
- Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, 1977. Google Scholar
Digital Library
- Alain Deutsch. On the complexity of escape analysis. In POPL, 1997. Google Scholar
Digital Library
- Azadeh Farzan and Zachary Kincaid. Verification of parameterized concurrent programs by modular reasoning about data and control. In POPL, 2012. Google Scholar
Digital Library
- Samuel Z. Guyer and Calvin Lin. Client-driven pointer analysis. In SAS, 2003. Google Scholar
Digital Library
- Williams L. Harrison III. The interprocedural analysis and automatic parallelization of scheme programs. Lisp and Symbolic Computation, 1989.Google Scholar
- Nevin Heintze and Olivier Tardieu. Demand-driven pointer analysis. In PLDI, 2001. Google Scholar
Digital Library
- George Kastrinis and Yannis Smaragdakis. Hybrid context-sensitivity for points-to analysis. In PLDI, 2013. Google Scholar
Digital Library
- Percy Liang, Omer Tripp, and Mayur Naik. Learning minimal abstractions. In POPL, 2011. Google Scholar
Digital Library
- Ana Milanova, Atanas Rountev, and Barbara G. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In ISSTA, 2002. Google Scholar
Digital Library
- Antoine Miné. The octagon abstract domain. Higher-Order and Symbolic Computation, 19(1):31--100, 2006. Google Scholar
Digital Library
- Mayur Naik, Hongseok Yang, Ghila Castelnuovo, and Mooly Sagiv. Abstractions from tests. In POPL, 2012. Google Scholar
Digital Library
- Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, and Kwangkeun Yi. Design and implementation of sparse global analyses for C-like languages. In PLDI, 2012. Google Scholar
Digital Library
- John Plevyak and Andrew A. Chien. Precise concrete type inference for object-oriented languages. In OOPSLA, 1994. Google Scholar
Digital Library
- Thomas Reps, Susan Horwitz, and Mooly Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL, 1995. Google Scholar
Digital Library
- Micha Sharir and Amir Pnueli. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, pages 189--234. Prentice-Hall, Englewood Cliffs, NJ, 1981.Google Scholar
- Olin Grigsby Shivers. Control-flow analysis of higher-order languages -or- taming lambda. PhD thesis, CMU, 1991.Google Scholar
- Yannis Smaragdakis, Martin Bravenboer, and Ondrej Lhoták. Pick your contexts well: understanding object-sensitivity. In POPL, 2011. Google Scholar
Digital Library
- Sparrow. http://ropas.snu.ac.kr/sparrow.Google Scholar
- Manu Sridharan and Rastislav Bodík. Refinement-based context-sensitive points-to analysis for Java. In PLDI, 2006. Google Scholar
Digital Library
- Manu Sridharan, Denis Gopan, Lexin Shan, and Rastislav Bodík. Demand-driven points-to analysis for Java. In OOPSLA, 2005. Google Scholar
Digital Library
- Xin Zhang, Mayur Naik, and Hongseok Yang. Finding optimum abstractions in parametric dataflow analysis. In PLDI, 2013. Google Scholar
Digital Library
Index Terms
Selective context-sensitivity guided by impact pre-analysis
Recommendations
Selective context-sensitivity guided by impact pre-analysis
PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and ImplementationWe present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. ...
Selective X-Sensitive Analysis Guided by Impact Pre-Analysis
We present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. ...
Context transformations for pointer analysis
PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and ImplementationPoints-to analysis for Java benefits greatly from context sensitivity. CFL-reachability and k-limited context strings are two approaches to obtaining context sensitivity with different advantages: CFL-reachability allows local reasoning about data-value ...







Comments