Skip to main content

A toolkit for constructing type- and constraint-based program analyses

  • Conference paper
  • First Online:
Types in Compilation (TIC 1998)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1473))

Included in the following conference series:

Abstract

BANE (the Berkeley Analysis Engine) is a publicly available toolkit for constructing type- and constraint-based program analyses. We describe the goals of the project, the rationale for BANE’s overall design, some examples coded in BANE, and briefly compare BANE with other program analysis frameworks.

Supported in part by an NDSEG fellowship, NSF National Young Investigator Award CCR-9457812, NSF Grant CCR-9416973, and gifts from Microsoft and Rockwell.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. Aiken, M. Fähndrich, and Z. Su. Detecting Races in Relay Ladder Logic Programs. In Tools and Algorithms for the Construction and Analysis of Systems, 4th International Conference, TACAS’98, volume 1384 of LNCS, pages 184–200, Lisbon, Portugal, 1998. Springer.

    Google Scholar 

  2. M. Alt and F. Martin. Generation of efficient interprocedural analyzers with PAG. Lecture Notes in Computer Science, 983: 33–50, 1995.

    Google Scholar 

  3. L. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Cophenhagen, May 1994.

    Google Scholar 

  4. U. Assmann. How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems. In Proceedings of the Sixth International Conference on Compiler Construction (CC ’96), pages 121–135. Springer-Verlag, April 1996.

    Google Scholar 

  5. A. Adl-Tabatabai, T. Gross, and G. Lueh. Code Reuse in an Optimizing Compiler. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’96), pages 51–68, October 1996.

    Google Scholar 

  6. A. Aiken and E. Wimmers. Type Inclusion Constraints and Type Inference. In Proceedings of the 1993 Conference on Functional Programming Languages and Computer Architecture, pages 31–41, Copenhagen, Denmark, June 1993.

    Google Scholar 

  7. A. Aiken, E. Wimmers, and T.K. Lakshman. Soft Typing with Conditional Types. In Twenty-First Annual ACM Symposium on Principles of Programming Languages, pages 163–173, January 1994.

    Google Scholar 

  8. P. Cousot and R. Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Contruction or Approximation of Fixed Points. In Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, January 1977.

    Google Scholar 

  9. C. Chambers, J. Dean, and D. Grove. Frameworks for Intraand Interprocedural Dataflow Analysis. Technical Report 96-11-02, Department of Computer Science and Engineering, University of Washington, November 1996.

    Google Scholar 

  10. J. Cocke. Global Common Subexpression Elimination. ACM SIGPLAN Notices, 5(7): 20–24, July 1970.

    Article  Google Scholar 

  11. M. Dwyer and L. Clarke. A Flexible Architecture for Building Data Flow Analyzers. In Proceedings of the 18th International Conference on Software Engineering (ICSE-18), Berlin, Germany, March 1996.

    Google Scholar 

  12. L. Damas and R. Milner. Principle Type-Schemes for Functional Programs. In Ninth Annual ACM Symposium on Principles of Programming Languages, pages 207–212, January 1982.

    Google Scholar 

  13. J. Eifrig, S. Smith, and V. Trifonov. Sound Polymorphic Type Inference for Objects. In OOPSLA ’95, pages 169–184, 1995.

    Google Scholar 

  14. M. Fähndrich and A. Aiken. Making Set-Constraint Based Program Analyses Scale. In First Workshop on Set Constraints at CP’96, Cambridge, MA, August 1996. Available as Technical Report CSD-TR-96-917, University of California at Berkeley.

    Google Scholar 

  15. M. Fähndrich and A. Aiken. Program Analysis Using Mixed Term and Set Constraints. In Proceedings of the 4th International Static Analysis Symposium, pages 114–126, 1997.

    Google Scholar 

  16. J. Foster, M. Fähndrich, and A. Aiken. Flow-Insensitive Points-to Analysis with Term and Set Constraints. Technical Report UCB//CSD-97-964, University of California, Berkeley, July 1997.

    Google Scholar 

  17. M. Fähndrich, J. Foster, and A. Aiken. Tracking down Exceptions in Standard ML Programs. Technical Report UCB/CSD-98-996, EECS Department, UC Berkeley, February 1998.

    Google Scholar 

  18. C. Flanagan, M. Flatt, S. Krishnamurthi, S. Weirich, and M. Felleisen. Catching Bugs in the Web of Program Invariants. In Proceedings of the 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 23–32, May 1996.

    Google Scholar 

  19. M. Fähndrich, J. Foster, Z. Su, and A. Aiken. Partial Online Cycle Elimination in Inclusion Constraint Graphs. In Proceedings of the ACM SIGPLAN ’98 Conference on Programming Language Design and Implementation, 1998.

    Google Scholar 

  20. D. Gifford, P. Jouvelot, M. Sheldon, and J. O’Toole. Report on the FX-91 Programming Language. Technical Report MIT/LCS/TR-531, Massachusetts Institute of Technology, February 1992.

    Google Scholar 

  21. N. Heintze. Set Based Analysis of ML Programs. In Proceedings of the 1994 ACM Conference on LISP and Functional Programming, pages 306–17, June 1994.

    Google Scholar 

  22. F. Henglein. Global Tagging Optimization by Type Inference. In Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, pages 205–215, July 1992.

    Google Scholar 

  23. N. Heintze and D. McAllester. Linear-Time Subtransitive Control Flow Analysis. In Proceedings of the 1997 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 1997.

    Google Scholar 

  24. M. Hall, J. Mellor-Crummey, A. Carle, and R. Rodriguez. FIAT: A Framework for Interprocedural Analysis and Transformation. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Proceedings of the 6th International Workshop on Parallel Languages and Compilers, pages 522–545, Portland, Oregon, August 1993. Springer-Verlag.

    Google Scholar 

  25. G. A. Kildall. A Unified Approach to Global Program Optimization. In ACM Symposium on Principles of Programming Languages, pages 194–206, Boston, MA, October 1973. ACM, ACM.

    Google Scholar 

  26. J. Kam and J. Ullman. Global Data Flow Analysis and Iterative Algorithms. Journal of the ACM, 23(1): 158–171, January 1976.

    Article  MATH  MathSciNet  Google Scholar 

  27. Christian Mossin. Flow Analysis of Typed Higher-Order Programs. PhD thesis, DIKU, Department of Computer Science, University of Copenhagen, 1996.

    Google Scholar 

  28. Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.

    Google Scholar 

  29. D. Rémy. Typechecking records and variants in a natural extension of ML. In Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 60–76, January 1989.

    Google Scholar 

  30. B. Steensgaard. Points-to Analysis in Almost Linear Time. In Proceedings of the 23rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 32–41, January 1996.

    Google Scholar 

  31. S. Tjiang and J. Hennessy. Sharlit — A tool for building optimizers. In Proceedings of the ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation, pages 82–93, July 1992.

    Google Scholar 

  32. M. Tofte and J.-P. Talpin. Implementation of the Typed Call-by-Value λ-Calculus using a Stack of Regions. In Twenty-First Annual ACM Symposium on Principles of Programming Languages, pages 188–201, 1994.

    Google Scholar 

  33. G. A. Venkatesh. A framework for construction and evaluation of high-level specifications for program analysis techniques. In Proceedings of the ACM SIGPLAN ’89 Conference on Programming Language Design and Implementation, pages 1–12, 1989.

    Google Scholar 

  34. K. Yi and W. Harrison, III. Automatic Generation and Management of Interprocedural Program Analyses. In Proceedings of the Twnetieth Annual ACM Symposium on Principles of Programming Languages, pages 246–259, January 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Xavier Leroy Atsushi Ohori

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Aiken, A., Fähndrich, M., Foster, J.S., Su, Z. (1998). A toolkit for constructing type- and constraint-based program analyses. In: Leroy, X., Ohori, A. (eds) Types in Compilation. TIC 1998. Lecture Notes in Computer Science, vol 1473. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055513

Download citation

  • DOI: https://doi.org/10.1007/BFb0055513

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-64925-0

  • Online ISBN: 978-3-540-68308-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics