OpenADFortTk (including Open64 and OpenAnalysis references)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
OA::RefOp Class Referenceabstract

#include <MemRefExpr.hpp>

Inheritance diagram for OA::RefOp:
Inheritance graph
Collaboration diagram for OA::RefOp:
Collaboration graph

Public Member Functions

 RefOp (MemRefType mrType, OA_ptr< MemRefExpr > mre)
 
 RefOp (RefOp &mre)
 copy constructor More...
 
virtual ~RefOp ()
 
bool isaRefOp ()
 
SymHandle getBaseSym ()
 
virtual std::string typeString ()
 
OA_ptr< MemRefExprgetBase ()
 
OA_ptr< MemRefExprgetMemRefExpr ()
 Return the MRE that decorating this object. More...
 
virtual OA_ptr< MemRefExprcomposeWith (OA_ptr< MemRefExpr > mre)=0
 Will make this Refop wrap the given mre and return the result. More...
 
virtual void output (IRHandlesIRInterface &ir)
 
- Public Member Functions inherited from OA::MemRefExpr
 MemRefExpr (MemRefType mrType)
 
 MemRefExpr (MemRefExpr &mre)
 copy constructor More...
 
virtual ~MemRefExpr ()
 
virtual void acceptVisitor (MemRefExprVisitor &pVisitor)=0
 
virtual OA_ptr< MemRefExprclone ()=0
 
virtual bool isaNamed ()
 
virtual bool isaUnnamed ()
 
virtual bool isaUnknown ()
 
virtual bool isaDeref ()
 
virtual bool isaAddressOf ()
 
virtual bool isaSubSetRef ()
 
virtual bool isaIdxAccess ()
 
virtual bool isaIdxExprAccess ()
 
virtual bool isaFieldAccess ()
 
MemRefType getMRType ()
 whether USE/DEF MemRefExpr More...
 
bool isDef ()
 is this a def mem ref More...
 
bool isUse ()
 is this a use mem ref More...
 
bool isDefUse ()
 is this a defuse mem ref More...
 
bool isUseDef ()
 is this a usedef mem ref More...
 
void setMemRefType (MemRefExpr::MemRefType mrType)
 specify the memory reference type More...
 
virtual bool operator< (MemRefExpr &other)
 an ordering for locations, needed for use within STL containers More...
 
virtual bool operator== (MemRefExpr &other)
 
bool operator!= (MemRefExpr &other)
 
std::string toString (MemRefType)
 
virtual void dump (std::ostream &os, OA_ptr< IRHandlesIRInterface > pIR)
 
virtual void dump (std::ostream &os, IRHandlesIRInterface &pIR)
 
virtual void dump (std::ostream &os)
 
virtual int getOrder ()
 
- Public Member Functions inherited from OA::Annotation
 Annotation ()
 
virtual ~Annotation ()
 

Private Attributes

OA_ptr< MemRefExprmMRE
 

Additional Inherited Members

- Public Types inherited from OA::MemRefExpr
enum  MemRefType { USE, DEF, USEDEF, DEFUSE }
 
- Static Public Member Functions inherited from OA::Annotation
static void configOutput (OA_ptr< OutputBuilder > ob)
 
- Static Protected Attributes inherited from OA::Annotation
static OA_ptr< OutputBuildersOutBuild
 

Detailed Description

The RefOp implements a decorator pattern for memory references. If we decorate a memory reference with a RefOp it represents either a dereference or referencing a subset of a location (eg. field access or array access).

Definition at line 387 of file MemRefExpr.hpp.

Constructor & Destructor Documentation

OA::RefOp::RefOp ( MemRefType  mrType,
OA_ptr< MemRefExpr mre 
)
inline

Definition at line 390 of file MemRefExpr.hpp.

OA::RefOp::RefOp ( RefOp mre)
inline

copy constructor

Definition at line 395 of file MemRefExpr.hpp.

virtual OA::RefOp::~RefOp ( )
inlinevirtual

Definition at line 397 of file MemRefExpr.hpp.

Member Function Documentation

virtual OA_ptr<MemRefExpr> OA::RefOp::composeWith ( OA_ptr< MemRefExpr mre)
pure virtual

Will make this Refop wrap the given mre and return the result.

Implemented in OA::SubSetRef, OA::Deref, and OA::AddressOf.

OA_ptr< MemRefExpr > OA::RefOp::getBase ( )

iterate up through every decorating MRE until we find the base and return it.

Definition at line 339 of file MemRefExpr.cpp.

References OA::OA_ptr< T >::convert(), and mMRE.

Here is the call graph for this function:

SymHandle OA::RefOp::getBaseSym ( )

iterate up every decorating MRE until we find the base, then return the symbol handle for this base.

Definition at line 323 of file MemRefExpr.cpp.

References OA::OA_ptr< T >::convert(), OA::NamedRef::getSymHandle(), and mMRE.

Here is the call graph for this function:

OA_ptr<MemRefExpr> OA::RefOp::getMemRefExpr ( )
inline

Return the MRE that decorating this object.

Definition at line 418 of file MemRefExpr.hpp.

References mMRE.

Referenced by OA::AddressOf::dump(), OA::Deref::dump(), OA::SubSetRef::dump(), OA::IdxAccess::dump(), OA::IdxExprAccess::dump(), OA::FieldAccess::dump(), Open64IRInterface::findAllMemRefsAndMapToMemRefExprs(), OA::AddressOf::operator<(), OA::Deref::operator<(), OA::SubSetRef::operator<(), OA::IdxAccess::operator<(), OA::IdxExprAccess::operator<(), OA::FieldAccess::operator<(), OA::AddressOf::operator==(), OA::Deref::operator==(), OA::SubSetRef::operator==(), OA::IdxAccess::operator==(), OA::IdxExprAccess::operator==(), OA::FieldAccess::operator==(), NotationGenerator::outputMemRefExpr(), OA::equivalentMREsVisitor::visitAddressOf(), OA::DataFlow::ConstructMREVisitor::visitAddressOf(), Open64IRInterface::FindUseMREVisitor::visitAddressOf(), OA::Alias::RecordMREsVisitor::visitAddressOf(), OA::Alias::SymHandleCollector::visitDeref(), OA::DataFlow::FormalFinderVisitor::visitDeref(), OA::Alias::InvisibleLocationVisitor::visitDeref(), OA::equivalentMREsVisitor::visitDeref(), OA::Alias::VisibleBaseVisitor::visitDeref(), OA::DataFlow::ConstructMREVisitor::visitDeref(), Open64IRInterface::FindUseMREVisitor::visitDeref(), OA::Alias::RecordMREsVisitor::visitDeref(), OA::Alias::FixedLocationVisitor::visitFieldAccess(), OA::Alias::InvisibleLocationVisitor::visitFieldAccess(), OA::Alias::OuterRefOpVisitor::visitFieldAccess(), OA::Alias::InvisibleLocationVisitor::visitIdxAccess(), OA::Alias::OuterRefOpVisitor::visitIdxAccess(), OA::Alias::InvisibleLocationVisitor::visitIdxExprAccess(), OA::Alias::SymHandleCollector::visitSubSetRef(), OA::DUG::CreateLocationVisitor::visitSubSetRef(), OA::Alias::FixedLocationVisitor::visitSubSetRef(), OA::Alias::CreateLocationVisitor::visitSubSetRef(), OA::DataFlow::FormalFinderVisitor::visitSubSetRef(), OA::Alias::InvisibleLocationVisitor::visitSubSetRef(), OA::equivalentMREsVisitor::visitSubSetRef(), OA::Alias::VisibleBaseVisitor::visitSubSetRef(), OA::DataFlow::ConstructMREVisitor::visitSubSetRef(), Open64IRInterface::FindUseMREVisitor::visitSubSetRef(), and OA::Alias::RecordMREsVisitor::visitSubSetRef().

bool OA::RefOp::isaRefOp ( )
inlinevirtual

Reimplemented from OA::MemRefExpr.

Definition at line 402 of file MemRefExpr.hpp.

void OA::RefOp::output ( IRHandlesIRInterface ir)
virtual
virtual std::string OA::RefOp::typeString ( )
inlinevirtual

Reimplemented from OA::MemRefExpr.

Reimplemented in OA::FieldAccess, OA::IdxExprAccess, OA::IdxAccess, OA::SubSetRef, OA::Deref, and OA::AddressOf.

Definition at line 411 of file MemRefExpr.hpp.

Member Data Documentation

OA_ptr<MemRefExpr> OA::RefOp::mMRE
private

Definition at line 438 of file MemRefExpr.hpp.

Referenced by getBase(), getBaseSym(), getMemRefExpr(), and output().


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