|
Static Value-Flow Analysis
|
#include <MemPartition.h>
Public Member Functions | |
| InterDisjointMRG (BVDataPTAImpl *p, bool ptrOnly) | |
| ~InterDisjointMRG () | |
| Public Member Functions inherited from SVF::IntraDisjointMRG | |
| IntraDisjointMRG (BVDataPTAImpl *p, bool ptrOnly) | |
| ~IntraDisjointMRG () | |
| Public Member Functions inherited from SVF::MRGenerator | |
| MRSet & | getMRSet () |
| const NodeBS & | getRepPointsTo (const NodeBS &cpts) const |
| Get superset cpts set. | |
| const MemRegion * | getMR (const NodeBS &cpts) const |
| Get a memory region according to cpts. | |
| u32_t | getMRNum () const |
| virtual | ~MRGenerator () |
| Destructor. | |
| virtual void | generateMRs () |
| Start generating memory regions. | |
| const FunObjVar * | getFunction (const PAGEdge *pagEdge) const |
| Get the function which SVFIR Edge located. | |
| MRSet & | getFunMRSet (const FunObjVar *fun) |
| Get Memory Region set. | |
| MRSet & | getLoadMRSet (const LoadStmt *load) |
| MRSet & | getStoreMRSet (const StoreStmt *store) |
| bool | hasRefMRSet (const CallICFGNode *cs) |
| bool | hasModMRSet (const CallICFGNode *cs) |
| MRSet & | getCallSiteRefMRSet (const CallICFGNode *cs) |
| MRSet & | getCallSiteModMRSet (const CallICFGNode *cs) |
| bool | hasSVFStmtList (const ICFGNode *icfgNode) |
| Whether this instruction has SVFIR Edge. | |
| SVFStmtList & | getSVFStmtsFromInst (const ICFGNode *node) |
| Given an instruction, get all its the PAGEdge (statement) in sequence. | |
| NodeBS | getModInfoForCall (const CallICFGNode *cs) |
| getModRefInfo APIs | |
| NodeBS | getRefInfoForCall (const CallICFGNode *cs) |
| ModRefInfo | getModRefInfo (const CallICFGNode *cs) |
| ModRefInfo | getModRefInfo (const CallICFGNode *cs, const SVFVar *V) |
| ModRefInfo | getModRefInfo (const CallICFGNode *cs1, const CallICFGNode *cs2) |
Protected Member Functions | |
| virtual void | partitionMRs () |
| Partition regions. | |
| virtual void | getMRsForLoad (MRSet &aliasMRs, const NodeBS &cpts, const FunObjVar *) |
| Protected Member Functions inherited from SVF::IntraDisjointMRG | |
| void | getMRsForLoadFromInterList (MRSet &mrs, const NodeBS &cpts, const PointsToList &inters) |
| virtual void | getMRsForCallSiteRef (MRSet &aliasMRs, const NodeBS &cpts, const FunObjVar *fun) |
| Get memory regions to be inserted at a load statement. | |
| void | createDisjointMR (const FunObjVar *func, const NodeBS &cpts) |
| Create disjoint memory region. | |
| void | computeIntersections (const NodeBS &cpts, PointsToList &inters) |
| Compute intersections between cpts and computed cpts intersections before. | |
| Protected Member Functions inherited from SVF::MRGenerator | |
| MRGenerator (BVDataPTAImpl *p, bool ptrOnly) | |
| void | createMR (const FunObjVar *fun, const NodeBS &cpts) |
| Generate a memory region and put in into functions which use it. | |
| void | collectGlobals () |
| Collect all global variables for later escape analysis. | |
| virtual void | collectModRefForLoadStore () |
| Generate regions for loads/stores. | |
| virtual void | collectModRefForCall () |
| Generate regions for calls/rets. | |
| virtual void | updateAliasMRs () |
| Update aliased regions for loads/stores/callsites. | |
| virtual void | sortPointsTo (const NodeBS &cpts) |
| Given a condition pts, insert into cptsToRepCPtsMap for region generation. | |
| virtual bool | isAliasedMR (const NodeBS &cpts, const MemRegion *mr) |
| Whether a region is aliased with a conditional points-to. | |
| virtual void | getAliasMemRegions (MRSet &aliasMRs, const NodeBS &cpts, const FunObjVar *fun) |
| Get all aliased mem regions from function fun according to cpts. | |
| virtual void | modRefAnalysis (CallGraphNode *callGraphNode, WorkList &worklist) |
| Mod-Ref analysis for callsite invoking this callGraphNode. | |
| virtual bool | handleCallsiteModRef (NodeBS &mod, NodeBS &ref, const CallICFGNode *cs, const FunObjVar *fun) |
| Get Mod-Ref of a callee function. | |
| virtual void | refineCallsiteModRef (NodeBS &, NodeBS &, const CallICFGNode *, const FunObjVar *) |
| virtual void | propagateAdditionalModRef (CallGraphNode *, WorkList &) |
| void | addCPtsToStore (NodeBS &cpts, const StoreStmt *st, const FunObjVar *fun) |
| Add cpts to store/load. | |
| void | addCPtsToLoad (NodeBS &cpts, const LoadStmt *ld, const FunObjVar *fun) |
| void | addCPtsToCallSiteRefs (NodeBS &cpts, const CallICFGNode *cs) |
| void | addCPtsToCallSiteMods (NodeBS &cpts, const CallICFGNode *cs) |
| bool | hasCPtsList (const FunObjVar *fun) const |
| PointsToList & | getPointsToList (const FunObjVar *fun) |
| FunToPointsTosMap & | getFunToPointsToList () |
| void | addRefSideEffectOfFunction (const FunObjVar *fun, const NodeBS &refs) |
| Add/Get methods for side-effect of functions and callsites. | |
| void | addModSideEffectOfFunction (const FunObjVar *fun, const NodeBS &mods) |
| Add indirect def an memory object in the function. | |
| bool | addRefSideEffectOfCallSite (const CallICFGNode *cs, const NodeBS &refs) |
| Add indirect uses an memory object in the function. | |
| bool | addModSideEffectOfCallSite (const CallICFGNode *cs, const NodeBS &mods) |
| Add indirect def an memory object in the function. | |
| bool | addUnfilteredModSideEffectOfCallSite (const CallICFGNode *cs, const NodeBS &mods) |
| Add indirect def to a callsite without applying call-argument filtering. | |
| CallGraph * | getCallGraph () const |
| const NodeBS & | getRefSideEffectOfFunction (const FunObjVar *fun) |
| Get indirect refs of a function. | |
| const NodeBS & | getModSideEffectOfFunction (const FunObjVar *fun) |
| Get indirect mods of a function. | |
| const NodeBS & | getRefSideEffectOfCallSite (const CallICFGNode *cs) |
| Get indirect refs of a callsite. | |
| const NodeBS & | getModSideEffectOfCallSite (const CallICFGNode *cs) |
| Get indirect mods of a callsite. | |
| bool | hasRefSideEffectOfCallSite (const CallICFGNode *cs) |
| Has indirect refs of a callsite. | |
| bool | hasModSideEffectOfCallSite (const CallICFGNode *cs) |
| Has indirect mods of a callsite. | |
Private Attributes | |
| PointsToList | inters |
Create memory regions which don't have intersections with each other in the whole program scope.
Definition at line 140 of file MemPartition.h.
|
inline |
Definition at line 143 of file MemPartition.h.
|
inline |
Definition at line 146 of file MemPartition.h.
|
inlineprotectedvirtual |
Get memory regions to be inserted at a load statement.
| cpts | The conditional points-to set of load statement. |
| fun | The function being analyzed. |
| mrs | Memory region set contains all possible target memory regions. |
Reimplemented from SVF::IntraDisjointMRG.
Definition at line 158 of file MemPartition.h.
|
protectedvirtual |
Partition regions.
Generate disjoint cpts.
Create memory regions.
Reimplemented from SVF::IntraDisjointMRG.
Definition at line 269 of file MemPartition.cpp.
|
private |
Definition at line 165 of file MemPartition.h.