diff --git a/src/ProjectParameters/projectParameters.cpp b/src/ProjectParameters/projectParameters.cpp index af7c038..997f57c 100644 --- a/src/ProjectParameters/projectParameters.cpp +++ b/src/ProjectParameters/projectParameters.cpp @@ -131,9 +131,9 @@ static void lookup_for_vars(set>& 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>& where_to_add const auto& RD = bblock->getRD_In(); map group_by_block; + + set to_erase; for (auto& arg : worklist) { if (RD.count(arg)) @@ -175,7 +177,7 @@ static void lookup_for_vars(set>& 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>& 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(); diff --git a/src/ProjectParameters/projectParameters.h b/src/ProjectParameters/projectParameters.h index 83a69e3..5be0d3c 100644 --- a/src/ProjectParameters/projectParameters.h +++ b/src/ProjectParameters/projectParameters.h @@ -5,7 +5,7 @@ #include #include -#include "..\GraphCall\graph_calls.h" +#include "../GraphCall/graph_calls.h" using ResultSet = std::set>;