Static Value-Flow Analysis
|
#include <SVFStatements.h>
Public Types | |
enum | PEDGEK { Addr , Copy , Store , Load , Call , Ret , Gep , Phi , Select , Cmp , BinaryOp , UnaryOp , Branch , ThreadFork , ThreadJoin } |
typedef GenericNode< SVFVar, SVFStmt >::GEdgeSetTy | SVFStmtSetTy |
typedef Map< EdgeID, SVFStmtSetTy > | PAGEdgeToSetMapTy |
typedef PAGEdgeToSetMapTy | KindToSVFStmtMapTy |
typedef SVFStmtSetTy | PAGEdgeSetTy |
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) | |
Static Public Member Functions | |
static bool | classof (const SVFStmt *) |
ClassOf. | |
static bool | classof (const GenericPAGEdgeTy *edge) |
static GEdgeFlag | makeEdgeFlagWithAddionalOpnd (GEdgeKind k, const SVFVar *var) |
static GEdgeFlag | makeEdgeFlagWithCallInst (GEdgeKind k, const ICFGNode *cs) |
static GEdgeFlag | makeEdgeFlagWithStoreInst (GEdgeKind k, const ICFGNode *store) |
Static Public Attributes | |
static u32_t | totalEdgeNum |
Total edge number. | |
Protected Member Functions | |
SVFStmt (GEdgeFlag k) | |
Private constructor for reading SVFIR from file without side-effect. | |
Private Types | |
typedef Map< const ICFGNode *, u32_t > | Inst2LabelMap |
typedef Map< const SVFVar *, u32_t > | Var2LabelMap |
Private Attributes | |
const SVFValue * | value |
LLVM value. | |
const SVFBasicBlock * | basicBlock |
LLVM BasicBlock. | |
ICFGNode * | icfgNode |
ICFGNode. | |
EdgeID | edgeId |
Edge ID. | |
Static Private Attributes | |
static Inst2LabelMap | inst2LabelMap |
Call site Instruction to label map. | |
static Var2LabelMap | var2LabelMap |
Second operand of MultiOpndStmt to label map. | |
static u64_t | callEdgeLabelCounter = 0 |
Call site Instruction counter. | |
static u64_t | storeEdgeLabelCounter = 0 |
Store Instruction counter. | |
static u64_t | multiOpndLabelCounter = 0 |
MultiOpndStmt counter. | |
Friends | |
class | SVFIRWriter |
class | SVFIRReader |
OutStream & | operator<< (OutStream &o, const SVFStmt &edge) |
Overloading operator << for dumping SVFVar value. | |
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) |
Definition at line 51 of file SVFStatements.h.
Definition at line 223 of file SVFStatements.h.
Definition at line 219 of file SVFStatements.h.
Definition at line 220 of file SVFStatements.h.
Definition at line 218 of file SVFStatements.h.
typedef GenericNode<SVFVar,SVFStmt>::GEdgeSetTy SVF::SVFStmt::SVFStmtSetTy |
Definition at line 217 of file SVFStatements.h.
Definition at line 224 of file SVFStatements.h.
Types of SVFIR statements Gep represents (base + offset) for field sensitivity ThreadFork/ThreadJoin is to model parameter passings between thread spawners and spawnees.
Enumerator | |
---|---|
Addr | |
Copy | |
Store | |
Load | |
Call | |
Ret | |
Gep | |
Phi | |
Select | |
Cmp | |
BinaryOp | |
UnaryOp | |
Branch | |
ThreadFork | |
ThreadJoin |
Definition at line 61 of file SVFStatements.h.
|
inlineprotected |
Private constructor for reading SVFIR from file without side-effect.
Definition at line 88 of file SVFStatements.h.
Constructor.
SVFStmt constructor
Definition at line 48 of file SVFStatements.cpp.
|
inline |
|
inlinestatic |
Definition at line 107 of file SVFStatements.h.
|
inline |
Definition at line 155 of file SVFStatements.h.
|
inline |
|
inline |
Definition at line 163 of file SVFStatements.h.
|
inline |
Get/set methods for llvm instruction.
Definition at line 137 of file SVFStatements.h.
Definition at line 147 of file SVFStatements.h.
bool SVFStmt::isPTAEdge | ( | ) | const |
Whether src and dst nodes are both of pointer type.
Whether src and dst nodes are both pointer type
Definition at line 61 of file SVFStatements.cpp.
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and second variable operand for MultiOpndStmt.
Definition at line 171 of file SVFStatements.h.
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and call site Instruction.
Definition at line 183 of file SVFStatements.h.
|
inlinestatic |
Compute the unique edgeFlag value from edge kind and store Instruction. Two store instructions may share the same StorePAGEdge
Definition at line 195 of file SVFStatements.h.
|
inline |
Definition at line 151 of file SVFStatements.h.
|
inline |
Definition at line 159 of file SVFStatements.h.
Definition at line 143 of file SVFStatements.h.
|
virtual |
Reimplemented in SVF::GepStmt, SVF::TDForkPE, SVF::TDJoinPE, SVF::AssignStmt, SVF::AddrStmt, SVF::CopyStmt, SVF::StoreStmt, SVF::LoadStmt, SVF::CallPE, SVF::RetPE, SVF::PhiStmt, SVF::SelectStmt, SVF::CmpStmt, SVF::BinaryOPStmt, SVF::UnaryOPStmt, and SVF::BranchStmt.
Definition at line 66 of file SVFStatements.cpp.
|
friend |
Definition at line 54 of file SVFStatements.h.
|
friend |
Definition at line 53 of file SVFStatements.h.
|
private |
LLVM BasicBlock.
Definition at line 82 of file SVFStatements.h.
|
staticprivate |
Call site Instruction counter.
Definition at line 227 of file SVFStatements.h.
|
private |
Edge ID.
Definition at line 84 of file SVFStatements.h.
|
private |
Definition at line 83 of file SVFStatements.h.
|
staticprivate |
Call site Instruction to label map.
Definition at line 225 of file SVFStatements.h.
|
staticprivate |
MultiOpndStmt counter.
Definition at line 229 of file SVFStatements.h.
|
staticprivate |
Store Instruction counter.
Definition at line 228 of file SVFStatements.h.
|
static |
Total edge number.
Definition at line 94 of file SVFStatements.h.
LLVM value.
Definition at line 81 of file SVFStatements.h.
|
staticprivate |
Second operand of MultiOpndStmt to label map.
Definition at line 226 of file SVFStatements.h.