OpenADFortTk (including Open64 and OpenAnalysis references)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Open64IRInterface Class Reference

#include <Open64IRInterface.hpp>

Inheritance diagram for Open64IRInterface:
Inheritance graph
Collaboration diagram for Open64IRInterface:
Collaboration graph

Classes

class  FindUseMREVisitor
 

Public Member Functions

 Open64IRInterface ()
 
virtual ~Open64IRInterface ()
 
std::string toString (const OA::ProcHandle h)
 
std::string toString (const OA::StmtHandle h)
 
std::string toString (const OA::ExprHandle h)
 
std::string toString (const OA::OpHandle h)
 
std::string toString (const OA::MemRefHandle h)
 
std::string toString (const OA::SymHandle h)
 
std::string toString (const OA::ConstSymHandle h)
 
std::string toString (const OA::ConstValHandle h)
 
std::string toString (const OA::CallHandle h)
 
void dump (OA::StmtHandle stmt, std::ostream &os)
 
void dump (OA::MemRefHandle h, std::ostream &os)
 
void dump (OA::SymHandle h, std::ostream &os)
 Given a statement, pretty-print it to the output stream os. More...
 
OA::OA_ptr< OA::IRStmtIteratorgetStmtIterator (OA::ProcHandle h)
 
OA::OA_ptr< OA::IRStmtIteratorgetPtrAsgnIterator (OA::ProcHandle h)
 
OA::OA_ptr
< OA::IRCallsiteIterator
getCallsites (OA::StmtHandle h)
 Return an iterator over all of the callsites in a given stmt. More...
 
OA::SymHandle getProcSymHandle (OA::ProcHandle h)
 Given a ProcHandle, return its SymHandle. More...
 
