Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/1788374.1788394guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Efficiency, precision, simplicity, and generality in interprocedural data flow analysis: resurrecting the classical call strings method

Published: 29 March 2008 Publication History

Abstract

The full call strings method is the most general, simplest, and most precise method of performing context sensitive interprocedural data flow analysis. It remembers contexts using call strings. For full precision, all call strings up to a prescribed length must be constructed. Two limitations of this method are (a) it cannot be used for frameworks with infinite lattices, and (b) the prescribed length is quadratic in the size of the lattice resulting in an impractically large number of call strings. These limitations have resulted in a proliferation of ad hoc methods which compromise on generality, precision, or simplicity.
We propose a variant of the classical full call strings method which reduces the number of call strings, and hence the analysis time, by orders of magnitude as corroborated by our empirical measurements. It reduces the worst case call string length from quadratic in the size of the lattice to linear. Further, unlike the classical method, this worst case length need not be reached. Our approach retains the precision, generality, and simplicity of call strings method without imposing any additional constraints. It can accommodate demand-driven approximations and hence can be used for frameworks with infinite lattices.

References

[1]
Aho, A.V., Lam, M.S., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools, 2nd edn. Addison-Wesley Longman Publishing Co., Inc. (2006).
[2]
Alt, M., Martin, F.: Generation of efficient interprocedural analyzers with PAG. In: Static Analysis Symposium, pp. 33-50 (September 1995).
[3]
Amiranoff, P., Cohen, A., Feautrier, P.: Beyond iteration vectors: Instancewise relational abstract domains. In: Static Analysis Symposium, pp. 161-180 (2006).
[4]
Burke, M., Carini, P., Choi, J., Hind, M.: Flow-insensitive interprocedural alias analysis in the pressence of pointers. In: Pingali, K.K., Gelernter, D., Padua, D.A., Banerjee, U., Nicolau, A. (eds.) LCPC 1994. LNCS, vol. 892, Springer, Heidelberg (1995).
[5]
Emami, M., Ghiya, R., Hendren, L.J.: Context-sensitive interprocedural points-to analysis in the presence of function pointers. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 242-256 (1994).
[6]
Esparza, J., Knoop, J.: An automata-theoretic approach to interprocedural data-flow analysis. In: Foundations of Software Science and Computation Structure, pp. 14-30 (1999).
[7]
Fahndrich, M., Rehof, J., Das, M.: Scalable context-sensitive flow analysis using instantiation constraints. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 253-263 (2000).
[8]
Gulwani, S., Tiwari, A.: Computing procedure summaries for interprocedural analysis. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 253-267. Springer, Heidelberg (2007).
[9]
Hardekopf, B., Lin, C.: The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 290-299 (2007).
[10]
Horwitz, S., Reps, T., Sagiv, M.: Demand interprocedural dataflow analysis. In: 3rd ACM Symposium on Foundations of Software Engineering, pp. 104-115 (1995).
[11]
Kanade, A., Khedker, U.P., Sanyal, A.: Heterogeneous fixed points with application to points-to analysis. In: Proc. of the Asian Symposium on Programming Languages and Systems, pp. 298-314 (2005).
[12]
Karkare, B., Khedker, U.P.: An improved bound for call-strings based interprocedural analysis of bit vector frameworks. ACM Trans. Program. Lang. Syst. 29(6), 38 (2007).
[13]
Lattner, C., Lenharth, A., Adve, V.: Making context-sensitive points-to analysis with heap cloning practical for the real world. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation (June 2007).
[14]
Lhoták, O., Hendren, L.J.: Context-sensitive points-to analysis: is it worth it? In: Mycroft, A., Zeller, A. (eds.) CC 2006. LNCS, vol. 3923, pp. 47-64. Springer, Heidelberg (2006).
[15]
Liang, D., Harrold, M.J.: Efficient points-to analysis for whole-program analysis. SIGSOFT Software Engineering Notes 24(6), 199-215 (1999).
[16]
Milanova, A.: Light context-sensitive points-to analysis for java. In: Proc. of ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (June 2007).
[17]
Müller-Olm, M., Seidl, H.: Precise interprocedural analysis through linear algebra. In: Proc. of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York, NY, USA, pp. 330-341 (2004).
[18]
Murphy, B.R., Lam, M.S.: Program analysis with partial transfer functions. In: Proc. of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, pp. 94-103 (2000).
[19]
Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: Proc. of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 49-61 (1995).
[20]
Reps, T., Schwoon, S., Jha, S., Melski, D.: Weighted pushdown systems and their application to interprocedural dataflow analysis. Science of Computer Programming 58(1-2), 206-263 (2005).
[21]
Sagiv, M., Reps, T., Horwitz, S.: Precise interprocedural dataflow analysis with applications to constant propagation. Theoretical Computer Science 167(1-2), 131-170 (1996).
[22]
Sharir, M., Pnueli, A.: Two approaches to interprocedural data flow analysis. In: Muchnick, S.S., Jones, N.D. (eds.) Program Flow Analysis: Theory and Applications, Prentice-Hall Inc., Englewood Cliffs (1981).
[23]
Whaley, J., Lam, M.S.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In: Proc. of the ACM SIGPLAN Conference on Programming language design and implementation (June 2004).
[24]
Wilson, R.P., Lam, M.S.: Efficient context-sensitive pointer analysis for C programs. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation (1995).
[25]
Zhu, J.: Towards scalable flow and context sensitive pointer analysis. In: Proc. of the 42nd Annual Conference on Design Automation, pp. 831-836 (2005).
[26]
Zhu, J., Calman, S.: Symbolic pointer analysis revisited. In: Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 145-157 (2004).

