File tree Expand file tree Collapse file tree 5 files changed +52
-0
lines changed Expand file tree Collapse file tree 5 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ set(SRC
48
48
pass/unused_functions.cpp
49
49
pass/flip_sign.cpp
50
50
pass/div_to_mul.cpp
51
+ pass/replace_symbolic.cpp
51
52
pass/intrinsic_function.cpp
52
53
pass/fma.cpp
53
54
pass/loop_vectorise.cpp
Original file line number Diff line number Diff line change 12
12
"replace_implied_do_loops" ,
13
13
"replace_init_expr" ,
14
14
"inline_function_calls" ,
15
+ "replace_symbolic" ,
15
16
"replace_intrinsic_function" ,
16
17
"loop_unroll" ,
17
18
"loop_vectorise" ,
Original file line number Diff line number Diff line change 28
28
#include < libasr/pass/replace_arr_slice.h>
29
29
#include < libasr/pass/replace_flip_sign.h>
30
30
#include < libasr/pass/replace_div_to_mul.h>
31
+ #include < libasr/pass/replace_symbolic.h>
31
32
#include < libasr/pass/replace_intrinsic_function.h>
32
33
#include < libasr/pass/replace_fma.h>
33
34
#include < libasr/pass/loop_unroll.h>
@@ -71,6 +72,7 @@ namespace LCompilers {
71
72
{" global_stmts" , &pass_wrap_global_stmts},
72
73
{" implied_do_loops" , &pass_replace_implied_do_loops},
73
74
{" array_op" , &pass_replace_array_op},
75
+ {" symbolic" , &pass_replace_symbolic},
74
76
{" intrinsic_function" , &pass_replace_intrinsic_function},
75
77
{" arr_slice" , &pass_replace_arr_slice},
76
78
{" print_arr" , &pass_replace_print_arr},
@@ -203,6 +205,7 @@ namespace LCompilers {
203
205
" subroutine_from_function" ,
204
206
" where" ,
205
207
" array_op" ,
208
+ " symbolic" ,
206
209
" intrinsic_function" ,
207
210
" array_op" ,
208
211
" pass_array_by_data" ,
Original file line number Diff line number Diff line change
1
+ #include < libasr/asr.h>
2
+ #include < libasr/containers.h>
3
+ #include < libasr/exception.h>
4
+ #include < libasr/asr_utils.h>
5
+ #include < libasr/asr_verify.h>
6
+ #include < libasr/pass/replace_symbolic.h>
7
+ #include < libasr/pass/pass_utils.h>
8
+
9
+ #include < vector>
10
+
11
+
12
+ namespace LCompilers {
13
+
14
+ using ASR::down_cast;
15
+ using ASR::is_a;
16
+
17
+
18
+ class ReplaceSymbolicVisitor : public PassUtils ::PassVisitor<ReplaceSymbolicVisitor>
19
+ {
20
+ public:
21
+ ReplaceSymbolicVisitor (Allocator &al_) :
22
+ PassVisitor (al_, nullptr ) {
23
+ pass_result.reserve (al, 1 );
24
+ }
25
+ };
26
+
27
+ void pass_replace_symbolic (Allocator &al, ASR::TranslationUnit_t &unit,
28
+ const LCompilers::PassOptions& /* pass_options*/ ) {
29
+ ReplaceSymbolicVisitor v (al);
30
+ v.visit_TranslationUnit (unit);
31
+ }
32
+
33
+ } // namespace LCompilers
Original file line number Diff line number Diff line change
1
+ #ifndef LIBASR_PASS_REPLACE_SYMBOLIC_H
2
+ #define LIBASR_PASS_REPLACE_SYMBOLIC_H
3
+
4
+ #include < libasr/asr.h>
5
+ #include < libasr/utils.h>
6
+
7
+ namespace LCompilers {
8
+
9
+ void pass_replace_symbolic (Allocator &al, ASR::TranslationUnit_t &unit,
10
+ const PassOptions &pass_options);
11
+
12
+ } // namespace LCompilers
13
+
14
+ #endif // LIBASR_PASS_REPLACE_SYMBOLIC_H
You can’t perform that action at this time.
0 commit comments