|
OpenADFortTk (basic)
|
#include <XlateExpression.h>
Static Public Member Functions | |
| static WN * | translateExpression (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | translateExpressionSimple (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | translateVarRef (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static std::pair< ST *, WN_OFFSET > | translateVarRefSimple (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | patchWNExpr (WN *parent, INT kidno, PUXlationContext &ctxt) |
| static WN * | translateConstant (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | createValueSelector (WN *wn) |
Static Private Member Functions | |
| static bool | hasActiveSymbolType (WN *aWNp) |
| static WN * | xlate_Expression (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_VarRef (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | xlate_VarRef (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_Intrinsic (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_FunctionCall (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_BooleanOperation (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_ExprOpUsingIntrinsicTable (fortTkSupport::IntrinsicXlationTable::XAIFOpr xopr, const char *xoprNm, const char *xIntrinKey, OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static WN * | xlate_SymbolReference (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static pair< ST *, WN_OFFSET > | xlate_SymbolReferenceSimple (const xercesc::DOMElement *elem, PUXlationContext &ctxt) |
| static WN * | xlate_SymbolReferenceCollapsedPath (const xercesc::DOMElement *elem, WN *pathVorlageWN, PUXlationContext &ctxt) |
| static WN * | xlate_ArrayElementReference (OA::OA_ptr< OA::DGraph::DGraphImplement > g, OA::OA_ptr< MyDGNode > n, PUXlationContext &ctxt) |
| static OA::OA_ptr < OA::DGraph::DGraphImplement > | createExpressionGraph (const xercesc::DOMElement *elem, bool varRef=false) |
| static WN * | createDerivSelector (WN *wn) |
| static TYPE_ID | getRType (WN *wn) |
| static TYPE_ID | getRTypeFromOpands (vector< WN * > &opands) |
| static TYPE_ID | getRTypeFromOpands (TYPE_ID ty1, TYPE_ID ty2) |
| static TYPE_ID | getMType (unsigned int cl, unsigned int bytesz) |
| static OPCODE | getWNExprOpcode (OPERATOR opr, vector< WN * > &opands) |
| static INTRINSIC | getWNIntrinsic (const char *intrnNm, vector< WN * > &opands, TYPE_ID *dtype) |
Definition at line 25 of file XlateExpression.h.
| WN * xaif2whirl::XlateExpression::createDerivSelector | ( | WN * | wn | ) | [static, private] |
createDerivSelector: Select the deriv portion of 'wn', by wrapping a dummy intrinsic call around it N.B.: This creates a OPR_CALL node, which is not an expression.
Definition at line 930 of file XlateExpression.cxx.
References xaif2whirl::CreateCallToIntrin(), xaif2whirl::CreateParm(), and getRType().
Referenced by translateVarRef().

| OA::OA_ptr< OA::DGraph::DGraphImplement > xaif2whirl::XlateExpression::createExpressionGraph | ( | const xercesc::DOMElement * | elem, |
| bool | varRef = false |
||
| ) | [static, private] |
createExpressionGraph: Given the first element in an XAIF expression or variable reference graph, returns a DGraph where where graph nodes point to nodes in the DOM tree. Variable reference graphs are special cases of an expression graph.
When walking a top-down graph from root to children, one descends *incoming* edges. Here is an example expression:
mult <== x * (y + z) ^ ^ / \ x plus ^ ^ / \ y z
Here is an example variable reference:
ArrayElementReference <== A[1, i] Index: Constant: 1 Index: SymbolReference: i ^ | SymbolReference: A
Definition at line 876 of file XlateExpression.cxx.
References XAIFStringRepository::attr_source_x(), XAIFStringRepository::attr_target_x(), XAIFStringRepository::attr_Vid_x(), xaif2whirl::XercesStrX::c_str(), XAIFStringRepository::elem_ExprEdge_x(), XAIFStringRepository::elem_VarRefEdge_x(), FORTTK_ASSERT, xaif2whirl::GetNextSiblingElement(), xaif2whirl::MyDGNode::resetIds(), and XAIFStrings.
Referenced by translateExpression(), and translateVarRef().

| WN * xaif2whirl::XlateExpression::createValueSelector | ( | WN * | wn | ) | [static] |
createValueSelector: Select the value portion of 'wn', by wrapping a dummy intrinsic call around it N.B.: This creates a OPR_CALL node, which is not an expression.
Definition at line 923 of file XlateExpression.cxx.
References xaif2whirl::CreateCallToIntrin(), xaif2whirl::CreateParm(), and getRType().
Referenced by xaif2whirl::AdjustFunctions::forSubTree(), patchWNExpr(), and translateVarRef().

| TYPE_ID xaif2whirl::XlateExpression::getMType | ( | unsigned int | cl, |
| unsigned int | bytesz | ||
| ) | [static, private] |
Scan Machine_Types table for the right type.
Definition at line 1020 of file XlateExpression.cxx.
Referenced by getRTypeFromOpands(), getWNExprOpcode(), and xlate_ExprOpUsingIntrinsicTable().
| TYPE_ID xaif2whirl::XlateExpression::getRType | ( | WN * | wn | ) | [static, private] |
Definition at line 937 of file XlateExpression.cxx.
References FORTTK_ASSERT, and WN_Tree_Type().
Referenced by createDerivSelector(), and createValueSelector().

| TYPE_ID xaif2whirl::XlateExpression::getRTypeFromOpands | ( | vector< WN * > & | opands | ) | [static, private] |
Definition at line 956 of file XlateExpression.cxx.
References FORTTK_ASSERT, fortTkSupport::Diagnostics::UnexpectedInput, and WN_Tree_Type().
Referenced by getWNExprOpcode(), and getWNIntrinsic().

| TYPE_ID xaif2whirl::XlateExpression::getRTypeFromOpands | ( | TYPE_ID | ty1, |
| TYPE_ID | ty2 | ||
| ) | [static, private] |
Definition at line 980 of file XlateExpression.cxx.
References getMType().

| OPCODE xaif2whirl::XlateExpression::getWNExprOpcode | ( | OPERATOR | opr, |
| vector< WN * > & | opands | ||
| ) | [static, private] |
Definition at line 1031 of file XlateExpression.cxx.
References getMType(), and getRTypeFromOpands().
Referenced by xlate_ExprOpUsingIntrinsicTable().

| INTRINSIC xaif2whirl::XlateExpression::getWNIntrinsic | ( | const char * | intrnNm, |
| vector< WN * > & | opands, | ||
| TYPE_ID * | dtype | ||
| ) | [static, private] |
Definition at line 1064 of file XlateExpression.cxx.
References FORTTK_ASSERT, and getRTypeFromOpands().
Referenced by xlate_ExprOpUsingIntrinsicTable().

| bool xaif2whirl::XlateExpression::hasActiveSymbolType | ( | WN * | aWNp | ) | [static, private] |
Definition at line 121 of file XlateExpression.cxx.
References xaif2whirl::ActiveTypeInitializedTyIdx, xaif2whirl::ActiveTypeTyIdx, SexpTags::ST, and WN_GetBaseObjType().
Referenced by patchWNExpr().

| WN * xaif2whirl::XlateExpression::patchWNExpr | ( | WN * | parent, |
| INT | kidno, | ||
| PUXlationContext & | ctxt | ||
| ) | [static] |
FIXME: this can use the parent map that is in ctxt now. The new signature could be: PatchWNExpr(WN* wn, PUXlationContext& ctxt)
PatchWNExpr: Descends through the expression rooted at WN_kid(parent, kidno), modifying variable references with a value-component selector.
This function purposefully only operates on expressions (as opposed to arbitrary WHIRL trees) because statements have to be processed specially.
Definition at line 96 of file XlateExpression.cxx.
References createValueSelector(), hasActiveSymbolType(), and fortTkSupport::ScalarizedRef::isRefTranslatableToXAIF().
Referenced by xaif2whirl::XlateStmt::patchWN_IO_ITEM_list(), xaif2whirl::XlateStmt::patchWNStmt(), and xaif2whirl::xlate_BBCond_OLD().

| WN * xaif2whirl::XlateExpression::translateConstant | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static] |
Definition at line 163 of file XlateExpression.cxx.
References xaif2whirl::XlationContext::ARRAYIDX, XAIFStringRepository::attr_feType_x(), XAIFStringRepository::attr_type_x(), XAIFStringRepository::attr_value_x(), xaif2whirl::XercesStrX::c_str(), xaif2whirl::CreateBoolConst(), xaif2whirl::PUXlationContext::currentXlationContext(), xaif2whirl::XlationContext::EXPRSIMPLE, FORTTK_ASSERT, FORTTK_DIE, xaif2whirl::XlationContext::isFlag(), Args::ourDefaultMTypeInt, Args::ourDefaultMTypeReal, SexpTags::ST, Stab_Pointer_To(), fortTkSupport::Diagnostics::UnexpectedInput, fortTkSupport::Diagnostics::Unimplemented, xaif2whirl::XAIFFETypeToWHIRLMTy(), and XAIFStrings.
Referenced by xlate_Expression(), xaif2whirl::XlateStmt::xlate_InlinableSubroutineCall(), and xaif2whirl::XlateStmt::xlate_SubroutineCall().

| WN * xaif2whirl::XlateExpression::translateExpression | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static] |
the first node in an expression graph...
Definition at line 32 of file XlateExpression.cxx.
References createExpressionGraph(), FORTTK_ASSERT, fortTkSupport::Diagnostics::UnexpectedInput, and xlate_Expression().
Referenced by translateExpressionSimple(), xlate_ArrayElementReference(), xaif2whirl::XlateStmt::xlate_AssignmentRHS(), xaif2whirl::xlate_CFGstruct(), xaif2whirl::xlate_CFGunstruct(), and xaif2whirl::XlateStmt::xlate_Saxpy().

| WN * xaif2whirl::XlateExpression::translateExpressionSimple | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static] |
TranslateExpressionSimple: Translates certain XAIF expressions into special WHIRL expressions in order to conform to WHIRL requirements.
Definition at line 44 of file XlateExpression.cxx.
References xaif2whirl::PUXlationContext::createXlationContext(), xaif2whirl::PUXlationContext::deleteXlationContext(), xaif2whirl::XlationContext::EXPRSIMPLE, and translateExpression().
Referenced by xaif2whirl::xlate_CFGstruct(), and xaif2whirl::xlate_CFGunstruct().

| WN * xaif2whirl::XlateExpression::translateVarRef | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static] |
TranslateVarRef: Given the first node in a variable reference graph, create a variable reference.
If the LVALUE flag of 'ctxt' is set an address expression (lvalue) is returned; otherwise a rvalue is returned. If this is the outermost part of an active varref, creates a value/deriv selector.
Definition at line 52 of file XlateExpression.cxx.
References xaif2whirl::XlationContext::ACTIVETYPE, xaif2whirl::XlationContext::ARRAYIDX, createDerivSelector(), createExpressionGraph(), createValueSelector(), xaif2whirl::PUXlationContext::createXlationContext(), xaif2whirl::PUXlationContext::currentXlationContext(), xaif2whirl::PUXlationContext::deleteXlationContext(), xaif2whirl::XlationContext::DERIVSELECTOR, FORTTK_ASSERT, xaif2whirl::XlationContext::isFlag(), fortTkSupport::Diagnostics::UnexpectedInput, xaif2whirl::XlationContext::unsetFlag(), xaif2whirl::XlationContext::VALUESELECTOR, xaif2whirl::XlationContext::VARREF, and xlate_VarRef().
Referenced by xaif2whirl::XlateStmt::xlate_AssignmentLHS(), xaif2whirl::XlateStmt::xlate_DecDeriv(), xaif2whirl::XlateStmt::xlate_IncDeriv(), xaif2whirl::XlateStmt::xlate_InlinableSubroutineCall(), xaif2whirl::XlateStmt::xlate_Saxpy(), xaif2whirl::XlateStmt::xlate_SetDeriv(), xaif2whirl::XlateStmt::xlate_SetNegDeriv(), and xaif2whirl::XlateStmt::xlate_SubroutineCall().

| std::pair< ST *, WN_OFFSET > xaif2whirl::XlateExpression::translateVarRefSimple | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static] |
TranslateSimpleVarRef: Given the first node in a simple variable reference graph, create a variable reference. No value/deriv selector can be created.
Definition at line 81 of file XlateExpression.cxx.
References xaif2whirl::PUXlationContext::createXlationContext(), xaif2whirl::PUXlationContext::deleteXlationContext(), XAIFStringRepository::elem_SymRef_x(), FORTTK_ASSERT, FORTTK_DIE, xaif2whirl::GetNextSiblingElement(), xaif2whirl::XlationContext::NOFLAG, fortTkSupport::Diagnostics::UnexpectedInput, XAIFStrings, and xlate_SymbolReferenceSimple().
Referenced by xaif2whirl::XlateStmt::translateAssignmentSimple().

| WN * xaif2whirl::XlateExpression::xlate_ArrayElementReference | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 721 of file XlateExpression.cxx.
References xaif2whirl::XlationContext::ARRAY, xaif2whirl::XlationContext::ARRAYIDX, XAIFStringRepository::attr_symId_x(), xaif2whirl::XercesStrX::c_str(), xaif2whirl::PUXlationContext::createXlationContext(), xaif2whirl::PUXlationContext::deleteXlationContext(), XAIFStringRepository::elem_Bound_x(), XAIFStringRepository::elem_Index_x(), XAIFStringRepository::elem_IndexTriplet(), XAIFStringRepository::elem_IndexTriplet_x(), XAIFStringRepository::elem_Stride_x(), XAIFStringRepository::elem_SymRef(), XAIFStringRepository::elem_SymRef_x(), FORTTK_ASSERT, FORTTK_DIE, xaif2whirl::GetChildElementCount(), xaif2whirl::GetFirstChildElement(), xaif2whirl::GetNextSiblingElement(), xaif2whirl::GetSuccessor(), Stab_Pointer_To(), translateExpression(), TY_Is_Character_String(), TY_Is_Chararray(), fortTkSupport::Diagnostics::UnexpectedInput, WN_GetRefObjType(), XAIFStrings, and xlate_VarRef().
Referenced by xlate_VarRef().

| WN * xaif2whirl::XlateExpression::xlate_BooleanOperation | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 346 of file XlateExpression.cxx.
References XAIFStringRepository::attr_name_x(), xaif2whirl::XercesStrX::c_str(), FORTTK_ASSERT, fortTkSupport::Diagnostics::UnexpectedInput, fortTkSupport::IntrinsicXlationTable::XAIFBoolOp, XAIFStrings, and xlate_ExprOpUsingIntrinsicTable().
Referenced by xlate_Expression().

| WN * xaif2whirl::XlateExpression::xlate_Expression | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 260 of file XlateExpression.cxx.
References XAIFStringRepository::elem_BoolOp_x(), XAIFStringRepository::elem_Constant_x(), XAIFStringRepository::elem_FuncCall_x(), XAIFStringRepository::elem_Intrinsic_x(), XAIFStringRepository::elem_VarRef_x(), FORTTK_DIE, translateConstant(), XAIFStrings, xlate_BooleanOperation(), xlate_FunctionCall(), xlate_Intrinsic(), and xlate_VarRef().
Referenced by translateExpression(), and xlate_ExprOpUsingIntrinsicTable().

| WN * xaif2whirl::XlateExpression::xlate_ExprOpUsingIntrinsicTable | ( | fortTkSupport::IntrinsicXlationTable::XAIFOpr | xopr, |
| const char * | xoprNm, | ||
| const char * | xIntrinKey, | ||
| OA::OA_ptr< OA::DGraph::DGraphImplement > | g, | ||
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
xlate_ExprOpUsingIntrinsicTable: abstract similarities betweeen translation of XAIF Intrinsic, FunctionCall, BooleanOperation. The XAIF operator will become either a special WHIRL node or some type of WHIRL call. WN*
Definition at line 389 of file XlateExpression.cxx.
References xaif2whirl::conversionToReal(), xaif2whirl::CreateCallToIntrin(), xaif2whirl::CreateIntrinsicCall(), fortTkSupport::IntrinsicXlationTable::findWHIRLInfo(), FORTTK_ASSERT_WARN, FORTTK_DIE, getMType(), getWNExprOpcode(), getWNIntrinsic(), xaif2whirl::IntrinsicTable, TY_Is_Character_String(), TY_Is_Pointer(), WN_Tree_Type(), fortTkSupport::IntrinsicXlationTable::WNCall, fortTkSupport::IntrinsicXlationTable::WNExpr, fortTkSupport::IntrinsicXlationTable::WNIntrinCall, fortTkSupport::IntrinsicXlationTable::WNIntrinOp, and xlate_Expression().
Referenced by xlate_BooleanOperation(), and xlate_Intrinsic().

| WN * xaif2whirl::XlateExpression::xlate_FunctionCall | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 336 of file XlateExpression.cxx.
References FORTTK_ASSERT, FORTTK_DIE, fortTkSupport::Diagnostics::UnexpectedInput, and fortTkSupport::Diagnostics::Unimplemented.
Referenced by xlate_Expression().
| WN * xaif2whirl::XlateExpression::xlate_Intrinsic | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 230 of file XlateExpression.cxx.
References XAIFStringRepository::attr_name_x(), xaif2whirl::XercesStrX::c_str(), xaif2whirl::PUXlationContext::currentXlationContext(), FORTTK_ASSERT, xaif2whirl::GetIntrinsicKey(), xaif2whirl::XlationContext::setFlag(), xaif2whirl::XlationContext::SUPPRESSSELECTOR, fortTkSupport::Diagnostics::UnexpectedInput, xaif2whirl::XlationContext::unsetFlag(), fortTkSupport::IntrinsicXlationTable::XAIFIntrin, XAIFStrings, and xlate_ExprOpUsingIntrinsicTable().
Referenced by xlate_Expression().

| WN * xaif2whirl::XlateExpression::xlate_SymbolReference | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
xlate_SymbolReferenceSimple: Translate a symbol reference. May an active flag in 'ctxt' that is inherited *up* the context stack. N.B.: For PREGS we *do not* create a LDA
Definition at line 535 of file XlateExpression.cxx.
References xaif2whirl::XlationContext::ACTIVETYPE, xaif2whirl::XlationContext::ARRAY, xaif2whirl::PUXlationContext::currentXlationContext(), xaif2whirl::PUXlationContext::findWN(), FORTTK_ASSERT, FORTTK_DIE, fortTkSupport::Symbol::GetPathVorlage(), xaif2whirl::GetPregId(), fortTkSupport::Symbol::GetST(), xaif2whirl::GetSymbol(), fortTkSupport::Symbol::IsActive(), xaif2whirl::XlationContext::isFlag(), fortTkSupport::Symbol::IsPathCollapsed(), xaif2whirl::XlationContext::LVALUE, Args::ourDefaultMTypeInt, Args::ourDefaultMTypeUInt, xaif2whirl::XlationContext::setFlag(), SexpTags::ST, Stab_Pointer_To(), TY_Is_Chararray(), fortTkSupport::Diagnostics::UnexpectedInput, and xlate_SymbolReferenceCollapsedPath().
Referenced by xlate_VarRef().

| WN * xaif2whirl::XlateExpression::xlate_SymbolReferenceCollapsedPath | ( | const xercesc::DOMElement * | elem, |
| WN * | pathVorlageWN, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 662 of file XlateExpression.cxx.
References xaif2whirl::PUXlationContext::currentXlationContext(), FORTTK_ASSERT, xaif2whirl::XlationContext::isFlag(), xaif2whirl::XlationContext::LVALUE, SexpTags::ST, Stab_Pointer_To(), TY_Is_Pointer(), fortTkSupport::Diagnostics::Unimplemented, and WN_GetRefObjType().
Referenced by xlate_SymbolReference().

| std::pair< ST *, WN_OFFSET > xaif2whirl::XlateExpression::xlate_SymbolReferenceSimple | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
xlate_SymbolReferenceSimple: Translate a simple symbol reference. For pregs, also return the PREG_IDX as an WN_OFFSET. Do not set an active flag.
Definition at line 651 of file XlateExpression.cxx.
References xaif2whirl::GetPregId(), fortTkSupport::Symbol::GetST(), xaif2whirl::GetSymbol(), and SexpTags::ST.
Referenced by translateVarRefSimple().

| static WN* xaif2whirl::XlateExpression::xlate_VarRef | ( | const xercesc::DOMElement * | elem, |
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Referenced by translateVarRef(), xlate_ArrayElementReference(), and xlate_Expression().
| WN * xaif2whirl::XlateExpression::xlate_VarRef | ( | OA::OA_ptr< OA::DGraph::DGraphImplement > | g, |
| OA::OA_ptr< MyDGNode > | n, | ||
| PUXlationContext & | ctxt | ||
| ) | [static, private] |
Definition at line 313 of file XlateExpression.cxx.
References XAIFStringRepository::elem_ArrayElemRef_x(), XAIFStringRepository::elem_SymRef_x(), FORTTK_ASSERT, FORTTK_DIE, fortTkSupport::Diagnostics::UnexpectedInput, XAIFStrings, xlate_ArrayElementReference(), and xlate_SymbolReference().
