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.
Preview
Unable to display preview. Download preview PDF.
References
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.
M. Alt and F. Martin. Generation of efficient interprocedural analyzers with PAG. Lecture Notes in Computer Science, 983: 33–50, 1995.
L. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Cophenhagen, May 1994.
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.
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.
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.
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.
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.
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.
J. Cocke. Global Common Subexpression Elimination. ACM SIGPLAN Notices, 5(7): 20–24, July 1970.
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.
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.
J. Eifrig, S. Smith, and V. Trifonov. Sound Polymorphic Type Inference for Objects. In OOPSLA ’95, pages 169–184, 1995.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
J. Kam and J. Ullman. Global Data Flow Analysis and Iterative Algorithms. Journal of the ACM, 23(1): 158–171, January 1976.
Christian Mossin. Flow Analysis of Typed Higher-Order Programs. PhD thesis, DIKU, Department of Computer Science, University of Copenhagen, 1996.
Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.
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.
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.
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.
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.
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.
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.
Author information
Authors and Affiliations
Editor information
Rights 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