|
Static Value-Flow Analysis
|
#include <SVFStatements.h>
Public Types | |
| typedef std::vector< std::pair< const ICFGNode *, s32_t > > | SuccAndCondPairVec |
Public Types inherited from SVF::SVFStmt | |
| 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 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 Public Member Functions inherited from SVF::SVFStmt | |
| 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 const Inst2LabelMap * | getInst2LabelMap () |
| static const Var2LabelMap * | getVar2LabelMap () |
| static const u64_t * | getCallEdgeLabelCounter () |
| static const u64_t * | getStoreEdgeLabelCounter () |
| static const u64_t * | getMultiOpndLabelCounter () |
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 ValVar * | cond |
| const ValVar * | brInst |
Friends | |
| class | GraphDBClient |
Additional Inherited Members | |
Protected Member Functions inherited from SVF::SVFStmt | |
| SVFStmt (GEdgeFlag k) | |
| Private constructor for reading SVFIR from file without side-effect. | |
| SVFStmt (SVFVar *s, SVFVar *d, GEdgeFlag k, EdgeID eid, SVFVar *value, ICFGNode *icfgNode, bool real=true) | |
| void | setBasicBlock (const SVFBasicBlock *bb) |
| void | setCallEdgeLabelCounter (u64_t counter) |
| void | setStoreEdgeLabelCounter (u64_t counter) |
| void | setMultiOpndLabelCounter (u64_t counter) |
Static Protected Member Functions inherited from SVF::SVFStmt | |
| static void | addInst2Labeled (const ICFGNode *cs, u32_t label) |
| static void | addVar2Labeled (const SVFVar *var, u32_t label) |
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) |
Branch statements including if/else and switch
Definition at line 1245 of file SVFStatements.h.
| typedef std::vector<std::pair<const ICFGNode*, s32_t> > SVF::BranchStmt::SuccAndCondPairVec |
Definition at line 1250 of file SVFStatements.h.
|
private |
place holder
| BranchStmt::BranchStmt | ( | ValVar * | inst, |
| ValVar * | c, | ||
| const SuccAndCondPairVec & | succs | ||
| ) |
constructor
Definition at line 492 of file SVFStatements.cpp.
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 1267 of file SVFStatements.h.
|
inlinestatic |
Definition at line 1275 of file SVFStatements.h.
Definition at line 1271 of file SVFStatements.h.
Definition at line 1290 of file SVFStatements.h.
Return the condition.
Definition at line 481 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 1305 of file SVFStatements.h.
|
private |
place holder, use getOpVarID(pos) instead
|
private |
place holder, not allowed
Definition at line 1313 of file SVFStatements.h.
Definition at line 1317 of file SVFStatements.h.
|
inline |
Definition at line 1309 of file SVFStatements.h.
| bool BranchStmt::isConditional | ( | ) | const |
The branch is conditional if cond is not a null value.
Definition at line 476 of file SVFStatements.cpp.
| bool BranchStmt::isUnconditional | ( | ) | const |
The branch is unconditional if cond is a null value.
Definition at line 471 of file SVFStatements.cpp.
|
private |
place holder
|
overridevirtual |
Reimplemented from SVF::SVFStmt.
Definition at line 181 of file SVFStatements.cpp.
Definition at line 1247 of file SVFStatements.h.
Definition at line 1262 of file SVFStatements.h.
Definition at line 1261 of file SVFStatements.h.
|
private |
Definition at line 1260 of file SVFStatements.h.