Cited By

View all
  • (2020)Mix your contexts well: opportunities unleashed by recent advances in scaling context-sensitivityProceedings of the 29th International Conference on Compiler Construction10.1145/3377555.3377902(27-38)Online publication date: 22-Feb-2020
  • (2019)PYEACM Transactions on Programming Languages and Systems10.1145/333779441:3(1-37)Online publication date: 2-Jul-2019
  • (2019)Compare less, defer more: scaling value-contexts based whole-program heap analysesProceedings of the 28th International Conference on Compiler Construction10.1145/3302516.3307359(135-146)Online publication date: 16-Feb-2019
  • Show More Cited By
  1. Efficiency, precision, simplicity, and generality in interprocedural data flow analysis: resurrecting the classical call strings method

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    CC'08/ETAPS'08: Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
    March 2008
    307 pages
    ISBN:3540787909
    • Editor:
    • Laurie Hendren

    Publisher

    Springer-Verlag

    Berlin, Heidelberg

    Publication History

    Published: 29 March 2008

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 08 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2020)Mix your contexts well: opportunities unleashed by recent advances in scaling context-sensitivityProceedings of the 29th International Conference on Compiler Construction10.1145/3377555.3377902(27-38)Online publication date: 22-Feb-2020
    • (2019)PYEACM Transactions on Programming Languages and Systems10.1145/333779441:3(1-37)Online publication date: 2-Jul-2019
    • (2019)Compare less, defer more: scaling value-contexts based whole-program heap analysesProceedings of the 28th International Conference on Compiler Construction10.1145/3302516.3307359(135-146)Online publication date: 16-Feb-2019
    • (2018)Precise and scalable points-to analysis via data-driven context tunnelingProceedings of the ACM on Programming Languages10.1145/32765102:OOPSLA(1-29)Online publication date: 24-Oct-2018
    • (2017)"What's in a name?" going beyond allocation site names in heap analysisACM SIGPLAN Notices10.1145/3156685.309226752:9(92-103)Online publication date: 18-Jun-2017
    • (2017)"What's in a name?" going beyond allocation site names in heap analysisProceedings of the 2017 ACM SIGPLAN International Symposium on Memory Management10.1145/3092255.3092267(92-103)Online publication date: 18-Jun-2017
    • (2014)A Correspondence between Two Approaches to Interprocedural Analysis in the Presence of JoinProceedings of the 23rd European Symposium on Programming Languages and Systems - Volume 841010.1007/978-3-642-54833-8_27(513-533)Online publication date: 5-Apr-2014
    • (2013)Interprocedural data flow analysis in Soot using value contextsProceedings of the 2nd ACM SIGPLAN International Workshop on State Of the Art in Java Program analysis10.1145/2487568.2487569(31-36)Online publication date: 20-Jun-2013
    • (2012)Liveness-Based pointer analysisProceedings of the 19th international conference on Static Analysis10.5555/2414936.2414957(265-282)Online publication date: 11-Sep-2012
    • (2012)Lock inference in the presence of large librariesProceedings of the 26th European conference on Object-Oriented Programming10.1007/978-3-642-31057-7_15(308-332)Online publication date: 11-Jun-2012
    • Show More Cited By

    View Options

    View options

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media