From aae81c0e8790d98812d8804314cc22a62965b6ce Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 7 Sep 2023 17:42:40 +0300 Subject: [PATCH 1/8] PassManager: -= operator added, FIND_FUNC_TO_INCLUDE and CHECK_FUNC_TO_INCLUDE removed from INSERT_PARALLEL_DIRS_NODIST --- .../Sapfor_2017/_src/Utils/PassManager.h | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index f890cc4..8906ee5 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -69,6 +69,61 @@ public: return right_vec; } + friend void operator-=(const list& left_vec, const list& right_vec) + { + /* erase each pass in right_vec from dependency tree for each pass in left_vec */ + set to_erase; + + for(const auto& remove_pass : right_vec) + to_erase.insert(remove_pass.name); + + set to_process, processed; + + for (const auto& process_pass : left_vec) + to_process.insert(process_pass.name); + + while (!to_process.empty()) { + set next_to_process; + + for (const auto& pass_name : to_process) { + processed.insert(pass_name); + auto pass_deps = (*passDeps).find(pass_name); + if (pass_deps != (*passDeps).end()) { + for (auto dep = pass_deps->second.begin(); dep != pass_deps->second.end();) { + if (to_erase.find(*dep) != to_erase.end()) { + dep = pass_deps->second.erase(dep); + } + else { + if (processed.find(*dep) == processed.end()) + next_to_process.insert(*dep); + dep++; + } + } + + if(pass_deps->second.empty()) + pass_deps = (*passDeps).erase(pass_deps); + } + } + + to_process = next_to_process; + } + } + + friend void operator-=(const list& left_vec, const Pass& right) + { + left_vec -= list({right}); + } + + void operator-=(const list& right_vec) const + { + list({ *this }) -= right_vec; + } + + void operator-=(const Pass& right) const + { + list({ *this }) -= list({ right }); + } + Pass(passes name) : name(name) { } }; @@ -98,6 +153,8 @@ void InitPassesDependencies(map> &passDepsIn, set passDeps = &passDepsIn; + /* Insertions */ + Pass(PREPROC_SPF) <= Pass(CREATE_INTER_TREE); list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) << list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE }); @@ -200,6 +257,10 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS); + /* Removals */ + + Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE }); + passesIgnoreStateDone.insert({ CREATE_PARALLEL_DIRS, INSERT_PARALLEL_DIRS, INSERT_SHADOW_DIRS, EXTRACT_PARALLEL_DIRS, EXTRACT_SHADOW_DIRS, CREATE_REMOTES, UNPARSE_FILE, REMOVE_AND_CALC_SHADOW, REVERSE_CREATED_NESTED_LOOPS, PREDICT_SCHEME, CALCULATE_STATS_SCHEME, REVERT_SPF_DIRS, CLEAR_SPF_DIRS, TRANSFORM_SHADOW_IF_FULL, -- 2.49.1 From d90f48c787343c81624e522fd0c01cb8335e8db6 Mon Sep 17 00:00:00 2001 From: mkoch Date: Sat, 9 Sep 2023 20:59:05 +0300 Subject: [PATCH 2/8] split insertions and removals in passes' depencies into two functions --- sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 3 ++- sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index b8b8df3..e5c58fd 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -1,4 +1,4 @@ -#include "Utils/leak_detector.h" +#include "Utils/leak_detector.h" #pragma comment(linker, "/STACK:536870912") // 512 МБ @@ -2333,6 +2333,7 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam initIntrinsicFunctionNames(); initTags(); InitPassesDependencies(passesDependencies, passesIgnoreStateDone); + removalsFromPassesDependencies(passesDependencies); setPassValues(); if (dvmInited == false) diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 8906ee5..06fb0b6 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -153,8 +153,6 @@ void InitPassesDependencies(map> &passDepsIn, set passDeps = &passDepsIn; - /* Insertions */ - Pass(PREPROC_SPF) <= Pass(CREATE_INTER_TREE); list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) << list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE }); @@ -257,10 +255,6 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS); - /* Removals */ - - Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE }); - passesIgnoreStateDone.insert({ CREATE_PARALLEL_DIRS, INSERT_PARALLEL_DIRS, INSERT_SHADOW_DIRS, EXTRACT_PARALLEL_DIRS, EXTRACT_SHADOW_DIRS, CREATE_REMOTES, UNPARSE_FILE, REMOVE_AND_CALC_SHADOW, REVERSE_CREATED_NESTED_LOOPS, PREDICT_SCHEME, CALCULATE_STATS_SCHEME, REVERT_SPF_DIRS, CLEAR_SPF_DIRS, TRANSFORM_SHADOW_IF_FULL, @@ -275,4 +269,9 @@ void InitPassesDependencies(map> &passDepsIn, set exit(0); } } + +void removalsFromPassesDependencies(map>& passDepsIn) +{ + Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE }); +} #undef list -- 2.49.1 From 3acfb32a24225e148101dcc0670f0627a66cf387 Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 7 Sep 2023 16:00:52 +0300 Subject: [PATCH 3/8] First version of SELECT_ARRAY_DIM_CONF pass --- sapfor/experts/Sapfor_2017/CMakeLists.txt | 4 +++- .../_src/GraphCall/select_array_conf.cpp | Bin 0 -> 15966 bytes .../_src/GraphCall/select_array_conf.h | Bin 0 -> 1622 bytes sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 10 ++++++++++ sapfor/experts/Sapfor_2017/_src/Sapfor.h | 2 ++ .../Sapfor_2017/_src/Utils/PassManager.h | 10 ++++++---- 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp create mode 100644 sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h diff --git a/sapfor/experts/Sapfor_2017/CMakeLists.txt b/sapfor/experts/Sapfor_2017/CMakeLists.txt index f62151f..d6c259b 100644 --- a/sapfor/experts/Sapfor_2017/CMakeLists.txt +++ b/sapfor/experts/Sapfor_2017/CMakeLists.txt @@ -285,7 +285,9 @@ set(EXPR_TRANSFORM _src/ExpressionTransform/control_flow_graph_part.cpp set(GR_CALL _src/GraphCall/graph_calls.cpp _src/GraphCall/graph_calls.h _src/GraphCall/graph_calls_base.cpp - _src/GraphCall/graph_calls_func.h) + _src/GraphCall/graph_calls_func.h + _src/GraphCall/select_array_conf.cpp + _src/GraphCall/select_array_conf.h) set(GR_LOOP _src/GraphLoop/graph_loops_base.cpp _src/GraphLoop/graph_loops.cpp diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6fddf2815f54a352ee9014e6b6427cb19379bd95 GIT binary patch literal 15966 zcmd5@U2hyk7OiKb{ST8}35^45*jEBb31BvoH=s2UB7Msjn#JM||`@d+F z3BK`j4vS8}jnUo(9~Y458Zu1-NBt8 z()W@FBI>`OVjMiixPOF?@tHtFiI;p7In6108MV#~mRVq=*ZnbYaE&L_@GtoL1b?QD zx_qK0uBDqu-H*P-V4u`P}N8rRL& zE+xn{ItiuTg^+yIed}E)&AF76x{7P@Q`ftmK196>am3jXP{Rm7tcd4Vu=MMQCgO$u z&T%G*ADN`{$Ve+J+zLYD`U)JEub`3T3b|!|MpQTlZ_FHwAdhW$pg85lxHnqvRswWG2~U=Dl0ny3t0?f}Kz*X|^=ivM?XB;1 zCm*S2=e{ocb4{BsP?_xGQ>Wx*@xN-Bw2qSGmHVq&!&fvZr`^7v>>P zk9UUACyaTEr`()s!-JKVu-ZyB(-+VYyI^~`E(S946uq3+7{l!SA5bGD)`;YrcgV4I z%07iRq<$Fh`z*K@cONIQk3@Sh2U<^PwtDgm9h*JGWBT=n8~Ly_(ZA+(!#JL0-yBWi zTG&s|N?lkVv9FacA+N88lU|0A@MmagoM!$78!hoU20HjnTCsgb`P6W26&~}l)@bz# zIi9h#-%m93aCc)pM$0!pVx}R9yWNxU#cJ-x#T=a(w8gVjXpD)Mrp($9GQ)lcFVnNBL-Z~%!I(>bQYOv$7xmmD#2>Aj z&|{g(V|HC1B|YodFvlI;qH}rMcO-RT_F3kK#?Rs6n#Q=1cfvk0hu zGDq!W)Qj6u-2IrxUScI?kei5wr18?zat#v$H5|yFw)dXoIn;`3ie+cFIqXA1q_1a{ zL1YhI>;9vs^rHhzCPSK+hTFnQLHq4TjWx#c{xG~zIHA5uj7^{)o?P-g&Q9--fxWlTtzsa%#H^QUvs)f3 z+of}C@xZqM43BT)=`1^~7WJ6ZX-~tbD3sS>zs&0j)lRLLOQdkkarI8$hsCLolk<_+ zLEl1~7NHq^`K0Zy)J+@b<1jdm>zsS~wd_UyYE{QmjF^u+%NOm|l{sv; zUT5JD-|F)6iAP%62OT0aP+PpPqm7I^%gOa-VLM1i06b@vtZ2z-imeaY)1r-iL`6>tLJ<1Ix=(aNppq|t*Y}< z>$nj6>$3Uiv#u{$uzun=!zw(nX0MxmMV)c)%+s#?%$geJ6L}x~o_zxLBDimouaIlr zFEzu8ly&G2pu^`&tf{paQw{%oyMe#x^>$K7$#d&V8fnZla^R@>cwkm(X>}Lt`FASn z7P8I)wclS$?@QHf$kp;LL;ZxljzUR3!~;)5>oSN!@*wsShUiUDsS_ZUq@^L*Mjvb;{UgaU| zb@Q#+qv8~#nZ#r~dAG_8#jewud)AQB|K# z{>J1=VLGldVCh6x?Y&qnG7ITlm2KWJ+3uaqKetyeIi+KIwyboQo_$G| zk*L+pv8bW_;4^rcI@_CAt`}8g#Xb*=lXWgqF7kMll;!nd?6X+`-Cs9fGTukkuBw@t zY9Bn>TeZX4VL0XpyFT8uy8Du8T%LV6-G1@?@Vfruj9H(xf9?FE{){z}Rb1P5|FydO z{cfiKqV_PnIU)O9p9V+|_kSuN%ENxm9fj&w^X+ylU$3@%xj{UPivb!fgynp3UFDB= zeOe&CHj_fLl>N)M>QwD8Gj3C9ujg-jzhrFPD*kkp);%xc(rPmQY+OgkSJh+CB96+d zUp?ivaeVMCe)&0Te^1TiEYWRyguFT}M@ZY-$R%#pPaLdj+wKHKTHEv_Mf3dLM0d;U y`ktj6q2I#Qqg(B-%R8>}6Gd8%ySwZ7)~5Ym;&=Z($6ZfaBu!o4{;vJ9fByi$SgpVS literal 0 HcmV?d00001 diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h new file mode 100644 index 0000000000000000000000000000000000000000..41486981f3bcd6c6a313d2745f20a29b7345e5b0 GIT binary patch literal 1622 zcmcgs(MrQW5S(Yhe+U*tOKIP=6ttyMs37XQXqv`oO+wNZ^yAf;OO9(IQIIG{+GKZc zcXnrYKi)e?k>MU8Uij-FK@1-O_OWN44k9C2VS@$bLt~d>)S%6=ra#>Y8*R4qNq?cpwBbFgwbr&2clf_TUj(~`gr8+@4a4_s-(1>(_6wS4VaNCCD|QT zr8FmopS@l2p6;%A0zMJm_+^n^Qx=w}bH*vGt5O%mGP5Ouh@5!1F+Pi$o-vLhy<$v# zj3uW0&q|+72#)9@q)kTKr;?p6J*zh)>G54PUf_gBoszN>oW#~&tXFM!xgHYB#&pxn zAWP6C!y_Eh`?A!W6Zw>RsZKq^kw*IqvI;- zwHeBZea(4mvUXY7*`Jfm7|+bOn5Sau#;k)jkofYrfwdp%lTe-4`rg{zN$L+xuDZr; IuVb9z6Y?tdq5uE@ literal 0 HcmV?d00001 diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index e5c58fd..4ec86e8 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -37,6 +37,7 @@ #include "LoopAnalyzer/loop_analyzer_nodist.h" #include "GraphCall/graph_calls_func.h" +#include "GraphCall/select_array_conf.h" #include "GraphLoop/graph_loops_func.h" #include "DynamicAnalysis/gCov_parser_func.h" #include "DynamicAnalysis/createParallelRegions.h" @@ -2174,6 +2175,11 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne runPrivateVariableAnalysis(loopGraph, fullIR, commonBlocks, SPF_messages); else if (curr_regime == FIX_COMMON_BLOCKS) fixCommonBlocks(allFuncInfo, commonBlocks, &project); + else if (curr_regime == SELECT_ARRAY_DIM_CONF) { + map> localMessages; + + SelectArrayConfForParallelization(&project, allFuncInfo, loopGraph, createdDirectives, localMessages, arrayLinksByFuncCalls, parallelRegions); + } const float elapsed = duration_cast(high_resolution_clock::now() - timeForPass).count() / 1000.; const float elapsedGlobal = duration_cast(high_resolution_clock::now() - globalTime).count() / 1000.; @@ -2385,6 +2391,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam case INSERT_PARALLEL_DIRS_NODIST: { + mpiProgram = 1; + string additionalName = (consoleMode && folderName == NULL) ? "__shared" : ""; runAnalysis(*project, INSERT_PARALLEL_DIRS_NODIST, false); @@ -2392,6 +2400,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam runPass(REVERT_SUBST_EXPR_RD, proj_name, folderName); runPass(CONVERT_LOOP_TO_ASSIGN, proj_name, folderName); + + runPass(SELECT_ARRAY_DIM_CONF, proj_name, folderName); runAnalysis(*project, INSERT_PARALLEL_DIRS, false, consoleMode ? additionalName.c_str() : NULL, folderName); diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.h b/sapfor/experts/Sapfor_2017/_src/Sapfor.h index 739bce9..4375adc 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.h +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.h @@ -67,6 +67,7 @@ enum passes { CHECK_ARGS_DECL, FIND_FUNC_TO_INCLUDE, + SELECT_ARRAY_DIM_CONF, ONLY_ARRAY_GRAPH, PRIVATE_ANALYSIS_SPF, @@ -225,6 +226,7 @@ static void setPassValues() passNames[VERIFY_COMMON] = "VERIFY_COMMON"; passNames[VERIFY_OPERATORS] = "VERIFY_OPERATORS"; passNames[FIND_FUNC_TO_INCLUDE] = "FIND_FUNC_TO_INCLUDE"; + passNames[SELECT_ARRAY_DIM_CONF] = "SELECT_ARRAY_DIM_CONF"; passNames[CREATE_DISTR_DIRS] = "CREATE_DISTR_DIRS"; passNames[CREATE_PARALLEL_DIRS] = "CREATE_PARALLEL_DIRS"; passNames[INSERT_PARALLEL_DIRS] = "INSERT_PARALLEL_DIRS"; diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 06fb0b6..de2cc9d 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -173,7 +173,9 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(GET_ALL_ARRAY_DECL) <= Pass(CALL_GRAPH_IR); - Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= Pass(PRIVATE_ANALYSIS_IR) <= list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS, LOOP_ANALYZER_NODIST }); + Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= list(FIND_FUNC_TO_INCLUDE, PRIVATE_ANALYSIS_IR) << list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS }); + + Pass(PRIVATE_ANALYSIS_IR) <= Pass(LOOP_ANALYZER_NODIST); Pass(CORRECT_VAR_DECL) <= list({ VERIFY_DVM_DIRS, PREPROC_SPF, VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_ALLOCATES, CHECK_FUNC_TO_INCLUDE, FILL_PAR_REGIONS_LINES, CONVERT_ASSIGN_TO_LOOP, VERIFY_COMMON, VERIFY_EQUIVALENCE, PRINT_PAR_REGIONS_ERRORS, VERIFY_OPERATORS, VERIFY_FORMAT }) <= Pass(CODE_CHECKER_PASSES); @@ -203,7 +205,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ CORRECT_VAR_DECL, PREPROC_SPF }) << list({ LOOP_GRAPH, CALL_GRAPH, CALL_GRAPH2 }); - list({ PREPROC_SPF, CALL_GRAPH2 }) <= Pass(FILL_PAR_REGIONS_LINES) <= list({ EXPAND_EXTRACT_PAR_REGION, CHECK_FUNC_TO_INCLUDE, FIND_FUNC_TO_INCLUDE, CHECK_ARGS_DECL }); + list({ PREPROC_SPF, CALL_GRAPH2 }) <= Pass(FILL_PAR_REGIONS_LINES) <= list({ EXPAND_EXTRACT_PAR_REGION, CHECK_FUNC_TO_INCLUDE, FIND_FUNC_TO_INCLUDE, CHECK_ARGS_DECL, SELECT_ARRAY_DIM_CONF}); list({ PREPROC_SPF, CALL_GRAPH2, FILL_PAR_REGIONS_LINES }) <= Pass(FILL_PAR_REGIONS) <= Pass(RESOLVE_PAR_REGIONS); @@ -237,7 +239,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ GCOV_PARSER, CREATE_INTER_TREE, CALL_GRAPH, CALL_GRAPH2 }) <= Pass(CREATE_PARALLEL_REGIONS); - list({ PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, LOOP_GRAPH, CALL_GRAPH, PRIVATE_ANALYSIS_IR }) <= Pass(INSERT_REGIONS); + list({ PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, LOOP_GRAPH, CALL_GRAPH, PRIVATE_ANALYSIS_IR, FIND_FUNC_TO_INCLUDE }) <= Pass(INSERT_REGIONS); list({ LOOP_ANALYZER_DATA_DIST_S1, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ LOOPS_SPLITTER, LOOPS_COMBINER, UNROLL_LOOPS, INSERT_REGIONS }); @@ -251,7 +253,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ BUILD_IR, CALL_GRAPH }) <= Pass(LIVE_ANALYSIS_IR); - list({ BUILD_IR, LOOP_GRAPH, LIVE_ANALYSIS_IR, FIND_FUNC_TO_INCLUDE }) <= Pass(PRIVATE_ANALYSIS_IR); + list({ BUILD_IR, LOOP_GRAPH, LIVE_ANALYSIS_IR }) <= Pass(PRIVATE_ANALYSIS_IR); Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS); -- 2.49.1 From 550c56c57f592ca2c655d921b219ebb371ca6a38 Mon Sep 17 00:00:00 2001 From: mkoch Date: Wed, 20 Sep 2023 20:51:11 +0300 Subject: [PATCH 4/8] fix removals from passes' dependencies --- sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 21 +++--- sapfor/experts/Sapfor_2017/_src/Sapfor.h | 2 +- .../Sapfor_2017/_src/Utils/PassManager.h | 74 ++++++++++--------- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index 0ac40a3..489d0db 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -2324,7 +2324,7 @@ static void findFunctionsToInclude(bool needToAddErrors) static bool dvmInited = false; -void runPass(const int curr_regime, const char *proj_name, const char *folderName) +void runPass(const int curr_regime, const char *proj_name, const char *folderName, bool root_call) { // create full dependency graph switch (curr_regime) @@ -2336,11 +2336,14 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam } // init math functions of FORTRAN - initIntrinsicFunctionNames(); - initTags(); - InitPassesDependencies(passesDependencies, passesIgnoreStateDone); - removalsFromPassesDependencies(passesDependencies); - setPassValues(); + if(root_call) + { + initIntrinsicFunctionNames(); + initTags(); + InitPassesDependencies(passesDependencies, passesIgnoreStateDone); + removalsFromPassesDependencies(passesDependencies, curr_regime); + setPassValues(); + } if (dvmInited == false) { @@ -2367,7 +2370,7 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam if (itDep != passesDependencies.end()) for (int k = 0; k < itDep->second.size(); ++k) runPass(itDep->second[k], proj_name, folderName); - + switch (curr_regime) { case FIND_FUNC_TO_INCLUDE: @@ -2933,9 +2936,9 @@ int main(int argc, char **argv) if (curr_regime == EMPTY_PASS) printHelp(passNames, printPasses ? EMPTY_PASS : -1); - runPass(curr_regime, proj_name, folderName); + runPass(curr_regime, proj_name, folderName, true); if (printText) - runPass(UNPARSE_FILE, proj_name, folderName); + runPass(UNPARSE_FILE, proj_name, folderName, true); } } catch (...) diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.h b/sapfor/experts/Sapfor_2017/_src/Sapfor.h index 4375adc..957a1f8 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.h +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.h @@ -350,4 +350,4 @@ static int getPassCode(const std::string& passName) return z; return -1; } -void runPass(const int curr_regime, const char *proj_name = "dvm.proj", const char *folderName = NULL); +void runPass(const int curr_regime, const char *proj_name = "dvm.proj", const char *folderName = NULL, bool root_call = false); diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index de2cc9d..6f8789e 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -12,6 +12,7 @@ using std::set; #define list vector static map> *passDeps; +static map> passRemovals; class Pass { @@ -72,40 +73,13 @@ public: friend void operator-=(const list& left_vec, const list& right_vec) { /* erase each pass in right_vec from dependency tree for each pass in left_vec */ - set to_erase; - for(const auto& remove_pass : right_vec) - to_erase.insert(remove_pass.name); + for(const auto& left : left_vec) + { + auto& eraseFrom = passRemovals[left.name]; - set to_process, processed; - - for (const auto& process_pass : left_vec) - to_process.insert(process_pass.name); - - while (!to_process.empty()) { - set next_to_process; - - for (const auto& pass_name : to_process) { - processed.insert(pass_name); - auto pass_deps = (*passDeps).find(pass_name); - if (pass_deps != (*passDeps).end()) { - for (auto dep = pass_deps->second.begin(); dep != pass_deps->second.end();) { - if (to_erase.find(*dep) != to_erase.end()) { - dep = pass_deps->second.erase(dep); - } - else { - if (processed.find(*dep) == processed.end()) - next_to_process.insert(*dep); - dep++; - } - } - - if(pass_deps->second.empty()) - pass_deps = (*passDeps).erase(pass_deps); - } - } - - to_process = next_to_process; + for(const auto& right : right_vec) + eraseFrom.insert(right.name); } } @@ -124,6 +98,35 @@ public: list({ *this }) -= list({ right }); } + void applyRemovals() { + set to_process = { name }, processed; + + while (!to_process.empty()) + { + set to_process_next; + + for (const auto& pass : to_process) { + if (processed.insert(pass).second) { + auto removals_it = passRemovals.find(pass); + auto deps_it = passDeps->find(pass); + + if (removals_it != passRemovals.end() && deps_it != passDeps->end()) { + auto& removals = removals_it->second; + auto& deps = deps_it->second; + for (auto dep_it = deps.begin(); dep_it != deps.end();) { + if (removals.find(*dep_it) == removals.end()) + to_process_next.insert(*(dep_it++)); + else + dep_it = deps.erase(dep_it); + } + } + } + } + + to_process = to_process_next; + } + } + Pass(passes name) : name(name) { } }; @@ -148,8 +151,7 @@ static void depsToGraphViz(const map> &passDepsIn) void InitPassesDependencies(map> &passDepsIn, set &passesIgnoreStateDone, bool printTree = false) { - if (passDepsIn.size() != 0) - return; + passDepsIn.clear(); passDeps = &passDepsIn; @@ -272,8 +274,10 @@ void InitPassesDependencies(map> &passDepsIn, set } } -void removalsFromPassesDependencies(map>& passDepsIn) +void removalsFromPassesDependencies(map>& passDepsIn, const int curr_regime) { Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE }); + + Pass(passes(curr_regime)).applyRemovals(); } #undef list -- 2.49.1 From 04355ed1f8a04e514a50ad5a0ed511ea7bbc7f2b Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 21 Sep 2023 18:08:06 +0300 Subject: [PATCH 5/8] revert substitutions after SELECT_ARRAY_DIM_CONF --- sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index 489d0db..70ff4f3 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -2406,6 +2406,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam runPass(SELECT_ARRAY_DIM_CONF, proj_name, folderName); + runPass(REVERT_SUBST_EXPR_RD, proj_name, folderName); + runAnalysis(*project, INSERT_PARALLEL_DIRS, false, consoleMode ? additionalName.c_str() : NULL, folderName); runPass(RESTORE_LOOP_FROM_ASSIGN, proj_name, folderName); -- 2.49.1 From cc0b18852198388b2fd366d67b118d131a027145 Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 21 Sep 2023 18:10:40 +0300 Subject: [PATCH 6/8] fix issue with << (replace << with <=) --- .../Sapfor_2017/_src/Utils/PassManager.h | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 6f8789e..5442b6d 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -57,7 +57,7 @@ public: return right; } - friend const list& operator<<(const list &left_vec, const list &right_vec) + friend const list& operator<=(const list &left_vec, const list &right_vec) { for (int k = 0; k < right_vec.size(); ++k) { @@ -157,13 +157,13 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(PREPROC_SPF) <= Pass(CREATE_INTER_TREE); - list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) << list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE }); + list({ CREATE_INTER_TREE, CORRECT_VAR_DECL }) <= list({ GCOV_PARSER, PREDICT_SCHEME, INSERT_INTER_TREE }); list({ FILE_LINE_INFO, BUILD_INCLUDE_DEPENDENCIES }) <= Pass(CORRECT_VAR_DECL); Pass(DEF_USE_STAGE1) <= Pass(DEF_USE_STAGE2); - list({ VERIFY_DVM_DIRS, PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, FILL_PARALLEL_REG_IR, VERIFY_COMMON, FILL_COMMON_BLOCKS, CALL_GRAPH_IR }) << list({ SUBST_EXPR, SUBST_EXPR_RD, BUILD_IR }); + list({ VERIFY_DVM_DIRS, PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, FILL_PARALLEL_REG_IR, VERIFY_COMMON, FILL_COMMON_BLOCKS, CALL_GRAPH_IR }) <= list({ SUBST_EXPR, SUBST_EXPR_RD, BUILD_IR }); Pass(BUILD_IR) <= Pass(SUBST_EXPR) <= Pass(SUBST_EXPR_AND_UNPARSE); @@ -175,19 +175,19 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(GET_ALL_ARRAY_DECL) <= Pass(CALL_GRAPH_IR); - Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= list(FIND_FUNC_TO_INCLUDE, PRIVATE_ANALYSIS_IR) << list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS }); + Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= list(FIND_FUNC_TO_INCLUDE, PRIVATE_ANALYSIS_IR) <= list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS }); Pass(PRIVATE_ANALYSIS_IR) <= Pass(LOOP_ANALYZER_NODIST); Pass(CORRECT_VAR_DECL) <= list({ VERIFY_DVM_DIRS, PREPROC_SPF, VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_ALLOCATES, CHECK_FUNC_TO_INCLUDE, FILL_PAR_REGIONS_LINES, CONVERT_ASSIGN_TO_LOOP, VERIFY_COMMON, VERIFY_EQUIVALENCE, PRINT_PAR_REGIONS_ERRORS, VERIFY_OPERATORS, VERIFY_FORMAT }) <= Pass(CODE_CHECKER_PASSES); - list({ VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_SPF, PREPROC_ALLOCATES, GET_ALL_ARRAY_DECL, GCOV_PARSER }) << list({ CALL_GRAPH, MACRO_EXPANSION, DEF_USE_STAGE1 }); + list({ VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_SPF, PREPROC_ALLOCATES, GET_ALL_ARRAY_DECL, GCOV_PARSER }) <= list({ CALL_GRAPH, MACRO_EXPANSION, DEF_USE_STAGE1 }); - list({ VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_ALLOCATES, FILL_PARALLEL_REG_IR }) << list({ GET_ALL_ARRAY_DECL, FILL_COMMON_BLOCKS }) <= Pass(PREPROC_SPF); + list({ VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_ALLOCATES, FILL_PARALLEL_REG_IR }) <= list({ GET_ALL_ARRAY_DECL, FILL_COMMON_BLOCKS }) <= Pass(PREPROC_SPF); Pass(CHECK_PAR_REG_DIR) <= Pass(FILL_PARALLEL_REG_IR); - list({ GET_ALL_ARRAY_DECL, CALL_GRAPH2, CODE_CHECKER_PASSES, SUBST_EXPR_RD, ARRAY_ACCESS_ANALYSIS_FOR_CORNER }) << list({ LOOP_ANALYZER_NODIST, LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH }); + list({ GET_ALL_ARRAY_DECL, CALL_GRAPH2, CODE_CHECKER_PASSES, SUBST_EXPR_RD, ARRAY_ACCESS_ANALYSIS_FOR_CORNER }) <= list({ LOOP_ANALYZER_NODIST, LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH }); Pass(LOOP_ANALYZER_NODIST) <= Pass(INSERT_PARALLEL_DIRS_NODIST); @@ -205,7 +205,7 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(LOOP_ANALYZER_DATA_DIST_S2) <= Pass(CREATE_NESTED_LOOPS); - list({ CORRECT_VAR_DECL, PREPROC_SPF }) << list({ LOOP_GRAPH, CALL_GRAPH, CALL_GRAPH2 }); + list({ CORRECT_VAR_DECL, PREPROC_SPF }) <= list({ LOOP_GRAPH, CALL_GRAPH, CALL_GRAPH2 }); list({ PREPROC_SPF, CALL_GRAPH2 }) <= Pass(FILL_PAR_REGIONS_LINES) <= list({ EXPAND_EXTRACT_PAR_REGION, CHECK_FUNC_TO_INCLUDE, FIND_FUNC_TO_INCLUDE, CHECK_ARGS_DECL, SELECT_ARRAY_DIM_CONF}); @@ -225,29 +225,29 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(CALL_GRAPH2) <= list({ PURE_SAVE_TO_PARAMS, PURE_MODULE_TO_PARAMS, PURE_COMMON_TO_PARAMS, PURE_INTENT_INSERT }); - list({ REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ PURE_SAVE_TO_PARAMS, PURE_MODULE_TO_PARAMS, PURE_COMMON_TO_PARAMS, PURE_INTENT_INSERT }); + list({ REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) <= list({ PURE_SAVE_TO_PARAMS, PURE_MODULE_TO_PARAMS, PURE_COMMON_TO_PARAMS, PURE_INTENT_INSERT }); - list({ CORRECT_VAR_DECL, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD, VERIFY_INCLUDE }) << list({ CONVERT_TO_ENDDO, CORRECT_CODE_STYLE, REMOVE_DVM_DIRS, REMOVE_DVM_DIRS_TO_COMMENTS, REMOVE_DVM_INTERVALS }); + list({ CORRECT_VAR_DECL, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD, VERIFY_INCLUDE }) <= list({ CONVERT_TO_ENDDO, CORRECT_CODE_STYLE, REMOVE_DVM_DIRS, REMOVE_DVM_DIRS_TO_COMMENTS, REMOVE_DVM_INTERVALS }); list({ CALL_GRAPH2, CONVERT_LOOP_TO_ASSIGN, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD, RESTORE_LOOP_FROM_ASSIGN }) <= Pass(INLINE_PROCEDURES); - list({ CONVERT_LOOP_TO_ASSIGN, CORRECT_FORMAT_PLACE }) << list({ CONVERT_TO_ENDDO, CORRECT_CODE_STYLE, INSERT_INCLUDES, REMOVE_DVM_DIRS, REMOVE_DVM_DIRS_TO_COMMENTS, REMOVE_DVM_INTERVALS }); + list({ CONVERT_LOOP_TO_ASSIGN, CORRECT_FORMAT_PLACE }) <= list({ CONVERT_TO_ENDDO, CORRECT_CODE_STYLE, INSERT_INCLUDES, REMOVE_DVM_DIRS, REMOVE_DVM_DIRS_TO_COMMENTS, REMOVE_DVM_INTERVALS }); - list({ CORRECT_VAR_DECL, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ INSERT_INCLUDES, UNPARSE_FILE, SET_TO_ALL_DECL_INIT_ZERO }); + list({ CORRECT_VAR_DECL, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) <= list({ INSERT_INCLUDES, UNPARSE_FILE, SET_TO_ALL_DECL_INIT_ZERO }); Pass(CALL_GRAPH2) <= Pass(PRIVATE_ARRAYS_SHRINKING_ANALYSIS) <= Pass(PRIVATE_ARRAYS_SHRINKING); - list({ CALL_GRAPH2, LOOP_ANALYZER_ALIGNS, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ PRIVATE_ARRAYS_EXPANSION, PRIVATE_ARRAYS_SHRINKING }); + list({ CALL_GRAPH2, LOOP_ANALYZER_ALIGNS, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) <= list({ PRIVATE_ARRAYS_EXPANSION, PRIVATE_ARRAYS_SHRINKING }); list({ GCOV_PARSER, CREATE_INTER_TREE, CALL_GRAPH, CALL_GRAPH2 }) <= Pass(CREATE_PARALLEL_REGIONS); list({ PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, LOOP_GRAPH, CALL_GRAPH, PRIVATE_ANALYSIS_IR, FIND_FUNC_TO_INCLUDE }) <= Pass(INSERT_REGIONS); - list({ LOOP_ANALYZER_DATA_DIST_S1, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ LOOPS_SPLITTER, LOOPS_COMBINER, UNROLL_LOOPS, INSERT_REGIONS }); + list({ LOOP_ANALYZER_DATA_DIST_S1, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) <= list({ LOOPS_SPLITTER, LOOPS_COMBINER, UNROLL_LOOPS, INSERT_REGIONS }); - list({ CALL_GRAPH2, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD, CONVERT_LOOP_TO_ASSIGN, RESTORE_LOOP_FROM_ASSIGN }) << list({ DUPLICATE_FUNCTIONS, REMOVE_UNUSED_FUNCTIONS }); + list({ CALL_GRAPH2, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD, CONVERT_LOOP_TO_ASSIGN, RESTORE_LOOP_FROM_ASSIGN }) <= list({ DUPLICATE_FUNCTIONS, REMOVE_UNUSED_FUNCTIONS }); - list({ CONVERT_LOOP_TO_ASSIGN, RESTORE_LOOP_FROM_ASSIGN }) << list({ LOOPS_SPLITTER, LOOPS_COMBINER, PRIVATE_ARRAYS_EXPANSION, PRIVATE_ARRAYS_SHRINKING, CREATE_PARALLEL_REGIONS, PURE_SAVE_TO_PARAMS, PURE_MODULE_TO_PARAMS, PURE_COMMON_TO_PARAMS, PURE_INTENT_INSERT }); + list({ CONVERT_LOOP_TO_ASSIGN, RESTORE_LOOP_FROM_ASSIGN }) <= list({ LOOPS_SPLITTER, LOOPS_COMBINER, PRIVATE_ARRAYS_EXPANSION, PRIVATE_ARRAYS_SHRINKING, CREATE_PARALLEL_REGIONS, PURE_SAVE_TO_PARAMS, PURE_MODULE_TO_PARAMS, PURE_COMMON_TO_PARAMS, PURE_INTENT_INSERT }); list({ GET_ALL_ARRAY_DECL, FILL_PARALLEL_REG_IR }) <= Pass(CONVERT_ASSIGN_TO_LOOP); -- 2.49.1 From 877c5a092274095d8cb03d72bfa48a2a360b2d16 Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 21 Sep 2023 18:13:38 +0300 Subject: [PATCH 7/8] select_array_conf: reencoded --- .../_src/GraphCall/select_array_conf.cpp | Bin 15966 -> 7982 bytes .../_src/GraphCall/select_array_conf.h | Bin 1622 -> 810 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp index 6fddf2815f54a352ee9014e6b6427cb19379bd95..67749070acfc1a665d8e07eb6515e240a21bdf6a 100644 GIT binary patch literal 7982 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 diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h index 41486981f3bcd6c6a313d2745f20a29b7345e5b0..ac6cffd1deed19e755d91d92e1b9c18993a47ca1 100644 GIT binary patch literal 810 zcma)4QEP)R5PmQCA3_Ub6VZ1k!d7t? z?z>H^Xmg@OiW0n)x7sjK@~(p9MB8)%wNXqoQ>KT~NHt|N7=*u%$T|$8jM=B}oncb^ z0pW2yOMOzbJ?^D!qsB&W97Fv-?LZaf960-;w&)8q_}3BAW9XjPMtaFAQUJ$JAC#i! ztrT@G)vUm6(HxZgz$Blv7z9L{Dvoghi3^6&M|PMx$vaW*L@oU^y&*M%$8*j&1m21) z`$}xtED*BmaC>n|b|Vf2WU2lx)eotc4|QGY8MLMiXuCEv@dB4i z%=VV;iq|-H=K7;Uc!kN7c2d^;JrkcAeL}aksI3DsDK`3gIgR0xeC$#U=XH1g4J^9! Ar2qf` literal 1622 zcmcgs(MrQW5S(Yhe+U*tOKIP=6ttyMs37XQXqv`oO+wNZ^yAf;OO9(IQIIG{+GKZc zcXnrYKi)e?k>MU8Uij-FK@1-O_OWN44k9C2VS@$bLt~d>)S%6=ra#>Y8*R4qNq?cpwBbFgwbr&2clf_TUj(~`gr8+@4a4_s-(1>(_6wS4VaNCCD|QT zr8FmopS@l2p6;%A0zMJm_+^n^Qx=w}bH*vGt5O%mGP5Ouh@5!1F+Pi$o-vLhy<$v# zj3uW0&q|+72#)9@q)kTKr;?p6J*zh)>G54PUf_gBoszN>oW#~&tXFM!xgHYB#&pxn zAWP6C!y_Eh`?A!W6Zw>RsZKq^kw*IqvI;- zwHeBZea(4mvUXY7*`Jfm7|+bOn5Sau#;k)jkofYrfwdp%lTe-4`rg{zN$L+xuDZr; IuVb9z6Y?tdq5uE@ -- 2.49.1 From 27d2859d53077124ad0784c3457216cebce8f34c Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 21 Sep 2023 21:15:12 +0300 Subject: [PATCH 8/8] small fix in removals from passes dependencies --- sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h | 2 ++ .../Sapfor_2017/_src/VisualizerCalls/get_information.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 5442b6d..c02e607 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -276,6 +276,8 @@ void InitPassesDependencies(map> &passDepsIn, set void removalsFromPassesDependencies(map>& passDepsIn, const int curr_regime) { + passDeps = &passDepsIn; + Pass(INSERT_PARALLEL_DIRS_NODIST) -= list({ FIND_FUNC_TO_INCLUDE, CHECK_FUNC_TO_INCLUDE }); Pass(passes(curr_regime)).applyRemovals(); diff --git a/sapfor/experts/Sapfor_2017/_src/VisualizerCalls/get_information.cpp b/sapfor/experts/Sapfor_2017/_src/VisualizerCalls/get_information.cpp index e79bdd7..4fe78cb 100644 --- a/sapfor/experts/Sapfor_2017/_src/VisualizerCalls/get_information.cpp +++ b/sapfor/experts/Sapfor_2017/_src/VisualizerCalls/get_information.cpp @@ -228,7 +228,7 @@ static void runPassesLoop(const vector &passesToRun, const char *prName, if (showDebug) printf("SAPFOR: run pass %d -> %s\n", passesToRun[i], passNames[passesToRun[i]]); __spf_print(1, "SAPFOR: run pass %d -> %s\n", passesToRun[i], passNames[passesToRun[i]]); - runPass(passesToRun[i], prName, folderNameChar); + runPass(passesToRun[i], prName, folderNameChar, true); } } #if __BOOST -- 2.49.1