|
Static Value-Flow Analysis
|
#include <SVFG.h>
Public Member Functions | |
| virtual | ~SVFG () |
| Destructor. | |
| SVFGStat * | getStat () const |
| Return statistics. | |
| void | clearMSSA () |
| Clear MSSA. | |
| MemSSA * | getMSSA () const |
| Get SVFG memory SSA. | |
| PointerAnalysis * | getPTA () const |
| Get Pointer Analysis. | |
| SVFGNode * | getSVFGNode (NodeID id) const |
| Get a SVFG node. | |
| bool | hasSVFGNode (NodeID id) const |
| Whether has the SVFGNode. | |
| void | getInterVFEdgesForIndirectCallSite (const CallICFGNode *cs, const FunObjVar *callee, SVFGEdgeSetTy &edges) |
| Get all inter value flow edges of a indirect call site. | |
| void | dump (const std::string &file, bool simple=false) |
| Dump graph into dot file. | |
| virtual void | connectCallerAndCallee (const CallICFGNode *cs, const FunObjVar *callee, SVFGEdgeSetTy &edges) |
| Connect SVFG nodes between caller and callee for indirect call site. | |
| const SVFGNode * | getDefSVFGNode (const ValVar *valVar) const |
| Given a valVar, return its definition site. | |
| bool | hasDefSVFGNode (const ValVar *valVar) const |
| Given a valVar, return whether it has definition site. | |
| const SVFGNode * | getDefSiteOfValVar (const ValVar *var) const |
| const Set< const SVFGNode * > | getDefSiteOfObjVar (const ObjVar *obj, const SVFGNode *node) const |
| const Set< const SVFGNode * > | getUseSitesOfValVar (const ValVar *var) const |
| const Set< const SVFGNode * > | getUseSitesOfObjVar (const ObjVar *obj, const SVFGNode *node) const |
| void | performStat () |
| Perform statistics. | |
| bool | hasActualINSVFGNodes (const CallICFGNode *cs) const |
| Has a SVFGNode. | |
| bool | hasActualOUTSVFGNodes (const CallICFGNode *cs) const |
| bool | hasFormalINSVFGNodes (const FunObjVar *fun) const |
| bool | hasFormalOUTSVFGNodes (const FunObjVar *fun) const |
| ActualINSVFGNodeSet & | getActualINSVFGNodes (const CallICFGNode *cs) |
| Get SVFGNode set. | |
| ActualOUTSVFGNodeSet & | getActualOUTSVFGNodes (const CallICFGNode *cs) |
| FormalINSVFGNodeSet & | getFormalINSVFGNodes (const FunObjVar *fun) |
| FormalOUTSVFGNodeSet & | getFormalOUTSVFGNodes (const FunObjVar *fun) |
| const FunObjVar * | isFunEntrySVFGNode (const SVFGNode *node) const |
| Whether a node is function entry SVFGNode. | |
| const CallICFGNode * | isCallSiteRetSVFGNode (const SVFGNode *node) const |
| Whether a node is callsite return SVFGNode. | |
| void | removeSVFGEdge (SVFGEdge *edge) |
| Remove a SVFG edge. | |
| void | removeSVFGNode (SVFGNode *node) |
| Remove a SVFGNode. | |
| bool | addSVFGEdge (SVFGEdge *edge) |
| Add SVFG edge. | |
| u32_t | getSVFGNodeNum () const |
| Return total SVFG node number. | |
| const DummyVersionPropSVFGNode * | addDummyVersionPropSVFGNode (const NodeID object, const NodeID version) |
| virtual void | writeToFile (const std::string &filename) |
| virtual void | readFile (const std::string &filename) |
| virtual MRVer * | getMRVERFromString (const std::string &input) |
| Public Member Functions inherited from SVF::VFG | |
| VFG (CallGraph *callgraph, VFGK k=FULLSVFG) | |
| Constructor. | |
| virtual | ~VFG () |
| Destructor. | |
| VFGK | getKind () const |
| Get VFG kind. | |
| bool | isPtrOnlySVFG () const |
| Return true if this VFG only contains pointer related SVFGNodes for pointer analysis. | |
| SVFIR * | getPAG () const |
| Return SVFIR. | |
| CallGraph * | getCallGraph () const |
| Return PTACallGraph. | |
| VFGNode * | getVFGNode (NodeID id) const |
| Get a VFG node. | |
| bool | hasVFGNode (NodeID id) const |
| Whether has the VFGNode. | |
| GlobalVFGNodeSet & | getGlobalVFGNodes () |
| Return global stores. | |
| VFGEdge * | getIntraVFGEdge (const VFGNode *src, const VFGNode *dst, VFGEdge::VFGEdgeK kind) |
| Get a SVFG edge according to src and dst. | |
| void | dump (const std::string &file, bool simple=false) |
| Dump graph into dot file. | |
| void | view () |
| Dump graph into dot file. | |
| void | updateCallGraph (PointerAnalysis *pta) |
| Update VFG based on pointer analysis results. | |
| CallSiteID | getCallSiteID (const CallICFGNode *cs, const FunObjVar *func) const |
| Get callsite given a callsiteID. | |
| const CallICFGNode * | getCallSite (CallSiteID id) const |
| const VFGNode * | getDefVFGNode (const ValVar *valVar) const |
| Given a valVar, return its definition site. | |
| bool | hasLHSTopLevPtr (const VFGNode *node) const |
| const SVFVar * | getLHSTopLevPtr (const VFGNode *node) const |
| bool | hasStmtVFGNode (const SVFStmt *svfStmt) const |
| Existence checks for VFGNodes. | |
| bool | hasIntraPHIVFGNode (const SVFVar *svfVar) const |
| bool | hasBinaryOPVFGNode (const SVFVar *svfVar) const |
| bool | hasUnaryOPVFGNode (const SVFVar *svfVar) const |
| bool | hasBranchVFGNode (const SVFVar *svfVar) const |
| bool | hasCmpVFGNode (const SVFVar *svfVar) const |
| bool | hasActualParmVFGNode (const SVFVar *aparm, const CallICFGNode *cs) const |
| bool | hasActualRetVFGNode (const SVFVar *aret) const |
| bool | hasFormalParmVFGNode (const SVFVar *fparm) const |
| bool | hasFormalRetVFGNode (const SVFVar *fret) const |
| StmtVFGNode * | getStmtVFGNode (const SVFStmt *svfStmt) const |
| Get an VFGNode. | |
| IntraPHIVFGNode * | getIntraPHIVFGNode (const SVFVar *svfVar) const |
| BinaryOPVFGNode * | getBinaryOPVFGNode (const SVFVar *svfVar) const |
| UnaryOPVFGNode * | getUnaryOPVFGNode (const SVFVar *svfVar) const |
| BranchVFGNode * | getBranchVFGNode (const SVFVar *svfVar) const |
| CmpVFGNode * | getCmpVFGNode (const SVFVar *svfVar) const |
| ActualParmVFGNode * | getActualParmVFGNode (const SVFVar *aparm, const CallICFGNode *cs) const |
| ActualRetVFGNode * | getActualRetVFGNode (const SVFVar *aret) const |
| FormalParmVFGNode * | getFormalParmVFGNode (const SVFVar *fparm) const |
| FormalRetVFGNode * | getFormalRetVFGNode (const SVFVar *fret) const |
| const FunObjVar * | isFunEntryVFGNode (const VFGNode *node) const |
| Whether a node is function entry VFGNode. | |
| bool | hasBlackHoleConstObjAddrAsDef (const ValVar *valVar) const |
| Whether a SVFVar has a blackhole or const object as its definition. | |
| VFGEdge * | addIntraDirectVFEdge (NodeID srcId, NodeID dstId) |
| VFGEdge * | addCallEdge (NodeID srcId, NodeID dstId, CallSiteID csId) |
| VFGEdge * | addRetEdge (NodeID srcId, NodeID dstId, CallSiteID csId) |
| void | removeVFGEdge (VFGEdge *edge) |
| Remove a SVFG edge. | |
| void | removeVFGNode (VFGNode *node) |
| Remove a VFGNode. | |
| VFGEdge * | hasIntraVFGEdge (VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind) |
| Whether we has a SVFG edge. | |
| VFGEdge * | hasInterVFGEdge (VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId) |
| VFGEdge * | hasThreadVFGEdge (VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind) |
| bool | addVFGEdge (VFGEdge *edge) |
| Add VFG edge. | |
| VFGNodeSet & | getVFGNodes (const FunObjVar *fun) |
| bool | hasVFGNodes (const FunObjVar *fun) const |
| bool | VFGNodes (const FunObjVar *fun) const |
| VFGNodeSet::const_iterator | getVFGNodeBegin (const FunObjVar *fun) const |
| VFGNodeSet::const_iterator | getVFGNodeEnd (const FunObjVar *fun) const |
| Public Member Functions inherited from SVF::GenericGraph< VFGNode, VFGEdge > | |
| GenericGraph () | |
| Constructor. | |
| virtual | ~GenericGraph () |
| Destructor. | |
| void | destroy () |
| Release memory. | |
| iterator | begin () |
| Iterators. | |
| iterator | end () |
| const_iterator | begin () const |
| const_iterator | end () const |
| void | addGNode (NodeID id, NodeType *node) |
| Add a Node. | |
| NodeType * | getGNode (NodeID id) const |
| Get a node. | |
| bool | hasGNode (NodeID id) const |
| Has a node. | |
| void | removeGNode (NodeType *node) |
| Delete a node. | |
| u32_t | getTotalNodeNum () const |
| Get total number of node/edge. | |
| u32_t | getTotalEdgeNum () const |
| void | incNodeNum () |
| Increase number of node/edge. | |
| void | incEdgeNum () |
Protected Member Functions | |
| void | destroy () |
| Clean up memory. | |
| SVFG (std::unique_ptr< MemSSA > mssa, VFGK k) | |
| Constructor. | |
| virtual void | buildSVFG () |
| Start building SVFG. | |
| SVFGEdge * | addIntraIndirectVFEdge (NodeID srcId, NodeID dstId, const NodeBS &cpts) |
| Add indirect def-use edges of a memory region between two statements,. | |
| SVFGEdge * | addCallIndirectVFEdge (NodeID srcId, NodeID dstId, const NodeBS &cpts, CallSiteID csId) |
| SVFGEdge * | addRetIndirectVFEdge (NodeID srcId, NodeID dstId, const NodeBS &cpts, CallSiteID csId) |
| SVFGEdge * | addThreadMHPIndirectVFEdge (NodeID srcId, NodeID dstId, const NodeBS &cpts) |
| SVFGEdge * | addInterIndirectVFCallEdge (const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId) |
| Add inter VF edge from callsite mu to function entry chi. | |
| SVFGEdge * | addInterIndirectVFRetEdge (const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId) |
| Add inter VF edge from function exit mu to callsite chi. | |
| virtual void | connectAInAndFIn (const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &edges) |
| Connect SVFG nodes between caller and callee for indirect call site. | |
| virtual void | connectFOutAndAOut (const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &edges) |
| Connect formal-out and actual-out. | |
| virtual void | getInterVFEdgeAtIndCSFromAPToFP (const ValVar *cs_arg, const ValVar *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &edges) |
| Get inter value flow edges between indirect call site and callee. | |
| virtual void | getInterVFEdgeAtIndCSFromFRToAR (const ValVar *fun_ret, const ValVar *cs_ret, CallSiteID csId, SVFGEdgeSetTy &edges) |
| virtual void | getInterVFEdgeAtIndCSFromAInToFIn (ActualINSVFGNode *actualIn, const FunObjVar *callee, SVFGEdgeSetTy &edges) |
| virtual void | getInterVFEdgeAtIndCSFromFOutToAOut (ActualOUTSVFGNode *actualOut, const FunObjVar *callee, SVFGEdgeSetTy &edges) |
| void | setDef (const ValVar *valVar, const SVFGNode *node) |
| Given a ValVar, set/get its def SVFG node (definition of top level pointers). | |
| NodeID | getDef (const ValVar *valVar) const |
| bool | hasDef (const ValVar *valVar) const |
| void | setDef (const MRVer *mvar, const SVFGNode *node) |
| Given a MSSADef, set/get its def SVFG node (definition of address-taken variables). | |
| NodeID | getDef (const MRVer *mvar) const |
| void | addSVFGNodesForAddrTakenVars () |
| Create SVFG nodes for address-taken variables. | |
| void | connectIndirectSVFGEdges () |
| Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables). | |
| void | connectFromGlobalToProgEntry () |
| Connect indirect SVFG edges from global initializers (store) to main function entry. | |
| virtual void | addSVFGNode (SVFGNode *node, ICFGNode *icfgNode) |
| Add SVFG node. | |
| void | addFormalINSVFGNode (const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId) |
| Add memory Function entry chi SVFG node. | |
| void | addFormalOUTSVFGNode (const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId) |
| Add memory Function return mu SVFG node. | |
| void | addActualINSVFGNode (const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId) |
| Add memory callsite mu SVFG node. | |
| void | addActualOUTSVFGNode (const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId) |
| Add memory callsite chi SVFG node. | |
| void | addIntraMSSAPHISVFGNode (ICFGNode *BlockICFGNode, const Map< u32_t, const MRVer * >::const_iterator opVerBegin, const Map< u32_t, const MRVer * >::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId) |
| Add memory SSA PHI SVFG node. | |
| bool | hasFuncEntryChi (const FunObjVar *func) const |
| Has function for EntryCHI/RetMU/CallCHI/CallMU. | |
| bool | hasFuncRetMu (const FunObjVar *func) const |
| bool | hasCallSiteChi (const CallICFGNode *cs) const |
| bool | hasCallSiteMu (const CallICFGNode *cs) const |
| Protected Member Functions inherited from SVF::VFG | |
| void | destroy () |
| Clean up memory. | |
| void | checkIntraEdgeParents (const VFGNode *srcNode, const VFGNode *dstNode) |
| sanitize Intra edges, verify that both nodes belong to the same function. | |
| VFGEdge * | addInterEdgeFromAPToFP (ActualParmVFGNode *src, FormalParmVFGNode *dst, CallSiteID csId) |
| Add inter VF edge from actual to formal parameters. | |
| VFGEdge * | addInterEdgeFromFRToAR (FormalRetVFGNode *src, ActualRetVFGNode *dst, CallSiteID csId) |
| Add inter VF edge from callee return to callsite receive parameter. | |
| VFGEdge * | addInterEdgeFromAPToFP (NodeID src, NodeID dst, CallSiteID csId) |
| Add inter VF edge from actual to formal parameters. | |
| VFGEdge * | addInterEdgeFromFRToAR (NodeID src, NodeID dst, CallSiteID csId) |
| Add inter VF edge from callee return to callsite receive parameter. | |
| virtual void | connectAParamAndFParam (const ValVar *csArg, const ValVar *funArg, const CallICFGNode *cbn, CallSiteID csId, VFGEdgeSetTy &edges) |
| Connect VFG nodes between caller and callee for indirect call site. | |
| virtual void | connectFRetAndARet (const ValVar *funReturn, const ValVar *csReturn, CallSiteID csId, VFGEdgeSetTy &edges) |
| Connect formal-ret and actual ret. | |
| void | setDef (const ValVar *valVar, const VFGNode *node) |
| Given a ValVar, set/get its def VFG node (definition of top level pointers). | |
| NodeID | getDef (const ValVar *valVar) const |
| bool | hasDef (const ValVar *valVar) const |
| void | addVFGNodes () |
| Create VFG nodes. | |
| virtual SVFStmt::SVFStmtSetTy & | getSVFStmtSet (SVFStmt::PEDGEK kind) |
| Get SVFStmt set. | |
| virtual bool | isInterestedSVFVar (const SVFVar *node) const |
| void | connectDirectVFGEdges () |
| Create edges between VFG nodes within a function. | |
| void | addVFGInterEdges (const CallICFGNode *cs, const FunObjVar *callee) |
| Create edges between VFG nodes across functions. | |
| bool | isPhiCopyEdge (const SVFStmt *copy) const |
| virtual void | addVFGNode (VFGNode *vfgNode, ICFGNode *icfgNode) |
| Add a VFG node. | |
| void | addStmtVFGNode (StmtVFGNode *node, const SVFStmt *svfStmt) |
| Add a VFG node for program statement. | |
| void | addNullPtrVFGNode (const ValVar *svfVar) |
| void | addAddrVFGNode (const AddrStmt *addr) |
| Add an Address VFG node. | |
| void | addCopyVFGNode (const CopyStmt *copy) |
| Add a Copy VFG node. | |
| void | addGepVFGNode (const GepStmt *gep) |
| Add a Gep VFG node. | |
| void | addLoadVFGNode (const LoadStmt *load) |
| Add a Load VFG node. | |
| void | addStoreVFGNode (const StoreStmt *store) |
| void | addActualParmVFGNode (const ValVar *aparm, const CallICFGNode *cs) |
| void | addFormalParmVFGNode (const ValVar *fparm, const FunObjVar *fun, const CallPE *callPE) |
| Add a formal parameter VFG node. | |
| void | addFormalRetVFGNode (const ValVar *uniqueFunRet, const FunObjVar *fun, RetPESet &retPEs) |
| void | addActualRetVFGNode (const ValVar *ret, const CallICFGNode *cs) |
| Add a callsite Receive VFG node. | |
| void | addIntraPHIVFGNode (const MultiOpndStmt *edge) |
| Add an llvm PHI VFG node. | |
| void | addCmpVFGNode (const CmpStmt *edge) |
| Add a Compare VFG node. | |
| void | addBinaryOPVFGNode (const BinaryOPStmt *edge) |
| Add a BinaryOperator VFG node. | |
| void | addUnaryOPVFGNode (const UnaryOPStmt *edge) |
| Add a UnaryOperator VFG node. | |
| void | addBranchVFGNode (const BranchStmt *edge) |
| Add a BranchVFGNode. | |
Friends | |
| class | SVFGBuilder |
| class | SaberSVFGBuilder |
| class | CFLSVFGBuilder |
| class | TaintSVFGBuilder |
| class | DDASVFGBuilder |
| class | MTASVFGBuilder |
| class | RcSvfgBuilder |
Additional Inherited Members | |
| Public Attributes inherited from SVF::GenericGraph< VFGNode, VFGEdge > | |
| u32_t | edgeNum |
| total num of node | |
| u32_t | nodeNum |
| total num of edge | |
Sparse value flow graph Each node stands for a definition, each edge stands for value flow relations
| typedef NodeBS SVF::SVFG::ActualINSVFGNodeSet |
| typedef MemSSA::CALLCHI SVF::SVFG::CALLCHI |
| typedef MemSSA::CALLMU SVF::SVFG::CALLMU |
| typedef Map<const CallICFGNode*, ActualINSVFGNodeSet> SVF::SVFG::CallSiteToActualINsMapTy |
| typedef Map<const CallICFGNode*, ActualOUTSVFGNodeSet> SVF::SVFG::CallSiteToActualOUTsMapTy |
| typedef MemSSA::CHI SVF::SVFG::CHI |
| typedef MemSSA::CHISet SVF::SVFG::CHISet |
| typedef MemSSA::ENTRYCHI SVF::SVFG::ENTRYCHI |
| typedef NodeBS SVF::SVFG::FormalINSVFGNodeSet |
| typedef Map<const FunObjVar*, FormalINSVFGNodeSet> SVF::SVFG::FunctionToFormalINsMapTy |
| typedef Map<const FunObjVar*, FormalOUTSVFGNodeSet> SVF::SVFG::FunctionToFormalOUTsMapTy |
| typedef MemSSA::LOADMU SVF::SVFG::LOADMU |
| typedef Map<const MRVer*, NodeID> SVF::SVFG::MSSAVarToDefMapTy |
| typedef MemSSA::MU SVF::SVFG::MU |
| typedef MemSSA::MUSet SVF::SVFG::MUSet |
| typedef MemSSA::PHISet SVF::SVFG::PHISet |
| typedef MemSSA::RETMU SVF::SVFG::RETMU |
| typedef MemSSA::STORECHI SVF::SVFG::STORECHI |
| typedef Map<const ValVar*, NodeID> SVF::SVFG::ValVarToDefMapTy |
|
inlinevirtual |
Destructor.
|
inlineprotected |
Add memory callsite mu SVFG node.
Definition at line 436 of file SVFG.h.
|
inlineprotected |
Add memory callsite chi SVFG node.
Definition at line 444 of file SVFG.h.
|
protected |
Definition at line 505 of file SVFG.cpp.
|
inline |
Used only for Versioned FSPTA to encode propagation of versions in the worklist (allowing for breadth-first propagation). Returns the created node.
Definition at line 279 of file SVFG.h.
|
inlineprotected |
|
inlineprotected |
Add memory Function return mu SVFG node.
Definition at line 428 of file SVFG.h.
|
protected |
Add inter VF edge from callsite mu to function entry chi.
Definition at line 545 of file SVFG.cpp.
|
protected |
Add inter VF edge from function exit mu to callsite chi.
Add inter VF edge from function exit mu to callsite chi
Definition at line 560 of file SVFG.cpp.
|
protected |
Add indirect def-use edges of a memory region between two statements,.
Definition at line 463 of file SVFG.cpp.
|
inlineprotected |
Add memory SSA PHI SVFG node.
Definition at line 453 of file SVFG.h.
|
protected |
Definition at line 525 of file SVFG.cpp.
|
inline |
Add SVFG node.
Definition at line 413 of file SVFG.h.
|
protected |
Create SVFG nodes for address-taken variables.
set defs for address-taken vars defined at phi/chi/call create corresponding def and use nodes for address-taken vars (a.k.a MRVers) initialize memory SSA phi nodes (phi of address-taken variables)
initialize memory SSA entry chi nodes
initialize memory SSA return mu nodes
initialize memory SSA callsite mu nodes
initialize memory SSA callsite chi nodes
Definition at line 255 of file SVFG.cpp.
|
protected |
Add def-use edges of a memory region between two may-happen-in-parallel statements for multithreaded program
Definition at line 485 of file SVFG.cpp.
|
protectedvirtual |
Start building SVFG.
Build SVFG 1) build SVFG nodes a) statements for top level pointers (SVFStmts) b) operators of address-taken variables (MSSAPHI and MSSACHI) 2) connect SVFG edges a) between two statements (SVFStmts) b) between two memory SSA operators (MSSAPHI MSSAMU and MSSACHI)
Reimplemented in SVF::SVFGOPT.
Definition at line 228 of file SVFG.cpp.
|
inline |
|
inlineprotectedvirtual |
Connect SVFG nodes between caller and callee for indirect call site.
Connect actual-in and formal-in
Reimplemented in SVF::SVFGOPT.
Definition at line 309 of file SVFG.h.
|
virtual |
Connect SVFG nodes between caller and callee for indirect call site.
Connect actual params/return to formal params/return for top-level variables. Also connect indirect actual in/out and formal in/out.
Reimplemented from SVF::VFG.
Definition at line 658 of file SVFG.cpp.
|
inlineprotectedvirtual |
Connect formal-out and actual-out.
Reimplemented in SVF::SVFGOPT.
Definition at line 316 of file SVFG.h.
|
protected |
Connect indirect SVFG edges from global initializers (store) to main function entry.
Connect indirect SVFG edges from global initializers (store) to main function entry
connect this store to main function entry
add indirect value flow edge
Definition at line 428 of file SVFG.cpp.
|
protected |
Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables).
There's no need to connect actual out node to its definition site in the same function.
Definition at line 330 of file SVFG.cpp.
|
protected |
Clean up memory.
Memory has been cleaned up at GenericGraph
| void SVFG::dump | ( | const std::string & | file, |
| bool | simple = false ) |
Dump graph into dot file.
Dump SVFG
Definition at line 576 of file SVFG.cpp.
|
inline |
Get SVFGNode set.
|
inline |
Definition at line 397 of file SVFG.h.
| const Set< const SVFGNode * > SVFG::getDefSiteOfObjVar | ( | const ObjVar * | obj, |
| const SVFGNode * | vNode ) const |
Given an ObjVar and its use-site SVFGNode, find the definition-site ICFGNode by following incoming IndirectSVFGEdges whose pts contains the ObjVar (asserts unique definition)
Given an ObjVar and its use-site SVFGNode, find the definition-site SVFGNodes by following incoming IndirectSVFGEdges whose pts contains the ObjVar (asserts unique definition)
Definition at line 772 of file SVFG.cpp.
Given a ValVar and its SVFGNode, find the definition-site SVFGNode by following incoming direct VFGEdges (asserts unique definition)
Given a ValVar, find the definition-site SVFGNode by following incoming direct VFGEdges (asserts unique definition)
Definition at line 765 of file SVFG.cpp.
Given a valVar, return its definition site.
|
inline |
|
inline |
|
inlineprotectedvirtual |
Definition at line 344 of file SVFG.h.
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
Definition at line 354 of file SVFG.h.
|
inlineprotectedvirtual |
| void SVFG::getInterVFEdgesForIndirectCallSite | ( | const CallICFGNode * | callICFGNode, |
| const FunObjVar * | callee, | ||
| SVFGEdgeSetTy & | edges ) |
Get all inter value flow edges of a indirect call site.
Get all inter value flow edges at this indirect call site, including call and return edges.
Definition at line 584 of file SVFG.cpp.
|
virtual |
Definition at line 430 of file SVFGReadWrite.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
| const Set< const SVFGNode * > SVFG::getUseSitesOfObjVar | ( | const ObjVar * | obj, |
| const SVFGNode * | vNode ) const |
Given an ObjVar and its def-site SVFGNodes, find all use-site SVFGNodes by following outgoing IndirectSVFGEdges whose pts contains the ObjVar
Given an ObjVar and its def-site SVFGNode, find all use-site SVFGNodes by following outgoing IndirectSVFGEdges whose pts contains the ObjVar
Definition at line 807 of file SVFG.cpp.
Given a ValVar, find all use-site SVFGNodes by following outgoing direct VFGEdges from its unique definition SVFGNode
Given a ValVar, find all use-site ICFGNodes by following outgoing direct VFGEdges from its unique definition SVFGNode
Definition at line 790 of file SVFG.cpp.
|
inline |
Has a SVFGNode.
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Given a valVar, return whether it has definition site.
|
inline |
|
inline |
|
inlineprotected |
Has function for EntryCHI/RetMU/CallCHI/CallMU.
|
inlineprotected |
|
inline |
| const CallICFGNode * SVFG::isCallSiteRetSVFGNode | ( | const SVFGNode * | node | ) | const |
Whether a node is callsite return SVFGNode.
Whether this is an callsite return SVFGNode (actual return, actual out)
Definition at line 732 of file SVFG.cpp.
Whether a node is function entry SVFGNode.
Whether this is an function entry SVFGNode (formal parameter, formal In)
Definition at line 706 of file SVFG.cpp.
| void SVFG::performStat | ( | ) |
|
virtual |
Definition at line 206 of file SVFGReadWrite.cpp.
|
inline |
|
inline |
Given a MSSADef, set/get its def SVFG node (definition of address-taken variables).
Definition at line 384 of file SVFG.h.
Given a ValVar, set/get its def SVFG node (definition of top level pointers).
Definition at line 368 of file SVFG.h.
|
virtual |
Definition at line 46 of file SVFGReadWrite.cpp.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |