Beyond Iteration Vectors: Instancewise Relational Abstract Domains

We introduce a formalism to reason about program properties at an infinite number of runtime control points, called instances. Infinite sets of instances are represented by rational languages. This framework gives a formal foundation to the well known concept of iteration vectors, extending it to recursive programs with any structured control flow (nested loops and recursive calls). We also extend the concept of induction variables to recursive programs. For a class of monoid-based data structures, including arrays and trees, induction variables capture the exact memory location accessed at every step of the execution. This compile-time characterization is computed in polynomial time as a rational function. Applications include dependence and region analysis for array and tree algorithms, array expansion, and automatic parallelization of recursive programs.

[1]  Nils Klarlund,et al.  Graph types , 1993, POPL '93.

[2]  Albert Cohen,et al.  Instance-wise reaching definition analysis for recursive programs using context-free transductions , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[3]  Yue Yang,et al.  Symbolic path simulation in path-sensitive dataflow analysis , 2005, PASTE '05.

[4]  Jean-Francois Collard,et al.  Reasoning About Program Transformations , 2002, Springer New York.

[5]  Somesh Jha,et al.  Weighted pushdown systems and their application to interprocedural dataflow analysis , 2003, Sci. Comput. Program..

[6]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[7]  Albert Cohen Program Analysis and Transformation: From the Polytope Model to Formal Languages. (Analyse et transformation de programmes: du modèle polyédrique aux langages formels) , 1999 .

[8]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. I. One-dimensional time , 1992, International Journal of Parallel Programming.

[9]  Arnaud Venet,et al.  Nonuniform Alias Analysis of Recursive Data Structures and Arrays , 2002, SAS.

[10]  Jorge E. Mezei,et al.  On Relations Defined by Generalized Finite Automata , 1965, IBM J. Res. Dev..

[11]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. Part II. Multidimensional time , 1992, International Journal of Parallel Programming.

[12]  Alexandru Nicolau,et al.  Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs , 1992, PLDI '92.

[13]  Laurie J. Hendren,et al.  Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C , 1996, POPL '96.

[14]  Jacques Sakarovitch,et al.  On the Representation of Finite Deterministic 2-Tape Automata , 1999, Theor. Comput. Sci..

[15]  Jean Berstel,et al.  Transductions and context-free languages , 1979, Teubner Studienbücher : Informatik.

[16]  Matthew Might,et al.  Environment analysis via Delta CFA , 2006, POPL.

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

[18]  Pascal Fradet,et al.  Shape types , 1997, POPL '97.

[19]  François Bourdoncle,et al.  Abstract interpretation by dynamic partitioning , 1992, Journal of Functional Programming.

[20]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[21]  P. Feautrier Array expansion , 1988 .

[22]  Michael Wolfe,et al.  High performance compilers for parallel computing , 1995 .

[23]  Jean-Louis Giavitto,et al.  Group-Based Fields , 1995, PSLS.

[24]  Monica S. Lam,et al.  Array-data flow analysis and its use in array privatization , 1993, POPL '93.

[25]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[26]  Paul Feautrier,et al.  Dataflow analysis of array and scalar references , 1991, International Journal of Parallel Programming.

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

[28]  Grzegorz Rozenberg,et al.  Handbook of formal languages, vol. 3: beyond words , 1997 .

[29]  Arnaud Venet,et al.  A Scalable Nonuniform Pointer Analysis for Embedded Programs , 2004, SAS.

[30]  Michael Wolfe,et al.  Beyond induction variables: detecting and classifying sequences using a demand-driven SSA form , 1995, TOPL.

[31]  Andreas Podelski,et al.  Efficient algorithms for pre* and post* on interprocedural parallel flow graphs , 2000, POPL '00.

[32]  Paul Feautrier A Parallelization Framework for Recursive Tree Programs , 1998, Euro-Par.

[33]  David B. A. Epstein,et al.  Word processing in groups , 1992 .

[34]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[35]  Chris Okasaki,et al.  Functional Data Structures , 1996, Handbook of Data Structures and Applications.

[36]  Matthew Might,et al.  Environment analysis via ΔCFA , 2006, POPL '06.

[37]  Albert Cohen,et al.  Induction Variable Analysis with Delayed Abstractions , 2005, HiPEAC.

[38]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[39]  Robert O. Briggs,et al.  Cuba, communism, and computing , 1992, CACM.

[40]  Jens Knoop,et al.  An Automata-Theoretic Approach to Interprocedural Data-Flow Analysis , 1999, FoSSaCS.

[41]  Grzegorz Rozenberg,et al.  Handbook of formal languages, vol. 1: word, language, grammar , 1997 .

[42]  William Pugh,et al.  A practical algorithm for exact array dependence analysis , 1992, CACM.

[43]  Alexandru Nicolau,et al.  Abstractions for Recursive Pointer Data Structures: Improving the Analysis of Imperative Programs. , 1992, PLDI 1992.

[44]  David A. Padua,et al.  Monotonic evolution: an alternative to induction variable substitution for dependence analysis , 2001, ICS '01.