In compiler design, static single assignment form (often abbreviated as SSA form or simply SSA) is a property of an intermediate representation (IR), which says that each variable is assigned exactly once. Existing variables in the original IR are split into versions, new variables typically indicated by the original name with a subscript in textbooks, so that every definition gets its own version. In SSA form, use-def chains are explicit and each contains a single element.
SSA was developed by Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck, researchers at IBM in the 1980s.
In functional language compilers, such as those for Scheme, ML and Haskell, continuation-passing style (CPS) is generally used while one might expect to find SSA in a compiler for Fortran or C. SSA is formally equivalent to a well-behaved subset of CPS (excluding non-local control flow, which does not occur when CPS is used as intermediate representation), so optimizations and transformations formulated in terms of one immediately apply to the other.
Read more about Static Single Assignment Form: Benefits, Converting To SSA, Variations That Reduce The Number of Φ Functions, Converting Out of SSA Form, Extensions, Compilers Using SSA Form
Famous quotes containing the words single and/or form:
“When words fail us or, quite the opposite, when they rush from our mouths faster than we would like, we can console ourselves that if no single moment is going to define our relationship with a child, neither can a single lapse of good judgment or patience destroy it.”
—Cathy Rindner Tempelsman (20th century)
“Whenever, therefore, people are deceived and form opinions wide of the truth, it is clear that the error has slid into their minds through the medium of certain resemblances to that truth.”
—Socrates (469399 B.C.)