private_removing: bugreport_1703086913
This commit is contained in:
@@ -1474,7 +1474,8 @@ static vector<DefUseStmtsPair> buildDefUsePairs(Context* ctx, const CFG_Type& CF
|
|||||||
|
|
||||||
set<int> RD_defArgs = RD_forUseArg->second; // make copy
|
set<int> RD_defArgs = RD_forUseArg->second; // make copy
|
||||||
|
|
||||||
// delete recursive definition from RD def args:
|
// delete recursive and uninit definition from RD def args:
|
||||||
|
set<int> tmpRD_defArgs;
|
||||||
for (int defArgNum : RD_defArgs)
|
for (int defArgNum : RD_defArgs)
|
||||||
{
|
{
|
||||||
if (defArgNum == SAPFOR::CFG_VAL::UNINIT)
|
if (defArgNum == SAPFOR::CFG_VAL::UNINIT)
|
||||||
@@ -1487,11 +1488,11 @@ static vector<DefUseStmtsPair> buildDefUsePairs(Context* ctx, const CFG_Type& CF
|
|||||||
SgStatement* defStmt = defInsAndBlock.first->getOperator();
|
SgStatement* defStmt = defInsAndBlock.first->getOperator();
|
||||||
auto defInsertedStmt = findInsertedStmt(insertedStmts, defStmt);
|
auto defInsertedStmt = findInsertedStmt(insertedStmts, defStmt);
|
||||||
if (useInsertedStmt.relatedToStmt == defInsertedStmt->relatedToStmt)
|
if (useInsertedStmt.relatedToStmt == defInsertedStmt->relatedToStmt)
|
||||||
{
|
continue;
|
||||||
RD_defArgs.erase(defArgNum);
|
|
||||||
break;
|
tmpRD_defArgs.insert(defArgNum);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
RD_defArgs.swap(tmpRD_defArgs);
|
||||||
|
|
||||||
if (RD_defArgs.size() == 0) // argument is not initialized
|
if (RD_defArgs.size() == 0) // argument is not initialized
|
||||||
{
|
{
|
||||||
@@ -1551,6 +1552,9 @@ static vector<DefUseStmtsPair> buildDefUsePairs(Context* ctx, const CFG_Type& CF
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto defInsAndBlock = getInstructionAndBlockByNumber(CFGraph, *RD_defArgs.begin());
|
auto defInsAndBlock = getInstructionAndBlockByNumber(CFGraph, *RD_defArgs.begin());
|
||||||
|
if (defInsAndBlock.first == nullptr)
|
||||||
|
printInternalError(convertFileName(__FILE__).c_str(), __LINE__);
|
||||||
|
|
||||||
defStmt = defInsAndBlock.first->getOperator();
|
defStmt = defInsAndBlock.first->getOperator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user