ROSE
0.9.6a
|
#include <staticCFG.h>
Public Member Functions | |
CFG () | |
CFGNode | toCFGNode (SgGraphNode *node) |
Turn a graph node into a CFGNode which is defined in VirtualCFG namespace. More... | |
SgGraphNode * | toGraphNode (CFGNode &n) |
Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace. More... | |
CFG (SgNode *node, bool is_filtered=false) | |
The constructor building the CFG. More... | |
SgIncidenceDirectedGraph * | getGraph () const |
Get the pointer pointing to the graph used by static CFG. More... | |
virtual | ~CFG () |
void | setStart (SgNode *node) |
Set the start node for graph building. More... | |
SgGraphNode * | getEntry () const |
Get the entry node of the CFG. More... | |
SgGraphNode * | getExit () const |
Get the exit node of the CFG. More... | |
bool | isFilteredCFG () const |
void | setFiltered (bool flag) |
virtual void | buildCFG () |
Build CFG according to the 'is_filtered_' flag. More... | |
virtual void | buildFullCFG () |
Build CFG for debugging. More... | |
virtual void | buildFilteredCFG () |
Build filtered CFG which only contains interesting nodes. More... | |
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. More... | |
Static Public Member Functions | |
static int | getIndex (SgGraphNode *node) |
Get the index of a CFG node. More... | |
Protected Member 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. More... | |
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. More... | |
std::map< CFGNode, SgGraphNode * > | all_nodes_ |
A map from CFGNode in virtualCFG to node from staticCFG. More... | |
SgNode * | start_ |
The start node to begin CFG build. More... | |
SgGraphNode * | entry_ |
The entry node. More... | |
SgGraphNode * | exit_ |
The exit node. More... | |
bool | is_filtered_ |
A flag shows whether this CFG is filtered or not. More... | |
Definition at line 24 of file staticCFG.h.
|
inline |
Definition at line 46 of file staticCFG.h.
|
inline |
The constructor building the CFG.
The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.
Definition at line 57 of file staticCFG.h.
|
inlinevirtual |
Definition at line 65 of file staticCFG.h.
CFGNode StaticCFG::CFG::toCFGNode | ( | SgGraphNode * | node) |
Turn a graph node into a CFGNode which is defined in VirtualCFG namespace.
Referenced by visitorTraversal::analyzePath(), evalFunction(), getGraphNodeType(), and instantiateGraph().
|
inline |
Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace.
Returns NULL if CFGNode is not present
Definition at line 53 of file staticCFG.h.
Referenced by instantiateGraph().
|
inline |
Get the pointer pointing to the graph used by static CFG.
Definition at line 62 of file staticCFG.h.
Referenced by yicesCheck().
|
inline |
Set the start node for graph building.
The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.
Definition at line 70 of file staticCFG.h.
|
inline |
Get the entry node of the CFG.
Definition at line 73 of file staticCFG.h.
Referenced by instantiateGraph().
|
inline |
Get the exit node of the CFG.
Definition at line 77 of file staticCFG.h.
|
inline |
Definition at line 80 of file staticCFG.h.
|
inline |
Definition at line 81 of file staticCFG.h.
|
inlinevirtual |
Build CFG according to the 'is_filtered_' flag.
Reimplemented in StaticCFG::InterproceduralCFG.
Definition at line 85 of file staticCFG.h.
|
virtual |
Build CFG for debugging.
Reimplemented in StaticCFG::InterproceduralCFG.
|
virtual |
Build filtered CFG which only contains interesting nodes.
Reimplemented in StaticCFG::InterproceduralCFG, StaticCFG::CustomFilteredCFG< _Filter >, and StaticCFG::CustomFilteredCFG< AliasCfgFilter >.
std::vector<SgDirectedGraphEdge*> StaticCFG::CFG::getOutEdges | ( | SgGraphNode * | node) |
std::vector<SgDirectedGraphEdge*> StaticCFG::CFG::getInEdges | ( | SgGraphNode * | node) |
SgGraphNode* StaticCFG::CFG::cfgForBeginning | ( | SgNode * | node) |
SgGraphNode* StaticCFG::CFG::cfgForEnd | ( | SgNode * | node) |
|
static |
Get the index of a CFG node.
void StaticCFG::CFG::cfgToDot | ( | SgNode * | node, |
const std::string & | file_name | ||
) |
Output the graph to a DOT file.
|
protected |
|
protected |
Delete all nodes and edges in the graph and release memories.
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
Reimplemented in StaticCFG::CustomFilteredCFG< _Filter >, and StaticCFG::CustomFilteredCFG< AliasCfgFilter >.
|
protected |
The graph data structure holding the CFG.
Definition at line 28 of file staticCFG.h.
|
protected |
A map from CFGNode in virtualCFG to node from staticCFG.
Definition at line 31 of file staticCFG.h.
|
protected |
The start node to begin CFG build.
Definition at line 34 of file staticCFG.h.
|
protected |
The entry node.
Definition at line 37 of file staticCFG.h.
|
protected |
The exit node.
Definition at line 40 of file staticCFG.h.
|
protected |
A flag shows whether this CFG is filtered or not.
Definition at line 43 of file staticCFG.h.