|
enum | MemPartition { Distinct
, IntraDisjoint
, InterDisjoint
} |
|
typedef MemRegion::Condition | Condition |
| define condition here changes needed if we add new type
|
|
typedef MSSAMU< Condition > | MU |
|
typedef RetMU< Condition > | RETMU |
|
typedef LoadMU< Condition > | LOADMU |
|
typedef CallMU< Condition > | CALLMU |
|
typedef MSSACHI< Condition > | CHI |
|
typedef EntryCHI< Condition > | ENTRYCHI |
|
typedef StoreCHI< Condition > | STORECHI |
|
typedef CallCHI< Condition > | CALLCHI |
|
typedef MSSAPHI< Condition > | PHI |
|
typedef MSSADEF | MDEF |
|
typedef Set< MU * > | MUSet |
|
typedef Set< CHI * > | CHISet |
|
typedef Set< PHI * > | PHISet |
|
typedef MRGenerator::MRSet | MRSet |
| Define mem region set.
|
|
typedef std::vector< const MemRegion * > | MRVector |
|
typedef Map< const LoadStmt *, MUSet > | LoadToMUSetMap |
|
typedef Map< const StoreStmt *, CHISet > | StoreToChiSetMap |
|
typedef Map< const CallICFGNode *, MUSet > | CallSiteToMUSetMap |
|
typedef Map< const CallICFGNode *, CHISet > | CallSiteToCHISetMap |
|
typedef OrderedMap< const SVFBasicBlock *, PHISet > | BBToPhiSetMap |
|
typedef Map< const SVFFunction *, CHISet > | FunToEntryChiSetMap |
| Map from fun to its entry chi set and return mu set.
|
|
typedef Map< const SVFFunction *, MUSet > | FunToReturnMuSetMap |
|
typedef std::vector< const SVFBasicBlock * > | BBList |
| For phi insertion.
|
|
typedef Map< const SVFBasicBlock *, MRSet > | BBToMRSetMap |
|
typedef Map< const MemRegion *, BBList > | MemRegToBBsMap |
|
typedef Map< const MemRegion *, std::vector< MRVer * > > | MemRegToVerStackMap |
| For SSA renaming.
|
|
typedef Map< const MemRegion *, MRVERSION > | MemRegToCounterMap |
|
typedef SVFIR::SVFStmtList | SVFStmtList |
| SVFIR edge list.
|
|
|
LoadToMUSetMap | load2MuSetMap |
|
StoreToChiSetMap | store2ChiSetMap |
|
CallSiteToMUSetMap | callsiteToMuSetMap |
|
CallSiteToCHISetMap | callsiteToChiSetMap |
|
BBToPhiSetMap | bb2PhiSetMap |
|
FunToEntryChiSetMap | funToEntryChiSetMap |
|
FunToReturnMuSetMap | funToReturnMuSetMap |
|
MemRegToVerStackMap | mr2VerStackMap |
|
MemRegToCounterMap | mr2CounterMap |
|
MRSet | usedRegs |
| The following three set are used for prune SSA phi insertion.
|
|
MemRegToBBsMap | reg2BBMap |
| Maps memory region to its basic block.
|
|
MRSet | varKills |
| Collect memory regions whose definition killed.
|
|
std::vector< std::unique_ptr< MRVer > > | usedMRVers |
|
void | destroy () |
| Release the memory.
|
|
MRVer * | newSSAName (const MemRegion *mr, MSSADEF *def) |
| Get a new SSA name of a memory region.
|
|
MRVer * | getTopStackVer (const MemRegion *mr) |
| Get the last version of the SSA ver of memory region.
|
|
void | collectRegUses (const MemRegion *mr) |
| Collect region uses and region defs according to mus/chis, in order to insert phis.
|
|
void | collectRegDefs (const SVFBasicBlock *bb, const MemRegion *mr) |
|
void | AddLoadMU (const SVFBasicBlock *bb, const LoadStmt *load, const MRSet &mrSet) |
| Add methods for mus/chis/phis.
|
|
void | AddStoreCHI (const SVFBasicBlock *bb, const StoreStmt *store, const MRSet &mrSet) |
|
void | AddCallSiteMU (const CallICFGNode *cs, const MRSet &mrSet) |
|
void | AddCallSiteCHI (const CallICFGNode *cs, const MRSet &mrSet) |
|
void | AddMSSAPHI (const SVFBasicBlock *bb, const MRSet &mrSet) |
|
void | AddLoadMU (const SVFBasicBlock *bb, const LoadStmt *load, const MemRegion *mr) |
|
void | AddStoreCHI (const SVFBasicBlock *bb, const StoreStmt *store, const MemRegion *mr) |
|
void | AddCallSiteMU (const CallICFGNode *cs, const MemRegion *mr) |
|
void | AddCallSiteCHI (const CallICFGNode *cs, const MemRegion *mr) |
|
void | AddMSSAPHI (const SVFBasicBlock *bb, const MemRegion *mr) |
|
void | RenameMuSet (const MUSet &muSet) |
| Rename mus, chis and phis.
|
|
void | RenameChiSet (const CHISet &chiSet, MRVector &memRegs) |
| Rename chi set.
|
|
void | RenamePhiRes (const PHISet &phiSet, MRVector &memRegs) |
| Rename result (LHS) of phis.
|
|
void | RenamePhiOps (const PHISet &phiSet, u32_t pos, MRVector &) |
| Rename operands (RHS) of phis.
|
|
| MemSSA (BVDataPTAImpl *p, bool ptrOnlyMSSA) |
| Constructor.
|
|
SVFIR * | getPAG () |
| Return SVFIR.
|
|
BVDataPTAImpl * | getPTA () const |
| Return PTA.
|
|
MRGenerator * | getMRGenerator () |
| Return MRGenerator.
|
|
virtual void | buildMemSSA (const SVFFunction &fun) |
| We start from here.
|
|
void | performStat () |
| Perform statistics.
|
|
bool | hasMU (const PAGEdge *inst) const |
| Has mu/chi methods.
|
|
bool | hasCHI (const PAGEdge *inst) const |
|
bool | hasMU (const CallICFGNode *cs) const |
|
bool | hasCHI (const CallICFGNode *cs) const |
|
bool | hasFuncEntryChi (const SVFFunction *fun) const |
| Has function entry chi or return mu.
|
|
bool | hasReturnMu (const SVFFunction *fun) const |
|
CHISet & | getFuncEntryChiSet (const SVFFunction *fun) |
|
MUSet & | getReturnMuSet (const SVFFunction *fun) |
|
MUSet & | getMUSet (const LoadStmt *ld) |
| Get methods of mu/chi/phi.
|
|
CHISet & | getCHISet (const StoreStmt *st) |
|
MUSet & | getMUSet (const CallICFGNode *cs) |
|
CHISet & | getCHISet (const CallICFGNode *cs) |
|
PHISet & | getPHISet (const SVFBasicBlock *bb) |
|
bool | hasPHISet (const SVFBasicBlock *bb) const |
|
LoadToMUSetMap & | getLoadToMUSetMap () |
|
StoreToChiSetMap & | getStoreToChiSetMap () |
|
FunToReturnMuSetMap & | getFunToRetMuSetMap () |
|
FunToEntryChiSetMap & | getFunToEntryChiSetMap () |
|
CallSiteToMUSetMap & | getCallSiteToMuSetMap () |
|
CallSiteToCHISetMap & | getCallSiteToChiSetMap () |
|
BBToPhiSetMap & | getBBToPhiSetMap () |
|
u32_t | getLoadMuNum () const |
| Stat methods.
|
|
u32_t | getStoreChiNum () const |
|
u32_t | getFunEntryChiNum () const |
|
u32_t | getFunRetMuNum () const |
|
u32_t | getCallSiteMuNum () const |
|
u32_t | getCallSiteChiNum () const |
|
u32_t | getBBPhiNum () const |
|
void | dumpMSSA (OutStream &Out=SVFUtil::outs()) |
| Print Memory SSA.
|
|
Definition at line 52 of file MemSSA.h.