SSACFG Type
SSA-based CFG, where each node contains SSA-based basic blocks. This is a
wrapper class of `IDiGraph
Constructors
| Constructor |
Description
|
|
Instance members
| Instance member |
Description
|
Full Usage:
this.AddEdge
Parameters:
IVertex<SSABasicBlock>
dst : IVertex<SSABasicBlock>
label : CFGEdgeKind
|
Add an edge between the given source and destination vertices with a label.
|
|
Add an edge between the given source and destination vertices.
|
|
Add a root vertex to this CFG.
|
|
Add a vertex containing this BBL to this CFG, and return the added vertex.
|
|
Clone this CFG.
|
|
Get an array of all edges in this CFG.
|
|
Get an array of exit vertices in this CFG.
|
Full Usage:
this.FindDef
Parameters:
IVertex<SSABasicBlock>
targetVarKind : VariableKind
Returns: Stmt option
|
Find the definition of the given variable kind (targetVarKind) at the given node v. We simply follow the dominator tree of the given SSACFG until we find a definition.
|
Full Usage:
this.FindEdge
Parameters:
IVertex<SSABasicBlock>
dst : IVertex<SSABasicBlock>
Returns: Edge<SSABasicBlock, CFGEdgeKind>
|
Find an edge between the given source and destination vertices.
|
Full Usage:
this.FindReachingDef
Parameters:
IVertex<SSABasicBlock>
targetVarKind : VariableKind
Returns: Stmt option
|
Find the reaching definition of the given variable kind (targetVarKind) at the entry of node v. We simply follow the dominator tree of the given SSACFG until we find a definition.
|
Full Usage:
this.FindVertex
Parameters:
IVertex<SSABasicBlock> -> bool
Returns: IVertex<SSABasicBlock>
|
Find a vertex that satisfies the given predicate function.
|
|
Find a vertex by its VertexID. This function raises an exception when there is no such a vertex.
|
Full Usage:
this.FoldEdge
Parameters:
'a -> Edge<SSABasicBlock, CFGEdgeKind> -> 'a
acc : 'a
Returns: 'a
Type parameters: 'a |
Fold the edges of this CFG with the given function and an accumulator.
|
Full Usage:
this.FoldVertex
Parameters:
'a -> IVertex<SSABasicBlock> -> 'a
acc : 'a
Returns: 'a
Type parameters: 'a |
Fold the vertices of this CFG with the given function and an accumulator.
|
Full Usage:
this.GetPredEdges
Parameters:
IVertex<SSABasicBlock>
Returns: Edge<SSABasicBlock, CFGEdgeKind>[]
|
Get the predecessor edges of the given vertex.
|
|
Get the predecessors of the given vertex.
|
Full Usage:
this.GetSuccEdges
Parameters:
IVertex<SSABasicBlock>
Returns: Edge<SSABasicBlock, CFGEdgeKind>[]
|
Get the successor edges of the given vertex.
|
|
Get the successors of the given vertex.
|
|
|
|
Get the implementation type of this CFG.
|
Full Usage:
this.IsEmpty
Returns: bool
|
Is this empty? A CFG is empty when there is no vertex.
|
|
Iterate over the edges of this CFG with the given function.
|
|
Iterate over the vertices of this CFG with the given function.
|
|
Remove an edge from this CFG.
|
|
Remove an edge between the given source and destination vertices.
|
|
Remove the given vertex from this CFG.
|
|
Reverse the direction of the edges in this CFG while making the given vertices as root vertices.
|
|
Get the root vertices of this CFG.
|
|
Set root vertices of this CFG.
|
|
Get exactly one root vertex of this CFG. If there are multiple root vertices, this will raise an exception.
|
Full Usage:
this.Size
Returns: int
|
Number of vertices.
|
Full Usage:
this.TryFindEdge
Parameters:
IVertex<SSABasicBlock>
dst : IVertex<SSABasicBlock>
Returns: Edge<SSABasicBlock, CFGEdgeKind> option
|
Find an edge between the given source and destination vertices. This function returns an Option type. If there is no such an edge, it returns None.
|
Full Usage:
this.TryFindVertex
Parameters:
IVertex<SSABasicBlock> -> bool
Returns: IVertex<SSABasicBlock> option
|
Find a vertex that satisfies the given predicate function. This function returns an Option type. If there is no such a vertex, it returns None.
|
|
Find a vertex by its VertexID. This function returns an Option type. If there is no such a vertex, it returns None.
|
|
Get an array of unreachable vertices in this CFG.
|
|
Get an array of all vertices in this CFG.
|
B2R2