Static Value-Flow Analysis
|
#include <SVFStatements.h>
Static Public Member Functions | |
static bool | classof (const GepStmt *) |
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::AssignStmt | |
static bool | classof (const AssignStmt *) |
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) |
Private Member Functions | |
GepStmt () | |
Constructs empty GepStmt (for SVFIRReader/serialization) | |
GepStmt (const GepStmt &) | |
place holder | |
void | operator= (const GepStmt &) |
place holder | |
Private Attributes | |
AccessPath | ap |
Access path of the GEP edge. | |
bool | variantField |
Gep statement with a variant field index (pointer arithmetic) for struct field access (e.g., p = &(q + f), where f is a variable) | |
Friends | |
class | SVFIRWriter |
class | SVFIRReader |
Additional Inherited Members | |
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 Attributes inherited from SVF::SVFStmt | |
static u32_t | totalEdgeNum |
Total edge number. | |
Protected Member Functions inherited from SVF::AssignStmt | |
AssignStmt (SVFVar *s, SVFVar *d, GEdgeFlag k) | |
constructor | |
AssignStmt (GEdgeFlag k) | |
Constructor to create empty AssignStmt (for SVFIRReader/serialization) | |
Protected Member Functions inherited from SVF::SVFStmt | |
SVFStmt (GEdgeFlag k) | |
Private constructor for reading SVFIR from file without side-effect. | |
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) |
Gep statement for struct field access, array access and pointer arithmetic
Definition at line 526 of file SVFStatements.h.
|
inlineprivate |
Constructs empty GepStmt (for SVFIRReader/serialization)
Definition at line 533 of file SVFStatements.h.
constructor
Definition at line 598 of file SVFStatements.h.
|
inline |
Return accumulated constant offset (when accessing array or struct) if this offset is a constant. elemBytesize is the element byte size of an static alloc or heap alloc array e.g. GepStmt* gep = **, s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType()); APOffset byteOffset = gep->accumulateConstantByteOffset(elemBytesize);
Definition at line 575 of file SVFStatements.h.
|
inline |
Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
Definition at line 581 of file SVFStatements.h.
|
inlinestatic |
Definition at line 550 of file SVFStatements.h.
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 542 of file SVFStatements.h.
Definition at line 546 of file SVFStatements.h.
|
inline |
Definition at line 556 of file SVFStatements.h.
|
inline |
Field index of the gep statement if it access the field of a struct.
Definition at line 586 of file SVFStatements.h.
|
inline |
Definition at line 560 of file SVFStatements.h.
|
inline |
Return TRUE if this is a constant location set.
Definition at line 565 of file SVFStatements.h.
|
inline |
Gep statement with a variant field index (pointer arithmetic) for struct field access.
Definition at line 592 of file SVFStatements.h.
|
virtual |
Implements SVF::AssignStmt.
Definition at line 218 of file SVFStatements.cpp.
|
friend |
Definition at line 529 of file SVFStatements.h.
|
friend |
Definition at line 528 of file SVFStatements.h.
|
private |
Access path of the GEP edge.
Definition at line 537 of file SVFStatements.h.
|
private |
Gep statement with a variant field index (pointer arithmetic) for struct field access (e.g., p = &(q + f), where f is a variable)
Definition at line 538 of file SVFStatements.h.