Frameworks for Intra- and Interprocedural Dataflow Analysis

Because dataflow analyses are difficult to implement from scratch, reusable dataflow analysis frameworks have been developed which provide generic support facilities for managing propagation of dataflow information and iteration in loops. We have designed a framework that improves on previous work by making it easy to perform graph transformations as part of iterative analysis, to run multiple analyses “in parallel” to achieve the precision of a single monolithic analysis while preserving modularity and reusability of the component analyses, and to construct contextsensitive interprocedural analyses from intraprocedural versions. We have implemented this framework in the Vortex optimizing compiler and used the framework to help build both traditional optimizations and non-traditional optimizations of dynamically-dispatched messages and first-class, lexically-nested functions.

[1]  J. Cocke Global common subexpression elimination , 1970, Symposium on Compiler Optimization.

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

[3]  Jeffrey D. Ullman,et al.  Global Data Flow Analysis and Iterative Algorithms , 1976, J. ACM.

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

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

[6]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[7]  Mark N. Wegman,et al.  An efficient method of computing static single assignment form , 1989, POPL '89.

[8]  Craig Chambers,et al.  Iterative type analysis and extended message splitting; optimizing dynamically-typed object-oriented programs , 1990, PLDI '90.

[9]  Jong-Deok Choi,et al.  Automatic construction of sparse data flow evaluation graphs , 1991, POPL '91.

[10]  David S. Wise Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation , 1991, PLDI 1991.

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

[12]  Dhananjay M. Dhamdhere,et al.  How to analyze large programs efficiently and informatively , 1992, PLDI '92.

[13]  Alexander Aiken,et al.  Solving systems of set constraints , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[14]  Steven W. K. Tjiang,et al.  Sharlit—a tool for building optimizers , 1992, PLDI '92.

[15]  Ken Kennedy,et al.  Procedure cloning , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[16]  Keshav Pingali,et al.  Dependence-based program analysis , 1993, PLDI '93.

[17]  Kwangkeun Yi,et al.  Automatic generation and management of interprocedural program analyses , 1993, POPL '93.

[18]  Laurie Hendren,et al.  A practical context-sensitive interprocedurai anasysls framework for c compilers , 1993 .

[19]  Michael D. Ernst,et al.  Value dependence graphs: representation without taxation , 1994, POPL '94.

[20]  Nevin Heintze,et al.  Set-based analysis of ML programs , 1994, LFP '94.

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

[22]  Keith D. Cooper,et al.  Combining analyses, combining optimizations , 1995, TOPL.

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

[24]  David Grove,et al.  A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies , 1995, 1995 17th International Conference on Software Engineering.

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

[26]  Thomas R. Gross,et al.  Code reuse in an optimizing compiler , 1996, OOPSLA '96.

[27]  Guang R. Gao,et al.  A new framework for exhaustive and incremental data flow analysis using DJ graphs , 1996, PLDI '96.

[28]  Lori A. Clarke,et al.  A flexible architecture for building data flow analyzers , 1995, Proceedings of IEEE 18th International Conference on Software Engineering.

[29]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.