ROSE
0.11.96.11
|
A class holding a Control Flow Graph.
Definition at line 24 of file boostGraphCFG.h.
#include <boostGraphCFG.h>
Classes | |
struct | EdgeCopier |
This class is used to copy edges when calling copy_graph(). More... | |
struct | VertexCopier |
This class is used to copy vertices when calling copy_graph(). More... | |
Public Types | |
typedef boost::graph_traits< CFG< CFGNodeT, CFGEdgeT > > | GraphTraits |
typedef CFGNodeT | CFGNodeType |
typedef CFGEdgeT | CFGEdgeType |
typedef boost::shared_ptr< CFGNodeType > | CFGNodePtr |
typedef boost::shared_ptr< CFGEdgeType > | CFGEdgePtr |
typedef GraphTraits::vertex_descriptor | Vertex |
typedef GraphTraits::edge_descriptor | Edge |
typedef std::map< Vertex, Vertex > | VertexVertexMap |
Public Member Functions | |
CFG () | |
The default constructor. | |
CFG (SgFunctionDefinition *funcDef) | |
The constructor building the CFG. | |
void | build (SgFunctionDefinition *funcDef) |
Build the actual CFG for the given function. | |
SgFunctionDefinition * | getFunctionDefinition () const |
Get the function definition of this CFG. | |
const Vertex & | getEntry () const |
Get the entry node of the CFG. | |
const Vertex & | getExit () const |
Get the exit node of the CFG. | |
const VertexVertexMap & | getDominatorTree () |
Build the dominator tree of this CFG. More... | |
const VertexVertexMap & | getPostdominatorTree () |
Build the postdominator tree of this CFG. | |
CFG< CFGNodeT, CFGEdgeT > | makeReverseCopy () const |
Build a reverse CFG. | |
std::vector< CFGNodePtr > | getAllNodes () const |
Get all CFG nodes in this graph. | |
std::vector< CFGEdgePtr > | getAllEdges () const |
Get all CFG edges in this graph. | |
Vertex | getVertexForNode (const CFGNodeType &node) const |
Given a CFG node, returns the corresponding vertex in the graph. More... | |
std::vector< Edge > | getAllBackEdges () |
Get all back edges in the CFG. A back edge is one whose target dominates its source. | |
std::vector< Vertex > | getAllLoopHeaders () |
Get all loop headers in this CFG. A natural loop only has one header. | |
Protected Member Functions | |
void | buildCFG (const CFGNodeType &node, std::map< CFGNodeType, Vertex > &nodesAdded, std::set< CFGNodeType > &nodesProcessed) |
A internal funtion which builds the actual CFG (boost::graph). | |
void | setEntryAndExit () |
Find the entry and exit of this CFG and set the corresponding members. | |
Protected Attributes | |
SgFunctionDefinition * | funcDef_ |
The function definition of this CFG. | |
Vertex | entry_ |
The entry node. | |
Vertex | exit_ |
The exit node. | |
std::map< CFGNodeType, Vertex > | nodesToVertices_ |
A map from a CFG node to the corresponding vertex. | |
VertexVertexMap | dominatorTree_ |
The dominator tree of this CFG. | |
VertexVertexMap | postdominatorTree_ |
The postdominator tree of this CFG. | |
const CFG< CFGNodeT, CFGEdgeT >::VertexVertexMap & ssa_private::CFG< CFGNodeT, CFGEdgeT >::getDominatorTree |
Build the dominator tree of this CFG.
Definition at line 280 of file boostGraphCFG.h.
CFG< CFGNodeT, CFGEdgeT >::Vertex ssa_private::CFG< CFGNodeT, CFGEdgeT >::getVertexForNode | ( | const CFGNodeType & | node | ) | const |
Given a CFG node, returns the corresponding vertex in the graph.
Returns Vertex::null_vertex() if the given node is not in the graph
Definition at line 341 of file boostGraphCFG.h.