OA::OA_ptr
< OA::IRCallsiteParamIterator
getCallsiteParams (OA::CallHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
procBody (OA::ProcHandle h)
 
bool returnStatementsAllowed ()
 Are return statements allowed. More...
 
OA::CFG::IRStmtType getCFGStmtType (OA::StmtHandle h)
 Given a statement, return its CFG::IRStmtType. More...
 
OA::StmtLabel getLabel (OA::StmtHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
getFirstInCompound (OA::StmtHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
loopBody (OA::StmtHandle h)
 
OA::StmtHandle loopHeader (OA::StmtHandle h)
 
OA::StmtHandle getLoopIncrement (OA::StmtHandle h)
 Given a loop statement, return the increment statement. More...
 
bool loopIterationsDefinedAtEntry (OA::StmtHandle h)
 
OA::ExprHandle getLoopCondition (OA::StmtHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
trueBody (OA::StmtHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
elseBody (OA::StmtHandle h)
 
OA::ExprHandle getCondition (OA::StmtHandle h)
 
int numMultiCases (OA::StmtHandle h)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
multiBody (OA::StmtHandle h, int bodyIndex)
 
bool isBreakImplied (OA::StmtHandle multicond)
 
bool isCatchAll (OA::StmtHandle h, int bodyIndex)
 
OA::OA_ptr
< OA::IRRegionStmtIterator
getMultiCatchall (OA::StmtHandle h)
 
OA::ExprHandle getSMultiCondition (OA::StmtHandle h, int bodyIndex)
 
OA::ExprHandle getSMultiTest (OA::StmtHandle h)
 
OA::StmtLabel getTargetLabel (OA::StmtHandle h, int n)
 
int numUMultiTargets (OA::StmtHandle h)
 
OA::StmtLabel getUMultiTargetLabel (OA::StmtHandle h, int targetIndex)
 
OA::StmtLabel getUMultiCatchallLabel (OA::StmtHandle h)
 
OA::ExprHandle getUMultiCondition (OA::StmtHandle h, int targetIndex)
 
OA::ExprHandle getUMultiTest (OA::StmtHandle h)
 
OA::OA_ptr
< OA::MemRefExprIterator
getUseMREs (OA::StmtHandle stmt)
 Get an Iterator over Use MREs. More...
 
OA::OA_ptr
< OA::MemRefExprIterator
getDefMREs (OA::StmtHandle stmt)
 Get an Iterator over Def MREs. More...
 
OA::OA_ptr
< OA::MemRefExprIterator
getDiffUseMREs (OA::StmtHandle stmt)
 Get an Iterator over DiffUse MREs. More...
 
OA::OA_ptr
< OA::MemRefExprIterator
getMemRefExprIterator (OA::MemRefHandle h)
 
OA::SymHandle getSymHandle (OA::ProcHandle h)
 Given a procedure return associated SymHandle. More...
 
OA::OA_ptr
< OA::Alias::PtrAssignPairStmtIterator
getPtrAssignStmtPairIterator (OA::StmtHandle stmt)
 
OA::OA_ptr
< OA::Alias::ParamBindPtrAssignIterator
getParamBindPtrAssignIterator (OA::CallHandle call)
 
OA::SymHandle getFormalSym (OA::ProcHandle, int)
 
OA::OA_ptr< OA::MemRefExprgetCallMemRefExpr (OA::CallHandle h)
 
OA::OA_ptr< OA::LocationgetLocation (OA::ProcHandle p, OA::SymHandle s)
 
OA::OA_ptr
< OA::MemRefExprIterator
getIndepMemRefExprIter (OA::ProcHandle h)
 Return an iterator over all independent MemRefExpr for given proc. More...
 
OA::OA_ptr
< OA::MemRefExprIterator
getDepMemRefExprIter (OA::ProcHandle h)
 Return an iterator over all dependent MemRefExpr for given proc. More...
 
int getSizeInBytes (OA::SymHandle h)
 given a symbol return the size in bytes of that symbol More...
 
OA::OA_ptr< OA::IRSymIteratorgetRefSymIterator (OA::ProcHandle h)
 
OA::OA_ptr
< OA::MemRefHandleIterator
getAllMemRefs (OA::StmtHandle stmt)
 
OA::OA_ptr
< OA::MemRefHandleIterator
getDefMemRefs (OA::StmtHandle stmt)
 
OA::OA_ptr
< OA::MemRefHandleIterator
getUseMemRefs (OA::StmtHandle stmt)
 
OA::OA_ptr
< OA::AssignPairIterator
getAssignPairIterator (OA::StmtHandle h)
 
OA::OA_ptr
< OA::ExprHandleIterator
getExprHandleIterator (OA::StmtHandle stmt)
 
OA::OA_ptr
< OA::ConstValBasicInterface
evalOp (OA::OpHandle op, OA::OA_ptr< OA::ConstValBasicInterface > operand1, OA::OA_ptr< OA::ConstValBasicInterface > operand2)
 
OA::OA_ptr
< OA::ConstValBasicInterface
getConstValBasic (OA::ConstSymHandle c)
 
OA::OA_ptr
< OA::ConstValBasicInterface
getConstValBasic (OA::ConstValHandle c)
 
OA::StmtHandle getStmtFromMemRef (OA::MemRefHandle h)
 Return a stmt handle for the given memory reference handle. More...
 
std::string toString (OA::OA_ptr< OA::ConstValBasicInterface > cvPtr)
 Temporary routine for testing MPICFG // given a ConstValBasicInterface, print out value if any. More...
 
OA::OA_ptr
< OA::ConstValBasicInterface
getConstValBasic (unsigned int val)
 Temporary routine for testing ReachConsts. More...
 
int returnOpEnumValInt (OA::OpHandle op)
 temporary routine to find things out More...
 
OA::Linearity::LinOpType getLinearityOpType (OA::OpHandle op)
 get the operation type and returns a LinOpType More...
 
OA::OA_ptr
< OA::SideEffect::SideEffectStandard
getSideEffect (OA::ProcHandle callerProc, OA::SymHandle calleeSym)
 
OA::OA_ptr< OA::ExprTreegetExprTree (OA::ExprHandle h)
 Given an ExprHandle, return an ExprTree*. More...
 
bool isParam (OA::SymHandle)
 returns true if given symbol is a parameter More...
 
OA::ProcHandle getProcHandle (OA::SymHandle sym)
 Given the callee symbol returns the callee proc handle. More...
 
OA::OA_ptr< OA::MemRefExprconvertSymToMemRefExpr (OA::SymHandle sym)
 
OA::OA_ptr
< OA::MemRefHandleIterator
getMemRefIterator (OA::StmtHandle h)
 
OA::SymHandle getFormalForActual (OA::ProcHandle caller, OA::CallHandle call, OA::ProcHandle callee, OA::ExprHandle param)
 return the formal parameter that an actual parameter is associated with. More...
 
OA::SymHandle getSymHandle (OA::CallHandle h)
 
bool isRefParam (OA::SymHandle)
 returns true if given symbol is a pass by reference parameter More...
 
- Public Member Functions inherited from OA::IRHandlesIRInterface
virtual ~IRHandlesIRInterface ()
 
- Public Member Functions inherited from OA::CallGraph::CallGraphIRInterface
 CallGraphIRInterface ()
 
virtual ~CallGraphIRInterface ()
 
- Public Member Functions inherited from OA::CFG::CFGIRInterfaceDefault
 CFGIRInterfaceDefault ()
 
virtual ~CFGIRInterfaceDefault ()
 
virtual bool parallelWithSuccessor (StmtHandle h)
 
virtual int numberOfDelaySlots (StmtHandle h)
 
virtual void printLeaf (LeafHandle vh, std::ostream &os)
 
- Public Member Functions inherited from OA::CFG::CFGIRInterface
 CFGIRInterface ()
 
virtual ~CFGIRInterface ()
 
- Public Member Functions inherited from OA::Alias::AliasIRInterfaceDefault
 AliasIRInterfaceDefault ()
 
virtual ~AliasIRInterfaceDefault ()
 
OA_ptr< IRStmtIteratorgetUnnamedDynAllocStmtIterator (ProcHandle h)
 
- Public Member Functions inherited from OA::Alias::AliasIRInterface
 AliasIRInterface ()
 
virtual ~AliasIRInterface ()
 
- Public Member Functions inherited from OA::ReachDefs::ReachDefsIRInterface
 ReachDefsIRInterface ()
 
virtual ~ReachDefsIRInterface ()
 
- Public Member Functions inherited from OA::UDDUChains::UDDUChainsIRInterface
 UDDUChainsIRInterface ()
 
virtual ~UDDUChainsIRInterface ()
 
- Public Member Functions inherited from OA::ReachConsts::ReachConstsIRInterface
 ReachConstsIRInterface ()
 
virtual ~ReachConstsIRInterface ()
 
- Public Member Functions inherited from OA::EvalToConstVisitorIRInterface
 EvalToConstVisitorIRInterface ()
 
virtual ~EvalToConstVisitorIRInterface ()
 
- Public Member Functions inherited from OA::DataFlow::CalleeToCallerVisitorIRInterface
 CalleeToCallerVisitorIRInterface ()
 
virtual ~CalleeToCallerVisitorIRInterface ()
 
- Public Member Functions inherited from OA::XAIF::XAIFIRInterface
 XAIFIRInterface ()
 
virtual ~XAIFIRInterface ()
 
- Public Member Functions inherited from OA::SideEffect::SideEffectIRInterface
 SideEffectIRInterface ()
 
virtual ~SideEffectIRInterface ()
 
- Public Member Functions inherited from OA::SideEffect::InterSideEffectIRInterfaceDefault
 InterSideEffectIRInterfaceDefault ()
 
virtual ~InterSideEffectIRInterfaceDefault ()
 
- Public Member Functions inherited from OA::SideEffect::InterSideEffectIRInterface
 InterSideEffectIRInterface ()
 
virtual ~InterSideEffectIRInterface ()
 
- Public Member Functions inherited from OA::DataFlow::CallGraphDFProblemIRInterface
 CallGraphDFProblemIRInterface ()
 
virtual ~CallGraphDFProblemIRInterface ()
 
- Public Member Functions inherited from OA::DataFlow::ParamBindingsIRInterface
 ParamBindingsIRInterface ()
 
virtual ~ParamBindingsIRInterface ()
 
- Public Member Functions inherited from OA::ICFG::ICFGIRInterface
 ICFGIRInterface ()
 
virtual ~ICFGIRInterface ()
 
- Public Member Functions inherited from OA::Activity::ActivityIRInterface
 ActivityIRInterface ()
 
virtual ~ActivityIRInterface ()
 
- Public Member Functions inherited from OA::Linearity::LinearityIRInterface
 LinearityIRInterface ()
 
virtual ~LinearityIRInterface ()
 
- Public Member Functions inherited from OA::DUG::DUGIRInterface
 DUGIRInterface ()
 
virtual ~DUGIRInterface ()
 

Static Public Member Functions

static void DumpWN (WN *wn, ostream &os)
 
static void setIgnoreBlackBoxRoutines ()
 
static bool ignoreBlackBoxRoutines ()
 
static bool haveDefinition (WN *wn)
 
static void initContextState (PU_Info *pu_forest)
 User is responsible for doing this. It should not be part of. More...
 
static void setContext (OA::IRHandle h, OA::ProcHandle proc)
 

Private Member Functions

void findAllMemRefsAndMapToMemRefExprs (OA::StmtHandle stmt, WN *wn, unsigned lvl)
 
void createAndMapNamedRef (OA::StmtHandle stmt, WN *wn, ST *st, OA::MemRefExpr::MemRefType hty)
 
void createAndMapDerefs (OA::StmtHandle stmt, WN *wn, WN *subMemRef)
 
bool isPassByReference (WN *)
 
STfindBaseSymbol (WN *)
 
void currentProc (OA::ProcHandle p)
 
OA::MemRefHandle findTopMemRefHandle (WN *wn)
 
bool ExprTree_hack_for_MPI (OA::MemRefHandle h, OA::OA_ptr< OA::ExprTree > tree)
 
OA::OA_ptr< OA::ExprTreecreateExprTree (WN *wn)
 
OA::OA_ptr< OA::ExprTree::NodecreateExprTree (OA::OA_ptr< OA::ExprTree > tree, WN *wn)
 
OA::OA_ptr
< OA::ConstValBasicInterface
getConstValBasicFromST (ST *st)
 

Static Private Member Functions

static const char * createCharStarForST (ST *)
 use this to appropriately get a string for a symbol More...
 
static void DumpWNMemRef (WN *wn, ostream &os)
 
static void DumpWNLeaf (WN *wn, ostream &os)
 
static void DumpWNMemRefLeaf (WN *wn, ostream &os)
 
static void initProcContext (PU_Info *pu_forest, Open64IRProcIterator &procIter)
 
static void setCurrentProcToProcContext (OA::IRHandle h)
 
static OA::ProcHandle getCurrentProcContext ()
 
static void setCurrentProcContext (OA::ProcHandle)
 
static fully_qualified_name create_fqn (OA::SymHandle sym)
 
static void initCallSymToProcMap (Open64IRProcIterator &procIter)
 
static void initProcToSymRefSetMap (Open64IRProcIterator &procIter)
 

Static Private Attributes

static std::map
< OA::StmtHandle, std::set
< OA::MemRefHandle > > 
sStmt2allMemRefsMap
 
static std::map
< OA::StmtHandle, std::set
< OA::ExprHandle > > 
mStmt2allExprsMap
 
static std::map
< OA::MemRefHandle,
OA::StmtHandle
sMemRef2StmtMap
 
static std::map
< OA::MemRefHandle, set
< OA::OA_ptr< OA::MemRefExpr > > > 
sMemref2mreSetMap
 
static std::map< OA::SymHandle,
OA::ProcHandle
sCallSymToProc
 
static std::map
< fully_qualified_name,
std::set< OA::SymHandle > > 
sGlobalVarMap
 
static std::map
< fully_qualified_name,
std::map< OA::ProcHandle,
OA::SymHandle > > 
sFQNToProcToLocalSymMap
 
static std::map< OA::SymHandle,
fully_qualified_name
sSymToFQNMap
 
static std::map< OA::SymHandle,
std::string
sSymToVarStringMap
 
static std::map
< OA::ExprHandle,
OA::CallHandle
sParamToCallMap
 
static std::map
< OA::ProcHandle, std::set
< OA::SymHandle > > 
sProcToSymRefSetMap
 
static std::map< OA::IRHandle,
OA::ProcHandle
sProcContext
 
static PU_InfosProgContext = NULL
 
static bool sContextInit = false
 
static bool ourIgnoreBlackBoxRoutines =false
 

Friends

class Open64IRProcIterator
 
class Open64IRMemRefIterator
 
class Open64IRExprHandleIterator
 
class InitContextVisitor
 

Detailed Description

Definition at line 585 of file Open64IRInterface.hpp.

Constructor & Destructor Documentation

Open64IRInterface::Open64IRInterface ( )

Definition at line 563 of file Open64IRInterface.cpp.

Open64IRInterface::~Open64IRInterface ( )
virtual

Definition at line 568 of file Open64IRInterface.cpp.

Member Function Documentation

OA::OA_ptr< OA::MemRefExpr > Open64IRInterface::convertSymToMemRefExpr ( OA::SymHandle  sym)
virtual

Implements OA::DUG::DUGIRInterface.

Definition at line 2991 of file Open64IRInterface.cpp.

References isRefParam(), and OA::MemRefExpr::USE.

Referenced by getDepMemRefExprIter(), getIndepMemRefExprIter(), and whirl2xaif::PUXlationContext::isActiveSym().

Here is the call graph for this function:

fully_qualified_name Open64IRInterface::create_fqn ( OA::SymHandle  sym)
staticprivate

only call if the symbol is in a module or a common block

Definition at line 5162 of file Open64IRInterface.cpp.

References CLASS_VAR, createCharStarForST(), OA::IRHandle::hval(), ST_base(), ST_is_in_module(), ST_sym_class(), Stab_Is_Based_At_Common_Block(), and Stab_Is_Common_Block().

Referenced by initProcContext().

Here is the call graph for this function:

void Open64IRInterface::createAndMapDerefs ( OA::StmtHandle  stmt,
WN wn,
WN subMemRef 
)
private

Definition at line 2959 of file Open64IRInterface.cpp.

References OA::Deref::composeWith(), sMemref2mreSetMap, sStmt2allMemRefsMap, and OA::MemRefExpr::USE.

Here is the call graph for this function:

void Open64IRInterface::createAndMapNamedRef ( OA::StmtHandle  stmt,
WN wn,
ST st,
OA::MemRefExpr::MemRefType  hty 
)
private
const char * Open64IRInterface::createCharStarForST ( ST st)
staticprivate

use this to appropriately get a string for a symbol

constant symbols get their strings from the TCON table?

Definition at line 4580 of file Open64IRInterface.cpp.

References CLASS_CONST, idx, MTYPE_STR, NULL, ST_class(), ST_name(), STC_val(), Targ_Print(), and TCON_ty.

Referenced by create_fqn(), DumpWN(), DumpWNMemRefLeaf(), initProcContext(), and toString().

Here is the call graph for this function:

OA::OA_ptr< OA::ExprTree > Open64IRInterface::createExprTree ( WN wn)
private

Definition at line 4245 of file Open64IRInterface.cpp.

Referenced by createExprTree(), and getExprTree().

OA::OA_ptr< OA::ExprTree::Node > Open64IRInterface::createExprTree ( OA::OA_ptr< OA::ExprTree tree,
WN wn 
)
private

Initialize root node of ExprTree

If empty node, return root, end of recursion

identify type of node.

Intrinsic Op ======== Opode ========

Iterate over Operands of OpNode

get ExprTree for children

connect ExprTree of children with OpNode

If Callsite, =========== CallNode ===========

If Integer Constant ============ ConstValNode ============

If Constant Symbol, =========== ConstSymNode ============

Very Very Important Please do this check at the end because we dont want to treat Operators as MemRefNodes even if MemRefExprs are associated with the Operator nodes e.g. StatementHandle: foo( A+B ) MemRefHandles: &A+B is associated with OPR_PARM node A+B is associated with OPR_ADD node ExprTrees Expected:

  1. MemRefNode(&A+B)
  2. OpNode (+) /\ (MemRefNode) A B (MemRefNode)

If MemRefHandle associated with the node ========= MemRefNode =======

ARRAEXP may have multiple chlildren but we want to recurse on kid0

special case indicating section of an array for which index expression is created. ============ ConstValNode ============

We want to add special logic for every node that has more than one child.

For any other type of node, Recurse over children

Definition at line 4283 of file Open64IRInterface.cpp.

References OA::Tree::addNode(), CLASS_CONST, OA::ExprTree::connect(), createExprTree(), ExprTree_hack_for_MPI(), IntrinsicInfo::isIntrinsic(), NULL, OPERATOR_has_sym(), OPERATOR_is_call(), OPR_ARRAYEXP, OPR_CONST, OPR_INTCONST, OPR_SRCTRIPLET, OA::OA_ptr< T >::ptrEqual(), sMemref2mreSetMap, ST_class(), WN_kid(), WN_kid0(), WN_kid_count(), WN_operator(), and WN_st().

Here is the call graph for this function:

void Open64IRInterface::currentProc ( OA::ProcHandle  p)
inlineprivate

Definition at line 1014 of file Open64IRInterface.hpp.

References OA::IRHandle::hval(), and PU_SetGlobalState().

Referenced by getDepMemRefExprIter(), getIndepMemRefExprIter(), getSideEffect(), and procBody().

Here is the call graph for this function:

void Open64IRInterface::dump ( OA::StmtHandle  stmt,
std::ostream &  os 
)
virtual

Given a statement, pretty-print it to the output stream os. The default implementation does nothing.

Reimplemented from OA::Alias::AliasIRInterfaceDefault.

Definition at line 964 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

void Open64IRInterface::dump ( OA::MemRefHandle  stmt,
std::ostream &  os 
)
virtual

Given a memory reference, pretty-print it to the output stream os. The default implementation does nothing.

Reimplemented from OA::Alias::AliasIRInterfaceDefault.

Definition at line 977 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), OA::n, OPERATOR_is_store(), setCurrentProcToProcContext(), toString(), WN_kid1(), WN_kid_count(), WN_operator(), and WN_st().

Here is the call graph for this function:

void Open64IRInterface::dump ( OA::SymHandle  sym,
std::ostream &  os 
)
virtual

Given a statement, pretty-print it to the output stream os.

Implements OA::IRHandlesIRInterface.

Definition at line 1000 of file Open64IRInterface.cpp.

References OA::n, and toString().

Here is the call graph for this function:

void Open64IRInterface::DumpWN ( WN wn,
ostream &  os 
)
static

Definition at line 4608 of file Open64IRInterface.cpp.

References CLASS_CONST, createCharStarForST(), DumpWNLeaf(), DumpWNMemRefLeaf(), fdump_wn(), FLD_last_field(), FLD_name(), FLD_next(), INTRINSIC_name, NULL, OPCODE_name(), OPR_ABS, OPR_ADD, OPR_ARRAY, OPR_ARRAYEXP, OPR_ARRSECTION, OPR_ASHR, OPR_BAND, OPR_BIOR, OPR_BLOCK, OPR_BNOT, OPR_BXOR, OPR_CALL, OPR_CEIL, OPR_CONST, OPR_CVT, OPR_CVTL, OPR_DIV, OPR_DO_LOOP, OPR_DO_WHILE, OPR_EQ, OPR_FALSEBR, OPR_FLOOR, OPR_FUNC_ENTRY, OPR_GE, OPR_GT, OPR_IDNAME, OPR_IF, OPR_ILOAD, OPR_ILOADX, OPR_IMPLICIT_BND, OPR_INTCONST, OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OPR_ISTORE, OPR_ISTOREX, OPR_LAND, OPR_LDA, OPR_LDID, OPR_LDMA, OPR_LE, OPR_LIOR, OPR_LNOT, OPR_LSHR, OPR_LT, OPR_MADD, OPR_MAX, OPR_MIN, OPR_MOD, OPR_MPY, OPR_MSUB, OPR_NE, OPR_NEG, OPR_NMADD, OPR_NMSUB, OPR_PAIR, OPR_PAREN, OPR_PARM, OPR_RECIP, OPR_REM, OPR_RETURN, OPR_RETURN_VAL, OPR_RND, OPR_RSQRT, OPR_SELECT, OPR_SHL, OPR_SQRT, OPR_SRCTRIPLET, OPR_STID, OPR_STRCTFLD, OPR_SUB, OPR_TAS, OPR_TRIPLET, OPR_TRUEBR, OPR_TRUNC, OPR_WHILE_DO, ST_sym_class(), Targ_Print(), TY_fld(), WN_const_val(), WN_end, WN_field_id(), WN_flag(), WN_if_test, WN_intrinsic(), WN_kid(), WN_kid0(), WN_kid1(), WN_kid2(), WN_kid_count(), WN_label_number(), WN_load_addr_ty(), WN_opcode(), WN_operator(), WN_PARM_BY_REFERENCE, WN_st(), WN_val(), and WN_while_test.

Referenced by fortTkSupport::CreateWhirlIdMaps(), dump(), DumpWNMemRef(), whirl2xaif::PUXlationContext::findDoChainId(), whirl2xaif::PUXlationContext::findUDDUChainId(), whirl2xaif::PUXlationContext::getAliasMapKey(), fortTkSupport::AddToScalarizedRefTabOp::operator()(), and toString().

Here is the call graph for this function:

void Open64IRInterface::DumpWNLeaf ( WN wn,
ostream &  os 
)
staticprivate

Definition at line 5027 of file Open64IRInterface.cpp.

References DumpWNMemRefLeaf().

Referenced by DumpWN().

Here is the call graph for this function:

void Open64IRInterface::DumpWNMemRef ( WN wn,
ostream &  os 
)
staticprivate

Definition at line 5040 of file Open64IRInterface.cpp.

References DumpWN(), DumpWNMemRefLeaf(), OPERATOR_is_store(), WN_kid1(), WN_kid_count(), and WN_operator().

Referenced by ExprTree_hack_for_MPI(), and toString().

Here is the call graph for this function:

void Open64IRInterface::DumpWNMemRefLeaf ( WN wn,
ostream &  os 
)
staticprivate

Definition at line 5060 of file Open64IRInterface.cpp.

References createCharStarForST(), OPERATOR_has_1ty(), OPERATOR_has_offset(), OPERATOR_has_sym(), TY_name(), WN_offset(), WN_operator(), WN_st(), and WN_ty().

Referenced by DumpWN(), DumpWNLeaf(), and DumpWNMemRef().

Here is the call graph for this function:

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::elseBody ( OA::StmtHandle  h)
virtual

Given a structured two-way conditional statement, return an IRRegionStmtIterator for the "else" part (i.e., the statements under the "else" clause).

Implements OA::CFG::CFGIRInterface.

Definition at line 1541 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_IF, WN_else, and WN_operator().

Here is the call graph for this function:

OA::OA_ptr< OA::ConstValBasicInterface > Open64IRInterface::evalOp ( OA::OpHandle  op,
OA::OA_ptr< OA::ConstValBasicInterface operand1,
OA::OA_ptr< OA::ConstValBasicInterface operand2 
)
virtual

Given an OpHandle and two operands (unary ops will just use the first operand and the second operand should be NULL) return a ConstValBasicInterface

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3537 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), Open64ConstVal::eval(), OA::IRHandle::hval(), NULL, OA::OA_ptr< T >::ptrEqual(), and WN_operator().

Here is the call graph for this function:

bool Open64IRInterface::ExprTree_hack_for_MPI ( OA::MemRefHandle  h,
OA::OA_ptr< OA::ExprTree tree 
)
private

Definition at line 4255 of file Open64IRInterface.cpp.

References OA::Tree::addNode(), DumpWNMemRef(), OA::IRHandle::hval(), NULL, OPC_I4INTCONST, and WN_CreateIntconst().

Referenced by createExprTree().

Here is the call graph for this function:

void Open64IRInterface::findAllMemRefsAndMapToMemRefExprs ( OA::StmtHandle  stmt,
WN wn,
unsigned  lvl 
)
private

create NamedRef

If Formal Reference Parameter

get mre for the current MemRefHandle

composedWith Deref

remove current association

associate new mre with the current node

If Pointer

get mre for the current MemRefHandle

composedWith deref mre

remove current association

associate new mre with the current node

iterate over kid0, RHS

iterate over kid1, LHS

=================== Processing LHS ====================

create NamedRef

get mre for the current MemRefHandle

If Formal Reference Parameter

change MRE to USE

composedWith deref mre

remove current association

associate new mre with the current node

=================== Processing RHS ====================

get the mre for topMemRefHandle

composedWith AddressOf

remove current association

associate new mre with the current node

iterate over kid0, RHS

iterate over kid1, LHS

create NamedRef

If Formal Reference Parameter

get the mre for current MemRefHandle

change MRE to USE

composedWith create deref mre

remove current association

associate new mre with the current node

If Formal Reference Parameter

get the mre for current MemRefHandle

change MRE to USE

composedWith deref mre

remove current association

associate new mre with the current node

iterate over kid

get the top MemRefHandle

get the current MemRefHandle

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

get the mre for current MemRefHandle

change MRE to USE

composedWith deref mre

associate new mre with the current node

iterate over kid

get the top MemRefHandle

ILOAD LDA const_sym assert(mtop != OA::MemRefHandle(0));

get the current MemRefHandle

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

associate mre with the current node

iterate over kid0, RHS

iterate over kid1, LHS

get the top MemRefHandle

ILOAD LDA const_sym assert(mtop != OA::MemRefHandle(0));

get the current MemRefHandle

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

Change type of mre

associate mre with the current MemRegfHandle

iterate over kid0, RHS

iterate over kid1, LHS

get the top MemRefHandle

get the current MemRefHandle

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

Remove SubSetRef

remove Deref

associate mre with the current MemRegfHandle

=========== Processing RHS ==============

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

RHS composedWith AddressOf

iterate over kid0

get the top MemRefHandle

get the current MemRefHandle

steals mre mapped to topMemRefHandle

disassociate mre from topMemRefHandle

associate mre with the current MemRefHandle

Array Indexes are expressions

Array Index Expressions are ExprHandles for which ExprTree exists.

iterate over kid0

Create MemRefExpr for each PARM

If Formal Reference Parameter, then apply AddressOf

composedWith AddressOf

remove current association

associate new mre with the current node

Iterate over the param nodes

get the MemRefHandle

Do not store ExprHandle mStmt2allExprsMap[stmt].erase((OA::irhandle_t)param);

steals mre mapped to topMemRefHandle

Remove AddressOf

remove Param MemRefHandle

remove UnnamedMRE associated with PARM kid

disassociate mre from topMemRefHandle

Remove ExprHandle

Remove AssignPairs

get the Symbol Table Entry

get the MemRefHandle

get associated MemRefExpr

disassociate Old MemRefExpr

Remove AddressOf

Remove SubSetRef

Remove Deref

Change MemRefType = DEF

associate new MRE

Create AddressOf(UnnamedRef) and associate with the kid of the param node.

create AddressOf(UnnamedRef(CALL))

composedWith AddressOf

associate new MemRefExpr

Create Pointer AssignPairs

UnnamedRef is PARM_kid, not PARM

Remove MemRefExpr associated with the last PARM and its kid.

get the MemRefHandle

remove MemRefHandle and mre

For the second PARM child

Remove MemRefHandle and mre again

this is an exprHandle

Iterate over the param nodes

create MemRefExpr

Remove ExprHandle

get the MemRefHandle

steals mre mapped to topMemRefHandle

Remove AddressOf

remove Param MemRefHandle

remove UnnamedMRE associated with PARM kid

Remove ExprHandle

Remove AssignPairs

disassociate mre from topMemRefHandle

Do not store this ExprHandle

get the MemRefHandle

steals mre mapped to topMemRefHandle

Remove ExprHandle for LHS of string assignment

iterate over kid0

get the top MemRefHandle

store ExprHandle

Create DEF UnnamedRef

associate UnnamedRef with the kid

steals mre mapped to topMemRefHandle

Disassociate mre

set UnnamedRef to USE MRE

composedWith AddressOf

associate mre with the current MemRefHandle

Definition at line 1857 of file Open64IRInterface.cpp.

References OA::MemRefExpr::clone(), OA::AddressOf::composeWith(), OA::Deref::composeWith(), OA::SubSetRef::composeWith(), OA::OA_ptr< T >::convert(), createAndMapNamedRef(), OA::MemRefExpr::DEF, findBaseSymbol(), findTopMemRefHandle(), FLD_get_to_field(), FLD_is_pointer(), FLD_name(), getCurrentProcContext(), OA::RefOp::getMemRefExpr(), IntrinsicInfo::intrinsicBaseName(), OA::MemRefExpr::isaRefOp(), OA::MemRefExpr::isaSubSetRef(), OA::MemRefExpr::isaUnnamed(), IntrinsicInfo::isIntrinsic(), isRefParam(), KIND_POINTER, LANG_F77, LANG_F90, Language, mStmt2allExprsMap, NULL, OPERATOR_has_field_id(), OPERATOR_is_load(), OPERATOR_is_non_scf(), OPERATOR_is_scf(), OPERATOR_is_store(), OPR_ADD, OPR_ARRAY, OPR_ARRAYEXP, OPR_ARRSECTION, OPR_BLOCK, OPR_CALL, OPR_CASEGOTO, OPR_COMPLEX, OPR_CONST, OPR_CVT, OPR_DIV, OPR_DO_LOOP, OPR_EQ, OPR_GE, OPR_GOTO, OPR_GT, OPR_IF, OPR_ILOAD, OPR_INTCONST, OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OPR_ISTORE, OPR_LABEL, OPR_LAND, OPR_LDA, OPR_LDID, OPR_LDMA, OPR_LE, OPR_LIOR, OPR_LNOT, OPR_LT, OPR_MAX, OPR_MIN, OPR_MLOAD, OPR_MPY, OPR_MSTORE, OPR_NE, OPR_NEG, OPR_PAREN, OPR_PARM, OPR_PSTID, OPR_PSTORE, OPR_RECIP, OPR_SRCTRIPLET, OPR_STID, OPR_STRCTFLD, OPR_SUB, OPR_SWITCH, OPR_TRUNC, OA::MemRefExpr::setMemRefType(), sMemref2mreSetMap, sStmt2allMemRefsMap, ST_is_constant(), ST_is_my_pointer(), ST_name(), ST_type(), TY_kind(), OA::MemRefExpr::USE, WN2F_Can_Assign_Types(), WN_field_id(), WN_GetBaseObjType(), WN_GetRefObjType(), WN_intrinsic(), WN_kid(), WN_kid0(), WN_kid1(), WN_kid_count(), WN_load_offset(), WN_operator(), and WN_st().

Referenced by getAssignPairIterator(), and getMemRefIterator().

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefHandleIterator > Open64IRInterface::getAllMemRefs ( OA::StmtHandle  stmt)
virtual

Return a list of all the memory reference handles that appear in the given statement.

Return a list of all the memory reference handles that appear in the given statement. User is responsible for deleting the list

Implements OA::DUG::DUGIRInterface.

Definition at line 3299 of file Open64IRInterface.cpp.

References OA::MemRefHandleIterator::current(), getMemRefIterator(), OA::MemRefHandleIterator::isValid(), and setCurrentProcToProcContext().

Referenced by getDiffUseMREs(), and getUseMemRefs().

Here is the call graph for this function:

OA::OA_ptr< OA::AssignPairIterator > Open64IRInterface::getAssignPairIterator ( OA::StmtHandle  h)
virtual

Given a statement return a list to the pairs of target MemRefHandle, ExprHandle where target = expr

Implements OA::Activity::ActivityIRInterface.

Definition at line 3464 of file Open64IRInterface.cpp.

References findAllMemRefsAndMapToMemRefExprs(), OA::IRHandle::hval(), and sStmt2allMemRefsMap.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExpr > Open64IRInterface::getCallMemRefExpr ( OA::CallHandle  h)
virtual

Given a procedure call create a memory reference expression to describe that call. For example, a normal call is a NamedRef. A call involving a function ptr is a Deref.

Implements OA::CallGraph::CallGraphIRInterface.

Definition at line 3142 of file Open64IRInterface.cpp.

References getSymHandle(), and OA::MemRefExpr::USE.

Here is the call graph for this function:

OA::OA_ptr< OA::IRCallsiteParamIterator > Open64IRInterface::getCallsiteParams ( OA::CallHandle  h)
virtual

Get IRCallsiteParamIterator for a callsite. Iterator visits actual parameters in called order.

Implements OA::Activity::ActivityIRInterface.

Definition at line 1055 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), and setCurrentProcToProcContext().

Referenced by getMemRefIterator(), and getParamBindPtrAssignIterator().

Here is the call graph for this function:

OA::OA_ptr< OA::IRCallsiteIterator > Open64IRInterface::getCallsites ( OA::StmtHandle  h)
virtual

Return an iterator over all of the callsites in a given stmt.

Implements OA::Activity::ActivityIRInterface.

Definition at line 1041 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), and setCurrentProcToProcContext().

Referenced by getMemRefIterator().

Here is the call graph for this function:

OA::ExprHandle Open64IRInterface::getCondition ( OA::StmtHandle  h)

Definition at line 1557 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_FALSEBR, OPR_IF, OPR_TRUEBR, WN_if_test, WN_kid0(), and WN_operator().

Here is the call graph for this function:

OA::OA_ptr< OA::ConstValBasicInterface > Open64IRInterface::getConstValBasic ( OA::ConstSymHandle  c)
virtual

Given a ConstSymHandle return an abstraction representing the constant value

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3549 of file Open64IRInterface.cpp.

References getConstValBasicFromST(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

OA::OA_ptr< OA::ConstValBasicInterface > Open64IRInterface::getConstValBasic ( OA::ConstValHandle  c)
virtual

Given a ConstValHandle return an abstraction representing the constant value User must free the ConstValBasicInterface

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3557 of file Open64IRInterface.cpp.

References getConstValBasicFromST(), OA::IRHandle::hval(), NULL, OPR_CONST, OPR_INTCONST, setCurrentProcToProcContext(), val, WN_const_val(), WN_operator(), and WN_st().

Here is the call graph for this function:

OA::OA_ptr< OA::ConstValBasicInterface > Open64IRInterface::getConstValBasic ( unsigned int  val)
virtual

Temporary routine for testing ReachConsts.

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3633 of file Open64IRInterface.cpp.

OA::OA_ptr< OA::ConstValBasicInterface > Open64IRInterface::getConstValBasicFromST ( ST st)
private

Definition at line 4510 of file Open64IRInterface.cpp.

References MTYPE_is_integral, NULL, ST_tcon_val(), Targ_To_Host(), TCON_ty, and val.

Referenced by getConstValBasic().

Here is the call graph for this function:

OA::ProcHandle Open64IRInterface::getCurrentProcContext ( )
staticprivate
OA::OA_ptr< OA::MemRefHandleIterator > Open64IRInterface::getDefMemRefs ( OA::StmtHandle  stmt)
virtual

Return a list of all the target memory reference handles that appear in the given statement.

Return a list of all def memory reference handles that appear in the given statement. User is responsible for deleting the list

================================================ only map those MREs that do not involve an addressOf operation

added by PLM 09/14/06

Implements OA::Activity::ActivityIRInterface.

Definition at line 3252 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), OA::MemRefHandleIterator::current(), getMemRefIterator(), OA::MemRefExpr::isaAddressOf(), OA::MemRefExpr::isaRefOp(), OA::MemRefExpr::isDef(), OA::MemRefHandleIterator::isValid(), setCurrentProcToProcContext(), and sMemref2mreSetMap.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getDefMREs ( OA::StmtHandle  stmt)
virtual

Get an Iterator over Def MREs.

Get an Iterator over Use MREs.

================================================ only map those MREs that do not involve an addressOf operation

added by PLM 09/14/06

Implements OA::DUG::DUGIRInterface.

Definition at line 4028 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), OA::MemRefHandleIterator::current(), getMemRefIterator(), OA::MemRefExpr::isaAddressOf(), OA::MemRefExpr::isaRefOp(), OA::MemRefExpr::isDef(), OA::MemRefHandleIterator::isValid(), and sMemref2mreSetMap.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getDepMemRefExprIter ( OA::ProcHandle  h)
virtual

