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 *fun) |
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 Member Functions | |
PtsToSubPtsMap & | getPtsSubSetMap (const SVFFunction *func) |
PointsToList & | getIntersList (const SVFFunction *func) |
const PtsToSubPtsMap & | getPtsSubSetMap (const SVFFunction *func) const |
Private Attributes | |
FunToPtsMap | funcToPtsMap |
FunToInterMap | funcToInterMap |
Additional Inherited Members | |
Protected Attributes inherited from SVF::MRGenerator | |
MRSet | memRegSet |
A set of All memory regions. | |
PtsToRepPtsSetMap | cptsToRepCPtsMap |
Map a condition pts to its rep conditional pts (super set points-to) | |
Create memory regions which don't have intersections with each other in the same function scope.
Definition at line 73 of file MemPartition.h.
Definition at line 78 of file MemPartition.h.
Definition at line 77 of file MemPartition.h.
Definition at line 76 of file MemPartition.h.
|
inline |
Definition at line 80 of file MemPartition.h.
|
inline |
Definition at line 83 of file MemPartition.h.
|
protected |
Compute intersections between cpts and computed cpts intersections before.
Compute intersections between cpts and computed cpts intersections before.
Definition at line 152 of file MemPartition.cpp.
|
protected |
Create disjoint memory region.
Create memory regions for each points-to target.
Definition at line 232 of file MemPartition.cpp.
|
inlineprivate |
Definition at line 120 of file MemPartition.h.
|
protectedvirtual |
Get memory regions to be inserted at a load statement.
Get memory regions to be inserted at a load statement. Just process as getMRsForLoad().
Reimplemented from SVF::MRGenerator.
Definition at line 262 of file MemPartition.cpp.
|
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::MRGenerator.
Reimplemented in SVF::InterDisjointMRG.
Definition at line 96 of file MemPartition.h.
|
protected |
Definition at line 241 of file MemPartition.cpp.
|
inlineprivate |
Definition at line 115 of file MemPartition.h.
|
inlineprivate |
Definition at line 125 of file MemPartition.h.
|
protectedvirtual |
Partition regions.
Create memory regions.
Reimplemented from SVF::MRGenerator.
Reimplemented in SVF::InterDisjointMRG.
Definition at line 122 of file MemPartition.cpp.
|
private |
Definition at line 133 of file MemPartition.h.
|
private |
Definition at line 132 of file MemPartition.h.