#include <ManagerFIAlias.hpp>


Public Member Functions | |
| ManagerFIAlias (OA_ptr< AliasIRInterface > _ir) | |
| ~ManagerFIAlias () | |
| OA_ptr< UnionFindUniverse > | performFIAlias (OA_ptr< IRProcIterator > procIter, FIAliasImplement implement=ALL_PROCS) |
| OA_ptr< IRProcIterator > | getAnalyzedProcIter () |
| void | mergeSubSetRefs (OA_ptr< UnionFindUniverse > ufset) |
Protected Member Functions | |
| void | recordMRE (OA_ptr< MemRefExpr > mre, ProcHandle proc, MemRefHandle memref) |
| maps mre to the given proc and memref, also assigns mre a unique ID | |
| void | recordMRE (OA_ptr< MemRefExpr > mre, ProcHandle proc) |
| OA_ptr< MemRefExpr > | createDeref (OA_ptr< MemRefExpr > mre) |
| creates a dereferenced version of the given mre | |
| std::set< OA_ptr< MemRefExpr > > | allMemRefExprsInSameSet (OA_ptr< MemRefExpr > pMRE, OA_ptr< UnionFindUniverse > ufset) |
| void | initMemRefExprs (ProcHandle proc) |
| records all memory reference expressions in a given procedure | |
| void | initMemRefExprs (OA_ptr< IRProcIterator > procIter) |
| records all memory reference expressions in all procedures | |
| void | addProcToWorkList (ProcHandle proc) |
| increment versions of FIAlias use a worklist. this does not, so this is a noop. | |
| void | doPhase1Iteration (StmtHandle stmt, ProcHandle currProc, OA_ptr< UnionFindUniverse > ufset) |
| perform Ryder phase 1 on stmt. | |
| bool | doPhase2Iteration (OA_ptr< UnionFindUniverse > ufset, std::map< int, std::map< OA_ptr< MemRefExpr >, int > > &map) |
| perform Ryder phase 2 | |
| void | doPhase3Iteration (CallHandle call, ProcHandle currProc, OA_ptr< UnionFindUniverse > ufset, std::map< int, std::map< OA_ptr< MemRefExpr >, int > > &map) |
| perform Ryder phase 3 on the callsite call invoked from caller currProc. | |
| OA_ptr< UnionFindUniverse > | performFIAliasAllProcs (OA_ptr< IRProcIterator > procIter) |
| Perform FIAlias using Ryder's original algorithm that analyzes all procs. | |
| OA_ptr< UnionFindUniverse > | performFIAliasReachableProcs (OA_ptr< IRProcIterator > procIter) |
| Perform FIAlias using a modification that only visits reachable procs. | |
Protected Attributes | |
| OA_ptr< AliasIRInterface > | mIR |
| std::map< OA_ptr< MemRefExpr > , int > | mMREToID |
| int | mCount |
| std::map< OA_ptr< MemRefExpr > , std::set< MemRefHandle > > | mMREToMemRefHandles |
| std::map< OA_ptr< MemRefExpr > , std::set< ProcHandle > > | mMREToProcs |
| std::map< MemRefHandle, ProcHandle > | mMemRefHandleToProc |
| std::map< ProcHandle, std::set < SymHandle > > | mProcToFormalSet |
| set of formal symbols associated with each procedure | |
| std::set< ProcHandle > | mAnalyzedProcs |
| A set of reachable procs that have been analyzed. | |
Private Member Functions | |
| void | outputMREsInSet (int setID, OA_ptr< UnionFindUniverse > ufset, std::map< int, std::map< OA_ptr< MemRefExpr >, int > > &map) |
| void | merge (int part1, int part2, OA_ptr< UnionFindUniverse > ufset, std::map< int, std::map< OA_ptr< MemRefExpr >, int > > &map) |
Private Attributes | |
| std::set< ProcHandle > | mWorklist |
| The list of procedures to be analyzed. | |
| FIAliasImplement | mImplement |
| The flavor of FIAlias--examine all procs or only reachable procs. | |
Friends | |
| class | RecordMREsVisitor |
Creates a union-find universe holding sets of aliased MREs. Uses the FIAlias algorithm described in the Ryder2001 journal paper. Note that ManagerFIAlias no longer satisfies the Alias::Interface.hpp interface. Returning a concrete representation of alias relations (via performAnalysis) is now left to subclasses of ManagerFIAlias, such as ManagerFIAliasEquivSets and ManagerFIAliasAliasMap.
Definition at line 189 of file ManagerFIAlias.hpp.
| OA::Alias::ManagerFIAlias::ManagerFIAlias | ( | OA_ptr< AliasIRInterface > | _ir | ) |
Definition at line 138 of file ManagerFIAlias.cpp.
References OA::Alias::debug, and OA_DEBUG_CTRL_MACRO.
| OA::Alias::ManagerFIAlias::~ManagerFIAlias | ( | ) | [inline] |
Definition at line 193 of file ManagerFIAlias.hpp.
| void OA::Alias::ManagerFIAlias::addProcToWorkList | ( | ProcHandle | proc | ) | [protected] |
increment versions of FIAlias use a worklist. this does not, so this is a noop.
Only incremental versions of FIAlias (e.g., FIAliasReachable) use a worklist. Therefore, this is a noop by default.
Definition at line 146 of file ManagerFIAlias.cpp.
References mAnalyzedProcs, mImplement, mWorklist, and OA::Alias::REACHABLE_PROCS.
Referenced by doPhase3Iteration(), and performFIAliasReachableProcs().
| std::set< OA_ptr< MemRefExpr > > OA::Alias::ManagerFIAlias::allMemRefExprsInSameSet | ( | OA_ptr< MemRefExpr > | pMRE, | |
| OA_ptr< UnionFindUniverse > | ufset | |||
| ) | [protected] |
Definition at line 1057 of file ManagerFIAlias.cpp.
References OA::Alias::debug, OA::OA_ptr< T >::dump(), and mMREToID.
Referenced by doPhase3Iteration().

| OA_ptr< MemRefExpr > OA::Alias::ManagerFIAlias::createDeref | ( | OA_ptr< MemRefExpr > | mre | ) | [protected] |
creates a dereferenced version of the given mre
Definition at line 1025 of file ManagerFIAlias.cpp.
References OA::MemRefExpr::USE.
Referenced by doPhase1Iteration(), and doPhase3Iteration().
| void OA::Alias::ManagerFIAlias::doPhase1Iteration | ( | StmtHandle | stmt, | |
| ProcHandle | currProc, | |||
| OA_ptr< UnionFindUniverse > | ufset | |||
| ) | [protected] |
perform Ryder phase 1 on stmt.
Definition at line 408 of file ManagerFIAlias.cpp.
References createDeref(), OA::Alias::debug, mIR, mMREToID, and recordMRE().
Referenced by performFIAliasAllProcs(), and performFIAliasReachableProcs().

| bool OA::Alias::ManagerFIAlias::doPhase2Iteration | ( | OA_ptr< UnionFindUniverse > | ufset, | |
| std::map< int, std::map< OA_ptr< MemRefExpr >, int > > & | map | |||
| ) | [protected] |
perform Ryder phase 2
Definition at line 453 of file ManagerFIAlias.cpp.
References OA::OA_ptr< T >::convert(), OA::Alias::debug, OA::Alias::OuterRefOpVisitor::getOuterRefOp(), merge(), mIR, mMREToID, and OA::OA_ptr< T >::ptrEqual().
Referenced by performFIAliasAllProcs(), and performFIAliasReachableProcs().

| void OA::Alias::ManagerFIAlias::doPhase3Iteration | ( | CallHandle | call, | |
| ProcHandle | currProc, | |||
| OA_ptr< UnionFindUniverse > | ufset, | |||
| std::map< int, std::map< OA_ptr< MemRefExpr >, int > > & | map | |||
| ) | [protected] |
perform Ryder phase 3 on the callsite call invoked from caller currProc.
Definition at line 522 of file ManagerFIAlias.cpp.
References addProcToWorkList(), allMemRefExprsInSameSet(), OA::OA_ptr< T >::convert(), createDeref(), OA::Alias::debug, OA::MemRefExpr::DEF, merge(), mIR, mMREToID, and recordMRE().
Referenced by performFIAliasAllProcs(), and performFIAliasReachableProcs().

| OA_ptr< IRProcIterator > OA::Alias::ManagerFIAlias::getAnalyzedProcIter | ( | ) |
Definition at line 29 of file ManagerFIAlias.cpp.
References mAnalyzedProcs.
Referenced by OA::Alias::ManagerFIAliasAliasMap::performAnalysis(), and performFIAlias().
| void OA::Alias::ManagerFIAlias::initMemRefExprs | ( | OA_ptr< IRProcIterator > | procIter | ) | [protected] |
records all memory reference expressions in all procedures
Definition at line 1251 of file ManagerFIAlias.cpp.
References initMemRefExprs().

| void OA::Alias::ManagerFIAlias::initMemRefExprs | ( | ProcHandle | proc | ) | [protected] |
records all memory reference expressions in a given procedure
Definition at line 1143 of file ManagerFIAlias.cpp.
References OA::Alias::debug, OA::MemRefExpr::DEF, OA::OA_ptr< T >::dump(), mIR, mProcToFormalSet, and recordMRE().
Referenced by initMemRefExprs(), performFIAliasAllProcs(), and performFIAliasReachableProcs().

| void OA::Alias::ManagerFIAlias::merge | ( | int | part1, | |
| int | part2, | |||
| OA_ptr< UnionFindUniverse > | ufset, | |||
| std::map< int, std::map< OA_ptr< MemRefExpr >, int > > & | map | |||
| ) | [private] |
An implementation of the merge function in the Ryder2001 description of FIAlias.
Definition at line 1265 of file ManagerFIAlias.cpp.
References OA::Alias::debug.
Referenced by doPhase2Iteration(), and doPhase3Iteration().
| void OA::Alias::ManagerFIAlias::mergeSubSetRefs | ( | OA_ptr< UnionFindUniverse > | ufset | ) |
| void OA::Alias::ManagerFIAlias::outputMREsInSet | ( | int | setID, | |
| OA_ptr< UnionFindUniverse > | ufset, | |||
| std::map< int, std::map< OA_ptr< MemRefExpr >, int > > & | map | |||
| ) | [private] |
Definition at line 1315 of file ManagerFIAlias.cpp.
| OA_ptr< UnionFindUniverse > OA::Alias::ManagerFIAlias::performFIAlias | ( | OA_ptr< IRProcIterator > | procIter, | |
| FIAliasImplement | implement = ALL_PROCS | |||
| ) |
Definition at line 664 of file ManagerFIAlias.cpp.
References OA::Alias::ALL_PROCS, OA::Alias::debug, getAnalyzedProcIter(), mImplement, performFIAliasAllProcs(), and performFIAliasReachableProcs().
Referenced by OA::Alias::ManagerFIAliasEquivSets::performAnalysis(), and OA::Alias::ManagerFIAliasAliasMap::performAnalysis().

| OA_ptr< UnionFindUniverse > OA::Alias::ManagerFIAlias::performFIAliasAllProcs | ( | OA_ptr< IRProcIterator > | procIter | ) | [protected] |
Perform FIAlias using Ryder's original algorithm that analyzes all procs.
Definition at line 690 of file ManagerFIAlias.cpp.
References OA::Alias::debug, doPhase1Iteration(), doPhase2Iteration(), doPhase3Iteration(), OA::OA_ptr< T >::dump(), initMemRefExprs(), mAnalyzedProcs, mCount, and mIR.
Referenced by performFIAlias().

| OA_ptr< UnionFindUniverse > OA::Alias::ManagerFIAlias::performFIAliasReachableProcs | ( | OA_ptr< IRProcIterator > | procIter | ) | [protected] |
Perform FIAlias using a modification that only visits reachable procs.
Definition at line 804 of file ManagerFIAlias.cpp.
References addProcToWorkList(), OA::Alias::debug, doPhase1Iteration(), doPhase2Iteration(), doPhase3Iteration(), OA::OA_ptr< T >::dump(), initMemRefExprs(), mAnalyzedProcs, mIR, and mWorklist.
Referenced by performFIAlias().

| void OA::Alias::ManagerFIAlias::recordMRE | ( | OA_ptr< MemRefExpr > | mre, | |
| ProcHandle | proc | |||
| ) | [protected] |
Private method for associating an mre with a particular procedure.
Definition at line 975 of file ManagerFIAlias.cpp.
References OA::Alias::debug, mCount, mIR, mMREToID, and mMREToProcs.
| void OA::Alias::ManagerFIAlias::recordMRE | ( | OA_ptr< MemRefExpr > | mre, | |
| ProcHandle | proc, | |||
| MemRefHandle | memref | |||
| ) | [protected] |
maps mre to the given proc and memref, also assigns mre a unique ID
Private method for associating an mre with a particular procedure and MemRefHandle. Also associates MemRefHandle with given procedure.
Definition at line 998 of file ManagerFIAlias.cpp.
References OA::Alias::debug, OA::OA_ptr< T >::dump(), mCount, mIR, mMemRefHandleToProc, mMREToID, mMREToMemRefHandles, and mMREToProcs.
Referenced by doPhase1Iteration(), doPhase3Iteration(), initMemRefExprs(), OA::Alias::RecordMREsVisitor::visitDeref(), OA::Alias::RecordMREsVisitor::visitNamedRef(), OA::Alias::RecordMREsVisitor::visitSubSetRef(), OA::Alias::RecordMREsVisitor::visitUnknownRef(), and OA::Alias::RecordMREsVisitor::visitUnnamedRef().

friend class RecordMREsVisitor [friend] |
Definition at line 265 of file ManagerFIAlias.hpp.
std::set<ProcHandle> OA::Alias::ManagerFIAlias::mAnalyzedProcs [protected] |
A set of reachable procs that have been analyzed.
Definition at line 255 of file ManagerFIAlias.hpp.
Referenced by addProcToWorkList(), getAnalyzedProcIter(), performFIAliasAllProcs(), and performFIAliasReachableProcs().
int OA::Alias::ManagerFIAlias::mCount [protected] |
Definition at line 210 of file ManagerFIAlias.hpp.
Referenced by performFIAliasAllProcs(), and recordMRE().
The flavor of FIAlias--examine all procs or only reachable procs.
Definition at line 278 of file ManagerFIAlias.hpp.
Referenced by addProcToWorkList(), and performFIAlias().
OA_ptr<AliasIRInterface> OA::Alias::ManagerFIAlias::mIR [protected] |
Definition at line 204 of file ManagerFIAlias.hpp.
Referenced by OA::Alias::ManagerFIAliasAliasMap::buildAliasMaps(), OA::Alias::ManagerFIAliasEquivSets::buildEquivSets(), doPhase1Iteration(), doPhase2Iteration(), doPhase3Iteration(), initMemRefExprs(), outputMREsInSet(), performFIAliasAllProcs(), performFIAliasReachableProcs(), and recordMRE().
std::map<MemRefHandle,ProcHandle> OA::Alias::ManagerFIAlias::mMemRefHandleToProc [protected] |
Definition at line 221 of file ManagerFIAlias.hpp.
Referenced by OA::Alias::ManagerFIAliasAliasMap::buildAliasMaps(), OA::Alias::ManagerFIAliasEquivSets::buildEquivSets(), and recordMRE().
std::map<OA_ptr<MemRefExpr>,int> OA::Alias::ManagerFIAlias::mMREToID [protected] |
Definition at line 208 of file ManagerFIAlias.hpp.
Referenced by allMemRefExprsInSameSet(), OA::Alias::ManagerFIAliasAliasMap::buildAliasMaps(), OA::Alias::ManagerFIAliasEquivSets::buildEquivSets(), doPhase1Iteration(), doPhase2Iteration(), doPhase3Iteration(), outputMREsInSet(), and recordMRE().
std::map<OA_ptr<MemRefExpr>,std::set<MemRefHandle> > OA::Alias::ManagerFIAlias::mMREToMemRefHandles [protected] |
Definition at line 214 of file ManagerFIAlias.hpp.
Referenced by recordMRE().
std::map<OA_ptr<MemRefExpr>,std::set<ProcHandle> > OA::Alias::ManagerFIAlias::mMREToProcs [protected] |
Definition at line 217 of file ManagerFIAlias.hpp.
Referenced by OA::Alias::ManagerFIAliasEquivSets::buildEquivSets(), and recordMRE().
std::map<ProcHandle,std::set<SymHandle> > OA::Alias::ManagerFIAlias::mProcToFormalSet [protected] |
set of formal symbols associated with each procedure
Definition at line 224 of file ManagerFIAlias.hpp.
Referenced by OA::Alias::ManagerFIAliasAliasMap::buildAliasMaps(), OA::Alias::ManagerFIAliasEquivSets::buildEquivSets(), and initMemRefExprs().
std::set<ProcHandle> OA::Alias::ManagerFIAlias::mWorklist [private] |
The list of procedures to be analyzed.
Definition at line 275 of file ManagerFIAlias.hpp.
Referenced by addProcToWorkList(), and performFIAliasReachableProcs().
1.6.1