Return an iterator over all dependent MemRefExpr for given proc.

Return an iterator over all dependent MemRefExpr's for given proc.

Get MRE for the Independent Variable

Implements OA::Activity::ActivityIRInterface.

Definition at line 3195 of file Open64IRInterface.cpp.

References convertSymToMemRefExpr(), currentProc(), OA::IRHandle::hval(), NULL, OPR_PRAGMA, PU_Info_tree_ptr, WN_first(), WN_func_pragmas, WN_next(), WN_operator(), WN_pragma(), WN_PRAGMA_OPENAD_DEPENDENT, and WN_st().

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getDiffUseMREs ( OA::StmtHandle  stmt)

Get an Iterator over DiffUse MREs.

Get an Iterator over Use MREs.

getDiffUses

Do not process Index Expressions.

dont need pointer expressions

Definition at line 4070 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), OA::MREIteratorClass< T >::current(), OA::MemRefHandleIterator::current(), end, getAllMemRefs(), getMemRefExprIterator(), OA::MemRefExpr::isaAddressOf(), OA::MemRefExpr::isaRefOp(), OA::MemRefExpr::isUse(), OA::MREIteratorClass< T >::isValid(), and OA::MemRefHandleIterator::isValid().

Here is the call graph for this function:

OA::OA_ptr< OA::ExprHandleIterator > Open64IRInterface::getExprHandleIterator ( OA::StmtHandle  stmt)

Definition at line 3453 of file Open64IRInterface.cpp.

References Open64IRExprHandleIterator.

OA::OA_ptr< OA::ExprTree > Open64IRInterface::getExprTree ( OA::ExprHandle  h)
virtual

Given an ExprHandle, return an ExprTree*.

Given an ExprHandle, return an ExprTree* The user must free the expr tree

Implements OA::Activity::ActivityIRInterface.

Definition at line 3771 of file Open64IRInterface.cpp.

References createExprTree(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Referenced by DumpExprTree(), and getParamBindPtrAssignIterator().

Here is the call graph for this function:

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::getFirstInCompound ( OA::StmtHandle  h)
virtual

Given a compound statement, return an IRRegionStmtIterator for the statements. A compound is a list of statements.

Implements OA::CFG::CFGIRInterface.

Definition at line 1410 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), and WN_first().

Here is the call graph for this function:

OA::SymHandle Open64IRInterface::getFormalForActual ( OA::ProcHandle  caller,
OA::CallHandle  call,
OA::ProcHandle  callee,
OA::ExprHandle  param 
)
virtual

return the formal parameter that an actual parameter is associated with.

return the formal parameter that an actual parameter is associated with. 'call' is a handle to the call node; 'param' is the actual parameter within the call node that we want info about.

