A unified treatment of flow analysis in higher-order languages

We describe a framework for flow analysis in higher-order languages. It is both a synthesis and extension of earlier work in this area, most notably [20, 22] The framework makes explicit use of flow graphs for modeling control and data flow properties of untyped higher-order programs. The framework is parameterized, and can express a hierarchy of analyses with different cost/accuracy tradeoffs. The framework is also amenable to a direct, efficient implementation. We develop several instantiations of the framework, and prove their running-time complexity. In addition, we use the simplest instantiation to demonstrate the equivalence of a 0CFA style analysis and the set-based analysis of [8].

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

[2]  Neil D. Jones,et al.  Flow analysis and optimization of LISP-like structures , 1979, POPL.

[3]  Patrick Cousot,et al.  Semantic foundations of program analysis , 1981 .

[4]  Paul Hudak,et al.  A collecting interpretation of expressions , 1988, POPL '88.

[5]  Williams Ludwell Harrison,et al.  The interprocedural analysis and automatic parallelization of Scheme programs , 1990, LISP Symb. Comput..

[6]  Alain Deutsch,et al.  On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications , 1989, POPL '90.

[7]  Olin Shivers,et al.  Data-flow analysis and type recovery in Scheme , 1990 .

[8]  Robin Milner,et al.  Definition of standard ML , 1990 .

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

[10]  D. H. Bartley,et al.  Revised4 report on the algorithmic language scheme , 1991, LIPO.

[11]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[12]  Olin Shivers The semantics of Scheme control-flow analysis , 1991 .

[13]  Olin Shivers,et al.  Control-flow analysis of higher-order languages of taming lambda , 1991 .

[14]  Paul Hudak,et al.  Collecting interpretations of expressions , 1991, TOPL.

[15]  Benjamin Goldberg,et al.  Escape analysis on lists , 1992, PLDI '92.

[16]  François Bourdoncle,et al.  Abstract debugging of higher-order imperative languages , 1993, PLDI '93.

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

[18]  HeintzeNevin Set-based analysis of ML programs , 1994 .

[19]  Andrew W. AppelDepartment Space-eecient Closure Representations , 1994 .

[20]  Amr Sabry,et al.  Is continuation-passing useful for data flow analysis? , 1994, PLDI '94.

[21]  Zhong Shao,et al.  Space-E cient Closure Representations , 1994 .

[22]  Andrew W. Appel,et al.  Space-efficient closure representations , 1994, LFP '94.

[23]  Dan C. Stefanescu,et al.  An equational framework for the flow analysis of higher order functional programs , 1994, LFP '94.

[24]  Jens Palsberg,et al.  Safety Analysis versus Type Inference , 1992, Inf. Comput..