Add SPF directive insertion

This commit is contained in:
2025-05-01 18:43:51 +03:00
committed by Alexander
parent 8b2e59356a
commit 6742932862
2 changed files with 13 additions and 4 deletions

View File

@@ -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 instr_num = *RD.at(arg).begin();
auto [func, instr, bblock] = IRByNumber(fullIR, instr_num); 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; group_by_block[bblock] = instr;
} }
} }
@@ -421,17 +421,26 @@ findParameters(ResultSet& foundParameters,
SgVarRefExp* var = new SgVarRefExp(var_symb); SgVarRefExp* var = new SgVarRefExp(var_symb);
SgValueExp* zero = new SgValueExp(1337); SgValueExp* zero = new SgValueExp(1337);
SgExprListExp* ex = new SgExprListExp(); 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)); ex->setLhs(new SgExpression(ASSGN_OP, var, zero));
std::cout << "stmt_before: " << stmt_before->unparse(); 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->unparsestdout();
// toAdd->lineNumber() = stmt_before->lineNumber(); // toAdd->lineNumber() = stmt_before->lineNumber();
toAdd->setlineNumber(stmt_before->lineNumber()); toAdd->setlineNumber(stmt_before->lineNumber());
toAdd->setLocalLineNumber(stmt_before->lineNumber()); toAdd->setLocalLineNumber(stmt_before->lineNumber());
toAdd->setFileId(stmt_before->getFileId()); toAdd->setFileId(stmt_before->getFileId());
toAdd->setProject(stmt_before->getProject()); toAdd->setProject(stmt_before->getProject());
stmt_before->insertStmtAfter(*toAdd, *stmt_before->controlParent());
stmt_before->controlParent()->unparsestdout(); 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)); foundParameters.insert(make_tuple(stmt_before->fileName(), stmt_before->lineNumber(), var_name));
} }

View File

@@ -2340,7 +2340,6 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam
case INSERT_NO_DISTR_FLAGS_FROM_GUI: case INSERT_NO_DISTR_FLAGS_FROM_GUI:
case PRIVATE_REMOVING: case PRIVATE_REMOVING:
case RENAME_INLCUDES: case RENAME_INLCUDES:
case FIND_PARAMETERS:
runAnalysis(*project, curr_regime, true, "", folderName); runAnalysis(*project, curr_regime, true, "", folderName);
break; break;
case INLINE_PROCEDURES: case INLINE_PROCEDURES:
@@ -2375,6 +2374,7 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam
case LOOPS_COMBINER: case LOOPS_COMBINER:
case FIX_COMMON_BLOCKS: case FIX_COMMON_BLOCKS:
case TEST_PASS: case TEST_PASS:
case FIND_PARAMETERS:
case SET_IMPLICIT_NONE: case SET_IMPLICIT_NONE:
runAnalysis(*project, curr_regime, false); runAnalysis(*project, curr_regime, false);
case SUBST_EXPR_RD_AND_UNPARSE: case SUBST_EXPR_RD_AND_UNPARSE: