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
Comparison:
- 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)