Abstract
We introduce a new region-based SELective Flow-Sensitive (Selfs) approach to inter-procedural pointer analysis for C that operates on the regions partitioned from a program. Flow-sensitivity is maintained between the regions but not inside, making traditional flow-insensitive and flow-sensitive as well as recent sparse flow-sensitive analyses all special instances of our Selfs framework. By separating region partitioning as an independent concern from the rest of the pointer analysis, Selfs facilitates the development of flow-sensitive variations with desired efficiency and precision tradeoffs by reusing existing pointer resolution algorithms. We also introduce a new unification-based approach for region partitioning to demonstrate the generality and flexibility of our Selfs framework, as evaluated using SPEC2000/2006 benchmarks in LLVM.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Acharya, M., Robinson, B.: Practical change impact analysis based on static program slicing for industrial software systems. In: ICSE 2011, pp. 746–755 (2011)
Andersen, L.O.: Program analysis and specialization for the C programming language. PhD Thesis, DIKU, University of Copenhagen (1994)
Cai, Q., Gao, L., Xue, J.: Region-based partial dead code elimination on predicated code. In: Duesterwald, E. (ed.) CC 2004. LNCS, vol. 2985, pp. 150–166. Springer, Heidelberg (2004)
Ceccarelli, M., Cerulo, L., Canfora, G., Di Penta, M.: In: ICSE 2010, pp. 163–166 (2010)
Choi, J.-D., Cytron, R., Ferrante, J.: Automatic construction of sparse data flow evaluation graphs. In: POPL 1991, pp. 55–66 (1991)
Choi, J.-D., Cytron, R., Ferrante, J.: On the efficient engineering of ambitious program analysis. IEEE Transactions on Software Engineering 20(2), 105–114 (1994)
Chow, F., Chan, S., Liu, S., Lo, R., Streich, M.: Effective representation of aliases and indirect memory operations in SSA form. In: Gyimóthy, T. (ed.) CC 1996. LNCS, vol. 1060, pp. 253–267. Springer, Heidelberg (1996)
Cytron, R., Ferrante, J., Rosen, B., Wegman, M., Zadeck, F.: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)
Das, M.: Unification-based pointer analysis with directional assignments. In: PLDI 2000, pp. 35–46 (2000)
Das, M., Lerner, S., Seigle, M.: ESP: Path-sensitive program verification in polynomial time. In: PLDI 2002, pp. 57–68 (2002)
Fink, S.J., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective typestate verification in the presence of aliasing. ACM Transactions on Software Engineering and Methodology 17(2), 1–34 (2008)
Guyer, S.Z., Lin, C.: Client-driven pointer analysis. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, pp. 214–236. Springer, Heidelberg (2003)
Hank, R.E., Hwu, W.-M.W., Rau, B.R.: Region-based compilation: An introduction and motivation. In: MICRO 1995, pp. 158–168 (1995)
Hardekopf, B., Lin, C.: Flow-sensitive pointer analysis for millions of lines of code. In: CGO 2011, pp. 289–298 (2011)
Hardekopf, B., Lin, C.: Semi-sparse flow-sensitive pointer analysis. In: POPL 2009, pp. 226–238 (2009)
Hind, M., Burke, M., Carini, P., Choi, J.-D.: Interprocedural pointer alias analysis. ACM Transactions on Programming Languages and Systems 21(4), 848–894 (1999)
Hind, M., Pioli, A.: Assessing the effects of flow-sensitivity on pointer alias analyses. In: Levi, G. (ed.) SAS 1998. LNCS, vol. 1503, pp. 57–81. Springer, Heidelberg (1998)
Kahlon, V.: Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis. In: PLDI 2008, pp. 249–259 (2008)
Kastrinis, G., Smaragdakis, Y.: Hybrid context-sensitivity for points-to analysis. In: PLDI 2013, pp. 423–434 (2013)
Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–86 (2004)
Lhoták, O., Chung, K.-C.A.: Points-to analysis with efficient strong updates. In: POPL 2011, pp. 3–16 (2011)
Livshits, V.B., Lam, M.S.: Tracking pointers with path and context sensitivity for bug detection in c programs. In: FSE 2003, pp. 317–326 (2003)
Oh, H., Heo, K., Lee, W., Lee, W., Yi, K.: Design and implementation of sparse global analyses for C-like languages. In: PLDI 2012, pp. 229–238 (2012)
Pearce, D., Kelly, P., Hankin, C.: Efficient field-sensitive pointer analysis of C. ACM Transactions on Programming Languages and Systems 30(1) (2007)
Pereira, F., Berlin, D.: Wave propagation and deep propagation for pointer analysis. In: CGO 2009, pp. 126–135 (2009)
Ramalingam, G.: On sparse evaluation representations. Theoretical Computer Science 277(1), 119–147 (2002)
Rick Hank, R.R., Lee, L.: Implementing next generation points-to in Open64. In: Open64 Developers Forum
Suganuma, T., Yasue, T., Nakatani, T.: A region-based compilation technique for a Java just-in-time compiler. In: PLDI 2003, pp. 312–323 (2013)
Sui, Y., Li, Y., Xue, J.: Query-directed adaptive heap cloning for optimizing compilers. In: CGO 2013, pp. 1–11 (2013)
Sui, Y., Ye, D., Xue, J.: Static memory leak detection using full-sparse value-flow analysis. In: ISSTA 2012, pp. 254–264 (2012)
Sui, Y., Ye, D., Xue, J.: Detecting memory leaks statically with full-sparse value-flow analysis. IEEE Transactions on Software Engineering 40(2), 107–122 (2014)
Sui, Y., Ye, S., Xue, J., Yew, P.-C.: SPAS: Scalable path-sensitive pointer analysis on full-sparse SSA. In: Yang, H. (ed.) APLAS 2011. LNCS, vol. 7078, pp. 155–171. Springer, Heidelberg (2011)
Triantafyllis, S., Bridges, M.J., Raman, E., Ottoni, G., August, D.I.: A framework for unrestricted whole-program optimization. In: PLDI 2006, pp. 61–71 (2006)
Ye, D., Sui, Y., Xue, J.: Accelerating dynamic detection of uses of undefined variables with static value-flow analysis. In: CGO 2014, pp. 154–164 (2012)
Yu, H., Xue, J., Huo, W., Feng, X., Zhang, Z.: Level by level: making flow-and context-sensitive pointer analysis scalable for millions of lines of code. In: CGO 2010, pp. 218–229 (2010)
Zhang, S., Ryder, B.G., Landi, W.: Program decomposition for pointer aliasing: A step toward practical analyses. In: Gollmann, D. (ed.) FSE 1996. LNCS, vol. 1039, pp. 81–92. Springer, Heidelberg (1996)
Zhang, S., Ryder, B.G., Landi, W.A.: Experiments with combined analysis for pointer aliasing. In: PASTE 1998, pp. 11–18 (1998)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Ye, S., Sui, Y., Xue, J. (2014). Region-Based Selective Flow-Sensitive Pointer Analysis. In: Müller-Olm, M., Seidl, H. (eds) Static Analysis. SAS 2014. Lecture Notes in Computer Science, vol 8723. Springer, Cham. https://doi.org/10.1007/978-3-319-10936-7_20
Download citation
DOI: https://doi.org/10.1007/978-3-319-10936-7_20
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-10935-0
Online ISBN: 978-3-319-10936-7
eBook Packages: Computer ScienceComputer Science (R0)