Skip to content

Commit dbd5e62

Browse files
committed
Update pass APIs to accept PassOptions
1 parent 430573f commit dbd5e62

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+106
-51
lines changed

src/libasr/pass/arr_slice.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ class ArrSliceVisitor : public PassUtils::PassVisitor<ArrSliceVisitor>
274274
};
275275

276276
void pass_replace_arr_slice(Allocator &al, ASR::TranslationUnit_t &unit,
277-
const std::string &rl_path) {
277+
const LCompilers::PassOptions& pass_options) {
278+
std::string rl_path = pass_options.runtime_library_dir;
278279
ArrSliceVisitor v(al, rl_path);
279280
v.visit_TranslationUnit(unit);
280281
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/arr_slice.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LFORTRAN_PASS_ARR_SLICE_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_replace_arr_slice(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string &rl_path);
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/array_op.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,8 @@ class ArrayOpVisitor : public PassUtils::PassVisitor<ArrayOpVisitor>
929929
};
930930

931931
void pass_replace_array_op(Allocator &al, ASR::TranslationUnit_t &unit,
932-
const std::string &rl_path) {
932+
const LCompilers::PassOptions& pass_options) {
933+
std::string rl_path = pass_options.runtime_library_dir;
933934
ArrayOpVisitor v(al, rl_path);
934935
v.visit_TranslationUnit(unit);
935936
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/array_op.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LFORTRAN_PASS_ARRAY_OP_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_replace_array_op(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string &rl_path);
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/class_constructor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ class ClassConstructorVisitor : public PassUtils::PassVisitor<ClassConstructorVi
5454
}
5555
};
5656

57-
void pass_replace_class_constructor(Allocator &al, ASR::TranslationUnit_t &unit) {
57+
void pass_replace_class_constructor(Allocator &al, ASR::TranslationUnit_t &unit,
58+
const LCompilers::PassOptions& /*pass_options*/) {
5859
ClassConstructorVisitor v(al);
5960
do {
6061
v.is_constructor_present = false;

src/libasr/pass/class_constructor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LFORTRAN_PASS_CLASS_CONSTRUCTOR_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_class_constructor(Allocator &al, ASR::TranslationUnit_t &unit);
9+
void pass_replace_class_constructor(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/dead_code_removal.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ class DeadCodeRemovalVisitor : public PassUtils::PassVisitor<DeadCodeRemovalVisi
9999
};
100100

101101
void pass_dead_code_removal(Allocator &al, ASR::TranslationUnit_t &unit,
102-
const std::string& rl_path) {
102+
const LCompilers::PassOptions& pass_options) {
103+
std::string rl_path = pass_options.runtime_library_dir;
103104
DeadCodeRemovalVisitor v(al, rl_path);
104105
v.visit_TranslationUnit(unit);
105106
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/dead_code_removal.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LIBASR_PASS_DEAD_CODE_REMOVAL_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_dead_code_removal(Allocator &al, ASR::TranslationUnit_t &unit, const std::string& rl_path);
9+
void pass_dead_code_removal(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/div_to_mul.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ class DivToMulVisitor : public PassUtils::PassVisitor<DivToMulVisitor>
7878
};
7979

8080
void pass_replace_div_to_mul(Allocator &al, ASR::TranslationUnit_t &unit,
81-
const std::string& rl_path) {
81+
const LCompilers::PassOptions& pass_options) {
82+
std::string rl_path = pass_options.runtime_library_dir;
8283
DivToMulVisitor v(al, rl_path);
8384
v.visit_TranslationUnit(unit);
8485
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/div_to_mul.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LIBASR_PASS_DIV_TO_MUL_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_div_to_mul(Allocator &al, ASR::TranslationUnit_t &unit, const std::string& rl_path);
9+
void pass_replace_div_to_mul(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/do_loops.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ class DoLoopVisitor : public ASR::StatementWalkVisitor<DoLoopVisitor>
4444
}
4545
};
4646

47-
void pass_replace_do_loops(Allocator &al, ASR::TranslationUnit_t &unit) {
47+
void pass_replace_do_loops(Allocator &al, ASR::TranslationUnit_t &unit,
48+
const LCompilers::PassOptions& /*pass_options*/) {
4849
DoLoopVisitor v(al);
4950
// Each call transforms only one layer of nested loops, so we call it twice
5051
// to transform doubly nested loops:

src/libasr/pass/do_loops.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LFORTRAN_PASS_DO_LOOPS_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_do_loops(Allocator &al, ASR::TranslationUnit_t &unit);
9+
void pass_replace_do_loops(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/flip_sign.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ class FlipSignVisitor : public PassUtils::SkipOptimizationFunctionVisitor<FlipSi
209209
};
210210

211211
void pass_replace_flip_sign(Allocator &al, ASR::TranslationUnit_t &unit,
212-
const std::string& rl_path) {
212+
const LCompilers::PassOptions& pass_options) {
213+
std::string rl_path = pass_options.runtime_library_dir;
213214
FlipSignVisitor v(al, unit, rl_path);
214215
v.visit_TranslationUnit(unit);
215216
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/flip_sign.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LIBASR_PASS_FLIP_SIGN_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_flip_sign(Allocator &al, ASR::TranslationUnit_t &unit, const std::string& rl_path);
9+
void pass_replace_flip_sign(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/fma.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ class FMAVisitor : public PassUtils::SkipOptimizationFunctionVisitor<FMAVisitor>
166166
};
167167

168168
void pass_replace_fma(Allocator &al, ASR::TranslationUnit_t &unit,
169-
const std::string& rl_path) {
169+
const LCompilers::PassOptions& pass_options) {
170+
std::string rl_path = pass_options.runtime_library_dir;
170171
FMAVisitor v(al, unit, rl_path);
171172
v.visit_TranslationUnit(unit);
172173
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/fma.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LIBASR_PASS_FMA_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_fma(Allocator &al, ASR::TranslationUnit_t &unit, const std::string& rl_path);
9+
void pass_replace_fma(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/for_all.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class ForAllVisitor : public ASR::StatementWalkVisitor<ForAllVisitor>
4343
}
4444
};
4545

46-
void pass_replace_forall(Allocator &al, ASR::TranslationUnit_t &unit) {
46+
void pass_replace_forall(Allocator &al, ASR::TranslationUnit_t &unit,
47+
const LCompilers::PassOptions& /*pass_options*/) {
4748
ForAllVisitor v(al);
4849
v.visit_TranslationUnit(unit);
4950
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/for_all.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LFORTRAN_PASS_FOR_ALL
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_forall(Allocator &al, ASR::TranslationUnit_t &unit);
9+
void pass_replace_forall(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

src/libasr/pass/global_stmts.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ using LFortran::ASRUtils::EXPR;
1818
*
1919
*/
2020
void pass_wrap_global_stmts_into_function(Allocator &al,
21-
ASR::TranslationUnit_t &unit, const std::string &fn_name_s) {
21+
ASR::TranslationUnit_t &unit, const LCompilers::PassOptions& pass_options) {
22+
std::string fn_name_s = pass_options.run_fun;
2223
if (unit.n_items > 0) {
2324
// Add an anonymous function
2425
Str s;

src/libasr/pass/global_stmts.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LFORTRAN_PASS_GLOBAL_STMTS_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_wrap_global_stmts_into_function(Allocator &al,
9-
ASR::TranslationUnit_t &unit, const std::string &fn_name_s);
9+
void pass_wrap_global_stmts_into_function(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/global_stmts_program.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ using LFortran::ASRUtils::EXPR;
1818
*
1919
*/
2020
void pass_wrap_global_stmts_into_program(Allocator &al,
21-
ASR::TranslationUnit_t &unit, const std::string &program_fn_name) {
21+
ASR::TranslationUnit_t &unit, const LCompilers::PassOptions& pass_options) {
22+
std::string program_fn_name = pass_options.run_fun;
2223
SymbolTable *current_scope = al.make_new<SymbolTable>(unit.m_global_scope);
2324
std::string prog_name = "main_program";
2425
Vec<ASR::stmt_t*> prog_body;
2526
prog_body.reserve(al, 1);
2627
if (unit.n_items > 0) {
27-
pass_wrap_global_stmts_into_function(al, unit, program_fn_name);
28+
pass_wrap_global_stmts_into_function(al, unit, pass_options);
2829
ASR::symbol_t *fn = unit.m_global_scope->get_symbol(program_fn_name);
2930
if (ASR::is_a<ASR::Function_t>(*fn)
3031
&& ASR::down_cast<ASR::Function_t>(fn)->m_return_var == nullptr) {

src/libasr/pass/global_stmts_program.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LIBASR_PASS_GLOBAL_STMTS_PROGRAM_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_wrap_global_stmts_into_program(Allocator &al,
9-
ASR::TranslationUnit_t &unit, const std::string &program_fn_name);
9+
void pass_wrap_global_stmts_into_program(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/implied_do_loops.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ class ImpliedDoLoopVisitor : public PassUtils::PassVisitor<ImpliedDoLoopVisitor>
244244
};
245245

246246
void pass_replace_implied_do_loops(Allocator &al, ASR::TranslationUnit_t &unit,
247-
const std::string &rl_path) {
247+
const LCompilers::PassOptions& pass_options) {
248+
std::string rl_path = pass_options.runtime_library_dir;
248249
ImpliedDoLoopVisitor v(al, unit, rl_path);
249250
v.visit_TranslationUnit(unit);
250251
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/implied_do_loops.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LFORTRAN_PASS_IMPLIED_DO_LOOPS_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_replace_implied_do_loops(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string &rl_path);
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/inline_function_calls.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,9 @@ class InlineFunctionCallVisitor : public PassUtils::PassVisitor<InlineFunctionCa
445445
};
446446

447447
void pass_inline_function_calls(Allocator &al, ASR::TranslationUnit_t &unit,
448-
const std::string& rl_path,
449-
bool inline_external_symbol_calls) {
448+
const LCompilers::PassOptions& pass_options) {
449+
std::string rl_path = pass_options.runtime_library_dir;
450+
bool inline_external_symbol_calls = pass_options.inline_external_symbol_calls;
450451
InlineFunctionCallVisitor v(al, rl_path, inline_external_symbol_calls);
451452
v.configure_node_duplicator(false);
452453
v.visit_TranslationUnit(unit);

src/libasr/pass/inline_function_calls.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
#define LIBASR_PASS_INLINE_FUNCTION_CALLS_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_inline_function_calls(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string& rl_path,
10-
bool inline_external_symbol_calls=true);
10+
const LCompilers::PassOptions& pass_options);
1111

1212
} // namespace LFortran
1313

src/libasr/pass/loop_unroll.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ class LoopUnrollVisitor : public PassUtils::PassVisitor<LoopUnrollVisitor>
107107
};
108108

109109
void pass_loop_unroll(Allocator &al, ASR::TranslationUnit_t &unit,
110-
const std::string& rl_path,
111-
int64_t unroll_factor) {
110+
const LCompilers::PassOptions& pass_options) {
111+
std::string rl_path = pass_options.runtime_library_dir;
112+
int64_t unroll_factor = pass_options.unroll_factor;
112113
LoopUnrollVisitor v(al, rl_path, unroll_factor);
113114
v.visit_TranslationUnit(unit);
114115
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/loop_unroll.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LIBASR_PASS_LOOP_UNROLL_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_loop_unroll(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string& rl_path, int64_t unroll_factor=32);
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/loop_vectorise.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ class LoopVectoriseVisitor : public PassUtils::SkipOptimizationFunctionVisitor<L
189189
};
190190

191191
void pass_loop_vectorise(Allocator &al, ASR::TranslationUnit_t &unit,
192-
const std::string& rl_path) {
192+
const LCompilers::PassOptions& pass_options) {
193+
std::string rl_path = pass_options.runtime_library_dir;
193194
LoopVectoriseVisitor v(al, unit, rl_path);
194195
v.visit_TranslationUnit(unit);
195196
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/loop_vectorise.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#define LIBASR_PASS_LOOP_VECTORISE_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

89
void pass_loop_vectorise(Allocator &al, ASR::TranslationUnit_t &unit,
9-
const std::string& rl_path);
10+
const LCompilers::PassOptions& pass_options);
1011

1112
} // namespace LFortran
1213

src/libasr/pass/param_to_const.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ class VarVisitor : public ASR::BaseWalkVisitor<VarVisitor>
194194
}
195195
};
196196

197-
void pass_replace_param_to_const(Allocator &al, ASR::TranslationUnit_t &unit) {
197+
void pass_replace_param_to_const(Allocator &al, ASR::TranslationUnit_t &unit,
198+
const LCompilers::PassOptions& /*pass_options*/) {
198199
VarVisitor v(al);
199200
v.visit_TranslationUnit(unit);
200201
LFORTRAN_ASSERT(asr_verify(unit));

src/libasr/pass/param_to_const.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#define LFORTRAN_PASS_PARAM_TO_CONST_H
33

44
#include <libasr/asr.h>
5+
#include <libasr/utils.h>
56

67
namespace LFortran {
78

8-
void pass_replace_param_to_const(Allocator &al, ASR::TranslationUnit_t &unit);
9+
void pass_replace_param_to_const(Allocator &al, ASR::TranslationUnit_t &unit,
10+
const LCompilers::PassOptions& pass_options);
911

1012
} // namespace LFortran
1113

0 commit comments

Comments
 (0)