PLM Important node regarding Optional Parameters:

Reference :http://www.sesp.cse.clrc.ac.uk/Publications/felib90_design/design/node6.html

Occasionally, not all arguments are required every time a procedure is used. Therefore some arguments may be specified as optional, using the OPTIONAL attribute:

SUBROUTINE sub1(a, b, c, d) INTEGER, INTENT(INOUT):: a, b REAL, INTENT(IN), OPTIONAL :: c, d ... END SUBROUTINE sub1

Here a and b are always required when calling sub1. The arguments c and d are optional and so sub1 may be referenced by:

CALL sub1( a, b ) CALL sub1( a, b, c, d ) CALL sub1( a, b, c )

Note that the order in which arguments appear is important (unless keyword arguments are used) so that it is not possible to call sub1 with argument d but no argument c.

CALL sub1( a, b, d ) ! illegal

Optional arguments must come after all arguments associated by position in a referencing statement and require an explicit interface.

PLM : Places where explicit formal to actual matching needed.

For functions excluding following cases:

  1. PURE INTEGER FUNCTION
  2. ELEMENTAL REAL
  3. RECURSIVE FUNCTIONS WITH RESULT (mentioned explicitely in the prototype) WHERE RESULT IS SCALAR VARIABLE
  4. RECURSIVE FUNCTIONS WITHOUT RESULT (mentioned explicitely in the prototype)

Return type is one of the member of formal Parameter list. It appears as the first argument in the formal Parameter list. We need to match actual to formal starting from ParmIdx=1.

In case of Subroutine, we do not have Return-Type and therefore, We need to match actual to formal starting from ParmIdx=0.

The algorithm is as Follows:

  • In the list of formal argument of callee proc,

    • Get the ST entry for the first argument.
    • If the ST entry of the first argument is of "Return" type. start mapping from argument(1) in the parameter list
    • else start mapping from argument(0) in the parameter list.

    PLM more details: in case of Indirect Function Calls (e.g. using function pointers), function pointer is also one of the member of parameter list.

