Add SPF directive insertion
This commit is contained in:
@@ -175,7 +175,7 @@ void lookup_for_vars(std::set<std::tuple<SgStatement*, std::string, MODE>>& wher
|
||||
{
|
||||
auto instr_num = *RD.at(arg).begin();
|
||||
auto [func, instr, bblock] = IRByNumber(fullIR, instr_num);
|
||||
if (cur_func == func && group_by_block[bblock] == NULL || group_by_block[bblock]->getNumber() < instr_num)
|
||||
if (cur_func == func && (group_by_block[bblock] == NULL || group_by_block[bblock]->getNumber() < instr_num))
|
||||
group_by_block[bblock] = instr;
|
||||
}
|
||||
}
|
||||
@@ -421,17 +421,26 @@ findParameters(ResultSet& foundParameters,
|
||||
SgVarRefExp* var = new SgVarRefExp(var_symb);
|
||||
SgValueExp* zero = new SgValueExp(1337);
|
||||
SgExprListExp* ex = new SgExprListExp();
|
||||
auto op = new SgExpression(ASSGN_OP, var, zero);
|
||||
|
||||
std::cout << "len: " << ex->length() << '\n';
|
||||
ex->setLhs(new SgExpression(ASSGN_OP, var, zero));
|
||||
std::cout << "stmt_before: " << stmt_before->unparse();
|
||||
SgStatement* toAdd = new SgStatement(ASSIGN_STAT, NULL, NULL, var, zero, NULL);
|
||||
SgExpression* parameter_op = new SgExpression(SPF_PARAMETER_OP, ex);
|
||||
auto ex2 = new SgExprListExp();
|
||||
ex2->setLhs(parameter_op);
|
||||
SgStatement* toAdd = new SgStatement(SPF_ANALYSIS_DIR, NULL, NULL, ex2, NULL, NULL);
|
||||
toAdd->unparsestdout();
|
||||
// toAdd->lineNumber() = stmt_before->lineNumber();
|
||||
toAdd->setlineNumber(stmt_before->lineNumber());
|
||||
toAdd->setLocalLineNumber(stmt_before->lineNumber());
|
||||
toAdd->setFileId(stmt_before->getFileId());
|
||||
toAdd->setProject(stmt_before->getProject());
|
||||
stmt_before->insertStmtAfter(*toAdd, *stmt_before->controlParent());
|
||||
stmt_before->controlParent()->unparsestdout();
|
||||
if (mode == MODE::AFTER)
|
||||
stmt_before->insertStmtAfter(*toAdd, *stmt_before->controlParent());
|
||||
else
|
||||
stmt_before->insertStmtBefore(*toAdd, *stmt_before->controlParent());
|
||||
|
||||
foundParameters.insert(make_tuple(stmt_before->fileName(), stmt_before->lineNumber(), var_name));
|
||||
}
|
||||
|
||||
@@ -2335,7 +2335,6 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam
|
||||
case INSERT_NO_DISTR_FLAGS_FROM_GUI:
|
||||
case PRIVATE_REMOVING:
|
||||
case RENAME_INLCUDES:
|
||||
case FIND_PARAMETERS:
|
||||
runAnalysis(*project, curr_regime, true, "", folderName);
|
||||
break;
|
||||
case INLINE_PROCEDURES:
|
||||
@@ -2370,6 +2369,7 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam
|
||||
case LOOPS_COMBINER:
|
||||
case FIX_COMMON_BLOCKS:
|
||||
case TEST_PASS:
|
||||
case FIND_PARAMETERS:
|
||||
case SET_IMPLICIT_NONE:
|
||||
runAnalysis(*project, curr_regime, false);
|
||||
case SUBST_EXPR_RD_AND_UNPARSE:
|
||||
|
||||
Reference in New Issue
Block a user