ROSE  0.11.96.11
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 <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, 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.
 

Member Function Documentation

◆ getDominatorTree()

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.

◆ getVertexForNode()

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: