Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Aho, A., Sethi, R., Ullman, J.: Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading (1986)
Amiranoff, P.: An Automata-Theoretic Modelization of Instancewise Program Analysis: Transducers as mappings from Instances to Memory Locations. PhD thesis, CNAM, Paris (December 2004)
Berstel, J.: Transductions and Context-Free Languages. Teubner, Stuttgart, Germany (1979)
Bourdoncle, F.: Abstract interpretation by dynamic partitioning. J. of Functional Programming 2(4), 407–423 (1992)
Cohen, A.: Program Analyse et transformation: from the Polytope Model to Formal Languages. PhD hesis, Université de Versailles, France (December 1999)
Cohen, A., Collard, J.-F.: Instancewise reaching definition analysis for recursive programs using context-free transductions. In: Parallel Architectures and Compilation Techniques (PACT 1998), Paris, France, pp. 332–340. IEEE Computer Society, Los Alamitos (1998)
Collard, J.-F.: Reasoning About Program Transformations. Springer, Heidelberg (2002)
Cousot, P.: Semantic foundations of programs analysis. Prentice-Hall, Englewood Cliffs (1981)
Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: 5th ACM Symp. on Principles of Programming Languages, pp. 84–96 (January 1978)
Creusillet, B.: Array Region Analyses and Applications. PhD thesis, École Nationale Supérieure des Mines de Paris (ENSMP), France (December 1996)
Deutsch, A.: Operational Models of Programming Languages and Representations of Relations on Regular Languages with Application to the Static Determination of Dynamic Aliasing Properties of Data. PhD thesis, École Polytechnique, France (April 1992)
Deutsch, A.: Interprocedural may-alias analysis for pointers: beyond k-limiting. In: ACM Symp. on Programming Language Design and Implementation (PLDI 1994), Orlando, Florida, pp. 230–241 (June 1994)
Elgot, C.C., Mezei, J.E.: On relations defined by generalized finite automata. IBM J. of Research and Development, 45–68 (1965)
Epstein, D.B.A., Cannon, J.W., Holt, D.F., Levy, S.V.F., Paterson, M., Thurston, W.: Word Processing in Groups. Jones and Bartlett Publishers, Boston (1992)
Esparza, J., Knoop, J.: An automata-theoretic approach to interprocedural data-flow analysis. In: Thomas, W. (ed.) FOSSACS 1999. LNCS, vol. 1578, pp. 14–30. Springer, Heidelberg (1999)
Esparza, J., Podelski, A.: Efficient algorithms for pre* and post* on interprocedural parallel flow graphs. In: ACM Symp. on Principles of Programming Languages (PoPL 2000), pp. 1–11 (2000)
Feautrier, P.: Array expansion. In: ACM Intl. Conf. on Supercomputing, St. Malo, France, pp. 429–441 (July 1988)
Feautrier, P.: Dataflow analysis of scalar and array references. Intl. J. of Parallel Programming 20(1), 23–53 (1991)
Feautrier, P.: Some efficient solutions to the affine scheduling problem, part II, multidimensional time. Intl. J. of Parallel Programming 21(6), 389–420 (1992); see also Part I, one dimensional time 21(5), 315–348
Feautrier, P.: A parallelization framework for recursive tree programs. In: EuroPar 1998, Southampton, UK. LNCS. Springer, Heidelberg (1998)
Fradet, P., Metayer, D.L.: Shape types. In: ACM Symp. on Principles of Programming Languages (PoPL 1997), Paris, France, pp. 27–39 (January 1997)
Gerlek, M.P., Stoltz, E., Wolfe, M.J.: Beyond induction variables: detecting and classifying sequences using a demand-driven ssa form. ACM Trans. on Programming Languages and Systems 17(1), 85–122 (1995)
Ghiya, R., Hendren, L.J.: Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C. In: ACM Symp. on Principles of Programming Languages (PoPL 1996), St. Petersburg Beach, Florida, pp. 1–15 (January 1996)
Giavitto, J.-L., Michel, O., Sansonnet, J.-P.: Group-based fields. In: Proc. of the Parallel Symbolic Languages and Systems (October 1995); see also Design and Implementation of 81/2, a Declarative Data-Parallel Language, RR 1012, Laboratoire de Recherche en Informatique, Université Paris Sud 11, France (1995)
Hampapuram, H., Yang, Y., Das, M.: Symbolic path simulation in path-sensitive dataflow analysis. In: Proc. of the ACM Workshop on Program Analysis for Software Tools and Engineering (PASTE 2005), Lisbon, Portugal, pp. 52–58 (September 2005)
Harrison, W.L.: The interprocedural analysis and automatic parallelisation of Scheme programs. Lisp and Symbolic Computation 2(3), 176–396 (1989)
Hendren, L.J., Hummel, J., Nicolau, A.: Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs. In: ACM Symp. on Programming Language Design and Implementation (PLDI 1992), pp. 249–260. San Francisco, Calfifornia (1992)
Klarlund, N., Schwartzbach, M.I.: Graph types. In: ACM Symp. on Principles of Programming Languages (PoPL 1993), Charleston, South Carolina, pp. 196–205 (January 1993)
Maydan, D.E., Amarasinghe, S.P., Lam, M.S.: Array dataflow analysis and its use in array privatization. In: 20th ACM Symp. on Principles of Programming Languages, Charleston, South Carolina, pp. 2–15 (January 1993)
Might, M., Shivers, O.: Environment analysis via Delta CFA. In: ACM Symp. on Principles of Programming Languages (PoPL 2006), Charleston, South Carolina, pp. 127–140 (January 2006)
Nielson, F., Nielson, H., Hankin, C.: Principles of Program Analysis. Springer, Heidelberg (1999)
Okasaki, C.: Functional data structures. Advanced Functional Programming, 131–158 (1996)
Pelletier, M., Sakarovitch, J.: On the representation of finite deterministic 2-tape automata. Theoretical Computer Science 225(1–2), 1–63 (1999)
Perrin, G.-R., Darte, A. (eds.): The Data Parallel Programming Model. LNCS, vol. 1132. Springer, Heidelberg (1996)
Pop, S., Cohen, A., Silber, G.-A.: Induction variable analysis with delayed abstractions. In: Conte, T., Navarro, N., Hwu, W.-m.W., Valero, M., Ungerer, T. (eds.) HiPEAC 2005. LNCS, vol. 3793, pp. 218–232. Springer, Heidelberg (2005)
Pugh, W.: A practical algorithm for exact array dependence analysis. Communications of the ACM 35(8), 27–47 (1992)
Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: ACM Symp. on Principles of Programming Languages (PoPL 1995), San Francisco, CA (January 1995)
Reps, T.W., Schwoon, S., Jha, S.: Weighted pushdown systems and their application to interprocedural dataflow analysis. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, pp. 189–213. Springer, Heidelberg (2003)
Rozenberg, G., Salomaa, A. (eds.): Handbook of Formal Languages. Word Language Grammar, vol. 1. Springer, Heidelberg (1997)
Rozenberg, G., Salomaa, A. (eds.): Handbook of Formal Languages. Beyond Words, vol. 3. Springer, Heidelberg (1997)
Sagiv, S., Reps, T.W., Wilhelm, R.: Parametric shape analysis via 3-valued logic. In: ACM Symp. on Principles of Programming Languages (PoPL 1999), San Antonio, Texas, pp. 105–118 (January 1999)
Sharir, M., Pnueli, A.: Program Flow Analysis: Theory and Applications. In: Two Approaches to Interprocedural Data Flow Analysis. Prentice Hall, Englewood Cliffs (1981)
Venet, A.: Nonuniform alias analysis of recursive data structures and arrays. In: Hermenegildo, M.V., Puebla, G. (eds.) SAS 2002. LNCS, vol. 2477, pp. 36–51. Springer, Heidelberg (2002)
Venet, A.: A scalable nonuniform pointer analysis for embedded programs. In: Giacobazzi, R. (ed.) SAS 2004. LNCS, vol. 3148, pp. 149–164. Springer, Heidelberg (2004)
Wolfe, M.J.: High Performance Compilers for Parallel Computing. Addison-Wesley, Reading (1996)
Wu, P., Cohen, A., Padua, D., Hoeflinger, J.: Monotonic evolution: an alternative to induction variable substitution for dependence analysis. In: ACM Intl. Conf. on Supercomputing (ICS 2001), Sorrento, Italy (June 2001)
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Amiranoff, P., Cohen, A., Feautrier, P. (2006). Beyond Iteration Vectors: Instancewise Relational Abstract Domains. In: Yi, K. (eds) Static Analysis. SAS 2006. Lecture Notes in Computer Science, vol 4134. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11823230_11
Download citation
DOI: https://doi.org/10.1007/11823230_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-37756-6
Online ISBN: 978-3-540-37758-0
eBook Packages: Computer ScienceComputer Science (R0)