Skip to main content

Introduction

  • Chapter
  • First Online:
SSA-based Compiler Design
  • 944 Accesses

Abstract

This first chapter introduces the static single assignment property, providing informal and intuitive motivations for representing programs in this manner. We show how several primitive program structures can be transformed into static single assignment form. We explain the purpose of the phi-function in terms of merging values from different incoming paths at control-flow merge points. We then review the historical context of SSA, including its relationship to functional programming. Finally, we discuss its widespread adoption in current compilation toolchains.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 69.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 89.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 119.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 1.

    Kenneth Zadeck reports that ϕ-functions were originally known as phoney-functions, during the development of SSA at IBM Research. Although this was an in-house joke, it did serve as the basis for the eventual name.

References

  1. Alpern, B., Wegman, M. N., & Kenneth Zadeck, F. (1988). Detecting equality of variables in programs. In Proceedings of the Symposium on Principles of Programming Languages. POPL ’88, pp. 1–11.

    Google Scholar 

  2. Cytron, R. K., et al. (1989). An efficient method of computing static single assignment form. In Proceedings of the Symposium on Principles of Programming Languages. POPL ’89 (pp. 25–35).

    Google Scholar 

  3. Rosen, B. K., Wegman, M. N., & Zadeck, F. K. (1988). Global value numbers and redundant computations. In Proceedings of the Symposium on Principles of Programming Languages. POPL ’88 (pp. 12–27).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jeremy Singer .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Singer, J. (2022). Introduction. In: Rastello, F., Bouchez Tichadou, F. (eds) SSA-based Compiler Design. Springer, Cham. https://doi.org/10.1007/978-3-030-80515-9_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-80515-9_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-80514-2

  • Online ISBN: 978-3-030-80515-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics