Effect analysis in higher-order languages

When programs are intended for parallel execution it becomes critical to determine whether the evaluations of two expressions can be carried out independently. We provide a scheme for making such determinations in a typed language with higher-order constructs and imperative features. The heart of our scheme is a mechanism for estimating thesupport of an expression, i.e., the set of global variables involved in its evaluation. This computation requires knowledge of all the aliases of an expression. The inference schemes are presented in a compositional fashion reminiscent of abstract interpretation. We prove the soundness of our estimates with respect to the standard semantics of the language.

[1]  Chris Hankin,et al.  Strictness Analysis for Higher-Order Functions , 1986, Sci. Comput. Program..

[2]  Anne Denise Neirynck Static analysis of aliases and side effects in higher-order languages , 1988 .

[3]  Robert D. Tennent Semantics of Interference Control , 1983, Theor. Comput. Sci..

[4]  Arthur J. Bernstein,et al.  Analysis of Programs for Parallel Processing , 1966, IEEE Trans. Electron. Comput..

[5]  Ron Cytron,et al.  Interprocedural dependence analysis and parallelization , 1986, SIGP.

[6]  Patrick Cousot,et al.  Static determination of dynamic properties of programs , 1976 .

[7]  Chris Hankin,et al.  The theory and practice of strictness analysis for higher order functions , 1985 .

[8]  Prakash Panangaden,et al.  Computation of aliases and support sets , 1987, POPL '87.

[9]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

[10]  Andrew D. Gordon,et al.  Types and Effects for , 2003 .

[11]  Flemming Nielson,et al.  Strong Abstract Interpretation Using Power Domains (Extended Abstract) , 1983, ICALP.

[12]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[13]  John C. Reynolds,et al.  Syntactic control of interference , 1978, POPL.

[14]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[15]  Alexandru Nicolau,et al.  Parallelizing Programs with Recursive Data Structures , 1989, IEEE Trans. Parallel Distributed Syst..

[16]  Keith D. Cooper,et al.  Analyzing aliases of reference formal parameters , 1985, POPL.

[17]  David K. Gifford,et al.  Integrating functional and imperative programming , 1986, LFP '86.

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

[19]  John Banning,et al.  : An Efficient , 2022 .

[20]  William E. Weihl,et al.  Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables , 1980, POPL '80.

[21]  Alexandru Nicolau,et al.  Intererence analysis tools for parallelizing programs with recursive data structures , 1989, ICS '89.