Acta Informatica

, Volume 28, Issue 2, pp 121–163 | Cite as

Properties of data flow frameworks

A unified model
  • T. J. Marlowe
  • B. G. Ryder
Article

Summary

A comprehensive overview of data flow frameworks and their characterizing properties is presented, to clarify property definitions and demonstrate their interrelation. Properties ensuring the existence of a solution are differentiated from those guaranteeing particular convergence behavior for specific solution procedures. Examples illustrate the orthogonality of these precision and convergence properties. In addition, several data flow problems are categorized with respect to these properties.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abramsky, S., Hankin C. (eds.): Abstract interpretation of declarative languages. Chichester: Ellis Horwood 1987Google Scholar
  2. 2.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: principles, techniques, and tools. Reading, MA: Addison-Wesley 1986Google Scholar
  3. 3.
    Allen, F.E., Cocke, J.: A program data flow analysis procedure. Commun. ACM19, 137–147 (1977)Google Scholar
  4. 4.
    Allen, R., Kennedy, K.: Automatic translation of FORTRAN programs to vector form. ACM Trans. Program. Lang. Syst.9, 491–542 (1987)Google Scholar
  5. 5.
    Alpern, B., Wegman, M., Zadeck, F.K.: Detecting inequality of values in programs. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languates, pp. 1–11, 1988Google Scholar
  6. 6.
    Apt, K.R.: A static analysis of CSP programs. Proceedings of 1983 Conference on Logics of Programs. (Lect. Notes Comput. Sci., vol. 164, pp. 1–17) Berlin Heidelberg New York: Springer 1983Google Scholar
  7. 7.
    Banning, J.P.: An efficieny way to find the side effects of procedure calls and the aliases of variables. In: Conference Record of the Sixth Annual ACM Symposium on Principles of Programming Languages, pp. 29–41, 1979Google Scholar
  8. 8.
    Barth, J.M.: A practical interprocedural data flow analysis algorithm. Commun. ACM21, 724–737 (1978)Google Scholar
  9. 9.
    Beatty, J.: Register assignment algorithm for generation of highly optimized object code. IBM J. Res. Dev.18, 20–39 (1974)Google Scholar
  10. 10.
    Birkhoff, G.: Lattice theory. American Mathematical Society Colloquium Publications, Washington, DC, 1967Google Scholar
  11. 11.
    Burke, M.: An interval analysis approach toward exhaustive and incremental interprocedural data flow analysis. ACM Trans. Program. Lang. Syst.12, 341–395 (1990)Google Scholar
  12. 12.
    Burke, M.: Private communication (1989)Google Scholar
  13. 13.
    Burke, M., Cytron, R.: Interprocedural dependence analysis and parallelization. In: Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pp. 162–175. SIGPLAN Notices21, No. 6 (1986)Google Scholar
  14. 14.
    Burke, M., Ryder, B.G.: A critical analysis of incremental iterative data flow analysis algorithms. IEEE Trans. Software Eng16, 723–728 (1990)Google Scholar
  15. 15.
    Cai, J.: Fixed point computation and transformational programming. PhD thesis, Department of Computer Science, Rutgers University, 1987. Rutgers Technical Report DCS-TR-217Google Scholar
  16. 16.
    Cai, J., Paige, R.: Program derivation by fixed point computation. Sci. Comput. Program.11, 197–261 (1989)Google Scholar
  17. 17.
    Callahan, D.: The program summary graph and flow sensitive interprocedural data flow analysis. In: Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 47–56, 1988Google Scholar
  18. 18.
    Callahan, D., Cooper, K., Kennedy, K., Torczon, L.: Interprocedural constant propagation. In: Conference Record of the Thirteenth Annual ACM Symposium on Principles of Programming Languages, pp. 152–161, 1986Google Scholar
  19. 19.
    Callahan, D., Subhlok, J.: Static analysis of low-level synchronization. In: Conference Record of the 1988 Workshop on Parallel and Distributed Debugging, pp. 100–111, 1988Google Scholar
  20. 20.
    Carroll, M.: Data flow update via attribute and dominator updates. PhD thesis, Department of Computer Science, Rutgers University, 1988Google Scholar
  21. 21.
    Carroll, M., Ryder, B.: Incremental data flow update via attribute and dominator updates. In: Conference Record of the Fiftheenth Annual ACM Symposium on Principles of Programming Languages, pp. 274–284, 1988Google Scholar
  22. 22.
    Chow, A., Rudmik, A.: The design of a data flow analyzer. In: Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pp. 106–113, 1982Google Scholar
  23. 23.
    Cooper, K.: Analyzing aliases of reference formal parameters. In: Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pp. 281–290, 1984Google Scholar
  24. 24.
    Cooper, K., Kennedy, K.: Efficient computation of flow insensitive interprocedural summary information. In: Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pp. 247–258. SIGPLAN Notices19, No. 6 (1984)Google Scholar
  25. 25.
    Cooper, K., Kennedy, K.: Interprocedural side-effect analysis in linear time. In: Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 57–66, 1988Google Scholar
  26. 26.
    Cooper, K., Kennedy, K.: Fast interprocedural alias analysis. In: Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, pp. 49–59, 1989Google Scholar
  27. 27.
    Cousot, P.: Semantic foundations of program analysis. In: Program Flow Analysis: Theory and Applications, Chap. 10. Englewood Cliffs, NJ: Prentice Hall 1981Google Scholar
  28. 28.
    Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, pp. 238–252. SIGPLAN Notices12, No. 1 (1977)Google Scholar
  29. 29.
    Cousot, P., Cousot, R.: Automatic synthesis of optimal invariant assertions: Mathematical foundations. In: Proceedings ACM Symposium on Artificial Intelligence and Programming Languages, pp. 1–12. SIGPLAN Notices12, No. 8 (1977)Google Scholar
  30. 30.
    Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: Conference Record of the Sixth Annual ACM Symposium on Principles of Programming Languages, pp. 269–282. SIGPLAN Notices14, No. 1 (1979)Google Scholar
  31. 31.
    Coutant, D.S.: Retargetable high-level alias analysis. In: Conference Record of the Thirteenth Annual ACM Symposium on Principles of Programming Languages, pp. 110–118. SIGPLAN Notices21, No. 1 (1986)Google Scholar
  32. 32.
    Cytron, R.: Do-across: Beyond vectorization for multiprocessors. In: Conference Record of the 1986 International Conference on Parallel Processing, pp. 836–844, 1986Google Scholar
  33. 33.
    Cytron, R., Ferrante, J., Rosen, B., Wegman, M., Zadeck, F.K.: An efficient method of computing static single assignment form. In: Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, pp. 25–35, 1989Google Scholar
  34. 34.
    Cytron, R., Lowry, A., Zadeck, F.K.: Code motion of control structures in high-level languages. In: Conference Record of the Thirteenth Annual ACM Symposium on Principles of Programming Languages, pp. 70–85, 1986Google Scholar
  35. 35.
    Dijkstra, E.W., Gasteren, A. van: A simple fixpoint argument without the restriction to continuity. Acta Inf.23, 1–8 (1986)Google Scholar
  36. 36.
    Emrath, P.A., Padua, D.A.: Automatic detection of nondeterminacy in parallel programs. In: Proceedings of the ACM SIGPLAN/SIGOPS Workshop on Parallel and Distributed Debugging, pp. 89–99, 1988Google Scholar
  37. 37.
    Ferrante, J., Ottenstein, K., Warren, J.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst.9, 319–349 (1987)Google Scholar
  38. 38.
    Fong, A.C.: Generalized common subexpressions in very high level languages. In: Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, pp. 48–57, 1977Google Scholar
  39. 39.
    Graham, S., Wegman, M.: A fast and usually linear algorithm for global data flow analysis. J. ACM23, 172–202 (1976)Google Scholar
  40. 40.
    Harrold, M.J., Soffa, M.L.: Computation of interprocedural definition and use dependencies. In: Proceedings of the IEEE Comp. Soc. 1990 Int. Conference on Computer Languages, pp. 297–306, 1990Google Scholar
  41. 41.
    Hecht, M.S.: Flow analysis of computer programs. Amsterdam: Elsevier North-Holland 1977Google Scholar
  42. 42.
    Hecht, M.S., Ullman, J.D.: Analysis of a simple algorithm for global flow problems. In: Conference Record of the ACM Symposium on Principles of Programming Languages, pp. 207–217, 1973Google Scholar
  43. 43.
    Holley, I., Rosen, B.: Qualified data flow problems. IEEE Trans. Software Eng., SE-7, 60–78 (1981)Google Scholar
  44. 44.
    Hopcroft, J., Ullman, J.D.: Introduction to automata theory, languages, and computation. Reading, MA: Addison-Wesley 1979Google Scholar
  45. 45.
    Horwitz, S., Demers, A., Teitelbaum, T.: An efficient general iterative algorithm for data-flow analysis. Acta Inf.24, 679–694 (1987)Google Scholar
  46. 46.
    Horwitz, S., Prins, J., Reps, T.: Integrating non-interfering versions of programs. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pp. 133–145, 1988Google Scholar
  47. 47.
    Horwitz, S., Prins, J., Reps, T.: On the adequacy of program dependence graphs representing programs. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pp. 146–157, 1988Google Scholar
  48. 48.
    Horwitz, S., Pfeiffer, P., Reps, T.: Dependence analysis for pointer variables. In: Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, pp. 28–40, 1989Google Scholar
  49. 49.
    Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. In: Proceedings of the SIGPLAN'88, Conference on Programming Language Design and Implementation, pp. 35–46, 1988Google Scholar
  50. 50.
    Kam, J.B., Ullman, J.D.: Global data flow analysis and iterative algorithms. J. ACM23, 158–171 (1976)Google Scholar
  51. 51.
    Kam, J.B., Ullman, J.D.: Monotone data flow analysis frameworks. Acta Inf.7, 305–317 (1977)Google Scholar
  52. 52.
    Kennedy, K.: A survey of data flow analysis techniques. In: Program flow analysis theory and applications, Chap. 1 Englewood Cliffs, NJ: Prentice Hall 1981Google Scholar
  53. 53.
    Kildall, G.: A unified approach to global program optimization. In: Conference Record of the ACM Symposium on Principles of Programming Languages, pp. 194–206, 1973Google Scholar
  54. 54.
    Knuth, D.E.: An empirical study of FORTRAN programs. Software Pract. Exper.1, 105–133 (1971)Google Scholar
  55. 55.
    Larus, J., Hilflinger, P.: Detecting conflicts in structure accesses. In: Proceedings of the SIGPLAN'88, Conference on Programming Language Design and Implementation, pp. 21–34, (1986)Google Scholar
  56. 56.
    Lindstrom, G.: Static evaluation of functional programs. In: Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pp. 196–206. SIGPLAN Notices21, No. 7 (1986)Google Scholar
  57. 57.
    Manna, Z., Shamir, A.: The theoretical aspects of the optimal fixedpoint. SIAM J. Comput.5, 414–426 (1976)Google Scholar
  58. 58.
    Manna, Z., Shamir, A.: The optimal approach to recursive programs. Commun. ACM20, 824–831 (1977)Google Scholar
  59. 59.
    Marlowe, T.J.: Incremental iteration and data flow analysis. PhD thesis, Department of Computer Science, Rutgers University, 1989Google Scholar
  60. 60.
    Marlowe, T.J., Ryder, B.G.: An efficient hybrid algorithm for incremental data flow analysis. In: Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, pp. 184–196, 1990Google Scholar
  61. 61.
    McDowell, C.E.: A practical algorithm for static analysis of parallel programs. J. Parallel Distrib. Comput.22, 96–103 (1979)Google Scholar
  62. 62.
    Morel, E. Renvoise, C.: Global optimization by suppression of redundancies. Commun. ACM22, 96–103 (1979)Google Scholar
  63. 63.
    Myers, E.W.: A precise interprocedural data flow algorithm. In: Conference Record of the Eighth Annual ACM Symposium on Principles of Programming Languages, pp. 219–230, 1981Google Scholar
  64. 64.
    Neirynck, A., Panangaden, P., Demers, A.: Computation of aliases and support sets. In: Conference Record of the Fourteenth Annual ACM Symposium on Principles of Programming Languages, pp. 274–283, 1987Google Scholar
  65. 65.
    Ottenstein, K.J., Ottenstein, L.M.: The program dependence graph in a software development environment. In: Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, pp. 177–184, 1984Google Scholar
  66. 66.
    Padua, D., Wolfe, M.J.: Advanced compiler optimizations for supercomputers. Commun. ACM22, 1184–1201 (1986)Google Scholar
  67. 67.
    Paull, M.C.: Algorithm design — A recursion transformation framework. New York, NY: Wiley Interscience 1988Google Scholar
  68. 68.
    Rapps S., Weyuker, E.: Selecting software test data using data flow information. IEEE Trans. Software Eng. Se-11, 367–375 (1985)Google Scholar
  69. 69.
    Reif, J., Lewis, H.: Efficient symbolic analysis of programs. J. Comput. Syst. Sci.11, 280–313 (1986)Google Scholar
  70. 70.
    Reif, J., Tarjan, R.E.: Symbolic program analysis in almost-linear time. SIAM J. Comput.9, 81–93 (1981)Google Scholar
  71. 71.
    Reps, T., Teitelbaum, T., Demers, A.: Incremental context-dependent analysis for language-based editors. ACM Trans. Program. Lang. Syst.5, 449–477 (1983)Google Scholar
  72. 72.
    Rosen, B.: Monoids for rapid data flow analysis. SIAM J. Comput.9, 159–196 (1980)Google Scholar
  73. 73.
    Rosen, B.: A lubricant for data flow analysis. SIAM J. Comput.11, 493–511 (1982)Google Scholar
  74. 74.
    Rosen, B., Wegman, M., Zadeck, F.K.: Global value numbers and redundant computations. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pp. 12–27, 1988Google Scholar
  75. 75.
    Ruggieri, C., Murtagh, T.: Lifetime analysis of dynamically allocated objects. In: Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pp. 285–293, 1988Google Scholar
  76. 76.
    Ryder, B.G., Marlowe, T.J., Paull, M.C.: Conditions for incremental iteration: examples and counterexamples. Sci. Comput. Program.11, 1–15 (1988)Google Scholar
  77. 77.
    Ryder, B.G., Pande, H.: The interprocedural structure of C programs: An empirical study. Laboratory for Computer Science Research Technical Report LCSR-TR-99, Rutgers University, 1988Google Scholar
  78. 78.
    Ryder, B.G., Paull, M.C.: Elimination algorithms for data flow analysis. ACM Comput. Surv.18, 277–316 (1986)Google Scholar
  79. 79.
    Sagiv, S., Edelstein, O., Francez, N., Rodeh, M.: Resolving circularity in attribute grammars with applications to data flow analysis. In: Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, pp. 36–46, 1989Google Scholar
  80. 80.
    Schonberg, E.: On-the-fly detection of access anomalies. In: Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, pp. 285–297, 1989Google Scholar
  81. 81.
    Schwartz, J.T., Sharir, M.: A design for optimizations of the bitvectoring class. (Courant Comput. Sci. Rep. 17) New York, NY: New York University 1979Google Scholar
  82. 82.
    Shapiro, R.M., Saint, H.: The representation of algorithms. Technical Report CA-7002-1432. Massachusetts Computer Associates, 1970Google Scholar
  83. 83.
    Sharir, M., Pnueli, A.: Two approaches to interprocedural data flow analysis. In: Program Flow Analysis: Theory and Applications, Chap. 7. Englewood Cliffs, NJ: Prentice Hall 1981Google Scholar
  84. 84.
    Shasha, D., Snir, M.: Efficient and correct execution of parallel programs that share memory. ACM Trans. Program. Lang. Syst.10, 282–312 (1988)Google Scholar
  85. 85.
    Tarjan, R.E.: Testing flow graph reducibility. J. Comput. Syst. Sci.9, 355–365 (1974)Google Scholar
  86. 86.
    Tarjan, R.E.: Iterative Algorithms for global Flow Analysis. In: Algorithms and Complexity-New Directions and Recent Results, pp. 71–101. New York: Academic Press 1976Google Scholar
  87. 87.
    Tarjan, R.E.: Applications of path compression on balanced trees. J. ACM26, 690–715 (1979)Google Scholar
  88. 88.
    Tarjan, R.E.: A unified approach to path problems. J. ACM28, 576–593 (1981)Google Scholar
  89. 89.
    Tarjan, R.E.: Fast algorithms for solving path problems. J. ACM28, 594–614 (1981)Google Scholar
  90. 90.
    Tenenbaum, A.: Determination of types in very high level languages. PhD thesis, Courant Institute of Mathematical Sciences, New York University, 1974. Technical Report Number CCSR #3Google Scholar
  91. 91.
    Tenenbaum, A.: Compile time type determination in SETL. In: Proc.ACM 1974 Annual Conference, pp. 95–100, 1974Google Scholar
  92. 92.
    Ullman, J.D., Hecht, M.S.: Flow graph reducibility. SIAM J. Comput.1, 188–202 (1972)Google Scholar
  93. 93.
    Walz, J., Johnson, G.: Incremental evaluation for a general class of circular attribute grammars. In: Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 209–221. SIGPLAN Notices23 No. 7 (1988)Google Scholar
  94. 94.
    Wegman, M., Zadeck, F.K.: Constant propagation with conditional branches. In: Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, pp. 291–299, 1985Google Scholar
  95. 95.
    Weihl, W.: Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables. In: Conference Record of the Seventh Annual ACM Symposium on Principles of Programming Languages, pp. 83–94, 1980Google Scholar
  96. 96.
    Weiser, M.: Program slicing. IEEE Trans. Software Eng. SE-10, 352–357 (1984)Google Scholar
  97. 97.
    Zadeck, F.K.: Incremental data flow analysis in a structured program editor. PhD thesis, Rice University, 1983Google Scholar
  98. 98.
    Zadeck, F.K.: Incremental data flow analysis in a structured program editor. In: Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pp. 132–143. SIGPLAN Notices19, No. 6 (1984)Google Scholar

Copyright information

© Springer-Verlag 1990

Authors and Affiliations

  • T. J. Marlowe
    • 1
  • B. G. Ryder
    • 1
  1. 1.Department of Computer ScienceRutgers UniversityNew BrunswickUSA

Personalised recommendations