From DFA-Frameworks to DFA-Generators: A Unifying Multiparadigm Approach

Program analysis is still characterized by paradigm-specific approaches, which are developed to accommodate to the diversities of the different programming paradigms as e.g. the imperative, object-oriented, or parallel one. Switching between paradigms or transferring analyses across paradigm boundaries requires usually detailed knowledge of the peculiarities of the various approaches. This complicates both the reuse of analyses and the proofs of their correctness. On the other hand, abstract interpretation provides a unifying access to program analysis. In this article we exploit this for the construction of program analysis generators based on a uniform design principle. Basically, we proceed by extracting the abstract kernel from the standard analysis framework, which we then consider under a generic perspective. We show that there are concrete instances in such different paradigms as those above. As a by-product their decomposition into a "theoretical" and "practical" part which are specificational and computational in nature, reveals the aforementioned design principle. The frameworks and their respective generators, which can be fed by concise specifications, can thereby be considered black-boxes: analysis designers only need to know of the (quite similar) interfaces. The proof of correctness or even precision of a generated algorithm with respect to a specific property reduces to checking the premises of a few theorems. This considerably eases the construction of analyses within a specific paradigm as well as the switch between and the transfer of analyses to other paradigms.

[1]  Barbara G. Ryder,et al.  Lattice frameworks for multisource and bidirectional data flow problems , 1995, TOPL.

[2]  Niklaus Wirth,et al.  The programming language oberon , 1988, Softw. Pract. Exp..

[3]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[4]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[5]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[6]  Jens Knoop,et al.  Interprocedural distribution assignment placement: more than just enhancing intraprocedural placing techniques , 1997, Proceedings 1997 International Conference on Parallel Architectures and Compilation Techniques.

[7]  Jens Knoop,et al.  Parallel Constant Propagation , 1998, Euro-Par.

[8]  Peter Brezany,et al.  Vienna Fortran - A Language Specification. Version 1.1 , 1992 .

[9]  Uwe Aßmann,et al.  How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems , 1996, CC.

[10]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[11]  Bernhard Steffen,et al.  Partial dead code elimination , 1994, PLDI '94.

[12]  Bernhard Steffen,et al.  Parallelism for Free : E cient and Optimal Bitvector Analyses for Parallel Programs , 1996 .

[13]  Bernhard Steffen,et al.  DFA&OPT-METAFrame: A Tool Kit for Program Analysis and Optimazation , 1996, TACAS.

[14]  Martin Alt,et al.  Generation of Efficient Interprocedural Analyzers with PAG , 1995, SAS.

[15]  Bernhard Steffen,et al.  Parallelism for Free: Bitvector Analyses -> No State Explosion! , 1995, TACAS.

[16]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[17]  Jens Knoop,et al.  Optimal Distribution Assignment Placement , 1997, Euro-Par.

[18]  Bernhard Steffen,et al.  Basic-Block Graphs: Living Dinosaurs? , 1998, CC.

[19]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[20]  C. Robert Morgan,et al.  Building an Optimizing Compiler , 1998 .

[21]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

[22]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[23]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[24]  Jens Knoop Optimal Interprocedural Program Optimization: A New Framework and Its Application , 1999 .

[25]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[26]  Jens Knoop Eliminating Partially Dead Code in Explicitly Parallel Programs , 1998, Theor. Comput. Sci..

[27]  Etienne Morel,et al.  Global optimization by suppression of partial redundancies , 1979, CACM.

[28]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .