added CFG_withUnreachable option

This commit is contained in:
ALEXks
2026-02-14 10:05:25 +03:00
committed by Oleg Nikitin
parent aa7f9cfa4f
commit 78aa84f8e5
4 changed files with 11 additions and 5 deletions

View File

@@ -1162,8 +1162,9 @@ map<FuncInfo*, vector<BBlock*>> buildCFG(const map<string, CommonBlock*>& common
if (SgFile::switchToFile(oldFile) == -1)
printInternalError(convertFileName(__FILE__).c_str(), __LINE__);
for (auto& [func, blocks] : result)
removedUnreachableBlocks(blocks);
if (!settings.withUnreachable)
for (auto& [func, blocks] : result)
removedUnreachableBlocks(blocks);
return result;
}

View File

@@ -112,7 +112,8 @@ namespace SAPFOR
CFG_withDVM = 5,
CFG_withCallsInBlocks = 6,
CFG_withCallFrom = 7,
CFG_withDominators = 8 };
CFG_withDominators = 8,
CFG_withUnreachable = 9 };
bool atLeastOneIterInLoop = false;
bool withRD = false;
@@ -122,6 +123,7 @@ namespace SAPFOR
bool withCallsInBlocks = false; // separate each F_CALL to own BasicBlock
bool withCallFrom = false;
bool withDominators = false;
bool withUnreachable = false;
explicit CFG_Settings(const std::set<setting> &settings = { CFG_withRD, CFG_withCallFrom, CFG_withDominators })
{
@@ -143,6 +145,8 @@ namespace SAPFOR
withCallFrom = true;
else if (set == CFG_withDominators)
withDominators = true;
else if (set == CFG_withUnreachable)
withUnreachable = true;
else
printInternalError(convertFileName(__FILE__).c_str(), __LINE__);
}

View File

@@ -1673,7 +1673,8 @@ void GroupShadow(const map<string, vector<FuncInfo*>>& allFuncs,
SgStatement* func = currF->funcPointer->GetOriginal();
const auto settings = CFG_Settings({ CFG_Settings::CFG_atLeastOneIterInLoop, CFG_Settings::CFG_withSPF, CFG_Settings::CFG_withCallsInBlocks });
const auto settings = CFG_Settings({ CFG_Settings::CFG_atLeastOneIterInLoop, CFG_Settings::CFG_withSPF,
CFG_Settings::CFG_withCallsInBlocks, CFG_Settings::CFG_withUnreachable });
auto cfg = buildCFGforCurrentFunc(func, settings, commonBlocks, allFuncs);
if (cfg.size() != 1)
printInternalError(convertFileName(__FILE__).c_str(), __LINE__);

View File

@@ -1,3 +1,3 @@
#pragma once
#define VERSION_SPF "2462"
#define VERSION_SPF "2463"