SVF
|
#include <PAG.h>
Public Member Functions | |
MemObjToFieldsMap & | getMemToFieldsMap () |
Return memToFieldsMap. More... | |
NodeLocationSetMap & | getGepObjNodeMap () |
Return GepObjNodeMap. More... | |
ICFG * | getICFG () |
Return ICFG. More... | |
OrderedNodeSet & | getAllValidPtrs () |
Return valid pointers. More... | |
void | initialiseCandidatePointers () |
Initialize candidate pointers. More... | |
virtual | ~PAG () |
Destructor. More... | |
bool | isBuiltFromFile () |
Whether this PAG built from a txt file. More... | |
SVFModule * | getModule () |
Get LLVM Module. More... | |
void | addCallSite (const CallBlockNode *call) |
const CallSiteSet & | getCallSiteSet () const |
NodeID | getGepValNode (const Value *curInst, NodeID base, const LocationSet &ls) const |
Due to constaint expression, curInst is used to distinguish different instructions (e.g., memorycpy) when creating GepValPN. More... | |
bool | findPAGNode (NodeID id) const |
Get a pag node according to its ID. More... | |
PAGNode * | getPAGNode (NodeID id) const |
Get PAGNode ID. More... | |
NodeID | getReturnNode (const SVFFunction *func) const |
GetReturnNode - Return the unique node representing the return value of a function. More... | |
NodeID | getVarargNode (const SVFFunction *func) const |
getVarargNode - Return the unique node representing the variadic argument of a variadic function. More... | |
NodeID | getGepObjNode (const MemObj *obj, const LocationSet &ls) |
Get a field PAG Object node according to base mem obj and offset. More... | |
NodeID | getGepObjNode (NodeID id, const LocationSet &ls) |
Get a field obj PAG node according to a mem obj and a given offset. More... | |
u32_t | getNodeNumAfterPAGBuild () const |
void | setNodeNumAfterPAGBuild (u32_t num) |
NodeID | addValNode (const Value *, PAGNode *node, NodeID i) |
Add a value (pointer) node. More... | |
NodeID | addObjNode (const Value *, PAGNode *node, NodeID i) |
Add a memory obj node. More... | |
NodeID | addRetNode (const SVFFunction *, PAGNode *node, NodeID i) |
Add a unique return node for a procedure. More... | |
NodeID | addVarargNode (const SVFFunction *, PAGNode *node, NodeID i) |
Add a unique vararg node for a procedure. More... | |
PAGEdge * | addBlackHoleAddrPE (NodeID node) |
Set a pointer points-to black hole (e.g. int2ptr) More... | |
std::string | getGraphName () const |
Return graph name. More... | |
void | print () |
Print PAG. More... | |
void | dump (std::string name) |
Dump PAG. More... | |
void | view () |
View graph from the debugger. More... | |
PAGEdge::PAGEdgeSetTy & | getEdgeSet (PAGEdge::PEDGEK kind) |
Get/set methods to get control flow information of a PAGEdge. More... | |
PAGEdge::PAGEdgeSetTy & | getPTAEdgeSet (PAGEdge::PEDGEK kind) |
Get PTA edges set according to its kind. More... | |
bool | hasPAGEdgeList (const ICFGNode *inst) const |
Whether this instruction has PAG Edge. More... | |
bool | hasPTAPAGEdgeList (const ICFGNode *inst) const |
PAGEdgeList & | getInstPAGEdgeList (const ICFGNode *inst) |
Given an instruction, get all its PAGEdges. More... | |
PAGEdgeList & | getInstPTAPAGEdgeList (const ICFGNode *inst) |
Given an instruction, get all its PTA PAGEdges. More... | |
void | addToInstPAGEdgeList (ICFGNode *inst, PAGEdge *edge) |
Add a PAGEdge into instruction map. More... | |
void | addGlobalPAGEdge (const PAGEdge *edge) |
Get global PAGEdges (not in a procedure) More... | |
PAGEdgeSet & | getGlobalPAGEdgeSet () |
Get global PAGEdges (not in a procedure) More... | |
void | addPhiNode (const PAGNode *res, const CopyPE *edge) |
Add phi node information. More... | |
bool | isPhiNode (const PAGNode *node) const |
Whether this PAGNode is a result operand a of phi node. More... | |
PHINodeMap & | getPhiNodeMap () |
Get all phi copy edges. More... | |
void | addBinaryNode (const PAGNode *res, const BinaryOPPE *edge) |
Add phi node information. More... | |
bool | isBinaryNode (const PAGNode *node) const |
Whether this PAGNode is a result operand a of phi node. More... | |
BinaryNodeMap & | getBinaryNodeMap () |
Get all phi copy edges. More... | |
void | addUnaryNode (const PAGNode *res, const UnaryOPPE *edge) |
Add unary node information. More... | |
bool | isUnaryNode (const PAGNode *node) const |
Whether this PAGNode is an unary node. More... | |
UnaryNodeMap & | getUnaryNodeMap () |
Get all unary edges. More... | |
void | addCmpNode (const PAGNode *res, const CmpPE *edge) |
Add phi node information. More... | |
bool | isCmpNode (const PAGNode *node) const |
Whether this PAGNode is a result operand a of phi node. More... | |
CmpNodeMap & | getCmpNodeMap () |
Get all phi copy edges. More... | |
void | addFunArgs (const SVFFunction *fun, const PAGNode *arg) |
Get/set method for function/callsite arguments and returns. More... | |
void | addFunRet (const SVFFunction *fun, const PAGNode *ret) |
Add function returns. More... | |
void | addCallSiteArgs (CallBlockNode *callBlockNode, const PAGNode *arg) |
Add callsite arguments. More... | |
void | addCallSiteRets (RetBlockNode *retBlockNode, const PAGNode *arg) |
Add callsite returns. More... | |
bool | hasFunArgsList (const SVFFunction *func) const |
Function has arguments list. More... | |
FunToArgsListMap & | getFunArgsMap () |
Get function arguments list. More... | |
const PAGNodeList & | getFunArgsList (const SVFFunction *func) const |
Get function arguments list. More... | |
bool | hasCallSiteArgsMap (const CallBlockNode *cs) const |
Callsite has argument list. More... | |
CSToArgsListMap & | getCallSiteArgsMap () |
Get callsite argument list. More... | |
const PAGNodeList & | getCallSiteArgsList (const CallBlockNode *cs) const |
Get callsite argument list. More... | |
CSToRetMap & | getCallSiteRets () |
Get callsite return. More... | |
const PAGNode * | getCallSiteRet (const RetBlockNode *cs) const |
Get callsite return. More... | |
bool | callsiteHasRet (const RetBlockNode *cs) const |
FunToRetMap & | getFunRets () |
Get function return list. More... | |
const PAGNode * | getFunRet (const SVFFunction *func) const |
Get function return list. More... | |
bool | funHasRet (const SVFFunction *func) const |
Size_t | getPAGNodeNum () const |
Node and edge statistics. More... | |
Size_t | getPAGEdgeNum () const |
Size_t | getValueNodeNum () const |
Size_t | getObjectNodeNum () const |
Size_t | getFieldValNodeNum () const |
Size_t | getFieldObjNodeNum () const |
const CallSiteToFunPtrMap & | getIndirectCallsites () const |
Add/get indirect callsites. More... | |
void | addIndirectCallsites (const CallBlockNode *cs, NodeID funPtr) |
NodeID | getFunPtr (const CallBlockNode *cs) const |
const CallSiteSet & | getIndCallSites (NodeID funPtr) const |
bool | isIndirectCallSites (const CallBlockNode *cs) const |
bool | isFunPtr (NodeID id) const |
PAGEdge * | getIntraPAGEdge (NodeID src, NodeID dst, PAGEdge::PEDGEK kind) |
Get an edge according to src, dst and kind. More... | |
PAGEdge * | getIntraPAGEdge (PAGNode *src, PAGNode *dst, PAGEdge::PEDGEK kind) |
NodeID | getValueNode (const Value *V) |
Get PAG Node according to LLVM value. More... | |
bool | hasValueNode (const Value *V) |
NodeID | getObjectNode (const Value *V) |
NodeID | getObjectNode (const MemObj *mem) |
getObject - return mem object id More... | |
const MemObj * | getObject (NodeID id) const |
const MemObj * | getObject (const ObjPN *node) const |
NodeID | getFIObjNode (const MemObj *obj) const |
Get a field-insensitive obj PAG node according to a mem obj. More... | |
NodeID | getFIObjNode (NodeID id) const |
NodeID | getBlackHoleNode () const |
Get black hole and constant id. More... | |
NodeID | getConstantNode () const |
NodeID | getBlkPtr () const |
NodeID | getNullPtr () const |
bool | isBlkPtr (NodeID id) const |
bool | isNullPtr (NodeID id) const |
bool | isBlkObjOrConstantObj (NodeID id) const |
bool | isBlkObj (NodeID id) const |
bool | isConstantObj (NodeID id) const |
bool | isNonPointerObj (NodeID id) const |
const MemObj * | getBlackHoleObj () const |
const MemObj * | getConstantObj () const |
NodeID | getBaseValNode (NodeID nodeId) |
Base and Offset methods for Value and Object node. More... | |
LocationSet | getLocationSetFromBaseNode (NodeID nodeId) |
NodeID | getBaseObjNode (NodeID id) const |
const MemObj * | getBaseObj (NodeID id) const |
NodeBS & | getAllFieldsObjNode (const MemObj *obj) |
Get all fields of an object. More... | |
NodeBS & | getAllFieldsObjNode (NodeID id) |
NodeBS | getFieldsAfterCollapse (NodeID id) |
NodeID | addNode (PAGNode *node, NodeID i) |
add node into PAG More... | |
NodeID | addValNode (const Value *val, NodeID i) |
Add a value (pointer) node. More... | |
NodeID | addObjNode (const Value *val, NodeID i) |
Add a memory obj node. More... | |
NodeID | addRetNode (const SVFFunction *val, NodeID i) |
Add a unique return node for a procedure. More... | |
NodeID | addVarargNode (const SVFFunction *val, NodeID i) |
Add a unique vararg node for a procedure. More... | |
NodeID | addGepValNode (const Value *curInst, const Value *val, const LocationSet &ls, NodeID i, const Type *type, u32_t fieldidx) |
Add a temp field value node, this method can only invoked by getGepValNode. More... | |
NodeID | addGepObjNode (const MemObj *obj, const LocationSet &ls) |
Add a field obj node, this method can only invoked by getGepObjNode. More... | |
NodeID | addFIObjNode (const MemObj *obj) |
Add a field-insensitive node, this method can only invoked by getFIGepObjNode. More... | |
NodeID | addDummyValNode () |
Add a dummy value/object node according to node ID (llvm value is null) More... | |
NodeID | addDummyValNode (NodeID i) |
NodeID | addDummyObjNode (const Type *type=nullptr) |
NodeID | addDummyObjNode (NodeID i, const Type *type) |
const MemObj * | addDummyMemObj (NodeID i, const Type *type) |
NodeID | addBlackholeObjNode () |
NodeID | addConstantObjNode () |
NodeID | addBlackholePtrNode () |
bool | addEdge (PAGNode *src, PAGNode *dst, PAGEdge *edge) |
Add an edge into PAG. More... | |
PAGEdge * | hasNonlabeledEdge (PAGNode *src, PAGNode *dst, PAGEdge::PEDGEK kind) |
PAGEdge * | hasLabeledEdge (PAGNode *src, PAGNode *dst, PAGEdge::PEDGEK kind, const ICFGNode *cs) |
AddrPE * | addAddrPE (NodeID src, NodeID dst) |
Add Address edge. More... | |
CopyPE * | addCopyPE (NodeID src, NodeID dst) |
Add Copy edge. More... | |
CmpPE * | addCmpPE (NodeID src, NodeID dst) |
Add Copy edge. More... | |
BinaryOPPE * | addBinaryOPPE (NodeID src, NodeID dst) |
Add Copy edge. More... | |
UnaryOPPE * | addUnaryOPPE (NodeID src, NodeID dst) |
Add Unary edge. More... | |
LoadPE * | addLoadPE (NodeID src, NodeID dst) |
Add Load edge. More... | |
StorePE * | addStorePE (NodeID src, NodeID dst, const IntraBlockNode *val) |
Add Store edge. More... | |
CallPE * | addCallPE (NodeID src, NodeID dst, const CallBlockNode *cs) |
Add Call edge. More... | |
RetPE * | addRetPE (NodeID src, NodeID dst, const CallBlockNode *cs) |
Add Return edge. More... | |
GepPE * | addGepPE (NodeID src, NodeID dst, const LocationSet &ls, bool constGep) |
Add Gep edge. More... | |
NormalGepPE * | addNormalGepPE (NodeID src, NodeID dst, const LocationSet &ls) |
Add Offset(Gep) edge. More... | |
VariantGepPE * | addVariantGepPE (NodeID src, NodeID dst) |
Add Variant(Gep) edge. More... | |
TDForkPE * | addThreadForkPE (NodeID src, NodeID dst, const CallBlockNode *cs) |
Add Thread fork edge for parameter passing. More... | |
TDJoinPE * | addThreadJoinPE (NodeID src, NodeID dst, const CallBlockNode *cs) |
Add Thread join edge for parameter passing. More... | |
bool | isValidPointer (NodeID nodeId) const |
Whether a node is a valid pointer. More... | |
bool | isValidTopLevelPtr (const PAGNode *node) |
![]() | |
GenericGraph () | |
Constructor. More... | |
virtual | ~GenericGraph () |
Destructor. More... | |
void | destroy () |
Release memory. More... | |
iterator | begin () |
Iterators. More... | |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
void | addGNode (NodeID id, NodeType *node) |
Add a Node. More... | |
NodeType * | getGNode (NodeID id) const |
Get a node. More... | |
bool | hasGNode (NodeID id) const |
Has a node. More... | |
void | removeGNode (NodeType *node) |
Delete a node. More... | |
u32_t | getTotalNodeNum () const |
Get total number of node/edge. More... | |
u32_t | getTotalEdgeNum () const |
void | incNodeNum () |
Increase number of node/edge. More... | |
void | incEdgeNum () |
Static Public Member Functions | |
static PAG * | getPAG (bool buildFromFile=false) |
Singleton design here to make sure we only have one instance during any analysis. More... | |
static void | releasePAG () |
static void | handleBlackHole (bool b) |
PAG build configurations. More... | |
Public Attributes | |
u32_t | totalPTAPAGEdge |
![]() | |
u32_t | edgeNum |
total num of node More... | |
u32_t | nodeNum |
total num of edge More... | |
Private Member Functions | |
PAG (bool buildFromFile) | |
all the callsites of a program More... | |
void | destroy () |
Clean up memory. More... | |
Static Private Attributes | |
static PAG * | pag = nullptr |
Singleton pattern here to enable instance of PAG can only be created once. More... | |
Additional Inherited Members | |
![]() | |
IDToNodeMapTy | IDToNodeMap |
node map More... | |
Program Assignment Graph for pointer analysis SymID and NodeID are equal here (same numbering).
typedef Map<const PAGNode*,BinaryOPList> SVF::PAG::BinaryNodeMap |
typedef std::vector<const BinaryOPPE*> SVF::PAG::BinaryOPList |
typedef Set<const CallBlockNode*> SVF::PAG::CallSiteSet |
typedef OrderedMap<const CallBlockNode*,NodeID> SVF::PAG::CallSiteToFunPtrMap |
typedef std::vector<const CmpPE*> SVF::PAG::CmpPEList |
typedef std::vector<const CopyPE*> SVF::PAG::CopyPEList |
typedef Map<const CallBlockNode*,PAGNodeList> SVF::PAG::CSToArgsListMap |
typedef Map<const RetBlockNode*,const PAGNode*> SVF::PAG::CSToRetMap |
typedef Map<const SVFFunction*,PAGNodeList> SVF::PAG::FunToArgsListMap |
typedef Map<const SVFFunction*,PAGEdgeSet> SVF::PAG::FunToPAGEdgeSetMap |
typedef Map<const SVFFunction*,const PAGNode*> SVF::PAG::FunToRetMap |
typedef Map<const Value*, NodeLocationSetMap> SVF::PAG::GepValPNMap |
typedef Map<const ICFGNode*,PAGEdgeList> SVF::PAG::Inst2PAGEdgesMap |
typedef std::pair<NodeID, LocationSet> SVF::PAG::NodeLocationSet |
typedef std::pair<NodeID, Size_t> SVF::PAG::NodeOffset |
typedef Map<NodeOffset,NodeID> SVF::PAG::NodeOffsetMap |
typedef std::vector<const PAGEdge*> SVF::PAG::PAGEdgeList |
typedef Set<const PAGEdge*> SVF::PAG::PAGEdgeSet |
typedef std::vector<const PAGNode*> SVF::PAG::PAGNodeList |
typedef Map<const PAGNode*,CopyPEList> SVF::PAG::PHINodeMap |
typedef Map<const PAGNode*,UnaryOPList> SVF::PAG::UnaryNodeMap |
typedef std::vector<const UnaryOPPE*> SVF::PAG::UnaryOPList |
|
private |
all the callsites of a program
Constructor
Definition at line 362 of file PAG.cpp.
|
inlinevirtual |
Destructor.
Add Address edge.
Add Address edge
Definition at line 373 of file PAG.cpp.
|
inline |
BinaryOPPE * PAG::addBinaryOPPE | ( | NodeID | src, |
NodeID | dst | ||
) |
Add Copy edge.
Add Compare edge
Definition at line 425 of file PAG.cpp.
Set a pointer points-to black hole (e.g. int2ptr)
Add blackhole/constant edge
Definition at line 528 of file PAG.cpp.
|
inline |
Definition at line 757 of file PAG.h.
|
inline |
CallPE * PAG::addCallPE | ( | NodeID | src, |
NodeID | dst, | ||
const CallBlockNode * | cs | ||
) |
Add Call edge.
Add Call edge
Definition at line 494 of file PAG.cpp.
|
inline |
|
inline |
|
inline |
Add Copy edge.
Add Compare edge
Definition at line 407 of file PAG.cpp.
|
inline |
Definition at line 761 of file PAG.h.
Add Copy edge.
Add Copy edge
Definition at line 390 of file PAG.cpp.
Definition at line 753 of file PAG.h.
Definition at line 744 of file PAG.h.
|
inline |
Add a dummy value/object node according to node ID (llvm value is null)
Definition at line 736 of file PAG.h.
Add an edge into PAG.
Add a PAG edge
Add a PAG edge into edge map
Definition at line 754 of file PAG.cpp.
Add a field-insensitive node, this method can only invoked by getFIGepObjNode.
Add a field-insensitive node, this method can only invoked by getFIGepObjNode
Definition at line 712 of file PAG.cpp.
|
inline |
Get/set method for function/callsite arguments and returns.
Add function arguments
Definition at line 319 of file PAG.h.
|
inline |
Add function returns.
Definition at line 326 of file PAG.h.
NodeID PAG::addGepObjNode | ( | const MemObj * | obj, |
const LocationSet & | ls | ||
) |
Add a field obj node, this method can only invoked by getGepObjNode.
Add a field obj node, this method can only invoked by getGepObjNode
Definition at line 695 of file PAG.cpp.
GepPE * PAG::addGepPE | ( | NodeID | src, |
NodeID | dst, | ||
const LocationSet & | ls, | ||
bool | constGep | ||
) |
Add Gep edge.
Add Offset(Gep) edge Find the base node id of src and connect base node to dst node Create gep offset: (offset + baseOff <nested struct="" gep="" size>="">)
Since the offset from base to src is variant, the new gep edge being created is also a VariantGepPE edge.
Definition at line 576 of file PAG.cpp.
NodeID PAG::addGepValNode | ( | const Value * | curInst, |
const Value * | gepVal, | ||
const LocationSet & | ls, | ||
NodeID | i, | ||
const Type * | type, | ||
u32_t | fieldidx | ||
) |
Add a temp field value node, this method can only invoked by getGepValNode.
Add a temp field value node, this method can only invoked by getGepValNode due to constaint expression, curInst is used to distinguish different instructions (e.g., memorycpy) when creating GepValPN.
Definition at line 635 of file PAG.cpp.
|
inline |
|
inline |
Add Load edge.
Add Load edge
Definition at line 459 of file PAG.cpp.
add node into PAG
Add a PAG node into Node map
Definition at line 695 of file PAG.h.
NormalGepPE * PAG::addNormalGepPE | ( | NodeID | src, |
NodeID | dst, | ||
const LocationSet & | ls | ||
) |
Add Offset(Gep) edge.
Add normal (Gep) edge
Definition at line 595 of file PAG.cpp.
Add a memory obj node.
Definition at line 707 of file PAG.h.
Add a memory obj node.
Definition at line 778 of file PAG.h.
|
inline |
|
inline |
RetPE * PAG::addRetPE | ( | NodeID | src, |
NodeID | dst, | ||
const CallBlockNode * | cs | ||
) |
Add Return edge.
Add Return edge
Definition at line 511 of file PAG.cpp.
StorePE * PAG::addStorePE | ( | NodeID | src, |
NodeID | dst, | ||
const IntraBlockNode * | curVal | ||
) |
Add Store edge.
Add Store edge Note that two store instructions may share the same Store PAGEdge
Definition at line 477 of file PAG.cpp.
TDForkPE * PAG::addThreadForkPE | ( | NodeID | src, |
NodeID | dst, | ||
const CallBlockNode * | cs | ||
) |
Add Thread fork edge for parameter passing.
Add Thread fork edge for parameter passing from a spawner to its spawnees
Definition at line 539 of file PAG.cpp.
TDJoinPE * PAG::addThreadJoinPE | ( | NodeID | src, |
NodeID | dst, | ||
const CallBlockNode * | cs | ||
) |
Add Thread join edge for parameter passing.
Add Thread fork edge for parameter passing from a spawnee back to its spawners
Definition at line 556 of file PAG.cpp.
Add Unary edge.
Add Unary edge
Definition at line 442 of file PAG.cpp.
Add a value (pointer) node.
Definition at line 772 of file PAG.h.
|
inline |
|
inline |
VariantGepPE * PAG::addVariantGepPE | ( | NodeID | src, |
NodeID | dst | ||
) |
Add Variant(Gep) edge.
Add variant(Gep) edge Find the base node id of src and connect base node to dst node
Definition at line 614 of file PAG.cpp.
|
inline |
|
private |
Clean up memory.
Clean up memory
Definition at line 866 of file PAG.cpp.
void PAG::dump | ( | std::string | name | ) |
Dump PAG.
Dump this PAG
Definition at line 1081 of file PAG.cpp.
|
inline |
Get a pag node according to its ID.
Definition at line 491 of file PAG.h.
|
inline |
Get all fields object nodes of an object
Definition at line 785 of file PAG.cpp.
|
inline |
Base and Offset methods for Value and Object node.
Get a base pointer node given a field pointer
Get a base pointer given a pointer Return the source node of its connected gep edge if this pointer has Otherwise return the node id itself
Definition at line 818 of file PAG.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 652 of file PAG.h.
|
inline |
|
inline |
Get all fields object nodes of an object If this object is collapsed into one field insensitive object Then only return this field insensitive object
Definition at line 798 of file PAG.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
NodeID PAG::getGepObjNode | ( | const MemObj * | obj, |
const LocationSet & | ls | ||
) |
Get a field PAG Object node according to base mem obj and offset.
Get a field obj PAG node according to base mem obj and offset To support flexible field sensitive analysis with regard to MaxFieldOffset offset = offset % obj->getMaxFieldOffsetLimit() to create limited number of mem objects maximum number of field object creation is obj->getMaxFieldOffsetLimit()
if this obj is field-insensitive, just return the field-insensitive node.
Definition at line 671 of file PAG.cpp.
NodeID PAG::getGepObjNode | ( | NodeID | id, |
const LocationSet & | ls | ||
) |
Get a field obj PAG node according to a mem obj and a given offset.
Given an object node, find its field object node
Definition at line 649 of file PAG.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 474 of file PAG.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 502 of file PAG.h.
LocationSet PAG::getLocationSetFromBaseNode | ( | NodeID | nodeId | ) |
Get a base PAGNode given a pointer Return the source node of its connected normal gep edge Otherwise return the node id itself Size_t offset : gep offset
if this node is already a base node
Definition at line 847 of file PAG.cpp.
|
inline |
|
inline |
Get LLVM Module.
Definition at line 193 of file PAG.h.
getObject - Return the obj node id refer to the memory object for the specified global, heap or alloca instruction according to llvm value.
Definition at line 531 of file PAG.h.
|
inlinestatic |
|
inline |
Definition at line 418 of file PAG.h.
Get PAGNode ID.
Definition at line 513 of file PAG.h.
|
inline |
Node and edge statistics.
Definition at line 414 of file PAG.h.
|
inline |
|
inline |
|
inline |
GetReturnNode - Return the unique node representing the return value of a function.
Definition at line 559 of file PAG.h.
|
inline |
Get PAG Node according to LLVM value.
getNode - Return the node corresponding to the specified pointer.
Definition at line 521 of file PAG.h.
|
inline |
Definition at line 422 of file PAG.h.
|
inline |
getVarargNode - Return the unique node representing the variadic argument of a variadic function.
Definition at line 564 of file PAG.h.
|
static |
|
inline |
|
inline |
PAGEdge * PAG::hasLabeledEdge | ( | PAGNode * | src, |
PAGNode * | dst, | ||
PAGEdge::PEDGEK | kind, | ||
const ICFGNode * | callInst | ||
) |
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 true if it is an inter-procedural edge
Definition at line 739 of file PAG.cpp.
PAGEdge * PAG::hasNonlabeledEdge | ( | PAGNode * | src, |
PAGNode * | dst, | ||
PAGEdge::PEDGEK | kind | ||
) |
Return true if it is an intra-procedural edge
Definition at line 725 of file PAG.cpp.
|
inline |
|
inline |
|
inline |
Initialize candidate pointers.
Definition at line 144 of file PAG.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 621 of file PAG.h.
|
inline |
|
inline |
|
inline |
|
inline |
bool PAG::isValidPointer | ( | NodeID | nodeId | ) | const |
Whether a node is a valid pointer.
Definition at line 976 of file PAG.cpp.
bool PAG::isValidTopLevelPtr | ( | const PAGNode * | node | ) |
Definition at line 984 of file PAG.cpp.
void PAG::print | ( | ) |
Print PAG.
Print this PAG graph including its nodes and edges
Definition at line 885 of file PAG.cpp.
|
inlinestatic |
void PAG::view | ( | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Map a instruction to its PointerAnalysis related PAGEdges.
|
private |
|
staticprivate |
|
private |
|
private |
|
private |
|
private |
|
private |