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:
“A single spark can start a prairie fire.”
—Chinese proverb.
“When I was young my teachers were the old.
I gave up fire for form till I was cold.”
—Robert Frost (18741963)