diff --git a/sapfor/experts/Sapfor_2017/_src/DirectiveProcessing/directive_creator_base.cpp b/sapfor/experts/Sapfor_2017/_src/DirectiveProcessing/directive_creator_base.cpp index 32ab1a2..3747126 100644 --- a/sapfor/experts/Sapfor_2017/_src/DirectiveProcessing/directive_creator_base.cpp +++ b/sapfor/experts/Sapfor_2017/_src/DirectiveProcessing/directive_creator_base.cpp @@ -390,6 +390,9 @@ bool checkForConflict(const map &currAccesses, for (auto &itArray : currAccesses) { + if(!itArray.first) + continue; // skip fictitious array access in free loop + const ArrayInfo &currInfo = *(itArray.second); const string &arrayName = itArray.first->GetShortName(); diff --git a/sapfor/experts/Sapfor_2017/_src/LoopAnalyzer/loop_analyzer.cpp b/sapfor/experts/Sapfor_2017/_src/LoopAnalyzer/loop_analyzer.cpp index 04a69ee..5eaebd0 100644 --- a/sapfor/experts/Sapfor_2017/_src/LoopAnalyzer/loop_analyzer.cpp +++ b/sapfor/experts/Sapfor_2017/_src/LoopAnalyzer/loop_analyzer.cpp @@ -498,7 +498,7 @@ static vector matchArrayToLoopSymbols(const vector &parentLoops if (itLoop == sortedLoopGraph.end()) printInternalError(convertFileName(__FILE__).c_str(), __LINE__); ifUnknownArrayAssignFound = true; - if (side == LEFT && (currRegime == DATA_DISTR || currRegime == COMP_DISTR)) + if (side == LEFT && (currRegime == DATA_DISTR || currRegime == COMP_DISTR || currRegime == SHARED_MEMORY_PAR)) itLoop->second->hasUnknownArrayAssigns = true; itLoop->second->hasUnknownDistributedMap = true; diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index f052cad..834bd12 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -560,6 +560,8 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne else if (curr_regime == LOOP_ANALYZER_NODIST) { auto& loopsInFile = getObjectForFileFromMap(file_name, loopGraph); + parallizeFreeLoops = 1; + sharedMemoryParallelization = 1; loopAnalyzer(file, parallelRegions, createdArrays, getObjectForFileFromMap(file_name, SPF_messages), SHARED_MEMORY_PAR, allFuncInfo, declaredArrays, declaratedArraysSt, arrayLinksByFuncCalls, createDefUseMapByPlace(), false, &(loopsInFile));