Static Value-Flow Analysis
|
#include <MemPartition.h>
Protected Member Functions | |
virtual void | partitionMRs () |
Partition regions. | |
virtual void | getMRsForLoad (MRSet &aliasMRs, const NodeBS &cpts, const SVFFunction *) |
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 SVFFunction *fun) |
Get memory regions to be inserted at a load statement. | |
void | createDisjointMR (const SVFFunction *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 SVFFunction *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 SVFFunction *fun) |
Get all aliased mem regions from function fun according to cpts. | |
virtual void | modRefAnalysis (PTACallGraphNode *callGraphNode, WorkList &worklist) |
Mod-Ref analysis for callsite invoking this callGraphNode. | |
virtual bool | handleCallsiteModRef (NodeBS &mod, NodeBS &ref, const CallICFGNode *cs, const SVFFunction *fun) |
Get Mod-Ref of a callee function. | |
void | addCPtsToStore (NodeBS &cpts, const StoreStmt *st, const SVFFunction *fun) |
Add cpts to store/load. | |
void | addCPtsToLoad (NodeBS &cpts, const LoadStmt *ld, const SVFFunction *fun) |
void | addCPtsToCallSiteRefs (NodeBS &cpts, const CallICFGNode *cs) |
void | addCPtsToCallSiteMods (NodeBS &cpts, const CallICFGNode *cs) |
bool | hasCPtsList (const SVFFunction *fun) const |
PointsToList & | getPointsToList (const SVFFunction *fun) |
FunToPointsTosMap & | getFunToPointsToList () |
void | addRefSideEffectOfFunction (const SVFFunction *fun, const NodeBS &refs) |
Add/Get methods for side-effect of functions and callsites. | |
void | addModSideEffectOfFunction (const SVFFunction *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. | |
const NodeBS & | getRefSideEffectOfFunction (const SVFFunction *fun) |
Get indirect refs of a function. | |
const NodeBS & | getModSideEffectOfFunction (const SVFFunction *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 139 of file MemPartition.h.
|
inline |
Definition at line 142 of file MemPartition.h.
|
inline |
Definition at line 145 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 157 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 164 of file MemPartition.h.