Implements OA::DataFlow::ParamBindingsIRInterface.

Definition at line 1108 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), NULL, PU_Info_tree_ptr, PU_SetGlobalState(), setCurrentProcToProcContext(), ST_is_return_var(), WN_formal, WN_kid(), WN_kid_count(), WN_num_formals, and WN_st().

Referenced by isPassByReference().

Here is the call graph for this function:

OA::SymHandle Open64IRInterface::getFormalSym ( OA::ProcHandle  proc,
int  formalID 
)
virtual

Return the symbol handle for the nth formal parameter to proc Number starts at 0 and implicit parameters should be given a number in the order as well. This number should correspond to the number provided in getParamBindPtrAssign pairs Should return SymHandle(0) if there is no formal parameter for given num

Implements OA::DUG::DUGIRInterface.

Definition at line 3114 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), PU_Info_tree_ptr, PU_SetGlobalState(), WN_formal, WN_num_formals, and WN_st().

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getIndepMemRefExprIter ( OA::ProcHandle  h)
virtual

Return an iterator over all independent MemRefExpr for given proc.

Return an iterator over all independent locations for given proc.

Get MRE for the Independent Variable

Implements OA::Activity::ActivityIRInterface.

Definition at line 3158 of file Open64IRInterface.cpp.

References convertSymToMemRefExpr(), currentProc(), OA::IRHandle::hval(), NULL, OPR_PRAGMA, PU_Info_tree_ptr, WN_first(), WN_func_pragmas, WN_next(), WN_operator(), WN_pragma(), WN_PRAGMA_OPENAD_INDEPENDENT, and WN_st().

Here is the call graph for this function:

OA::StmtLabel Open64IRInterface::getLabel ( OA::StmtHandle  h)
virtual

Given a statement, return a label (or StmtHandle(0) if there is no label associated with the statement).

Implements OA::CFG::CFGIRInterface.

Definition at line 1397 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_LABEL, WN_label_number(), and WN_operator().

Here is the call graph for this function:

OA::Linearity::LinOpType Open64IRInterface::getLinearityOpType ( OA::OpHandle  op)
virtual

get the operation type and returns a LinOpType

gets the operation type and returns a LinOpType

Implements OA::Linearity::LinearityIRInterface.

Definition at line 3645 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_ADD, OA::Linearity::OPR_ADDSUB, OPR_CALL, OPR_DIV, OPR_INTRINSIC_CALL, OPR_INTRINSIC_OP, OA::Linearity::OPR_LINEAR, OPR_MPY, OA::Linearity::OPR_MPYDIV, OPR_NEG, OA::Linearity::OPR_NONLINEAR, OPR_SUB, setCurrentProcToProcContext(), and WN_operator().

Here is the call graph for this function:

OA::OA_ptr< OA::Location > Open64IRInterface::getLocation ( OA::ProcHandle  p,
OA::SymHandle  s 
)
virtual

For the given symbol create a Location that indicates statically overlapping locations and information about whether the location is local or not, local means visible in only this procedure

For the given symbol create a Location that indicates statically overlapping locations and information about whether the location is local or not, local means visible in only this procedure If the symbol is not visible within the current procedure then a null location is returned. FIXME: does Fortran90 allow nested procedures? if so then variables visible to a nested procedure should not be labeled local

Implements OA::DUG::DUGIRInterface.

Definition at line 3804 of file Open64IRInterface.cpp.

References OA::NamedLoc::addFullOverlap(), CLASS_VAR, Current_PU_Info, CURRENT_SYMTAB, debug, getCurrentProcContext(), OA::IRHandle::hval(), NULL, PU_Info_child, setCurrentProcContext(), setCurrentProcToProcContext(), sFQNToProcToLocalSymMap, sGlobalVarMap, sProcToSymRefSetMap, sSymToFQNMap, ST_is_in_module(), ST_level(), ST_sym_class(), Stab_Is_Based_At_Common_Block(), and toString().

Here is the call graph for this function:

OA::ExprHandle Open64IRInterface::getLoopCondition ( OA::StmtHandle  h)

Definition at line 1498 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_DO_LOOP, OPR_DO_WHILE, OPR_WHILE_DO, WN_end, WN_operator(), and WN_while_test.

Here is the call graph for this function:

OA::StmtHandle Open64IRInterface::getLoopIncrement ( OA::StmtHandle  h)
virtual

Given a loop statement, return the increment statement.

Implements OA::CFG::CFGIRInterface.

Definition at line 1468 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_DO_LOOP, OPR_WHILE_DO, WN_operator(), and WN_step.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getMemRefExprIterator ( OA::MemRefHandle  memref)
virtual

Given a MemRefHandle return an iterator over MemRefExprs that describe this memory reference

Given a MemRefHandle return an iterator over all MemRefExprs that describe this memory reference

Implements OA::DUG::DUGIRInterface.

Definition at line 4118 of file Open64IRInterface.cpp.

References setCurrentProcToProcContext(), and sMemref2mreSetMap.

Referenced by getDiffUseMREs(), and getParamBindPtrAssignIterator().

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefHandleIterator > Open64IRInterface::getMemRefIterator ( OA::StmtHandle  h)

Given a statement return an iterator over all memory references During its creation it also sets up sStmt2allMemRefs and memRefs2mreSetMap.

Definition at line 1812 of file Open64IRInterface.cpp.

References OA::ExprHandleIterator::current(), OA::CallHandleIterator::current(), findAllMemRefsAndMapToMemRefExprs(), getCallsiteParams(), getCallsites(), OA::IRHandle::hval(), OA::ExprHandleIterator::isValid(), OA::CallHandleIterator::isValid(), Open64IRMemRefIterator, setCurrentProcToProcContext(), sParamToCallMap, and sStmt2allMemRefsMap.

Referenced by getAllMemRefs(), getDefMemRefs(), getDefMREs(), and getUseMREs().

Here is the call graph for this function:

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::getMultiCatchall ( OA::StmtHandle  h)
virtual

Given a structured multi-way branch, return an IRRegionStmtIterator for the body corresponding to default/catchall case.

Implements OA::CFG::CFGIRInterface.

Definition at line 1613 of file Open64IRInterface.cpp.

References NULL.

OA::ProcHandle Open64IRInterface::getProcHandle ( OA::SymHandle  sym)
virtual

Given the callee symbol returns the callee proc handle.

Implements OA::DUG::DUGIRInterface.

Definition at line 4147 of file Open64IRInterface.cpp.

Referenced by isPassByReference().

OA::SymHandle Open64IRInterface::getProcSymHandle ( OA::ProcHandle  h)
virtual

Given a ProcHandle, return its SymHandle.

Implements OA::CallGraph::CallGraphIRInterface.

Definition at line 1021 of file Open64IRInterface.cpp.

References Current_PU_Info, OA::IRHandle::hval(), NULL, PU_Info_proc_sym, PU_SetGlobalState(), and ST_ptr().

Referenced by getSymHandle().

Here is the call graph for this function:

OA::OA_ptr< OA::IRStmtIterator > Open64IRInterface::getPtrAsgnIterator ( OA::ProcHandle  h)
virtual

Implements OA::DUG::DUGIRInterface.

Definition at line 3517 of file Open64IRInterface.cpp.

OA::OA_ptr< OA::Alias::PtrAssignPairStmtIterator > Open64IRInterface::getPtrAssignStmtPairIterator ( OA::StmtHandle  stmt)
virtual

If this is a PTR_ASSIGN_STMT then return an iterator over MemRefHandle pairs where there is a source and target such that target

Implements OA::Alias::AliasIRInterface.

Definition at line 3527 of file Open64IRInterface.cpp.

OA::OA_ptr< OA::IRSymIterator > Open64IRInterface::getRefSymIterator ( OA::ProcHandle  h)

Given a subprogram return an IRSymIterator for all symbols that are visible in the subprogram Given a subprogram return an IRSymIterator for all symbols that are referenced in the subprogram

Definition at line 3240 of file Open64IRInterface.cpp.

References OA::IRHandle::hval().

Referenced by initProcToSymRefSetMap().

Here is the call graph for this function:

int Open64IRInterface::getSizeInBytes ( OA::SymHandle  h)
virtual

given a symbol return the size in bytes of that symbol

Implements OA::Activity::ActivityIRInterface.

Definition at line 3229 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), setCurrentProcToProcContext(), ST_type(), and TY_size().

Here is the call graph for this function:

OA::ExprHandle Open64IRInterface::getSMultiCondition ( OA::StmtHandle  h,
int  bodyIndex 
)
virtual

Given a structured multi-way branch, return the condition expression corresponding to target 'bodyIndex'. The n targets are indexed [0..n-1].

Implements OA::CFG::CFGIRInterface.

Definition at line 1622 of file Open64IRInterface.cpp.

OA::ExprHandle Open64IRInterface::getSMultiTest ( OA::StmtHandle  h)

Definition at line 1630 of file Open64IRInterface.cpp.

OA::StmtHandle Open64IRInterface::getStmtFromMemRef ( OA::MemRefHandle  h)

