Abstract compilation: A new implementation paradigm for static analysis

  • Dominique Boucher
  • Marc Feeley
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1060)


For large programs, static analysis can be one of the most time-consuming phases of the whole compilation process. We propose a new paradigm for the implementation of static analyses that is inspired by partial evaluation techniques. Our paradigm does not reduce the complexity of these analyses, but it allows an efficient implementation. We illustrate this paradigm by its application to the problem of control flow analysis of functional programs. We show that the analysis can be sped up by a factor of 2 over the usual abstract interpretation method.


Abstract interpretation static analysis partial evaluation compilation control flow analysis 


  1. [1]
    A. V. Aho, R. Sethi and J. D. Ullman. Compilers. Principles, Techniques, and Tools. Addison-Wesley, 1986.Google Scholar
  2. [2]
    Andrew E. Ayers. Abstract Analysis and Optimization of Scheme. PhD thesis, MIT, September 1993.Google Scholar
  3. [3]
    Dominique Boucher and Marc Feeley. Un système pour l'optimisation globale de programmes d'ordre supérieur par compilation abstraite séparée. Technical report 992, Université de Montréal, September 1995.Google Scholar
  4. [4]
    Patrick Cousot and Radhia Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixed points. In Proceedings of the 4th ACM Symposium on Principles of Programming Languages, Los Angeles, 1977, pp. 238–252.Google Scholar
  5. [5]
    Marc Feeley and Guy Lapalme. Using closures for code generation. Comput. Lang. 12, 47–66, 1987.Google Scholar
  6. [6]
    Matthew S. Hecht. Flow Analysis of Computer Programs. North-Holland, New York, 1979.Google Scholar
  7. [7]
    Paul Hudak. A Semantic Model of Reference Counting and its Abstraction (Detailed Summary). In Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, 351–363, 1986.Google Scholar
  8. [8]
    David A. Kranz. ORBIT: An Optimizing Compiler for Scheme. Ph.D. thesis, Yale University, 1988.Google Scholar
  9. [9]
    Mark Leone and Peter Lee. Lightweight Run-Time Code Generation. In Proceedings of the 1994 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pp. 97–106.Google Scholar
  10. [10]
    I-P. Lin and J. Tan. Compiling Dataflow Analysis of Logic Programs. In Proceedings of the 1992 ACM Conference on Programming Language Desing and Implementation, pp. 106–215.Google Scholar
  11. [11]
    Alan Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. Ph.D. thesis, University of Edinburgh, 1981.Google Scholar
  12. [12]
    Guillermo Juan Rozas. Taming the Y operator. In Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, 226–234, 1992.Google Scholar
  13. [13]
    Manuel Serrano. Control Flow Analysis: a compilation paradigm for functional languages. In Proceedings of SAC 95.Google Scholar
  14. [14]
    Manuel Serrano. Bigloo User's Manual. Inria-Rocquencourt. March 1994.Google Scholar
  15. [15]
    Olin Shivers. Control-Flow Analysis of Higher-Order Languages. Ph.D. thesis, Carnegie Mellon University, Pittsburgh, 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Dominique Boucher
    • 1
  • Marc Feeley
    • 1
  1. 1.Département d'informatique et de recherche opérationnelle (IRO)Université de MontréalMontréalCanada

Personalised recommendations