Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends

OA::Alias::ManagerFIAlias Class Reference

#include <ManagerFIAlias.hpp>

Inheritance diagram for OA::Alias::ManagerFIAlias:
Inheritance graph
[legend]
Collaboration diagram for OA::Alias::ManagerFIAlias:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ManagerFIAlias (OA_ptr< AliasIRInterface > _ir)
 ~ManagerFIAlias ()
OA_ptr< UnionFindUniverseperformFIAlias (OA_ptr< IRProcIterator > procIter, FIAliasImplement implement=ALL_PROCS)
OA_ptr< IRProcIteratorgetAnalyzedProcIter ()
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< MemRefExprcreateDeref (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< UnionFindUniverseperformFIAliasAllProcs (OA_ptr< IRProcIterator > procIter)
 Perform FIAlias using Ryder's original algorithm that analyzes all procs.
OA_ptr< UnionFindUniverseperformFIAliasReachableProcs (OA_ptr< IRProcIterator > procIter)
 Perform FIAlias using a modification that only visits reachable procs.

Protected Attributes

OA_ptr< AliasIRInterfacemIR
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< ProcHandlemAnalyzedProcs
 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< ProcHandlemWorklist
 The list of procedures to be analyzed.
FIAliasImplement mImplement
 The flavor of FIAlias--examine all procs or only reachable procs.

Friends

class RecordMREsVisitor

Detailed Description

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.


Constructor & Destructor Documentation

OA::Alias::ManagerFIAlias::ManagerFIAlias ( OA_ptr< AliasIRInterface _ir  ) 

Definition at line 135 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.


Member Function Documentation

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 143 of file ManagerFIAlias.cpp.

References mAnalyzedProcs, mImplement, mWorklist, and OA::Alias::REACHABLE_PROCS.

std::set< OA_ptr< MemRefExpr > > OA::Alias::ManagerFIAlias::allMemRefExprsInSameSet ( OA_ptr< MemRefExpr pMRE,
OA_ptr< UnionFindUniverse ufset 
) [protected]

Definition at line 1054 of file ManagerFIAlias.cpp.

References OA::Alias::debug, OA::OA_ptr< T >::dump(), and mMREToID.

Here is the call graph for this function:

OA_ptr< MemRefExpr > OA::Alias::ManagerFIAlias::createDeref ( OA_ptr< MemRefExpr mre  )  [protected]

creates a dereferenced version of the given mre

Definition at line 1022 of file ManagerFIAlias.cpp.

References OA::MemRefExpr::USE.

Referenced by doPhase1Iteration().

void OA::Alias::ManagerFIAlias::doPhase1Iteration ( StmtHandle  stmt,
ProcHandle  currProc,
OA_ptr< UnionFindUniverse ufset 
) [protected]

perform Ryder phase 1 on stmt.

Definition at line 405 of file ManagerFIAlias.cpp.

References createDeref(), OA::Alias::debug, mIR, mMREToID, and recordMRE().

Here is the call graph for this function:

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 450 of file ManagerFIAlias.cpp.

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 519 of file ManagerFIAlias.cpp.

OA_ptr< IRProcIterator > OA::Alias::ManagerFIAlias::getAnalyzedProcIter (  ) 

Definition at line 26 of file ManagerFIAlias.cpp.

References OA::Alias::AnalyzedProcIterator::mIt.

void OA::Alias::ManagerFIAlias::initMemRefExprs ( OA_ptr< IRProcIterator procIter  )  [protected]

records all memory reference expressions in all procedures

Definition at line 1248 of file ManagerFIAlias.cpp.

void OA::Alias::ManagerFIAlias::initMemRefExprs ( ProcHandle  proc  )  [protected]

records all memory reference expressions in a given procedure

Definition at line 1140 of file ManagerFIAlias.cpp.

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 1262 of file ManagerFIAlias.cpp.

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 1312 of file ManagerFIAlias.cpp.

OA_ptr< UnionFindUniverse > OA::Alias::ManagerFIAlias::performFIAlias ( OA_ptr< IRProcIterator procIter,
FIAliasImplement  implement = ALL_PROCS 
)

Definition at line 661 of file ManagerFIAlias.cpp.

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 687 of file ManagerFIAlias.cpp.

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 801 of file ManagerFIAlias.cpp.

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 972 of file ManagerFIAlias.cpp.

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 995 of file ManagerFIAlias.cpp.

Referenced by doPhase1Iteration().


Friends And Related Function Documentation

friend class RecordMREsVisitor [friend]

Definition at line 265 of file ManagerFIAlias.hpp.


Member Data Documentation

A set of reachable procs that have been analyzed.

Definition at line 255 of file ManagerFIAlias.hpp.

Referenced by addProcToWorkList().

Definition at line 210 of file ManagerFIAlias.hpp.

The flavor of FIAlias--examine all procs or only reachable procs.

Definition at line 278 of file ManagerFIAlias.hpp.

Referenced by addProcToWorkList().

Definition at line 204 of file ManagerFIAlias.hpp.

Referenced by doPhase1Iteration().

Definition at line 221 of file ManagerFIAlias.hpp.

Definition at line 208 of file ManagerFIAlias.hpp.

Referenced by allMemRefExprsInSameSet(), and doPhase1Iteration().

Definition at line 214 of file ManagerFIAlias.hpp.

Definition at line 217 of file ManagerFIAlias.hpp.

set of formal symbols associated with each procedure

Definition at line 224 of file ManagerFIAlias.hpp.

The list of procedures to be analyzed.

Definition at line 275 of file ManagerFIAlias.hpp.

Referenced by addProcToWorkList().


The documentation for this class was generated from the following files: