Static Value-Flow Analysis
|
#include <SVFStatements.h>
Public Types | |
typedef std::vector< std::pair< const ICFGNode *, s32_t > > | SuccAndCondPairVec |
![]() | |
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 |
![]() | |
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 BranchStmt *) |
Methods for support type inquiry through isa, cast, and dyn_cast: | |
static bool | classof (const SVFStmt *edge) |
static bool | classof (const GenericPAGEdgeTy *edge) |
![]() | |
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) |
Private Member Functions | |
BranchStmt (const BranchStmt &) | |
place holder | |
void | operator= (const BranchStmt &) |
place holder | |
SVFVar * | getSrcNode () |
place holder, not allowed | |
SVFVar * | getDstNode () |
place holder, not allowed | |
NodeID | getSrcID () |
place holder, use getOpVarID(pos) instead | |
NodeID | getDstID () |
place holder, use getResID() instead | |
Private Attributes | |
SuccAndCondPairVec | successors |
const SVFVar * | cond |
const SVFVar * | brInst |
Additional Inherited Members | |
![]() | |
static u32_t | totalEdgeNum |
Total edge number. | |
![]() | |
SVFStmt (GEdgeFlag k) | |
Private constructor for reading SVFIR from file without side-effect. | |
![]() | |
static constexpr unsigned char | EdgeKindMaskBits = 8 |
We use the lower 8 bits to denote edge kind. | |
static constexpr u64_t | EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits) |
Branch statements including if/else and switch
Definition at line 1097 of file SVFStatements.h.
typedef std::vector<std::pair<const ICFGNode*, s32_t> > SVF::BranchStmt::SuccAndCondPairVec |
Definition at line 1101 of file SVFStatements.h.
|
private |
place holder
|
inline |
constructor
Definition at line 1133 of file SVFStatements.h.
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 1118 of file SVFStatements.h.
|
inlinestatic |
Definition at line 1126 of file SVFStatements.h.
Definition at line 1122 of file SVFStatements.h.
Definition at line 1145 of file SVFStatements.h.
Return the condition.
Definition at line 322 of file SVFStatements.cpp.
|
private |
place holder, use getResID() instead
|
private |
place holder, not allowed
|
inline |
For example if(c) {stmt1} else {stmt2} successor(0): stmt1, 1 successor(1): stmt2, 0 For example switch(c) case 0: {stmt1; break;} case 1: {stmt2; break;} default {stmt3: break} successor(0): stmt1, 0 successor(1): stmt2, 1 successor(3): stmt3, -1 Successors of this branch statement
Definition at line 1160 of file SVFStatements.h.
|
private |
place holder, use getOpVarID(pos) instead
|
private |
place holder, not allowed
Definition at line 1168 of file SVFStatements.h.
Definition at line 1172 of file SVFStatements.h.
|
inline |
Definition at line 1164 of file SVFStatements.h.
bool BranchStmt::isConditional | ( | ) | const |
The branch is conditional if cond is not a null value.
Definition at line 317 of file SVFStatements.cpp.
bool BranchStmt::isUnconditional | ( | ) | const |
The branch is unconditional if cond is a null value.
Definition at line 312 of file SVFStatements.cpp.
|
private |
place holder
|
overridevirtual |
Reimplemented from SVF::SVFStmt.
Definition at line 171 of file SVFStatements.cpp.
Definition at line 1113 of file SVFStatements.h.
Definition at line 1112 of file SVFStatements.h.
|
private |
Definition at line 1111 of file SVFStatements.h.