dead code: removing of if-else statement

This commit is contained in:
2024-04-06 17:00:29 +03:00
parent f5012508d1
commit e5b4d6cc50

View File

@@ -527,20 +527,23 @@ 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->lexNext();
while (ifS->lexNext()->variant() == ELSEIF_NODE) while (ifS->variant() == ELSEIF_NODE)
ifS = ifS->lexNext(); ifS = ifS->lexNext();
if (ifS->lexNext()->variant() == CONTROL_END) SgStatement* lastNode = st->lastNodeOfStmt();
while (ifS->variant() == CONTROL_END && ifS != lastNode)
ifS = ifS->lexNext();
if(ifS == lastNode)
remove.push_back(st); remove.push_back(st);
} }