skip to main content
research-article

Hybrid top-down and bottom-up interprocedural analysis

Published:09 June 2014Publication History
Skip Abstract Section

Abstract

Interprocedural static analyses are broadly classified into top-down and bottom-up, depending upon how they compute, instantiate, and reuse procedure summaries. Both kinds of analyses are challenging to scale: top-down analyses are hindered by ineffective reuse of summaries whereas bottom-up analyses are hindered by inefficient computation and instantiation of summaries. This paper presents a hybrid approach Swift that combines top-down and bottom-up analyses in a manner that gains their benefits without suffering their drawbacks. Swift is general in that it is parametrized by the top-down and bottom-up analyses it combines. We show an instantiation of Swift on a type-state analysis and evaluate it on a suite of 12 Java programs of size 60-250 KLOC each. Swift outperforms both conventional approaches, finishing on all the programs while both of those approaches fail on the larger programs.

References

  1. A. Albarghouthi, R. Kumar, A. Nori, and S. Rajamani. Parallelizing top-down interprocedural analyses. In PLDI, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. T. Ball and S. Rajamani. Bebop: a path-sensitive interprocedural dataflow engine. In PASTE, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Calcagno, D. Distefano, P. O'Hearn, and H. Yang. Compositional shape analysis by means of bi-abduction. J. ACM, 58(6), 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. R. Chatterjee, B. Ryder, and W. Landi. Relevant context inference. In POPL, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. P. Cousot and R. Cousot. Static determination of dynamic properties of recursive procedures. In E. Neuhold, editor, Formal Descriptions of Programming Concepts. North-Holland, 1978.Google ScholarGoogle Scholar
  6. P. Cousot and R. Cousot. Modular static program analysis. In CC, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. I. Dillig, T. Dillig, A. Aiken, and M. Sagiv. Precise and compact modular procedure summaries for heap manipulating programs. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Fink, E. Yahav, N. Dor, G. Ramalingam, and E. Geay. Effective typestate verification in the presence of aliasing. ACM TOSEM, 17(2), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. Ghiya and L. Hendren. Connection analysis: A practical interprocedural heap analysis for C. IJPP, 24(6), 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. B. Gulavani, S. Chakraborty, G. Ramalingam, and A. Nori. Bottom-up shape analysis using lisf. ACM TOPLAS, 33(5), 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Gulwani and A. Tiwari. Computing procedure summaries for interprocedural analysis. In ESOP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. B. Jeannet, A. Loginov, T. Reps, and M. Sagiv. A relational approach to interprocedural shape analysis. ACM TOPLAS, 32(2), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. R. Madhavan, G. Ramalingam, and K. Vaswani. Modular heap analysis for higher-order programs. In SAS, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. T. Reps, S. Horwitz, and M. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. N. Rinetzky, J. Bauer, T. Reps, S. Sagiv, and R. Wilhelm. A semantics for procedure local heaps and its abstractions. In POPL, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. N. Rinetzky, M. Sagiv, and E. Yahav. Interprocedural shape analysis for cutpoint-free programs. In SAS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Sagiv, T. W. Reps, and S. Horwitz. Precise interprocedural dataflow analysis with applications to constant propagation. Theor. Comput. Sci., 167(1&2), 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. A. Salcianu and M. Rinard. Purity and side effect analysis for Java programs. In VMCAI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, chapter 7. Prentice-Hall, 1981.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. Whaley and M. Rinard. Compositional pointer and escape analysis for Java programs. In OOPSLA, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Y. Xie and A. Aiken. Saturn: A scalable framework for error detection using boolean satisfiability. ACM TOPLAS, 29(3), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. G. Yorsh, E. Rabinovich, M. Sagiv, A. Meyer, and A. Bouajjani. A logic of reachable patterns in linked data-structures. In FOSSACS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. G. Yorsh, E. Yahav, and S. Chandra. Generating precise and concise procedure summaries. In POPL, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Hybrid top-down and bottom-up interprocedural analysis

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM SIGPLAN Notices
              ACM SIGPLAN Notices  Volume 49, Issue 6
              PLDI '14
              June 2014
              598 pages
              ISSN:0362-1340
              EISSN:1558-1160
              DOI:10.1145/2666356
              • Editor:
              • Andy Gill
              Issue’s Table of Contents
              • cover image ACM Conferences
                PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
                June 2014
                619 pages
                ISBN:9781450327848
                DOI:10.1145/2594291

              Copyright © 2014 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 9 June 2014

              Check for updates

              Qualifiers

              • research-article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!