Extended SSA with factored use-def chains to support optimization and parallelism
Stoltz, Gerlek, Wolfe · 1994
We describe our implementation of the Static Single Assignment (SSA) form of intermediate program representation in our parallelizing Fortran 90 compiler, Nascent. Although the traditional SSA form algorithm renames variables uniquely at every definition point, it is not practical to add new names to the symbol table at all assignments. Thus, most implementations actually provide def-use chains for each definition. In contrast, we provide use-def chains, so that in the intermediate representation the link at each use points to its unique reaching definition. We discuss how our approach improves the implementation and efficiency of optimization and analysis techniques such as induction variable recognition and scalar dependence identification, used in the detection of parallelism. We also support parallelism by extending the traditional SSA form into languages with parallel constructs.>