EDU.purdue.cs.bloat.ssa
Class SSA
java.lang.Object
|
+--EDU.purdue.cs.bloat.ssa.SSA
- public class SSA
- extends java.lang.Object
Compute the SSA form of the control flow graph and build FUD chains.
The SSA algorithm is from:
R. Cytron, J. Ferrante J, B. K. Rosen, M. N. Wegman, and F. K. Zadeck,
"Efficiently Computing Static Single Assignment Form and the Control
Dependence Graph", TOPLAS, 13(4): 451-490, October 1991.
I made modifications to the algorithm to compute FUD chains and to run
the algorithm separately for each variable similar to the SSAPRE algorithm.
Making a separate pass for each variable allows variables to be added
incrementally.
|
Field Summary |
static boolean |
DEBUG
|
|
Constructor Summary |
SSA()
|
|
Method Summary |
static void |
transform(FlowGraph cfg)
Transforms a control flow graph into Single Static Assignment
(SSA) form. |
static void |
transform(FlowGraph cfg,
SSAConstructionInfo info)
Performs the actions necessary to convert a CFG into SSA form
with respect to one variable. |
| Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
DEBUG
public static boolean DEBUG
SSA
public SSA()
transform
public static void transform(FlowGraph cfg)
- Transforms a control flow graph into Single Static Assignment
(SSA) form. First, the CFG is traversed and a list of all
variables (both local and stack) eligible for SSA renaming is
compiled. Variables are represented by instances of
SSAConstructionInfo. Each of these variables is then
transformed.
- See Also:
transform(EDU.purdue.cs.bloat.cfg.FlowGraph),
SSAConstructionInfo
transform
public static void transform(FlowGraph cfg,
SSAConstructionInfo info)
- Performs the actions necessary to convert a CFG into SSA form
with respect to one variable. The variable's information is
stored in the SSAConstructionInfo.