Static Value-Flow Analysis
|
#include <VFGEdge.h>
Public Types | |
enum | VFGEdgeK { IntraDirectVF , IntraIndirectVF , CallDirVF , RetDirVF , CallIndVF , RetIndVF , TheadMHPIndirectVF } |
typedef VFGEdgeK | SVFGEdgeK |
typedef GenericNode< VFGNode, VFGEdge >::GEdgeSetTy | VFGEdgeSetTy |
typedef VFGEdgeSetTy | SVFGEdgeSetTy |
Public Types inherited from SVF::GenericEdge< NodeTy > | |
typedef NodeTy | NodeType |
Node type. | |
typedef u64_t | GEdgeFlag |
typedef s64_t | GEdgeKind |
typedef struct SVF::GenericEdge::equalGEdge | equalGEdge |
Add the hash function for std::set (we also can overload operator< to implement this) | |
Public Member Functions | |
VFGEdge (VFGNode *s, VFGNode *d, GEdgeFlag k) | |
Constructor. | |
~VFGEdge () | |
Destructor. | |
bool | isDirectVFGEdge () const |
Get methods of the components. | |
bool | isIndirectVFGEdge () const |
bool | isCallVFGEdge () const |
bool | isRetVFGEdge () const |
bool | isCallDirectVFGEdge () const |
bool | isRetDirectVFGEdge () const |
bool | isCallIndirectVFGEdge () const |
bool | isRetIndirectVFGEdge () const |
bool | isIntraVFGEdge () const |
bool | isThreadMHPIndirectVFGEdge () const |
virtual const std::string | toString () const |
Public Member Functions inherited from SVF::GenericEdge< NodeTy > | |
GenericEdge (NodeTy *s, NodeTy *d, GEdgeFlag k) | |
Constructor. | |
virtual | ~GenericEdge () |
Destructor. | |
NodeID | getSrcID () const |
get methods of the components | |
NodeID | getDstID () const |
GEdgeKind | getEdgeKind () const |
GEdgeKind | getEdgeKindWithoutMask () const |
NodeType * | getSrcNode () const |
NodeType * | getDstNode () const |
virtual bool | operator== (const GenericEdge< NodeType > *rhs) const |
Static Public Member Functions | |
static GEdgeFlag | makeEdgeFlagWithInvokeID (GEdgeKind k, CallSiteID cs) |
Compute the unique edgeFlag value from edge kind and CallSiteID. | |
Friends | |
OutStream & | operator<< (OutStream &o, const VFGEdge &edge) |
Overloading operator << for dumping ICFG node ID. | |
Additional Inherited Members | |
Static Protected Attributes inherited from SVF::GenericEdge< NodeTy > | |
static constexpr unsigned char | EdgeKindMaskBits = 8 |
We use the lower 8 bits to denote edge kind. | |
static constexpr u64_t | EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits) |
typedef GenericNode<VFGNode,VFGEdge>::GEdgeSetTy SVF::VFGEdge::VFGEdgeSetTy |
seven types of ICFG edge four types of direct value-flow edges three types of indirect value-flow edges
Enumerator | |
---|---|
IntraDirectVF | |
IntraIndirectVF | |
CallDirVF | |
RetDirVF | |
CallIndVF | |
RetIndVF | |
TheadMHPIndirectVF |
Definition at line 51 of file VFGEdge.h.
|
inline |
|
inline |
|
inline |
|
inline |
Get methods of the components.
Definition at line 76 of file VFGEdge.h.
|
inline |
Definition at line 80 of file VFGEdge.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and CallSiteID.
Definition at line 120 of file VFGEdge.h.
|
virtual |
Reimplemented in SVF::IndirectSVFGEdge, SVF::IntraIndSVFGEdge, SVF::CallIndSVFGEdge, SVF::RetIndSVFGEdge, SVF::ThreadMHPIndSVFGEdge, SVF::DirectSVFGEdge, SVF::IntraDirSVFGEdge, SVF::CallDirSVFGEdge, and SVF::RetDirSVFGEdge.
Definition at line 379 of file VFG.cpp.