From dafa78fd9719c63dadf526ec9637c5df64b84e2b Mon Sep 17 00:00:00 2001 From: mkoch Date: Tue, 9 Jan 2024 17:05:20 +0300 Subject: [PATCH] dead code analysis --- .../_src/CFGraph/live_variable_analysis.h | 2 ++ .../_src/CFGraph/private_variables_analysis.h | 2 ++ sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 8 ++++++++ sapfor/experts/Sapfor_2017/_src/Sapfor.h | 2 ++ .../_src/Transformations/dead_code.cpp | Bin 16918 -> 27192 bytes .../_src/Transformations/dead_code.h | Bin 542 -> 930 bytes .../Sapfor_2017/_src/Utils/PassManager.h | 2 ++ 7 files changed, 16 insertions(+) diff --git a/sapfor/experts/Sapfor_2017/_src/CFGraph/live_variable_analysis.h b/sapfor/experts/Sapfor_2017/_src/CFGraph/live_variable_analysis.h index b41680c..a697273 100644 --- a/sapfor/experts/Sapfor_2017/_src/CFGraph/live_variable_analysis.h +++ b/sapfor/experts/Sapfor_2017/_src/CFGraph/live_variable_analysis.h @@ -1,3 +1,5 @@ +#pragma once + #include "../Utils/SgUtils.h" #include "CFGraph.h" diff --git a/sapfor/experts/Sapfor_2017/_src/CFGraph/private_variables_analysis.h b/sapfor/experts/Sapfor_2017/_src/CFGraph/private_variables_analysis.h index 649b5cf..3653787 100644 --- a/sapfor/experts/Sapfor_2017/_src/CFGraph/private_variables_analysis.h +++ b/sapfor/experts/Sapfor_2017/_src/CFGraph/private_variables_analysis.h @@ -1,3 +1,5 @@ +#pragma once + #include "../Utils/SgUtils.h" #include "../GraphLoop/graph_loops.h" #include "CFGraph.h" diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index f64f5e8..4a006d0 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -79,6 +79,7 @@ #include "Transformations/private_removing.h" #include "Transformations/fix_common_blocks.h" #include "Transformations/convert_to_c.h" +#include "Transformations/dead_code.h" #include "RenameSymbols/rename_symbols.h" #include "ProjectParameters/projectParameters.h" @@ -1169,6 +1170,12 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne covertToC(file); else if (curr_regime == INSERT_NO_DISTR_FLAGS_FROM_GUI) addPrivatesToArraysFromGUI(file, declaredArrays, distrStateFromGUI); + else if (curr_regime == REMOVE_DEAD_CODE_AND_UNPARSE) + { + auto funcsForFile = getObjectForFileFromMap(file_name, allFuncInfo_IR); + for (auto& func : funcsForFile) + removeDeadCode(func->funcPointer, allFuncInfo_IR, commonBlocks); + } else if (curr_regime == TEST_PASS) { //test pass @@ -2515,6 +2522,7 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam findFunctionsToInclude(true); break; // all these cases run UNPARSE_FILE after + case REMOVE_DEAD_CODE_AND_UNPARSE: case RENAME_SYMBOLS: case RESOLVE_PAR_REGIONS: case CREATE_PARALLEL_REGIONS: diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.h b/sapfor/experts/Sapfor_2017/_src/Sapfor.h index 670cd9c..a66f577 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.h +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.h @@ -165,6 +165,7 @@ enum passes { BUILD_IR, LIVE_ANALYSIS_IR, PRIVATE_ANALYSIS_IR, + REMOVE_DEAD_CODE_AND_UNPARSE, FIX_COMMON_BLOCKS, REMOVE_OMP_DIRS, @@ -343,6 +344,7 @@ static void setPassValues() passNames[CALL_GRAPH_IR] = "CALL_GRAPH_IR"; passNames[LIVE_ANALYSIS_IR] = "LIVE_ANALYSIS_IR"; passNames[PRIVATE_ANALYSIS_IR] = "PRIVATE_ANALYSIS_IR"; + passNames[REMOVE_DEAD_CODE_AND_UNPARSE] = "REMOVE_DEAD_CODE_AND_UNPARSE"; passNames[FIX_COMMON_BLOCKS] = "FIX_COMMON_BLOCKS"; passNames[REMOVE_OMP_DIRS] = "REMOVE_OMP_DIRS"; diff --git a/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp b/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp index c5050d861df437befb4412205048cb4522070d1e..5fe5dadfb2f1e2aed663a9645752c031f4487d5d 100644 GIT binary patch literal 27192 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 diff --git a/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.h b/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.h index e7f4f09eebc03552d3f72ca414129ba97107d82a..d51331608d99aefb2fd28643fecc006b83eea5bf 100644 GIT binary patch literal 930 zcmchVPfNo<5XIkF@H+$xr50)KT6(ah;<gqjJao8MPVn z82%Xy4Ra1psV6kYU1q7Y%l!@S3f@Q?-mp4i^dEZ3`n*F?1}Xrb;E2+9V#eN)of4Z5 z2L7KGzKX`<68h3;$h{P=n1e3Z8)NXx5y4$}e+7Pxb;&SKR-NzK%)SHd4U5~8ecz4g wZmZ)K))ej`UYw{8U(R?xtOhADljUkUAks+5Ml|hringIYXKnqO( diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 3e68a6a..88ed1ba 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -306,6 +306,8 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(REMOVE_OMP_DIRS) <= Pass(REMOVE_OMP_DIRS_TRANSFORM); + Pass(BUILD_IR) <= Pass(REMOVE_DEAD_CODE_AND_UNPARSE); + 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,