Skip to main content

Region-Based Selective Flow-Sensitive Pointer Analysis

  • Conference paper
Static Analysis (SAS 2014)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8723))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Acharya, M., Robinson, B.: Practical change impact analysis based on static program slicing for industrial software systems. In: ICSE 2011, pp. 746–755 (2011)

    Google Scholar 

  2. Andersen, L.O.: Program analysis and specialization for the C programming language. PhD Thesis, DIKU, University of Copenhagen (1994)

    Google Scholar 

  3. 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)

    Chapter  Google Scholar 

  4. Ceccarelli, M., Cerulo, L., Canfora, G., Di Penta, M.: In: ICSE 2010, pp. 163–166 (2010)

    Google Scholar 

  5. Choi, J.-D., Cytron, R., Ferrante, J.: Automatic construction of sparse data flow evaluation graphs. In: POPL 1991, pp. 55–66 (1991)

    Google Scholar 

  6. 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)

    Article  Google Scholar 

  7. 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)

    Chapter  Google Scholar 

  8. 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)

    Article  Google Scholar 

  9. Das, M.: Unification-based pointer analysis with directional assignments. In: PLDI 2000, pp. 35–46 (2000)

    Google Scholar 

  10. Das, M., Lerner, S., Seigle, M.: ESP: Path-sensitive program verification in polynomial time. In: PLDI 2002, pp. 57–68 (2002)

    Google Scholar 

  11. 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)

    Article  Google Scholar 

  12. Guyer, S.Z., Lin, C.: Client-driven pointer analysis. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, pp. 214–236. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  13. Hank, R.E., Hwu, W.-M.W., Rau, B.R.: Region-based compilation: An introduction and motivation. In: MICRO 1995, pp. 158–168 (1995)

    Google Scholar 

  14. Hardekopf, B., Lin, C.: Flow-sensitive pointer analysis for millions of lines of code. In: CGO 2011, pp. 289–298 (2011)

    Google Scholar 

  15. Hardekopf, B., Lin, C.: Semi-sparse flow-sensitive pointer analysis. In: POPL 2009, pp. 226–238 (2009)

    Google Scholar 

  16. 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)

    Article  Google Scholar 

  17. 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)

    Chapter  Google Scholar 

  18. Kahlon, V.: Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis. In: PLDI 2008, pp. 249–259 (2008)

    Google Scholar 

  19. Kastrinis, G., Smaragdakis, Y.: Hybrid context-sensitivity for points-to analysis. In: PLDI 2013, pp. 423–434 (2013)

    Google Scholar 

  20. Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–86 (2004)

    Google Scholar 

  21. Lhoták, O., Chung, K.-C.A.: Points-to analysis with efficient strong updates. In: POPL 2011, pp. 3–16 (2011)

    Google Scholar 

  22. 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)

    Google Scholar 

  23. 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)

    Google Scholar 

  24. Pearce, D., Kelly, P., Hankin, C.: Efficient field-sensitive pointer analysis of C. ACM Transactions on Programming Languages and Systems 30(1) (2007)

    Google Scholar 

  25. Pereira, F., Berlin, D.: Wave propagation and deep propagation for pointer analysis. In: CGO 2009, pp. 126–135 (2009)

    Google Scholar 

  26. Ramalingam, G.: On sparse evaluation representations. Theoretical Computer Science 277(1), 119–147 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  27. Rick Hank, R.R., Lee, L.: Implementing next generation points-to in Open64. In: Open64 Developers Forum

    Google Scholar 

  28. 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)

    Google Scholar 

  29. Sui, Y., Li, Y., Xue, J.: Query-directed adaptive heap cloning for optimizing compilers. In: CGO 2013, pp. 1–11 (2013)

    Google Scholar 

  30. Sui, Y., Ye, D., Xue, J.: Static memory leak detection using full-sparse value-flow analysis. In: ISSTA 2012, pp. 254–264 (2012)

    Google Scholar 

  31. 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)

    Article  Google Scholar 

  32. 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)

    Chapter  Google Scholar 

  33. 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)

    Google Scholar 

  34. 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)

    Google Scholar 

  35. 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)

    Google Scholar 

  36. 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)

    Google Scholar 

  37. Zhang, S., Ryder, B.G., Landi, W.A.: Experiments with combined analysis for pointer aliasing. In: PASTE 1998, pp. 11–18 (1998)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics