SVF
|
#include <PAGEdge.h>
Public Types | |
enum | PEDGEK { Addr, Copy, Store, Load, Call, Ret, NormalGep, VariantGep, ThreadFork, ThreadJoin, Cmp, BinaryOp, UnaryOp } |
typedef GenericNode< PAGNode, PAGEdge >::GEdgeSetTy | PAGEdgeSetTy |
typedef Map< EdgeID, PAGEdgeSetTy > | PAGEdgeToSetMapTy |
typedef PAGEdgeToSetMapTy | PAGKindToEdgeSetMapTy |
![]() | |
typedef NodeTy | NodeType |
Node type. More... | |
typedef u64_t | GEdgeFlag |
typedef s32_t | GEdgeKind |
typedef struct SVF::GenericEdge::equalGEdge | equalGEdge |
Add the hash function for std::set (we also can overload operator< to implement this) More... | |
Public Member Functions | |
PAGEdge (PAGNode *s, PAGNode *d, GEdgeFlag k) | |
Constructor. More... | |
~PAGEdge () | |
Destructor. More... | |
EdgeID | getEdgeID () const |
Return Edge ID. More... | |
bool | isPTAEdge () const |
Whether src and dst nodes are both of pointer type. More... | |
virtual const std::string | toString () const |
const Instruction * | getInst () const |
Get/set methods for llvm instruction. More... | |
void | setValue (const Value *val) |
const Value * | getValue () const |
void | setBB (const BasicBlock *bb) |
const BasicBlock * | getBB () const |
void | setICFGNode (ICFGNode *node) |
ICFGNode * | getICFGNode () const |
![]() | |
GenericEdge (NodeTy *s, NodeTy *d, GEdgeFlag k) | |
Constructor. More... | |
virtual | ~GenericEdge () |
Destructor. More... | |
NodeID | getSrcID () const |
get methods of the components More... | |
NodeID | getDstID () const |
GEdgeKind | getEdgeKind () const |
NodeType * | getSrcNode () const |
NodeType * | getDstNode () const |
bool | operator== (const GenericEdge< NodeType > *rhs) const |
Static Public Member Functions | |
static GEdgeFlag | makeEdgeFlagWithCallInst (GEdgeKind k, const ICFGNode *cs) |
Compute the unique edgeFlag value from edge kind and call site Instruction. More... | |
static GEdgeFlag | makeEdgeFlagWithStoreInst (GEdgeKind k, const ICFGNode *store) |
static bool | classof (const PAGEdge *) |
ClassOf. More... | |
static bool | classof (const GenericPAGEdgeTy *edge) |
Static Public Attributes | |
static Size_t | totalEdgeNum |
Total edge number. More... | |
Private Types | |
typedef Map< const ICFGNode *, u32_t > | Inst2LabelMap |
Private Attributes | |
const Value * | value |
LLVM value. More... | |
const BasicBlock * | basicBlock |
LLVM BasicBlock. More... | |
ICFGNode * | icfgNode |
ICFGNode. More... | |
EdgeID | edgeId |
Edge ID. More... | |
Static Private Attributes | |
static Inst2LabelMap | inst2LabelMap |
Call site Instruction to label map. More... | |
static u64_t | callEdgeLabelCounter = 0 |
Call site Instruction counter. More... | |
static u64_t | storeEdgeLabelCounter = 0 |
Store Instruction counter. More... | |
Friends | |
raw_ostream & | operator<< (raw_ostream &o, const PAGEdge &edge) |
Overloading operator << for dumping PAGNode value. More... | |
Additional Inherited Members | |
![]() | |
static constexpr unsigned char | EdgeKindMaskBits = 8 |
We use the lower 8 bits to denote edge kind. More... | |
static constexpr u64_t | EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits) |
|
private |
typedef GenericNode<PAGNode,PAGEdge>::GEdgeSetTy SVF::PAGEdge::PAGEdgeSetTy |
typedef Map<EdgeID, PAGEdgeSetTy> SVF::PAGEdge::PAGEdgeToSetMapTy |
enum SVF::PAGEdge::PEDGEK |
Thirteen kinds of PAG edges Gep represents offset edge for field sensitivity ThreadFork/ThreadJoin is to model parameter passings between thread spawners and spawnees.
Enumerator | |
---|---|
Addr | |
Copy | |
Store | |
Load | |
Call | |
Ret | |
NormalGep | |
VariantGep | |
ThreadFork | |
ThreadJoin | |
Cmp | |
BinaryOp | |
UnaryOp |
Definition at line 54 of file PAGEdge.h.
|
inlinestatic |
|
inlinestatic |
Definition at line 80 of file PAGEdge.h.
|
inline |
|
inline |
Return Edge ID.
|
inline |
Get/set methods for llvm instruction.
Definition at line 108 of file PAGEdge.h.
bool PAGEdge::isPTAEdge | ( | ) | const |
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and call site Instruction.
Definition at line 139 of file PAGEdge.h.
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and store Instruction. Two store instructions may share the same StorePAGEdge
Definition at line 149 of file PAGEdge.h.
|
inline |
|
virtual |
Reimplemented in SVF::TDJoinPE, SVF::TDForkPE, SVF::RetPE, SVF::CallPE, SVF::VariantGepPE, SVF::NormalGepPE, SVF::GepPE, SVF::LoadPE, SVF::StorePE, SVF::UnaryOPPE, SVF::BinaryOPPE, SVF::CmpPE, SVF::CopyPE, and SVF::AddrPE.
Definition at line 200 of file PAG.cpp.
|
friend |
|
private |
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
static |