Simple and Efficient Construction of Static Single Assignment Form

  • Matthias Braun
  • Sebastian Buchwald
  • Sebastian Hack
  • Roland Leißa
  • Christoph Mallon
  • Andreas Zwinkau
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7791)

Abstract

We present a simple SSA construction algorithm, which allows direct translation from an abstract syntax tree or bytecode into an SSA-based intermediate representation. The algorithm requires no prior analysis and ensures that even during construction the intermediate representation is in SSA form. This allows the application of SSA-based optimizations during construction. After completion, the intermediate representation is in minimal and pruned SSA form. In spite of its simplicity, the runtime of our algorithm is on par with Cytron et al.’s algorithm.

References

  1. 1.
    libFirm – The FIRM intermediate representation library, http://libfirm.org
  2. 2.
    The LLVM compiler infrastructure project, http://llvm.org
  3. 3.
    Appel, A.W.: SSA is functional programming. SIGPLAN Notices 33(4), 17–20 (1998)MathSciNetCrossRefGoogle Scholar
  4. 4.
    Aycock, J., Horspool, N.: Simple Generation of Static Single-Assignment Form. In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 110–125. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  5. 5.
    Brandis, M.M., Mössenböck, H.: Single-pass generation of static single-assignment form for structured languages. ACM Trans. Program. Lang. Syst. 16(6), 1684–1698 (1994)CrossRefGoogle Scholar
  6. 6.
    Briggs, P., Cooper, K.D., Harvey, T.J., Simpson, L.T.: Practical improvements to the construction and destruction of static single assignment form. Softw. Pract. Exper. 28(8), 859–881 (1998)CrossRefGoogle Scholar
  7. 7.
    Choi, J.D., Cytron, R., Ferrante, J.: Automatic construction of sparse data flow evaluation graphs. In: Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1991, pp. 55–66. ACM, New York (1991)CrossRefGoogle Scholar
  8. 8.
    Click, C., Paleczny, M.: A simple graph-based intermediate representation. In: Papers from the 1995 ACM SIGPLAN Workshop on Intermediate Representations, IR 1995, pp. 35–49. ACM, New York (1995)CrossRefGoogle Scholar
  9. 9.
    Cocke, J.: Programming languages and their compilers: Preliminary notes. Courant Institute of Mathematical Sciences, New York University (1969)Google Scholar
  10. 10.
    Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. TOPLAS 13(4), 451–490 (1991)CrossRefGoogle Scholar
  11. 11.
    Eswaran, K.P., Tarjan, R.E.: Augmentation problems. SIAM J. Comput. 5(4), 653–665 (1976)MathSciNetMATHCrossRefGoogle Scholar
  12. 12.
    Hecht, M.S., Ullman, J.D.: Characterizations of reducible flow graphs. J. ACM 21(3), 367–375 (1974)MathSciNetMATHCrossRefGoogle Scholar
  13. 13.
    Kelsey, R.A.: A correspondence between continuation passing style and static single assignment form. SIGPLAN Not. 30, 13–22 (1995)CrossRefGoogle Scholar
  14. 14.
    Paleczny, M., Vick, C., Click, C.: The Java HotSpotTMserver compiler. In: Symposium on JavaTM Virtual Machine Research and Technology Symposium, JVM 2001, pp. 1–12. USENIX Association, Berkeley (2001)Google Scholar
  15. 15.
    Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Global value numbers and redundant computations. In: Proceedings of the 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1988, pp. 12–27. ACM Press, New York (1988)CrossRefGoogle Scholar
  16. 16.
    Sreedhar, V.C., Gao, G.R.: A linear time algorithm for placing φ-nodes. In: Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1995, pp. 62–73. ACM, New York (1995)CrossRefGoogle Scholar
  17. 17.
    Tarjan, R.E.: Depth-first search and linear graph algorithms. SIAM Journal Computing 1(2), 146–160 (1972)MathSciNetMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Matthias Braun
    • 1
  • Sebastian Buchwald
    • 1
  • Sebastian Hack
    • 2
  • Roland Leißa
    • 2
  • Christoph Mallon
    • 2
  • Andreas Zwinkau
    • 1
  1. 1.Karlsruhe Institute of TechnologyGermany
  2. 2.Saarland UniversityGermany

Personalised recommendations