Static Value-Flow Analysis
|
#include <WTO.h>
Classes | |
class | WTOCycleDepthBuilder |
Visitor to build the cycle depths of each node. More... | |
Public Types | |
typedef GraphT::NodeType | NodeT |
typedef GraphT::EdgeType | EdgeT |
typedef WTOCycleDepth< GraphT > | GraphTWTOCycleDepth |
typedef WTOComponent< GraphT > | WTOComponentT |
typedef WTONode< GraphT > | WTONodeT |
typedef WTOCycle< GraphT > | WTOCycleT |
typedef Set< const NodeT * > | NodeRefList |
typedef WTOComponentRefList::const_iterator | Iterator |
Iterator over the components. | |
Public Member Functions | |
WTO (GraphT *graph, const NodeT *entry) | |
Compute the weak topological order of the given graph. | |
WTO (const WTO &other)=default | |
No copy constructor. | |
WTO (WTO &&other)=default | |
Move constructor. | |
WTO & | operator= (const WTO &other)=default |
No copy assignment operator. | |
WTO & | operator= (WTO &&other)=default |
Move assignment operator. | |
~WTO () | |
Destructor. | |
const WTOComponentRefList & | getWTOComponents () const |
Get all wto components in WTO. | |
Iterator | begin () const |
Begin iterator over the components. | |
Iterator | end () const |
End iterator over the components. | |
bool | isHead (const NodeT *node) const |
NodeRefToWTOCycleMap::const_iterator | headBegin () const |
NodeRefToWTOCycleMap::const_iterator | headEnd () const |
End iterator over the components. | |
const GraphTWTOCycleDepth & | cycleDepth (const NodeT *n) const |
Return the cycleDepth of the given node. | |
bool | in_cycleDepth_table (const NodeT *n) const |
Return the cycleDepth of the given node. | |
void | accept (WTOComponentVisitor< GraphT > &v) |
Accept the given visitor. | |
std::string | toString () const |
Dump the order, for debugging purpose. | |
void | init () |
Protected Types | |
typedef const WTOComponentT * | WTOComponentPtr |
typedef std::list< WTOComponentPtr > | WTOComponentRefList |
typedef Set< WTOComponentPtr > | WTOComponentRefSet |
typedef Map< const NodeT *, const WTOCycleT * > | NodeRefToWTOCycleMap |
typedef Map< const NodeT *, NodeRefList > | NodeRefTONodeRefListMap |
typedef u32_t | CycleDepthNumber |
typedef Map< const NodeT *, CycleDepthNumber > | NodeRefToCycleDepthNumber |
typedef std::vector< const NodeT * > | Stack |
typedef std::shared_ptr< GraphTWTOCycleDepth > | WTOCycleDepthPtr |
typedef Map< const NodeT *, WTOCycleDepthPtr > | NodeRefToWTOCycleDepthPtr |
Protected Member Functions | |
virtual void | forEachSuccessor (const NodeT *node, std::function< void(const NodeT *)> func) const |
CycleDepthNumber | getCDN (const NodeT *n) const |
Return the depth-first number of the given node. | |
void | setCDN (const NodeT *n, const CycleDepthNumber &dfn) |
Set the depth-first number of the given node. | |
const NodeT * | pop () |
Pop a node from the stack. | |
void | push (const NodeT *n) |
Push a node on the stack. | |
const WTONodeT * | newNode (const NodeT *node) |
const WTOCycleT * | newCycle (const WTONodeT *node, const WTOComponentRefList &partition) |
virtual const WTOCycleT * | component (const NodeT *node) |
Create the cycle component for the given node. | |
virtual CycleDepthNumber | visit (const NodeT *node, WTOComponentRefList &partition) |
void | buildNodeToDepth () |
Build the node to WTO cycle depth table. | |
Friends | |
std::ostream & | operator<< (std::ostream &o, const WTO< GraphT > &wto) |
Overloading operator << for dumping ICFG node ID. | |
Weak topological order for GraphT
|
protected |
|
protected |
|
protected |
|
protected |
No copy constructor.
Move constructor.
|
inline |
Begin iterator over the components.
|
inlineprotectedvirtual |
Create the cycle component for the given node.
Definition at line 788 of file WTO.h.
End iterator over the components.
|
inlineprotected |
|
inline |
Get all wto components in WTO.
End iterator over the components.
Return the cycleDepth of the given node.
Definition at line 674 of file WTO.h.
No copy assignment operator.
Move assignment operator.
Dump the order, for debugging purpose.
|
inlineprotectedvirtual |
Visit the given node
Algorithm to build a weak topological order of a graph
Definition at line 807 of file WTO.h.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |