Static Value-Flow Analysis
|
#include <IRGraph.h>
Public Types | |
typedef Set< const SVFStmt * > | SVFStmtSet |
typedef Map< const SVFValue *, SVFStmtSet > | ValueToEdgeMap |
Public Types inherited from SVF::GenericGraph< SVFVar, SVFStmt > | |
typedef SVFVar | NodeType |
typedef SVFStmt | EdgeType |
typedef OrderedMap< NodeID, NodeType * > | IDToNodeMapTy |
NodeID to GenericNode map. | |
typedef IDToNodeMapTy::iterator | iterator |
Node Iterators. | |
typedef IDToNodeMapTy::const_iterator | const_iterator |
Protected Member Functions | |
NodeID | addNode (SVFVar *node, NodeID i) |
Add a node into the graph. | |
bool | addEdge (SVFVar *src, SVFVar *dst, SVFStmt *edge) |
Add an edge into the graph. | |
SVFStmt * | hasNonlabeledEdge (SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind) |
SVFStmt * | hasLabeledEdge (SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs) |
SVFStmt * | hasLabeledEdge (SVFVar *src, SVFVar *op1, SVFStmt::PEDGEK kind, const SVFVar *op2) |
void | mapValueToEdge (const SVFValue *V, SVFStmt *edge) |
Map a value to a set of edges. | |
const MemObj * | getMemObj (const SVFValue *val) const |
get MemObj according to LLVM value | |
Protected Attributes | |
SVFStmt::KindToSVFStmtMapTy | KindToSVFStmtSetMap |
SVFIR edge map containing all PAGEdges. | |
SVFStmt::KindToSVFStmtMapTy | KindToPTASVFStmtSetMap |
SVFIR edge map containing only pointer-related edges, i.e., both LHS and RHS are of pointer type. | |
bool | fromFile |
Whether the SVFIR is built according to user specified data from a txt file. | |
NodeID | nodeNumAfterPAGBuild |
initial node number after building SVFIR, excluding later added nodes, e.g., gepobj nodes | |
u32_t | totalPTAPAGEdge |
ValueToEdgeMap | valueToEdgeMap |
Map SVFValues (e.g., ICFGNodes) to all corresponding PAGEdges. | |
SymbolTableInfo * | symInfo |
Protected Attributes inherited from SVF::GenericGraph< SVFVar, SVFStmt > | |
IDToNodeMapTy | IDToNodeMap |
node map | |
Friends | |
class | SVFIRWriter |
class | SVFIRReader |
Additional Inherited Members | |
Public Attributes inherited from SVF::GenericGraph< SVFVar, SVFStmt > | |
u32_t | edgeNum |
total num of node | |
u32_t | nodeNum |
total num of edge | |
|
inline |
Definition at line 104 of file IRGraph.h.
|
virtual |
Definition at line 36 of file IRGraph.cpp.
Add an edge into the graph.
Add a SVFIR edge into edge map
Definition at line 45 of file IRGraph.cpp.
Add a node into the graph.
void IRGraph::dump | ( | std::string | name | ) |
Dump SVFIR.
Dump this IRGraph
Definition at line 102 of file IRGraph.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
get MemObj according to LLVM value
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
GetReturnNode - Return the unique node representing the return value of a function.
|
inline |
|
inline |
Get SVFIR Node according to LLVM value getNode - Return the node corresponding to the specified pointer.
Definition at line 137 of file IRGraph.h.
|
inline |
Definition at line 186 of file IRGraph.h.
|
inline |
getVarargNode - Return the unique node representing the variadic argument of a variadic function.
|
protected |
Return true if this labeled edge exits, including store, call and load two store edge can have same dst and src but located in different basic blocks, thus flags are needed to distinguish them
Return an inter-procedural edge if found
Definition at line 88 of file IRGraph.cpp.
|
protected |
Return MultiOpndStmt since it has more than one operands (we use operand 2 here to make the flag)
Return an MultiOpndStmt if found
Definition at line 74 of file IRGraph.cpp.
|
protected |
Return true if it is an intra-procedural edge
Definition at line 60 of file IRGraph.cpp.
|
inline |
|
inline |
void IRGraph::view | ( | ) |
View graph from the debugger.
View IRGraph
Definition at line 110 of file IRGraph.cpp.
|
friend |
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |