void addGNode(NodeID id, NodeType *node)
Add a Node.
u32_t edgeNum
total num of node
u32_t nodeNum
total num of edge
u32_t getValueNodeNum() const
u32_t getNodeNumAfterPAGBuild() const
ValueToEdgeMap valueToEdgeMap
Map SVFValues (e.g., ICFGNodes) to all corresponding PAGEdges.
SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)
const MemObj * getConstantObj() const
void dump(std::string name)
Dump SVFIR.
Set< const SVFStmt * > SVFStmtSet
const SVFStmtSet & getValueEdges(const SVFValue *V)
Get all SVFIR Edges that corresponds to an LLVM value.
IRGraph(bool buildFromFile)
void view()
View graph from the debugger.
NodeID getBlackHoleNode() const
SVFStmt::KindToSVFStmtMapTy KindToSVFStmtSetMap
SVFIR edge map containing all PAGEdges.
NodeID getNullPtr() const
bool hasValueNode(const SVFValue *V)
bool isBuiltFromFile()
Whether this SVFIR built from a txt file.
NodeID getValueNode(const SVFValue *V)
const MemObj * getBlackHoleObj() const
void mapValueToEdge(const SVFValue *V, SVFStmt *edge)
Map a value to a set of edges.
u32_t getPTAPAGEdgeNum() const
std::string getGraphName() const
Return graph name.
void setNodeNumAfterPAGBuild(u32_t num)
Map< const SVFValue *, SVFStmtSet > ValueToEdgeMap
SymbolTableInfo * symInfo
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.
SymbolTableInfo * getSymbolInfo() const
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 getPAGEdgeNum() const
u32_t getObjectNodeNum() const
NodeID getVarargNode(const SVFFunction *func) const
getVarargNode - Return the unique node representing the variadic argument of a variadic function.
NodeID getReturnNode(const SVFFunction *func) const
GetReturnNode - Return the unique node representing the return value of a function.
NodeID getObjectNode(const SVFValue *V)
SVFStmt * hasNonlabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind)
const MemObj * getMemObj(const SVFValue *val) const
get MemObj according to LLVM value
NodeID getConstantNode() const
SVFStmt::KindToSVFStmtMapTy KindToPTASVFStmtSetMap
SVFIR edge map containing only pointer-related edges, i.e., both LHS and RHS are of pointer type.
u32_t getPAGNodeNum() const
PAGEdgeToSetMapTy KindToSVFStmtMapTy
ValueToIDMapTy & valSyms()
Get different kinds of syms maps.
SymID blackholeSymID() const
SymID blkPtrSymID() const
static SymbolTableInfo * SymbolInfo()
Singleton design here to make sure we only have one instance during any analysis.
SymID getVarargSym(const SVFFunction *val) const
SymID getValSym(const SVFValue *val)
Get different kinds of syms.
MemObj * getBlkObj() const
SymID getObjSym(const SVFValue *val) const
MemObj * getConstantObj() const
SymID constantSymID() const
IDToMemMapTy & idToObjMap()
MemObj * getObj(SymID id) const
SymID nullPtrSymID() const
bool hasValSym(const SVFValue *val)
SymID getRetSym(const SVFFunction *val) const
llvm::IRBuilder IRBuilder