skip to main content
10.1145/781131.781144acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Points-to analysis using BDDs

Published:09 May 2003Publication History

ABSTRACT

This paper reports on a new approach to solving a subset-based points-to analysis for Java using Binary Decision Diagrams (BDDs). In the model checking community, BDDs have been shown very effective for representing large sets and solving very large verification problems. Our work shows that BDDs can also be very effective for developing a points-to analysis that is simple to implement and that scales well, in both space and time, to large programs.The paper first introduces BDDs and operations on BDDs using some simple points-to examples. Then, a complete subset-based points-to algorithm is presented, expressed completely using BDDs and BDD operations. This algorithm is then refined by finding appropriate variable orderings and by making the algorithm propagate sets incrementally, in order to arrive at a very efficient algorithm. Experimental results are given to justify the choice of variable ordering, to demonstrate the improvement due to incrementalization, and to compare the performance of the BDD-based solver to an efficient hand-coded graph-based solver. Finally, based on the results of the BDD-based solver, a variety of BDD-based queries are presented, including the points-to query.

References

  1. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language, May 1994. Ph.D thesis, DIKU, University of Copenhagen.]]Google ScholarGoogle Scholar
  2. Ashes suite collection http://www.sable.mcgill.ca/software/.]]Google ScholarGoogle Scholar
  3. Thomas Ball and Sriram K. Rajamani. Bebop: A Path-sensitive Interprocedural Dataflow Engine. In Proceedings of PASTE'01, pages 97--103, Jun 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. David Basin, Stefan Friedrich, Marek Gawkowski, and Joachim Posegga. Bytecode Model Checking: An Experimental Analysis. In Dragan Bosnacki and Stefan Leue, editors, Model Checking Software, 9th International SPIN Workshop, volume 2318 of LNCS, pages 42--59. Springer-Verlag, Apr 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Randal E. Bryant. Symbolic Boolean Manipulation with Ordered Binary Decision Diagrams. ACM Computing Surveys, 24(3):293--318, 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Manuvir Das. Unification-based pointer analysis with directional assignments. In Proceedings of PLDI'00, pages 35--46, Jun 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jeffrey Dean, David Grove, and Craig Chambers. Optimization of object-oriented programs using static class hierarchy analysis. In Walter G. Olthoff, editor, ECOOP'95---Object-Oriented Programming, 9th European Conference, volume 952 of Lecture Notes in Computer Science, pages 77--101, \AAarhus, Denmark, Aug 1995. Springer.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Matthew B. Dwyer, John Hatcliff, Roby Joehanes, Shawn Laubach, Corina S. Pasareanu, Robby, Hongjun Zheng, and W Visser. Tool-Supported Program Abstraction for Finite-State Verification. In Proceedings of ICSE, pages 177--187, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of PLDI'94, pages 242--256, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Manuel Fähndrich, Jeffery S. Foster, Zhendong Su, and Alexander Aiken. Partial online cycle elimination in inclusion constraint graphs. In Proceedings of PLDI'98, pages 85--96, Montreal, Canada, Jun 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Nevin Heintze. Analysis of large code bases: The compile-link-analyze model, 1999. http://cm.bell-labs.com/cm/cs/who/nch/cla.ps.]]Google ScholarGoogle Scholar
  12. Nevin Heintze and Olivier Tardieu. Ultra-fast aliasing analysis using CLA: A million lines of C code in a second. In Proceedings of PLDI'01, pages 254--263, June 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Pascal Van Hentenryck, Agostino Cortesi, and Baudouin Le Charlier. Evaluation of the domain Prop. Journal of Logic Programming, 23(3):237--278, 1995.]]Google ScholarGoogle ScholarCross RefCross Ref
  14. Michael Hind. Pointer Analysis: Haven't We Solved This Problem Yet? In Proceedings of PASTE'01, pages 54--61, Jun 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. jEdit: Open source programmer's text editor. http://www.jedit.org/.]]Google ScholarGoogle Scholar
  16. J.R. Burch, E.M. Clarke, D.E. Long, K.L. MacMillan, and D.L. Dill. Symbolic Model Checking for Sequential Circuit Verification. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 13(4):401--424, 1994.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ondrej Lhoták. Spark: A flexible points-to analysis framework for Java. Master's thesis, McGill University, December 2002.]]Google ScholarGoogle Scholar
  18. Ondrej Lhoták and Laurie Hendren. Scaling Java points-to analysis using Spark. In G. Hedin, editor, Compiler Construction, 12th International Conference, volume 2622 of LNCS, pages 153--169, Warsaw, Poland, April 2003. Springer.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Donglin Liang, Maikel Pennings, and Mary Jean Harrold. Extending and evaluating flow-insensitive and context-insensitive points-to analyses for Java. In Proceedings of PASTE'01, pages 73--79, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Jørn Lind-Nielsen. BuDDy, A Binary Decision Diagram Package. Department of Information Technology, Technical University of Denmark, http://www.itu.dk/research/buddy/.]]Google ScholarGoogle Scholar
  21. R. Manevich, G. Ramalingam, J. Field, D. Goyal, and M. Sagiv. Compactly Representing First-Order Structures for Static Analysis. In Manuel V. Hermenegildo and German Puebla, editors, Proceedings of SAS'02, volume 2477 of LNCS, Madrid, Spain, September 2002. Springer.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Vincenzo Martena and Pierluigi San Pietro. Alias Analysis by Means of a Model Checker. In R. Wilhelm, editor, Compiler Construction, 10th International Conference, volume 2027 of LNCS, pages 3--19, Genova, Italy, April 2001. Springer.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Cristoph Meinel and Thorsten Theobald. Algorithms and Data Structures in VLSI Design. Springer, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Atanas Rountev and Satish Chandra. Off-line Variable Substitution for Scaling Points-to Analysis. In Proceedings of PLDI'00, pages 47--56, Jun 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Atanas Rountev, Ana Milanova, and Barbara Ryder. Points-to analysis for Java using annotated constraints. In Proceedings of OOPSLA'01, pages 43--55, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. David A. Schmidt. Data Flow Analysis is Model Checking of Abstract Interpretations. In Proceedings of POPL'98, pages 38--48, Jan 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. David A. Schmidt and Bernhard Steffen. Program analysis as model checking of abstract interpretations. In Proceedings of SAS'98, pages 351--380, 1998.]]Google ScholarGoogle Scholar
  28. Marc Shapiro and Susan Horwitz. Fast and accurate flow-insensitive points-to analysis. In Proceedings of POPL'97, pages 1--14, Paris, France, Jan 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. John W. Sias, Wen mei W. Hwu, and David I. August. Accurate and Efficient Predicate Analysis with Binary Decision Diagrams. In Proceedings of the 33rd annual IEEE/ACM International Symposium on Microarchitecture, pages 112--123, Dec 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. SPEC jbb200 benchmark http://www.spec.org/osg/jbb2000/.]]Google ScholarGoogle Scholar
  31. SPEC jvm98 benchmarks http://www.spec.org/osg/jvm98/.]]Google ScholarGoogle Scholar
  32. Bjarne Steensgaard. Points-to analysis in almost linear time. In Proceedings of POPL'96, pages 32--41, Jan 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Vijay Sundaresan, Laurie Hendren, Chrislain Razafimahefa, Raja Vallée-Rai, Patrick Lam, Etienne Gagnon, and Charles Godin. Practical virtual method call resolution for Java. In Proceedings of the 2000 OOPSLA, pages 264--280, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. John Whaley and Monica Lam. An efficient inclusion-based points-to analysis for strictly-typed languages. In Proceedings of SAS'02, volume 2477 of LNCS, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Aiguo Xie and Peter A. Beerel. Implicit enumeration of strongly connected components. In International Conference on Computer-Aided Design, pages 37--40, Nov 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Points-to analysis using BDDs

      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
      • Published in

        cover image ACM Conferences
        PLDI '03: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
        June 2003
        360 pages
        ISBN:1581136625
        DOI:10.1145/781131

        Copyright © 2003 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 9 May 2003

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        PLDI '03 Paper Acceptance Rate28of131submissions,21%Overall Acceptance Rate406of2,067submissions,20%

        Upcoming Conference

        PLDI '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader