Abstract
We present a new SPAS (Scalable PAth-Sensitive) framework for resolving points-to sets in C programs that exploits recent advances in pointer analysis. SPAS enables intraprocedural path-sensitivity to be obtained in flow-sensitive and context-sensitive (FSCS) techniques scalably, by using BDDs to manipulate program paths and by performing pointer analysis level-by-level on a full-sparse SSA representation similarly as the state-of-the-art LevPA (the FSCS version of SPAS). Compared with LevPA using all 27 C benchmarks in SPEC CPU2000 and CPU2006, SPAS incurs 18.42% increase in analysis time and 10.97% increase in memory usage on average, while guaranteeing that all points-to sets are obtained with non-decreasing precision.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Berndl, M., Lhoták, O., Qian, F., Hendren, L., Umanee, N.: Points-to analysis using BDDs. In: PLDI 2003, vol. 38(5), p. 114 (2003)
Bush, W.R., Pincus, J.D., Sielaff, D.J.: A static analyzer for finding dynamic programming errors. In: SPE 2000, vol. 30, pp. 775–802 (2000)
Chatterjee, R., Ryder, B.G., Landi, W.A.: Relevant context inference. In: POPL 1999, p. 146. ACM (1999)
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.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. TOPLAS 13(4), 490 (1991)
Dillig, I., Dillig, T., Aiken, A.: Sound, complete and scalable path-sensitive analysis. In: PLDI 2008, pp. 270–280. ACM (2008)
Emami, M., Ghiya, R., Hendren, L.J.: Context-sensitive interprocedural points-to analysis in the presence of function pointers. In: PLDI 1994, pp. 242–256 (1994)
Gutzmann, T., Lundberg, J., Lowe, W.: Towards path-sensitive points-to analysis. In: SCAM 2007, pp. 59–68. IEEE (2007)
Hardekopf, B., Lin, C.: Semi-sparse flow-sensitive pointer analysis. In: POPL 2009, pp. 226–238. ACM (2009)
Hardekopf, B., Lin, C.: Flow-Sensitive Pointer Analysis for Millions of Lines of Code. In: CGO 2011 (2011)
Kahlon, V.: Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis. In: PLDI 2008, pp. 249–259. ACM (2008)
Landi, W., Ryder, B.G.: A safe approximate algorithm for interprocedural aliasing. In: PLDI 1992, vol. 27(7), pp. 235–248 (1992)
Le, W., Soffa, M.L.: Refining buffer overflow detection via demand-driven path-sensitive analysis. In: PASTE 2007, pp. 63–68. ACM (2007)
Lhoták, O., Andrew Chung, K.-C.: Points-to analysis with efficient strong updates. In: POPL 2011, pp. 3–16. ACM, New York (2011)
Benjamin Livshits, V., Lam, M.S.: Tracking pointers with path and context sensitivity for bug detection in c programs. In: FSE 2003, pp. 317–326 (2003)
Nystrom, E.M., Kim, H.S., Hwu, W.W.: Bottom-Up and Top-Down Context-Sensitive Summary-Based Pointer Analysis. In: Giacobazzi, R. (ed.) SAS 2004. LNCS, vol. 3148, pp. 165–180. Springer, Heidelberg (2004)
Smaragdakis, Y., Bravenboer, M., Lhoták, O.: Pick your contexts well: understanding object-sensitivity. In: POPL 2011, pp. 17–30. ACM (2011)
Steensgaard, B.: Points-to analysis in almost linear time. In: POPL 1996, pp. 32–41. ACM, New York (1996)
Whaley, J., Lam, M.S.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In: PLDI 2004, pp. 131–144. ACM (2004)
Xie, Y., Aiken, A.: Context-and path-sensitive memory leak detection. In: FSE 2005, vol. 30(5), p. 125 (2005)
Xie, Y., Aiken, A.: Scalable error detection using boolean satisfiability. In: POPL 2005, vol. 40(1), pp. 351–363 (2005)
Xue, J., Cai, Q., Gao, L.: Partial dead code elimination on predicated code regions. In: SPE 2006, vol. 36, pp. 1655–1685 (2006)
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. ACM, New York (2010)
Zhu, J., Calman, S.: Symbolic pointer analysis revisited. In: PLDI 2004, p. 157. ACM (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sui, Y., Ye, S., Xue, J., Yew, PC. (2011). SPAS: Scalable Path-Sensitive Pointer Analysis on Full-Sparse SSA. In: Yang, H. (eds) Programming Languages and Systems. APLAS 2011. Lecture Notes in Computer Science, vol 7078. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25318-8_14
Download citation
DOI: https://doi.org/10.1007/978-3-642-25318-8_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-25317-1
Online ISBN: 978-3-642-25318-8
eBook Packages: Computer ScienceComputer Science (R0)