Merge pull request 'dead code: removing of if-else statement' (#37) from dead_code_removing into master

This commit was merged in pull request #37.
This commit is contained in:
2024-04-06 15:01:12 +00:00

View File

@@ -527,20 +527,24 @@ void removeDeadCode(SgStatement* func,
for (auto st = start; st != end; st = st->lexNext()) for (auto st = start; st != end; st = st->lexNext())
{ {
const int var = st->variant(); const int var = st->variant();
if ((var == FOR_NODE || var == WHILE_NODE || var == IF_NODE || var == SWITCH_NODE) && if ((var == FOR_NODE || var == WHILE_NODE || var == SWITCH_NODE) &&
st->lexNext()->variant() == CONTROL_END) st->lexNext()->variant() == CONTROL_END)
{ {
remove.push_back(st); remove.push_back(st);
continue;
} }
else if (var == IF_NODE)
if (var == IF_NODE)
{ {
SgStatement* ifS = st; SgStatement* ifS = st;
while (ifS->lexNext()->variant() == ELSEIF_NODE) while (ifS->lexNext()->variant() == ELSEIF_NODE)
ifS = ifS->lexNext(); ifS = ifS->lexNext();
if (ifS->lexNext()->variant() == CONTROL_END) SgStatement* lastNode = ifS->lastNodeOfStmt();
ifS = ifS->lexNext();
while (ifS->variant() == CONTROL_END && ifS != lastNode)
ifS = ifS->lexNext();
if(ifS == lastNode)
remove.push_back(st); remove.push_back(st);
} }