Class SSAGraph
java.lang.Object
EDU.purdue.cs.bloat.ssa.SSAGraph
The SSA graph (also called the value graph) represents the nesting of
expression in a control flow graph. Each node in the SSA graph represents an
expression. If the expression is a definition, the it is labeled with the
variable it defines. Each node has directed edges to the nodes representing
its operands.
SSAGraph is a representation of the definitions found in a CFG in the following form: Each node in the graph is an expression that defines a variable (a VarExpr, PhiStmt, or a StackManipStmt). Edges in the graph point to the nodes whose expressions define the operands of the expression in the source node.
This class is used primarily get the strongly connected components of the SSA graph in support of value numbering and induction variable analysis.
Nate warns: Do not modify the CFG while using the SSA graph! The effects of such modification are undefined and will probably lead to nasty things occuring.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncfg()Returns the FlowGraph that this SSAGraph is built around.Returns the children (that is, the operands) of a given Node in the SSA Graph.Returns the Sets of Nodes whose values are equivalent.equivalent(Node node) Returns a set of nodes whose value is equivalent to a given node.voidprintSCCs(PrintWriter pw) Prints a textual representation of the strongly connected components of the SSAGraph to a PrintWriter.voidvisitComponent(Node startNode, ComponentVisitor visitor) Visits the strongly connected component that contains a given Node.voidvisitComponents(ComponentVisitor visitor) Calculates the strongly connected components (SCC) of the SSA graph.
-
Field Details
-
DEBUG
public static boolean DEBUG
-
-
Constructor Details
-
SSAGraph
Grumble. -
SSAGraph
Constructor. Traverse the control flow graph and determines which Nodes are of an equivalent Type.- Parameters:
cfg- The control flow graph to examine
-
-
Method Details
-
cfg
Returns the FlowGraph that this SSAGraph is built around. -
equivalent
-
children
-
equivalences
Returns the Sets of Nodes whose values are equivalent. -
visitComponents
Calculates the strongly connected components (SCC) of the SSA graph. SSCs are represented by a List of Nodes. The SCCs are then visited by the ComponentVistor. -
visitComponent
Visits the strongly connected component that contains a given Node. -
printSCCs
Prints a textual representation of the strongly connected components of the SSAGraph to a PrintWriter.
-