added convertation to sapfor
This commit is contained in:
@@ -1793,6 +1793,7 @@ bool SgStatement::consistentCheckIsActivated = false;
|
||||
bool SgStatement::deprecatedCheck = false;
|
||||
std::string SgStatement::currProcessFile = "";
|
||||
int SgStatement::currProcessLine = -1;
|
||||
bool SgStatement::sapfor_regime = false;
|
||||
|
||||
void SgStatement::checkConsistence()
|
||||
{
|
||||
@@ -4497,76 +4498,78 @@ SgExecutableStatement* isSgExecutableStatement(SgStatement *pt)
|
||||
return NULL;
|
||||
if (!isADeclBif(BIF_CODE(pt->thebif)))
|
||||
{
|
||||
#if __SPF
|
||||
const int var = pt->variant();
|
||||
if (var == CONTROL_END)
|
||||
if (SgStatement::isSapforRegime())
|
||||
{
|
||||
SgStatement *cp = pt->controlParent();
|
||||
if (cp->variant() == PROG_HEDR || cp->variant() == PROC_HEDR || cp->variant() == FUNC_HEDR)
|
||||
const int var = pt->variant();
|
||||
if (var == CONTROL_END)
|
||||
{
|
||||
SgStatement* cpcp = cp->controlParent();
|
||||
if (cpcp && cpcp->variant() == INTERFACE_STMT)
|
||||
return NULL;
|
||||
SgStatement* cp = pt->controlParent();
|
||||
if (cp->variant() == PROG_HEDR || cp->variant() == PROC_HEDR || cp->variant() == FUNC_HEDR)
|
||||
{
|
||||
SgStatement* cpcp = cp->controlParent();
|
||||
if (cpcp && cpcp->variant() == INTERFACE_STMT)
|
||||
return NULL;
|
||||
else
|
||||
return (SgExecutableStatement*)pt;
|
||||
}
|
||||
else
|
||||
return (SgExecutableStatement*)pt;
|
||||
return isSgExecutableStatement(cp);
|
||||
}
|
||||
else if (var == DVM_INHERIT_DIR || var == DVM_ALIGN_DIR || var == DVM_DYNAMIC_DIR ||
|
||||
var == DVM_DISTRIBUTE_DIR || var == DVM_VAR_DECL || var == DVM_SHADOW_DIR ||
|
||||
var == DVM_HEAP_DIR || var == DVM_CONSISTENT_DIR || var == DVM_POINTER_DIR ||
|
||||
var == HPF_TEMPLATE_STAT || var == HPF_PROCESSORS_STAT || var == DVM_TASK_DIR ||
|
||||
var == DVM_INDIRECT_GROUP_DIR || var == DVM_REMOTE_GROUP_DIR || var == DVM_REDUCTION_GROUP_DIR ||
|
||||
var == DVM_CONSISTENT_GROUP_DIR || var == DVM_ASYNCID_DIR || var == ACC_ROUTINE_DIR)
|
||||
return NULL;
|
||||
else if (var == SPF_ANALYSIS_DIR || var == FORMAT_STAT)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
else
|
||||
return isSgExecutableStatement(cp);
|
||||
return (SgExecutableStatement*)pt;
|
||||
}
|
||||
else if (var == DVM_INHERIT_DIR || var == DVM_ALIGN_DIR || var == DVM_DYNAMIC_DIR ||
|
||||
var == DVM_DISTRIBUTE_DIR || var == DVM_VAR_DECL || var == DVM_SHADOW_DIR ||
|
||||
var == DVM_HEAP_DIR || var == DVM_CONSISTENT_DIR || var == DVM_POINTER_DIR ||
|
||||
var == HPF_TEMPLATE_STAT || var == HPF_PROCESSORS_STAT || var == DVM_TASK_DIR ||
|
||||
var == DVM_INDIRECT_GROUP_DIR || var == DVM_REMOTE_GROUP_DIR || var == DVM_REDUCTION_GROUP_DIR ||
|
||||
var == DVM_CONSISTENT_GROUP_DIR || var == DVM_ASYNCID_DIR || var == ACC_ROUTINE_DIR)
|
||||
return NULL;
|
||||
else if (var == SPF_ANALYSIS_DIR || var == FORMAT_STAT)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
else
|
||||
return (SgExecutableStatement*)pt;
|
||||
#else
|
||||
return (SgExecutableStatement*)pt;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if __SPF
|
||||
const int var = pt->variant();
|
||||
if (var == SPF_PARALLEL_DIR)
|
||||
return (SgExecutableStatement *)pt;
|
||||
if (var == SPF_ANALYSIS_DIR || var == SPF_PARALLEL_REG_DIR)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
if (var == SPF_END_PARALLEL_REG_DIR)
|
||||
return isSgExecutableStatement(pt->lexPrev());
|
||||
if (var == SPF_TRANSFORM_DIR)
|
||||
if (SgStatement::isSapforRegime())
|
||||
{
|
||||
SgExpression *ex = pt->expr(0);
|
||||
while (ex)
|
||||
const int var = pt->variant();
|
||||
if (var == SPF_PARALLEL_DIR)
|
||||
return (SgExecutableStatement*)pt;
|
||||
if (var == SPF_ANALYSIS_DIR || var == SPF_PARALLEL_REG_DIR)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
if (var == SPF_END_PARALLEL_REG_DIR)
|
||||
return isSgExecutableStatement(pt->lexPrev());
|
||||
if (var == SPF_TRANSFORM_DIR)
|
||||
{
|
||||
if (ex->lhs()->variant() == SPF_NOINLINE_OP)
|
||||
return NULL;
|
||||
else if (ex->lhs()->variant() == SPF_FISSION_OP || ex->lhs()->variant() == SPF_EXPAND_OP)
|
||||
return (SgExecutableStatement *)pt;
|
||||
SgExpression* ex = pt->expr(0);
|
||||
while (ex)
|
||||
{
|
||||
if (ex->lhs()->variant() == SPF_NOINLINE_OP)
|
||||
return NULL;
|
||||
else if (ex->lhs()->variant() == SPF_FISSION_OP || ex->lhs()->variant() == SPF_EXPAND_OP)
|
||||
return (SgExecutableStatement*)pt;
|
||||
|
||||
ex = ex->rhs();
|
||||
ex = ex->rhs();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (var == DVM_PARALLEL_ON_DIR || var == ACC_REGION_DIR || var == ACC_END_REGION_DIR || var == DVM_EXIT_INTERVAL_DIR)
|
||||
return (SgExecutableStatement *)pt;
|
||||
if (var == DVM_INTERVAL_DIR)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
if (var == DVM_ENDINTERVAL_DIR)
|
||||
return isSgExecutableStatement(pt->lexPrev());
|
||||
if (var == DVM_BARRIER_DIR)
|
||||
return (SgExecutableStatement *)pt;
|
||||
if (var == DVM_INHERIT_DIR)
|
||||
return NULL;
|
||||
if (var == DVM_INHERIT_DIR || var == DVM_ALIGN_DIR || var == DVM_DYNAMIC_DIR ||
|
||||
var == DVM_DISTRIBUTE_DIR || var == DVM_VAR_DECL || var == DVM_SHADOW_DIR ||
|
||||
var == DVM_HEAP_DIR || var == DVM_CONSISTENT_DIR || var == DVM_POINTER_DIR)
|
||||
return NULL;
|
||||
#endif
|
||||
if (var == DVM_PARALLEL_ON_DIR || var == ACC_REGION_DIR || var == ACC_END_REGION_DIR || var == DVM_EXIT_INTERVAL_DIR)
|
||||
return (SgExecutableStatement*)pt;
|
||||
if (var == DVM_INTERVAL_DIR)
|
||||
return isSgExecutableStatement(pt->lexNext());
|
||||
if (var == DVM_ENDINTERVAL_DIR)
|
||||
return isSgExecutableStatement(pt->lexPrev());
|
||||
if (var == DVM_BARRIER_DIR)
|
||||
return (SgExecutableStatement*)pt;
|
||||
if (var == DVM_INHERIT_DIR)
|
||||
return NULL;
|
||||
if (var == DVM_INHERIT_DIR || var == DVM_ALIGN_DIR || var == DVM_DYNAMIC_DIR ||
|
||||
var == DVM_DISTRIBUTE_DIR || var == DVM_VAR_DECL || var == DVM_SHADOW_DIR ||
|
||||
var == DVM_HEAP_DIR || var == DVM_CONSISTENT_DIR || var == DVM_POINTER_DIR)
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +126,7 @@ private:
|
||||
SgProject *project;
|
||||
bool unparseIgnore;
|
||||
|
||||
static bool sapfor_regime;
|
||||
static std::string currProcessFile;
|
||||
static int currProcessLine;
|
||||
static bool deprecatedCheck;
|
||||
@@ -335,6 +336,9 @@ public:
|
||||
static void setCurrProcessLine(const int line) { currProcessLine = line; }
|
||||
static std::string getCurrProcessFile() { return currProcessFile; }
|
||||
static int getCurrProcessLine() { return currProcessLine; }
|
||||
|
||||
static void setSapforRegime() { sapfor_regime = true; }
|
||||
static bool isSapforRegime() { return sapfor_regime; }
|
||||
};
|
||||
|
||||
class SgExpression
|
||||
|
||||
Reference in New Issue
Block a user