dynamic parameters #61
@@ -131,9 +131,9 @@ static void lookup_for_vars(set<tuple<SgStatement*, string, MODE>>& where_to_add
|
||||
|
||||
if (worklist.count(result_arg))
|
||||
{
|
||||
worklist.erase(result_arg);
|
||||
processArgument(worklist, arg1, cur_instr, first_instr);
|
||||
processArgument(worklist, arg2, cur_instr, first_instr);
|
||||
worklist.erase(result_arg);
|
||||
}
|
||||
|
||||
if (instr->getOperation() == SAPFOR::CFG_OP::PARAM && worklist.count(arg1))
|
||||
@@ -159,6 +159,8 @@ static void lookup_for_vars(set<tuple<SgStatement*, string, MODE>>& where_to_add
|
||||
|
||||
const auto& RD = bblock->getRD_In();
|
||||
map<SAPFOR::BasicBlock*, SAPFOR::Instruction*> group_by_block;
|
||||
|
||||
set<SAPFOR::Argument*> to_erase;
|
||||
for (auto& arg : worklist)
|
||||
{
|
||||
if (RD.count(arg))
|
||||
@@ -175,7 +177,7 @@ static void lookup_for_vars(set<tuple<SgStatement*, string, MODE>>& where_to_add
|
||||
__spf_print(1, "Please specify value of variable %s on line %d of file %s\n", arg->getValue().c_str(), line, filename);
|
||||
auto toAdd = make_tuple(stmt_after, var_name, MODE::BEFORE);
|
||||
where_to_add.insert(toAdd);
|
||||
worklist.erase(arg);
|
||||
to_erase.insert(arg);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -186,6 +188,8 @@ static void lookup_for_vars(set<tuple<SgStatement*, string, MODE>>& where_to_add
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const auto& arg : to_erase)
|
||||
worklist.erase(arg);
|
||||
|
||||
while (bblock && group_by_block.find(bblock) == group_by_block.end())
|
||||
bblock = bblock->getDom();
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
#include "..\GraphCall\graph_calls.h"
|
||||
#include "../GraphCall/graph_calls.h"
|
||||
|
||||
using ResultSet = std::set<std::tuple<std::string, int, std::string>>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user