From ff2a1c69d87968c69d7c131b5bbbba48d62453ce Mon Sep 17 00:00:00 2001 From: Mikhail Kocharmin Date: Wed, 10 Apr 2024 18:58:46 +0300 Subject: [PATCH] dead code: fix for entry statements, improve perfomance --- sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 3 ++- .../Sapfor_2017/_src/Transformations/dead_code.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index e17ee2c..a99aa49 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -1028,7 +1028,8 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne { auto funcsForFile = getObjectForFileFromMap(file_name, allFuncInfo); for (auto& func : funcsForFile) - removeDeadCode(func->funcPointer, allFuncInfo, commonBlocks); + if(func->funcPointer->variant() != ENTRY_STAT) + removeDeadCode(func->funcPointer, allFuncInfo, commonBlocks); } else if (curr_regime == TEST_PASS) { diff --git a/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp b/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp index 5befc48..1e11a48 100644 --- a/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Transformations/dead_code.cpp @@ -228,7 +228,9 @@ public: updated |= updateNextNotEmpty(); updated |= updateJumpStatus(); - updated |= this->forwardData({ }); + + if(updated) + this->forwardData({ }); return updated; } @@ -316,6 +318,7 @@ public: { setBlock(block); useful.resize(block->getInstructions().size(), false); + this->forwardData({ }); } const vector& getResult() { return useful; } @@ -371,7 +374,8 @@ void removeDeadCode(SgStatement* func, set reachable; for (auto b : cfg_pair.second) - if(b->getInstructions().front()->isHeader()) + if(b->getInstructions().front()->isHeader() || + b->getInstructions().front()->getInstruction()->getOperation() == SAPFOR::CFG_OP::ENTRY) reachable.insert(b); set worklist = reachable;