Return a stmt handle for the given memory reference handle.

Definition at line 3602 of file Open64IRInterface.cpp.

References setCurrentProcToProcContext(), and sMemRef2StmtMap.

Here is the call graph for this function:

OA::OA_ptr< OA::IRStmtIterator > Open64IRInterface::getStmtIterator ( OA::ProcHandle  h)
virtual

Given a subprogram return an IRStmtIterator for the entire subprogram

Implements OA::Activity::ActivityIRInterface.

Definition at line 1013 of file Open64IRInterface.cpp.

OA::SymHandle Open64IRInterface::getSymHandle ( OA::ProcHandle  h)
inlinevirtual

Given a procedure return associated SymHandle.

Implements OA::Alias::AliasIRInterface.

Definition at line 765 of file Open64IRInterface.hpp.

References getProcSymHandle().

Referenced by getCallMemRefExpr(), initCallSymToProcMap(), isPassByReference(), and toString().

Here is the call graph for this function:

OA::SymHandle Open64IRInterface::getSymHandle ( OA::CallHandle  h)
virtual

get callee SymHandle from CallHandle (outermost or first, if multiple calls)

Implements OA::DUG::DUGIRInterface.

Definition at line 1234 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), NULL, OPERATOR_has_sym(), WN_operator(), and WN_st().

Here is the call graph for this function:

OA::StmtLabel Open64IRInterface::getTargetLabel ( OA::StmtHandle  h,
int  n 
)
virtual

Given an unstructured two-way branch, return the label of the target statement. The second parameter is currently unused.

Implements OA::CFG::CFGIRInterface.

Definition at line 1652 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_FALSEBR, OPR_GOTO, OPR_TRUEBR, WN_label_number(), and WN_operator().

Here is the call graph for this function:

OA::StmtLabel Open64IRInterface::getUMultiCatchallLabel ( OA::StmtHandle  h)
virtual

Given an unstructured multi-way branch, return label of the target corresponding to the optional default/catchall case. Return 0 if there is no default target.

Implements OA::CFG::CFGIRInterface.

Definition at line 1735 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_COMPGOTO, OPR_GOTO, OPR_SWITCH, WN_kid2(), WN_label_number(), WN_operator(), and WN_switch_default.

Here is the call graph for this function:

OA::ExprHandle Open64IRInterface::getUMultiCondition ( OA::StmtHandle  h,
int  targetIndex 
)
virtual

Implements OA::CFG::CFGIRInterface.

Definition at line 1762 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), NULL, OPR_COMPGOTO, WN_first(), WN_kid1(), WN_next(), WN_operator(), and WN_switch_table.

Here is the call graph for this function:

OA::StmtLabel Open64IRInterface::getUMultiTargetLabel ( OA::StmtHandle  h,
int  targetIndex 
)
virtual

Given an unstructured multi-way branch, return the label of the target statement at 'targetIndex'. The n targets are indexed [0..n-1].

Implements OA::CFG::CFGIRInterface.

Definition at line 1690 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), NULL, OPR_BLOCK, OPR_CASEGOTO, OPR_COMPGOTO, OPR_GOTO, OPR_SWITCH, WN_first(), WN_kid1(), WN_label_number(), WN_next(), WN_operator(), and WN_switch_table.

Here is the call graph for this function:

OA::ExprHandle Open64IRInterface::getUMultiTest ( OA::StmtHandle  h)

Definition at line 1788 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_SWITCH, WN_operator(), and WN_switch_test.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefHandleIterator > Open64IRInterface::getUseMemRefs ( OA::StmtHandle  stmt)
virtual

Return a list of all the source and sub memory reference handles that appear in the given statement.

Return a list of all use memory reference handles that appear in the given statement. User is responsible for deleting the list

================================================ only map those MREs that do not involve an addressOf operation

added by PLM 09/14/06

Implements OA::Activity::ActivityIRInterface.

Definition at line 3326 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), OA::MemRefHandleIterator::current(), getAllMemRefs(), OA::MemRefExpr::isaAddressOf(), OA::MemRefExpr::isaRefOp(), OA::MemRefExpr::isUse(), OA::MemRefHandleIterator::isValid(), setCurrentProcToProcContext(), and sMemref2mreSetMap.

Here is the call graph for this function:

OA::OA_ptr< OA::MemRefExprIterator > Open64IRInterface::getUseMREs ( OA::StmtHandle  stmt)
virtual
bool Open64IRInterface::haveDefinition ( WN wn)
static

Definition at line 5291 of file Open64IRInterface.cpp.

References DBGMSG_PUB, name, OPR_ICALL, sCallSymToProc, ST_name(), WN_has_sym, WN_operator(), and WN_st().

Referenced by Open64IRCallsiteIterator::build_func_call_list().

Here is the call graph for this function:

bool Open64IRInterface::ignoreBlackBoxRoutines ( )
static
void Open64IRInterface::initCallSymToProcMap ( Open64IRProcIterator procIter)
staticprivate

creates a mapping of call symbol handles to the associated proc handle

Definition at line 5079 of file Open64IRInterface.cpp.

References Open64IRProcIterator::current(), getSymHandle(), Open64IRProcIterator::isValid(), and Open64IRProcIterator::reset().

Referenced by initContextState().

Here is the call graph for this function:

void Open64IRInterface::initContextState ( PU_Info pu_forest)
static

User is responsible for doing this. It should not be part of.

Definition at line 4161 of file Open64IRInterface.cpp.

References initCallSymToProcMap(), initProcContext(), initProcToSymRefSetMap(), and sContextInit.

Referenced by whirl2xaif::Whirl2Xaif::translateIR().

Here is the call graph for this function:

void Open64IRInterface::initProcToSymRefSetMap ( Open64IRProcIterator procIter)
staticprivate
creates a mapping of procedure handles to the set of symbols
referenced in that procedure

get a set of all referenced symbols in this procedure Using this to approximate what is visible in F90 because Open64 module scoping is messed up and all module variables are put in the global scope

Definition at line 5101 of file Open64IRInterface.cpp.

References Open64IRProcIterator::current(), OA::SymHandleIterator::current(), getRefSymIterator(), Open64IRProcIterator::isValid(), OA::SymHandleIterator::isValid(), Open64IRProcIterator::reset(), and sProcToSymRefSetMap.

Referenced by initContextState().

Here is the call graph for this function:

bool Open64IRInterface::isBreakImplied ( OA::StmtHandle  multicond)
virtual

Given a structured multi-way branch, return true if the cases have implied break semantics. For example, this method would return false for C since one case will fall-through to the next if there is no explicit break statement. Matlab, on the other hand, implicitly exits the switch statement once a particular case has executed, so this method would return true.

Implements OA::CFG::CFGIRInterface.

Definition at line 1597 of file Open64IRInterface.cpp.

bool Open64IRInterface::isCatchAll ( OA::StmtHandle  h,
int  bodyIndex 
)
virtual

Given a structured multi-way branch, return true if the body corresponding to target 'bodyIndex' is the default/catchall/ case.

Implements OA::CFG::CFGIRInterface.

Definition at line 1605 of file Open64IRInterface.cpp.

bool Open64IRInterface::isParam ( OA::SymHandle  anOASymbolHandle)
virtual

returns true if given symbol is a parameter

Implements OA::DataFlow::ParamBindingsIRInterface.

Definition at line 3780 of file Open64IRInterface.cpp.

References CURRENT_SYMTAB, OA::IRHandle::hval(), SCLASS_FORMAL, SCLASS_FORMAL_REF, ST_level(), and ST_sclass().

Here is the call graph for this function:

bool Open64IRInterface::isPassByReference ( WN opr_parm_wn)
private

Definition at line 4535 of file Open64IRInterface.cpp.

References getFormalForActual(), getProcHandle(), getSymHandle(), isRefParam(), setCurrentProcToProcContext(), sParamToCallMap, and sProcContext.

Here is the call graph for this function:

bool Open64IRInterface::isRefParam ( OA::SymHandle  sym)
OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::loopBody ( OA::StmtHandle  h)
virtual

Given a loop statement, return an IRRegionStmtIterator for the loop body.

Implements OA::CFG::CFGIRInterface.

Definition at line 1425 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_DO_LOOP, OPR_DO_WHILE, OPR_WHILE_DO, WN_do_body, WN_operator(), and WN_while_body.

Here is the call graph for this function:

OA::StmtHandle Open64IRInterface::loopHeader ( OA::StmtHandle  h)
virtual

Given a loop statement, return the loop header statement. This would be the initialization statement in a C 'for' loop, for example.

Implements OA::CFG::CFGIRInterface.

Definition at line 1451 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_DO_LOOP, OPR_WHILE_DO, WN_operator(), and WN_start.

Here is the call graph for this function:

bool Open64IRInterface::loopIterationsDefinedAtEntry ( OA::StmtHandle  h)
virtual

Given a loop statement, return:

True: If the number of loop iterations is defined at loop entry (i.e. Fortran semantics). This causes the CFG builder to add the loop statement representative to the header node so that definitions from inside the loop don't reach the condition and increment specifications in the loop statement.

