dead code: removing of if-else statement #37
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user