Class DependenceGraph

Contents

Class DependenceGraph#

Inheritance Relationships#

Base Types#

Derived Types#

Class Documentation#

class DependenceGraph : public SimpleDirectedGraph, public SimpleDirectedGraph#

Subclassed by ControlDependenceGraph, ControlDependenceGraph, DataDependenceGraph, DataDependenceGraph, MergedDependenceGraph, MergedDependenceGraph

Public Types

enum EdgeType#

Values:

enumerator CONTROL#
enumerator CALL#
enumerator CALL_RETURN#
enumerator DATA#
enumerator SUMMARY#
enumerator PARAMETER_IN#
enumerator PARAMETER_OUT#
enumerator SYNTACTIC#
enumerator DATA_HELPER#
enumerator CONTROL_HELPER#
enumerator GLOBALVAR_HELPER#
enumerator COMPLETENESS_HELPER#
enumerator BELONGS_TO#
enumerator DO_NOT_FOLLOW#
enumerator CONTROL
enumerator CALL
enumerator CALL_RETURN
enumerator DATA
enumerator SUMMARY
enumerator PARAMETER_IN
enumerator PARAMETER_OUT
enumerator SYNTACTIC
enumerator DATA_HELPER
enumerator CONTROL_HELPER
enumerator GLOBALVAR_HELPER
enumerator COMPLETENESS_HELPER
enumerator BELONGS_TO
enumerator DO_NOT_FOLLOW
enum EdgeType

Values:

enumerator CONTROL
enumerator CALL
enumerator CALL_RETURN
enumerator DATA
enumerator SUMMARY
enumerator PARAMETER_IN
enumerator PARAMETER_OUT
enumerator SYNTACTIC
enumerator DATA_HELPER
enumerator CONTROL_HELPER
enumerator GLOBALVAR_HELPER
enumerator COMPLETENESS_HELPER
enumerator BELONGS_TO
enumerator DO_NOT_FOLLOW
enumerator CONTROL
enumerator CALL
enumerator CALL_RETURN
enumerator DATA
enumerator SUMMARY
enumerator PARAMETER_IN
enumerator PARAMETER_OUT
enumerator SYNTACTIC
enumerator DATA_HELPER
enumerator CONTROL_HELPER
enumerator GLOBALVAR_HELPER
enumerator COMPLETENESS_HELPER
enumerator BELONGS_TO
enumerator DO_NOT_FOLLOW

Public Functions

inline DependenceGraph()#
inline virtual ~DependenceGraph()#
inline void debugCoutNodeList()#
const char *getEdgeName(EdgeType type)#
DependenceNode *createNode(DependenceNode::NodeType type, SgNode *identifyingNode)#
DependenceNode *createNode(SgNode *node)#
void deleteNode(DependenceNode *node)#
DependenceNode *getNode(SgNode *node)#
DependenceNode *getNode(DependenceNode::NodeType type, SgNode *identifyingNode)#
DependenceNode *getExistingNode(SgNode *node)#
DependenceNode *getExistingNode(DependenceNode::NodeType type, SgNode *identifyingNode)#
inline InterproceduralInfo *getInterprocedural()#
virtual void establishEdge(DependenceNode *from, DependenceNode *to, EdgeType e = CONTROL)#
virtual void removeEdge(DependenceNode *from, DependenceNode *to, EdgeType e = CONTROL)#
bool edgeExists(DependenceNode *from, DependenceNode *to, EdgeType e)#
bool hasOutgingEdge(DependenceNode *src, EdgeType compare)#
std::set<EdgeType> edgeType(DependenceNode *from, DependenceNode *to)#
virtual void writeDot(char *filename)#
inline DependenceGraph()
inline virtual ~DependenceGraph()
inline void debugCoutNodeList()
const char *getEdgeName(EdgeType type)
DependenceNode *createNode(DependenceNode::NodeType type, SgNode *identifyingNode)
DependenceNode *createNode(SgNode *node)
void deleteNode(DependenceNode *node)
DependenceNode *getNode(SgNode *node)
DependenceNode *getNode(DependenceNode::NodeType type, SgNode *identifyingNode)
DependenceNode *getExistingNode(SgNode *node)
DependenceNode *getExistingNode(DependenceNode::NodeType type, SgNode *identifyingNode)
inline InterproceduralInfo *getInterprocedural()
virtual void establishEdge(DependenceNode *from, DependenceNode *to, EdgeType e = CONTROL)
virtual void removeEdge(DependenceNode *from, DependenceNode *to, EdgeType e = CONTROL)
bool edgeExists(DependenceNode *from, DependenceNode *to, EdgeType e)
bool hasOutgingEdge(DependenceNode *src, EdgeType compare)
std::set<EdgeType> edgeType(DependenceNode *from, DependenceNode *to)
virtual void writeDot(char *filename)
virtual void writeDotAndHighlightAllowedEdgesOnly(char *filename, std::set<DependenceGraph::EdgeType>)#

Public Static Attributes

static const char *edgeNameArray[8]#

Protected Types

typedef std::pair<DependenceNode*, DependenceNode*> Edge#

*! InterproceduralInfo *_interprocedural;

typedef std::pair<DependenceNode*, DependenceNode*> Edge

*! InterproceduralInfo *_interprocedural;

Protected Functions

inline bool isLibraryFunction(SgFunctionDeclaration *sgFD) const#
inline bool isLibraryFunction(SgFunctionDeclaration *sgFD) const

Protected Attributes

bool debugme#
std::map<SgNode*, DependenceNode*> sgNodeToDepNodeMap#

*! std::map < DependenceNode *, DependenceNode * >_depnode_map;

*! std::map < SgNode *, DependenceNode * >_sgnode_map;

std::map<DependenceNode::NodeType, std::map<SgNode*, DependenceNode*>> nodeTypeToDepNodeMapMap#
std::map<EdgeType, std::set<Edge>> edgeTypeMap#
std::map<Edge, std::set<EdgeType>> edgeMap#