|
Static Value-Flow Analysis
|
#include <SVFStatements.h>
Public Types | |
| typedef std::vector< std::pair< const ICFGNode *, s64_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< SVFVar > | |
| typedef SVFVar | 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). | |
Public Member Functions | |
| BranchStmt (ValVar *inst, ValVar *c, const SuccAndCondPairVec &succs) | |
| constructor | |
| bool | isUnconditional () const |
| The branch is unconditional if cond is a null value. | |
| bool | isConditional () const |
| The branch is conditional if cond is not a null value. | |
| const ValVar * | getCondition () const |
| Return the condition. | |
| const ValVar * | getBranchInst () const |
| u32_t | getNumSuccessors () const |
| const SuccAndCondPairVec & | getSuccessors () const |
| const ICFGNode * | getSuccessor (u32_t i) const |
| s64_t | getSuccessorCondValue (u32_t i) const |
| virtual const std::string | toString () const override |
| Public Member Functions inherited from SVF::SVFStmt | |
| SVFStmt (SVFVar *s, SVFVar *d, GEdgeFlag k, bool real=true) | |
| Constructor. | |
| ~SVFStmt () | |
| Destructor. | |
| EdgeID | getEdgeID () const |
| Return Edge ID. | |
| virtual bool | isPTAEdge () const |
| Whether src and dst nodes are both of pointer type. | |
| void | setValue (const SVFVar *val) |
| Get/set methods for llvm instruction. | |
| const SVFVar * | getValue () const |
| void | setBB (const SVFBasicBlock *bb) |
| const SVFBasicBlock * | getBB () const |
| void | setICFGNode (ICFGNode *node) |
| ICFGNode * | getICFGNode () const |
| Public Member Functions inherited from SVF::GenericEdge< SVFVar > | |
| GenericEdge (SVFVar *s, SVFVar *d, GEdgeFlag k) | |
| Constructor. | |
| virtual | ~GenericEdge () |
| Destructor. | |
| NodeID | getSrcID () const |
| get methods of the components | |
| NodeID | getDstID () const |
| GEdgeKind | getEdgeKind () const |
| GEdgeKind | getEdgeKindWithoutMask () const |
| NodeType * | getSrcNode () const |
| NodeType * | getDstNode () const |
| virtual bool | operator== (const GenericEdge< NodeType > *rhs) const |
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< SVFVar > | |
| static constexpr unsigned char | EdgeKindMaskBits |
| We use the lower 8 bits to denote edge kind. | |
| static constexpr u64_t | EdgeKindMask |
Branch statements including if/else and switch
Definition at line 1246 of file SVFStatements.h.
| typedef std::vector<std::pair<const ICFGNode*, s64_t> > SVF::BranchStmt::SuccAndCondPairVec |
Definition at line 1251 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 1268 of file SVFStatements.h.
|
inlinestatic |
Definition at line 1276 of file SVFStatements.h.
|
inlinestatic |
Definition at line 1272 of file SVFStatements.h.
|
inline |
Definition at line 1291 of file SVFStatements.h.
| const ValVar * BranchStmt::getCondition | ( | ) | const |
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 Switch successors follow LLVM order: default first, then each case. case 1: case 2: work(); retains (work, 1) and (work, 2), even when both cases share a target. Default is identified by position, not -1. Successors of this branch statement
Definition at line 1306 of file SVFStatements.h.
|
private |
place holder, use getOpVarID(pos) instead
|
private |
place holder, not allowed
Definition at line 1314 of file SVFStatements.h.
Definition at line 1318 of file SVFStatements.h.
|
inline |
Definition at line 1310 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.
|
friend |
Definition at line 1248 of file SVFStatements.h.
|
private |
Definition at line 1263 of file SVFStatements.h.
|
private |
Definition at line 1262 of file SVFStatements.h.
|
private |
Definition at line 1261 of file SVFStatements.h.