Skip to content

Commit 430573f

Browse files
committed
Update pass_manager.h to use PassOptions
1 parent 3992e66 commit 430573f

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

src/libasr/pass/pass_manager.h

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ namespace LCompilers {
5252
array_dim_intrinsics_update, pass_array_by_data
5353
};
5454

55+
static inline void set_runtime_library_dir(PassOptions& pass_options) {
56+
pass_options.runtime_library_dir = LFortran::get_runtime_library_dir();
57+
}
58+
5559
class PassManager {
5660
private:
5761

@@ -85,88 +89,88 @@ namespace LCompilers {
8589
bool apply_default_passes;
8690

8791
void _apply_passes(Allocator& al, LFortran::ASR::TranslationUnit_t* asr,
88-
std::vector<ASRPass>& passes, std::string& run_fun,
89-
bool always_run) {
92+
std::vector<ASRPass>& passes, PassOptions pass_options) {
93+
set_runtime_library_dir(pass_options);
9094
for (size_t i = 0; i < passes.size(); i++) {
9195
switch (passes[i]) {
9296
case (ASRPass::do_loops) : {
93-
LFortran::pass_replace_do_loops(al, *asr);
97+
LFortran::pass_replace_do_loops(al, *asr, pass_options);
9498
break;
9599
}
96100
case (ASRPass::global_stmts) : {
97-
LFortran::pass_wrap_global_stmts_into_function(al, *asr, run_fun);
101+
LFortran::pass_wrap_global_stmts_into_function(al, *asr, pass_options);
98102
break;
99103
}
100104
case (ASRPass::implied_do_loops) : {
101-
LFortran::pass_replace_implied_do_loops(al, *asr, LFortran::get_runtime_library_dir());
105+
LFortran::pass_replace_implied_do_loops(al, *asr, pass_options);
102106
break;
103107
}
104108
case (ASRPass::array_op) : {
105-
LFortran::pass_replace_array_op(al, *asr, LFortran::get_runtime_library_dir());
109+
LFortran::pass_replace_array_op(al, *asr, pass_options);
106110
break;
107111
}
108112
case (ASRPass::flip_sign) : {
109-
LFortran::pass_replace_flip_sign(al, *asr, LFortran::get_runtime_library_dir());
113+
LFortran::pass_replace_flip_sign(al, *asr, pass_options);
110114
break;
111115
}
112116
case (ASRPass::fma) : {
113-
LFortran::pass_replace_fma(al, *asr, LFortran::get_runtime_library_dir());
117+
LFortran::pass_replace_fma(al, *asr, pass_options);
114118
break;
115119
}
116120
case (ASRPass::loop_unroll) : {
117-
LFortran::pass_loop_unroll(al, *asr, LFortran::get_runtime_library_dir());
121+
LFortran::pass_loop_unroll(al, *asr, pass_options);
118122
break;
119123
}
120124
case (ASRPass::inline_function_calls) : {
121-
LFortran::pass_inline_function_calls(al, *asr, LFortran::get_runtime_library_dir());
125+
LFortran::pass_inline_function_calls(al, *asr, pass_options);
122126
break;
123127
}
124128
case (ASRPass::dead_code_removal) : {
125-
LFortran::pass_dead_code_removal(al, *asr, LFortran::get_runtime_library_dir());
129+
LFortran::pass_dead_code_removal(al, *asr, pass_options);
126130
break;
127131
}
128132
case (ASRPass::sign_from_value) : {
129-
LFortran::pass_replace_sign_from_value(al, *asr, LFortran::get_runtime_library_dir());
133+
LFortran::pass_replace_sign_from_value(al, *asr, pass_options);
130134
break;
131135
}
132136
case (ASRPass::div_to_mul) : {
133-
LFortran::pass_replace_div_to_mul(al, *asr, LFortran::get_runtime_library_dir());
137+
LFortran::pass_replace_div_to_mul(al, *asr, pass_options);
134138
break;
135139
}
136140
case (ASRPass::class_constructor) : {
137-
LFortran::pass_replace_class_constructor(al, *asr);
141+
LFortran::pass_replace_class_constructor(al, *asr, pass_options);
138142
break;
139143
}
140144
case (ASRPass::arr_slice) : {
141-
LFortran::pass_replace_arr_slice(al, *asr, LFortran::get_runtime_library_dir());
145+
LFortran::pass_replace_arr_slice(al, *asr, pass_options);
142146
break;
143147
}
144148
case (ASRPass::print_arr) : {
145-
LFortran::pass_replace_print_arr(al, *asr, LFortran::get_runtime_library_dir());
149+
LFortran::pass_replace_print_arr(al, *asr, pass_options);
146150
break;
147151
}
148152
case (ASRPass::unused_functions) : {
149-
LFortran::pass_unused_functions(al, *asr, always_run);
153+
LFortran::pass_unused_functions(al, *asr, pass_options);
150154
break;
151155
}
152156
case (ASRPass::forall) : {
153-
LFortran::pass_replace_forall(al, *asr);
157+
LFortran::pass_replace_forall(al, *asr, pass_options);
154158
break ;
155159
}
156160
case (ASRPass::select_case) : {
157-
LFortran::pass_replace_select_case(al, *asr);
161+
LFortran::pass_replace_select_case(al, *asr, pass_options);
158162
break;
159163
}
160164
case (ASRPass::loop_vectorise) : {
161-
LFortran::pass_loop_vectorise(al, *asr, LFortran::get_runtime_library_dir());
165+
LFortran::pass_loop_vectorise(al, *asr, pass_options);
162166
break;
163167
}
164168
case (ASRPass::array_dim_intrinsics_update): {
165-
LFortran::pass_update_array_dim_intrinsic_calls(al, *asr);
169+
LFortran::pass_update_array_dim_intrinsic_calls(al, *asr, pass_options);
166170
break ;
167171
}
168172
case (ASRPass::pass_array_by_data): {
169-
LFortran::pass_array_by_data(al, *asr);
173+
LFortran::pass_array_by_data(al, *asr, pass_options);
170174
break ;
171175
}
172176
}
@@ -246,14 +250,14 @@ namespace LCompilers {
246250
}
247251

248252
void apply_passes(Allocator& al, LFortran::ASR::TranslationUnit_t* asr,
249-
std::string run_fun, bool always_run=false) {
253+
PassOptions& pass_options) {
250254
if( !_user_defined_passes.empty() ) {
251-
_apply_passes(al, asr, _user_defined_passes, run_fun, always_run);
255+
_apply_passes(al, asr, _user_defined_passes, pass_options);
252256
} else if( apply_default_passes ) {
253257
if( is_fast ) {
254-
_apply_passes(al, asr, _with_optimization_passes, run_fun, always_run);
258+
_apply_passes(al, asr, _with_optimization_passes, pass_options);
255259
} else {
256-
_apply_passes(al, asr, _passes, run_fun, always_run);
260+
_apply_passes(al, asr, _passes, pass_options);
257261
}
258262
}
259263
}
@@ -273,6 +277,7 @@ namespace LCompilers {
273277
void do_not_use_default_passes() {
274278
apply_default_passes = false;
275279
}
280+
276281
};
277282

278283
}

0 commit comments

Comments
 (0)