False: If the number of iterations is not defined at entry (i.e. C semantics), we add the loop statement to a node that is inside the loop in the CFG so definitions inside the loop will reach uses in the conditional test. For C style semantics, the increment itself may be a separate statement. if so, it will appear explicitly at the bottom of the loop.

Implements OA::CFG::CFGIRInterface.

Definition at line 1485 of file Open64IRInterface.cpp.

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::multiBody ( OA::StmtHandle  h,
int  bodyIndex 
)
virtual

Given a structured multi-way branch, return an IRRegionStmtIterator for the body corresponding to target 'bodyIndex'. The n targets are indexed [0..n-1].

Implements OA::CFG::CFGIRInterface.

Definition at line 1588 of file Open64IRInterface.cpp.

References NULL.

int Open64IRInterface::numMultiCases ( OA::StmtHandle  h)
virtual

Given a structured multi-way branch, return the number of cases. The count does not include the default/catchall case.

Implements OA::CFG::CFGIRInterface.

Definition at line 1580 of file Open64IRInterface.cpp.

int Open64IRInterface::numUMultiTargets ( OA::StmtHandle  h)
virtual

Given an unstructured multi-way branch, return the number of targets. The count does not include the optional default/catchall case.

Implements OA::CFG::CFGIRInterface.

Definition at line 1673 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_COMPGOTO, OPR_SWITCH, WN_num_entries(), and WN_operator().

Here is the call graph for this function:

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::procBody ( OA::ProcHandle  h)
virtual

Given a ProcHandle, return an IRRegionStmtIterator* for the procedure. The user must free the iterator's memory via delete.

Implements OA::CFG::CFGIRInterface.

Definition at line 1250 of file Open64IRInterface.cpp.

References currentProc(), OA::IRHandle::hval(), OPR_FUNC_ENTRY, PU_Info_tree_ptr, WN_func_body, and WN_operator().

Here is the call graph for this function:

int Open64IRInterface::returnOpEnumValInt ( OA::OpHandle  op)
virtual

temporary routine to find things out

FIXME: temporary routine to find things out should be removed after testing

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3591 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), setCurrentProcToProcContext(), and WN_operator().

Here is the call graph for this function:

bool Open64IRInterface::returnStatementsAllowed ( )
inlinevirtual

Are return statements allowed.

Implements OA::CFG::CFGIRInterface.

Definition at line 681 of file Open64IRInterface.hpp.

static void Open64IRInterface::setContext ( OA::IRHandle  h,
OA::ProcHandle  proc 
)
inlinestatic

add a new IRHandle to the given procedure after context has already been initialized with initProcContext

Definition at line 1108 of file Open64IRInterface.hpp.

References sProcContext.

Referenced by fortTkSupport::AddControlFlowEndTags().

void Open64IRInterface::setCurrentProcContext ( OA::ProcHandle  proc)
staticprivate

Definition at line 5150 of file Open64IRInterface.cpp.

References Current_PU_Info, OA::IRHandle::hval(), NULL, and PU_SetGlobalState().

Referenced by getLocation(), and isRefParam().

Here is the call graph for this function:

void Open64IRInterface::setCurrentProcToProcContext ( OA::IRHandle  h)
staticprivate
void Open64IRInterface::setIgnoreBlackBoxRoutines ( )
static

Definition at line 5283 of file Open64IRInterface.cpp.

References ourIgnoreBlackBoxRoutines.

Referenced by whirl2xaif::Whirl2Xaif::translateIR().

std::string Open64IRInterface::toString ( const OA::ProcHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 577 of file Open64IRInterface.cpp.

References getSymHandle(), and OA::IRHandle::hval().

Referenced by dump(), getLocation(), initProcContext(), and whirl2xaif::xlate_SideEffectEntry().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::StmtHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 592 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::ExprHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 607 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::MemRefHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 882 of file Open64IRInterface.cpp.

References DumpWNMemRef(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::SymHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 892 of file Open64IRInterface.cpp.

References createCharStarForST(), Current_PU_Info, OA::IRHandle::hval(), idx, NULL, PU_Info_proc_sym, setCurrentProcToProcContext(), and ST_name().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::ConstSymHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 913 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::ConstValHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 930 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( const OA::CallHandle  h)
virtual

Implements OA::IRHandlesIRInterface.

Definition at line 948 of file Open64IRInterface.cpp.

References DumpWN(), OA::IRHandle::hval(), and setCurrentProcToProcContext().

Here is the call graph for this function:

std::string Open64IRInterface::toString ( OA::OA_ptr< OA::ConstValBasicInterface cvPtr)
virtual

Temporary routine for testing MPICFG // given a ConstValBasicInterface, print out value if any.

Temporary routine for testing MPICFG.

Implements OA::ReachConsts::ReachConstsIRInterface.

Definition at line 3613 of file Open64IRInterface.cpp.

References OA::OA_ptr< T >::convert(), Open64ConstVal::getIntegerVal(), Open64ConstVal::isaInteger(), NULL, and OA::OA_ptr< T >::ptrEqual().

Here is the call graph for this function:

OA::OA_ptr< OA::IRRegionStmtIterator > Open64IRInterface::trueBody ( OA::StmtHandle  h)
virtual

Given a structured two-way conditional statement, return an IRRegionStmtIterator for the "true" part (i.e., the statements under the "if" clause).

Implements OA::CFG::CFGIRInterface.

Definition at line 1525 of file Open64IRInterface.cpp.

References OA::IRHandle::hval(), OPR_IF, WN_operator(), and WN_then.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class InitContextVisitor
friend

Definition at line 1067 of file Open64IRInterface.hpp.

friend class Open64IRExprHandleIterator
friend

Definition at line 1066 of file Open64IRInterface.hpp.

Referenced by getExprHandleIterator().

friend class Open64IRMemRefIterator
friend

Definition at line 1065 of file Open64IRInterface.hpp.

Referenced by getMemRefIterator().

friend class Open64IRProcIterator
friend

Definition at line 1064 of file Open64IRInterface.hpp.

Member Data Documentation

std::map< OA::StmtHandle, std::set< OA::ExprHandle > > Open64IRInterface::mStmt2allExprsMap
staticprivate

Definition at line 956 of file Open64IRInterface.hpp.

Referenced by findAllMemRefsAndMapToMemRefExprs().

bool Open64IRInterface::ourIgnoreBlackBoxRoutines =false
staticprivate

Definition at line 1074 of file Open64IRInterface.hpp.

Referenced by ignoreBlackBoxRoutines(), and setIgnoreBlackBoxRoutines().

std::map< OA::SymHandle, OA::ProcHandle > Open64IRInterface::sCallSymToProc
staticprivate

Definition at line 964 of file Open64IRInterface.hpp.

Referenced by haveDefinition().

bool Open64IRInterface::sContextInit = false
staticprivate

Definition at line 1047 of file Open64IRInterface.hpp.

Referenced by initContextState(), and initProcContext().

std::map< fully_qualified_name, std::map< OA::ProcHandle, OA::SymHandle > > Open64IRInterface::sFQNToProcToLocalSymMap
staticprivate

Definition at line 973 of file Open64IRInterface.hpp.

Referenced by createAndMapNamedRef(), and getLocation().

std::map< fully_qualified_name, std::set< OA::SymHandle > > Open64IRInterface::sGlobalVarMap
staticprivate

Definition at line 969 of file Open64IRInterface.hpp.

Referenced by createAndMapNamedRef(), getLocation(), and initProcContext().

std::map< OA::MemRefHandle, OA::StmtHandle > Open64IRInterface::sMemRef2StmtMap
staticprivate

Definition at line 958 of file Open64IRInterface.hpp.

Referenced by getStmtFromMemRef().

std::map< OA::ExprHandle, OA::CallHandle > Open64IRInterface::sParamToCallMap
staticprivate

Definition at line 981 of file Open64IRInterface.hpp.

Referenced by getMemRefIterator(), and isPassByReference().

std::map< OA::IRHandle, OA::ProcHandle > Open64IRInterface::sProcContext
staticprivate
std::map< OA::ProcHandle, std::set< OA::SymHandle > > Open64IRInterface::sProcToSymRefSetMap
staticprivate

Definition at line 985 of file Open64IRInterface.hpp.

Referenced by getLocation(), and initProcToSymRefSetMap().

PU_Info * Open64IRInterface::sProgContext = NULL
staticprivate

Definition at line 1045 of file Open64IRInterface.hpp.

Referenced by initProcContext().

std::map< OA::StmtHandle, std::set< OA::MemRefHandle > > Open64IRInterface::sStmt2allMemRefsMap
staticprivate
std::map< OA::SymHandle, fully_qualified_name > Open64IRInterface::sSymToFQNMap
staticprivate

Definition at line 975 of file Open64IRInterface.hpp.

Referenced by createAndMapNamedRef(), getLocation(), and initProcContext().

std::map< OA::SymHandle, std::string > Open64IRInterface::sSymToVarStringMap
staticprivate

Definition at line 978 of file Open64IRInterface.hpp.

Referenced by getSideEffect(), and initProcContext().


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