Skip to content

Commit 4e0bbf3

Browse files
committed
Register subroutine to functions pass
1 parent fa86373 commit 4e0bbf3

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

src/libasr/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ set(SRC
3434
pass/select_case.cpp
3535
pass/implied_do_loops.cpp
3636
pass/array_op.cpp
37+
pass/subroutine_from_function.cpp
3738
pass/class_constructor.cpp
3839
pass/arr_slice.cpp
3940
pass/print_arr.cpp

src/libasr/pass/pass_manager.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <libasr/pass/update_array_dim_intrinsic_calls.h>
4040
#include <libasr/pass/pass_array_by_data.h>
4141
#include <libasr/pass/pass_list_expr.h>
42+
#include <libasr/pass/subroutine_from_function.h>
4243

4344
#include <map>
4445
#include <vector>
@@ -76,7 +77,8 @@ namespace LCompilers {
7677
{"loop_vectorise", &LFortran::pass_loop_vectorise},
7778
{"array_dim_intrinsics_update", &LFortran::pass_update_array_dim_intrinsic_calls},
7879
{"pass_list_expr", &LFortran::pass_list_expr},
79-
{"pass_array_by_data", &LFortran::pass_array_by_data}
80+
{"pass_array_by_data", &LFortran::pass_array_by_data},
81+
{"subroutine_from_function", &LFortran::pass_create_subroutine_from_function}
8082
};
8183

8284
bool is_fast;
@@ -100,6 +102,7 @@ namespace LCompilers {
100102
"pass_array_by_data",
101103
"pass_list_expr",
102104
"arr_slice",
105+
"subroutine_from_function",
103106
"array_op",
104107
"print_arr",
105108
"print_list",
@@ -117,6 +120,7 @@ namespace LCompilers {
117120
"implied_do_loops",
118121
"pass_array_by_data",
119122
"arr_slice",
123+
"subroutine_from_function",
120124
"array_op",
121125
"print_arr",
122126
"print_list",

src/libasr/pass/pass_utils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ namespace LFortran {
7171
Vec<ASR::stmt_t*> replace_doloop(Allocator &al, const ASR::DoLoop_t &loop,
7272
int comp=-1);
7373

74+
static inline bool is_aggregate_type(ASR::expr_t* var) {
75+
return ASR::is_a<ASR::Struct_t>(*ASRUtils::expr_type(var));
76+
}
77+
7478
template <class Struct>
7579
class PassVisitor: public ASR::BaseWalkVisitor<Struct> {
7680

0 commit comments

Comments
 (0)