Template Class TemplatedDominatorTree#

Inheritance Relationships#

Base Type#

Class Documentation#

template<typename CFGFilterFunction>
class TemplatedDominatorTree : public DominatorTreesAndDominanceFrontiers::DominatorForwardBackwardWrapperClass<CFGFilterFunction>#

TemplatedDominatorTree constructs a dominator/postdominator tree for a cfg. For the template parameter any cfg following Jeremias interface may be used.

Public Functions

void writeDot(char *filename)#

writes the DT in DOT-notation to the file given in filename

TemplatedDominatorTree(SgNode *head, Direction d = DominatorForwardBackwardWrapperClass<CFGFilterFunction>::PRE_DOMINATOR)#

constructor for the DT. Head is the start point for the DT construction. DT works for SgFunctionDefintion nodes, unexpected behaviour for non-SgFunctionDefinition!!!

initialize cfg0root correctly

inline int getSize()#
inline std::set<int> getDirectDominatedSet(int nodeID)#

returns the set of nodes directly dominated by nodeID

inline int getImDomID(int i)#
inline int getImDomID(VirtualCFG::FilteredCFGNode<CFGFilterFunction> node)#

get the ImDomID for given SgNode, returns negative for non-cfg-node

inline bool dominates(int a, int b)#

calculates if a dominates b, i.e. a is on the path from b to the root

inline bool dominates(VirtualCFG::FilteredCFGNode<CFGFilterFunction> a, VirtualCFG::FilteredCFGNode<CFGFilterFunction> b)#

returns true if node a dominates node b, see dominates(int a,int b)

inline VirtualCFG::FilteredCFGNode<CFGFilterFunction> getCFGNodeFromID(unsigned int id)#
inline int getID(VirtualCFG::FilteredCFGNode<CFGFilterFunction> node)#