Summary
Global data flow analysis is embedded into an optimizing compiler environment. It is shown for a small language, how global data flow information can be collected, used in determining the applicability of optimizing program transformations, and updated after transformations have made the flow information invalid. The algorithms presented, global data flow analysis, constant propagation, and invariant code motion, are described as guided by the abstract syntax tree of a program. The description is such as to allow the automatic generation of an optimizing compiler.
Similar content being viewed by others
References
Aho, A.V., Ullman, J.D.: Principles of compiler design, Reading: Addison Wesley 1977
Allen, F.E.: Control flow analysis, SIGPLAN Notices, 5, 1–10 (1970)
Babich, W.A., Jazayeri, M: The method of attributes for data flow analysis I, Acta Informat. 10, 245–264 (1978)
Böhm, C., Jacopini, G.: Flow diagrams, turing machines, and languages with only two formation rules, CACM 19, 5 (1966)
de Remer, F. L.: Transformational grammars. In: Compiler construction: An Advanced Course, F.L. Bauer, J. Eickel (eds.). Lectures Notes in Computer Science, Vol. 21. Berlin-Heidelberg-New York: Springer 1974
Farrow, R., Kennedy, K., Zucconi, L.: Graph grammars and global program flow analysis, Proc. 17th Annual IEEE Symp. on Found. of C.S., 1975
Ganzinger, H.: Modifizierte attributierte Grammatiken, Report No. 7420. Abt. Mathematik, Technische Universität München, 1974
Ganzinger, H.: MUG 1-Manual, Report No. 7608, Institut für Informatik, Technische Universität München, 1976
Ganzinger, H.: ADELE: An attribute definition language, TUM-INFO, Inst, für Informatik, Technische Universität München (in press)
Giegerich, R.: Introduction to the compiler generating system MUG 2, TUM-INFO-7913, Inst. für Informatik, Technische Universität München, 1979
Giegerich, R., Wilhelm, R.: Implementierbarkeit attributierter Grammatiken. In: GI-7. Jahrestagung. (H.J. Schneider, (ed.). Informatik Fachberichte 10. Berlin-Heidelberg-New York: Springer 1977
Giegerich, R., Wilhelm, R.: Attribute evaluation, Lec. Notes of the EEC-CREST-Course on State of the Art and Future Trends in Compilation, IRIA 1978
Glasner, I., Möncke, U., Wilhelm, R.: OPTRAN, a language for the specification of program transformations, Techn. Report, FB10 — Informatik, Universität des Saarlandes, 1979
Ganzinger, H., Ripken, K., Wilhelm, R.: Automatic generation of optimizing multipass compilers. In: B. Gilchrist (ed.): Information processing 77, pp. 535–540. Amsterdam: North Holland, 1977
Graham, S.L., Wegman, M.: A fast and usually linear algorithm for global flow analysis, JACM, 23, 172–202 (1976)
Jazayeri, M., Ogden, W.F., Rounds, W.C.: The intrinsically exponential complexity of the circularity problem for attribute grammars, CACM, 18, 697–706 (1975)
Kam, J.B., Ullman, J.D.: Global data flow analysis and iterative algorithms, JACM, 23, 158–171 (1976)
Kennedy, K.: A global flow analysis algorithm, Internat. J. Comput. Math., Section A, 3, 5–15 (1971)
Kennedy, K.: A survey of compiler optimization, Lec. Notes of the EEC-CREST-Course on State of the Art and Future Trends in Compilation, IRIA 1978, also in Jones, N.D., Muchnick, S.S. (eds.), Program Flow Analysis: Theory and Application. Englewood Cliffs: Prentice Hall (in press 1979)
Kildall, G.A.: A unified approach to global program optimization, Conf. Record of the ACM Symp. on Princ. of Progr. Lang., 1973
Knuth, D.E.: Semantics of Context-free Languages, Math. Systems Theory, 2, 127–145 (1968)
Ripken, K.: Generating an intermediate code generator in a compiler generating system, Proc. International Computing Symposium, pp. 121–127. Amsterdam: North Holland, 1975
Rosen, B.K.: Tree-manipulating systems and church-rosser theorems, JACM, Vol. 20, 160–187 (1973)
Rosen, B.K.: High level data flow analysis, CACM, 20, 712–724 (1977)
Tarjan, R.E.: Iterative algorithms for global flow analysis, Techn. Rep. STAN-CS-76-547, Comp. Sci. Dep. Stanford University, 1976
Ullman, J.D.: Fast algorithms for the elimination of Common subexpressions, Acta Informat. 2, 191–213 (1973)
Ullman, J.D.: Data flow analysis, Proc. 2nd USA-Japan Computer Conference, pp. 335–342, Montvale, N.J.: AFIPS Press, 1975
Wilhelm, R.: Codeoptimierung mittels attributierter Transformationsgrammatiken. In: GI-4. Jahrestagung. (D. Siefkes ed.) Lecture Notes in Computer Science, Vol. 26, pp. 257–266. Berlin-Heidelberg-New York: Springer 1974
Wulf, W., Johnsson, R.K., Weinstock, Ch. B., Hobbs, St. O., Geschke, Ch. M.: The design of an optimizing compiler. New York: American Elsevier Publishing Comp., 1975
Wilhelm, R., Ripken, K., Ciesinger, J., Ganzinger, H., Lahner, W., Nollman, R.-D.: Design evaluation of the compiler generating system MUG 1, Proc. 2nd. International Conference on Software Engineering, pp. 571–576, San Francisco, 1976
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Wilhelm, R. Computation and use of data flow information in optimizing compilers. Acta Informatica 12, 209–225 (1979). https://doi.org/10.1007/BF00264579
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00264579