|
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 SVFVar * | cond |
| const SVFVar * | 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 1210 of file SVFStatements.h.
| typedef std::vector<std::pair<const ICFGNode*, s32_t> > SVF::BranchStmt::SuccAndCondPairVec |
Definition at line 1215 of file SVFStatements.h.
|
private |
place holder
|
inline |
constructor
Definition at line 1247 of file SVFStatements.h.
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 1232 of file SVFStatements.h.
|
inlinestatic |
Definition at line 1240 of file SVFStatements.h.
Definition at line 1236 of file SVFStatements.h.
Definition at line 1259 of file SVFStatements.h.
Return the condition.
Definition at line 332 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 1274 of file SVFStatements.h.
|
private |
place holder, use getOpVarID(pos) instead
|
private |
place holder, not allowed
Definition at line 1282 of file SVFStatements.h.
Definition at line 1286 of file SVFStatements.h.
|
inline |
Definition at line 1278 of file SVFStatements.h.
| bool BranchStmt::isConditional | ( | ) | const |
The branch is conditional if cond is not a null value.
Definition at line 327 of file SVFStatements.cpp.
| bool BranchStmt::isUnconditional | ( | ) | const |
The branch is unconditional if cond is a null value.
Definition at line 322 of file SVFStatements.cpp.
|
private |
place holder
|
overridevirtual |
Reimplemented from SVF::SVFStmt.
Definition at line 181 of file SVFStatements.cpp.
Definition at line 1212 of file SVFStatements.h.
Definition at line 1227 of file SVFStatements.h.
Definition at line 1226 of file SVFStatements.h.
|
private |
Definition at line 1225 of file SVFStatements.h.