Class CFG#

Inheritance Relationships#

Derived Types#

Class Documentation#

class CFG#

Subclassed by StaticCFG::CustomFilteredCFG< AliasCfgFilter >, StaticCFG::CustomFilteredCFG< _Filter >, StaticCFG::InterproceduralCFG

Public Functions

inline CFG()#
CFGNode toCFGNode(SgGraphNode *node)#

Turn a graph node into a CFGNode which is defined in VirtualCFG namespace.

inline SgGraphNode *toGraphNode(CFGNode &n)#

Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace. Returns NULL if CFGNode is not present.

CFG(SgNode *node, bool is_filtered = false)#

The constructor building the CFG.

The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.

inline SgIncidenceDirectedGraph *getGraph() const#

Get the pointer pointing to the graph used by static CFG.

inline virtual ~CFG()#
inline void setStart(SgNode *node)#

Set the start node for graph building.

The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.

inline SgGraphNode *getEntry() const#

Get the entry node of the CFG.

inline SgGraphNode *getExit() const#

Get the exit node of the CFG.

inline bool isFilteredCFG() const#
inline void setFiltered(bool flag)#
inline virtual void buildCFG()#

Build CFG according to the ‘is_filtered_’ flag.

virtual void buildFullCFG()#

Build CFG for debugging.

virtual void buildFilteredCFG()#

Build filtered CFG which only contains interesting nodes.

std::vector<SgDirectedGraphEdge*> getOutEdges(SgGraphNode *node)#
std::vector<SgDirectedGraphEdge*> getInEdges(SgGraphNode *node)#
SgGraphNode *cfgForBeginning(SgNode *node)#
SgGraphNode *cfgForEnd(SgNode *node)#
void cfgToDot(SgNode *node, const std::string &file_name)#

Output the graph to a DOT file.

Public Static Functions

static int getIndex(SgGraphNode *node)#

Get the index of a CFG node.

Protected Functions

template<class NodeT, class EdgeT>
void buildCFG(NodeT n, std::map<NodeT, SgGraphNode*> &all_nodes, std::set<NodeT> &explored)#
void clearNodesAndEdges()#

Delete all nodes and edges in the graph and release memories.

virtual void processNodes(std::ostream &o, SgGraphNode *n, std::set<SgGraphNode*> &explored)#
virtual void printNodePlusEdges(std::ostream &o, SgGraphNode *node)#
virtual void printNode(std::ostream &o, SgGraphNode *node)#
virtual void printEdge(std::ostream &o, SgDirectedGraphEdge *edge, bool isInEdge)#

Protected Attributes

SgIncidenceDirectedGraph *graph_#

The graph data structure holding the CFG.

std::map<CFGNode, SgGraphNode*> all_nodes_#

A map from CFGNode in virtualCFG to node from staticCFG.

SgNode *start_#

The start node to begin CFG build.

SgGraphNode *entry_#

The entry node.

SgGraphNode *exit_#

The exit node.

bool is_filtered_#

A flag shows whether this CFG is filtered or not.