added new pass for statistics, updated dvm

This commit is contained in:
ALEXks
2024-08-30 12:17:35 +03:00
parent 861ce8262e
commit 7b34de49a8
12 changed files with 114 additions and 14 deletions

View File

@@ -170,7 +170,7 @@ static char* getNestCond()
static char* getNewCycleVar(const char *oldVar)
{
char *str = new char[strlen(oldVar) + 2];
char *str = new char[strlen(oldVar) + 3];
str[0] = '\0';
strcat(str, "__");
strcat(str, oldVar);
@@ -3468,7 +3468,7 @@ SgSymbol *hasSameNameAsSource(SgSymbol *symb)
int sameVariableName(SgSymbol *symb1, SgSymbol *symb2)
{
if (!symb1 || !symb2 || (symb1->variant() != VARIABLE_NAME && symb1->variant() != CONST_NAME) || symb2->variant() != VARIABLE_NAME && symb2->variant() != CONST_NAME)
if (!symb1 || !symb2 || (symb1->variant() != VARIABLE_NAME && symb1->variant() != CONST_NAME && symb1->variant() != FUNCTION_NAME) || symb2->variant() != VARIABLE_NAME && symb2->variant() != CONST_NAME && symb2->variant() != FUNCTION_NAME)
return 0;
if (!strcmp (symb1->identifier(), symb2->identifier()))
return 1;

View File

@@ -661,7 +661,7 @@ void ReadWritePrint_Statement(SgStatement *stmt, int error_msg)
//if(IN_COMPUTE_REGION && !in_checksection)
// ChangeDistArrayRef(iol);
}
if(inparloop && (send || IN_COMPUTE_REGION) && error_msg)
if(inparloop && (send || IN_COMPUTE_REGION || parloop_by_handler) && error_msg)
err("Illegal I/O statement in the range of parallel loop/region", 184,stmt);
}

View File

@@ -458,7 +458,7 @@ int WhatInterface(SgStatement *stmt)
case SHADOW_COMP_OP:
case ACROSS_OP:
case ACC_TIE_OP:
case CONSISTENT_OP:
case CONSISTENT_OP:
case STAGE_OP:
case REMOTE_ACCESS_OP:
if(e->symbol()) // asynchronous REMOTE_ACCESS
@@ -2297,8 +2297,10 @@ void Interface_2(SgStatement *stmt,SgExpression *clause[],SgExpression *init[],S
}
if (clause[CONSISTENT_]) //there is CONSISTENT clause
for (SgExpression *el = clause[CONSISTENT_]->lhs(); el; el=el->rhs())
InsertNewStatementAfter(Consistent_H(ilh, HeaderForArrayInParallelDir(el->lhs()->symbol(), stmt, 0), MappingList(stmt, el->lhs())), cur_st, cur_st->controlParent());
{
SgExpression *head = HeaderForArrayInParallelDir(el->lhs()->symbol(), stmt, 0);
InsertNewStatementAfter(Consistent_H(ilh, head, MappingList(stmt, el->lhs())), cur_st, cur_st->controlParent());
}
if (clause[REMOTE_ACCESS_]) //there is REMOTE_ACCESS clause
{ int nbuf=1;
//adding new element to remote_access directive/clause list
@@ -2306,7 +2308,10 @@ void Interface_2(SgStatement *stmt,SgExpression *clause[],SgExpression *init[],S
RemoteVariableList(clause[REMOTE_ACCESS_]->symbol(), clause[REMOTE_ACCESS_]->lhs(), stmt);
for (SgExpression *el=clause[REMOTE_ACCESS_]->lhs(); el; el=el->rhs(),nbuf++)
InsertNewStatementAfter(LoopRemoteAccess_H(ilh, HeaderForArrayInParallelDir(el->lhs()->symbol(), stmt, 0), el->lhs()->symbol(), MappingList(stmt, ArrayRefAddition(el->lhs()))), cur_st, cur_st->controlParent());
{
SgExpression *head = HeaderForArrayInParallelDir(el->lhs()->symbol(), stmt, 0);
InsertNewStatementAfter(LoopRemoteAccess_H(ilh, head, el->lhs()->symbol(), MappingList(stmt, ArrayRefAddition(el->lhs()))), cur_st, cur_st->controlParent());
}
}
if (clause[SHADOW_COMPUTE_]) //there is SHADOW_COMPUTE clause