SSA Form and Its Advantages

SSA = Static single assignment form

A form of control-flow graph with at most one assignment statement for each variable

We will see that each program can be transformed into SSA form

  • by introducing more variables and some special notation)

Advantage of SSA form:

  • we can easily store pointers from the use of each variable to its (unique) definition
  • it becomes easier to do analyses and optimizations efficiently


  • functional programming has only values: defined at initialization
  • I-values in the parallel Id programming language designed by Arvind and Nikhil can be assigned but only once during program execution
  • in SSA form, during execution variable can be assigned multiple times
    • but all these assignments will be at the same place in the program

Note: programs in SSA form can be converted into functional programs by introducing a set of mutually recursive possibly local functions for each basic block (see Tiger book, Sectioon 19.7)