ROSE  0.11.145.0
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ssa_private::CFG< CFGNodeT, CFGEdgeT > Class Template Reference

Description

template<class CFGNodeT, class CFGEdgeT>
class ssa_private::CFG< CFGNodeT, CFGEdgeT >

A class holding a Control Flow Graph.

Definition at line 24 of file boostGraphCFG.h.

#include <midend/programAnalysis/staticSingleAssignment/boostGraphCFG.h>

Inheritance diagram for ssa_private::CFG< CFGNodeT, CFGEdgeT >:
Inheritance graph
[legend]
Collaboration diagram for ssa_private::CFG< CFGNodeT, CFGEdgeT >:
Collaboration graph
[legend]

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, VertexVertexVertexMap
 

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.
 
SgFunctionDefinitiongetFunctionDefinition () const
 Get the function definition of this CFG.
 
const VertexgetEntry () const
 Get the entry node of the CFG.
 
const VertexgetExit () 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< EdgegetAllBackEdges ()
 Get all back edges in the CFG. A back edge is one whose target dominates its source.
 
std::vector< VertexgetAllLoopHeaders ()
 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

SgFunctionDefinitionfuncDef_
 The function definition of this CFG.
 
Vertex entry_
 The entry node.
 
Vertex exit_
 The exit node.
 
std::map< CFGNodeType, VertexnodesToVertices_
 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.
 

Member Function Documentation

template<class CFGNodeT , class CFGEdgeT >
const CFG< CFGNodeT, CFGEdgeT >::VertexVertexMap & ssa_private::CFG< CFGNodeT, CFGEdgeT >::getDominatorTree ( )

Build the dominator tree of this CFG.

Returns
A map from each node to its immediate dominator.

Definition at line 280 of file boostGraphCFG.h.

template<class CFGNodeT , class CFGEdgeT >
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.


The documentation for this class was generated from the following file: