Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eedc165

Browse files
committed
Update gen_pass.py from LFortran
1 parent dd5a694 commit eedc165

File tree

1 file changed

+38
-55
lines changed

1 file changed

+38
-55
lines changed

src/libasr/gen_pass.py

Lines changed: 38 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,44 @@
11
passes = [
2-
# name, optional prefix (pass_PREFIX_name())
3-
("arr_slice", "replace"),
4-
("array_op", "replace"),
5-
("class_constructor", "replace"),
6-
("dead_code_removal", ""),
7-
("div_to_mul", "replace"),
8-
("do_loops", "replace"),
9-
("flip_sign", "replace"),
10-
("fma", "replace"),
11-
("for_all", "replace"),
12-
("global_stmts", "wrap"),
13-
("global_stmts_program", "wrap"),
14-
("global_symbols", "wrap"),
15-
("implied_do_loops", "replace"),
16-
("init_expr", "replace"),
17-
("inline_function_calls", ""),
18-
("instantiate_template", ""),
19-
("intrinsic_function", "replace"),
20-
("loop_unroll", ""),
21-
("loop_vectorise", ""),
22-
("nested_vars", ""),
23-
("param_to_const", "replace"),
24-
("pass_array_by_data", ""),
25-
("pass_compare", ""),
26-
("pass_list_expr", ""),
27-
("print_arr", "replace"),
28-
("print_list_tuple", "replace"),
29-
("print_struct_type", "replace"),
30-
("select_case", "replace"),
31-
("sign_from_value", "replace"),
32-
("subroutine_from_function", "create"),
33-
("transform_optional_argument_functions", ""),
34-
("unused_functions", ""),
35-
("update_array_dim_intrinsic_calls", ""),
36-
("where", "replace"),
2+
"replace_arr_slice",
3+
"replace_array_op",
4+
"replace_class_constructor",
5+
"dead_code_removal",
6+
"replace_div_to_mul",
7+
"replace_do_loops",
8+
"replace_flip_sign",
9+
"replace_fma",
10+
"replace_for_all",
11+
"wrap_global_stmts",
12+
"wrap_global_stmts_program",
13+
"wrap_global_symbols",
14+
"replace_implied_do_loops",
15+
"replace_init_expr",
16+
"inline_function_calls",
17+
"replace_intrinsic_function",
18+
"loop_unroll",
19+
"loop_vectorise",
20+
"nested_vars",
21+
"replace_param_to_const",
22+
"array_by_data",
23+
"compare",
24+
"list_expr",
25+
"replace_print_arr",
26+
"replace_print_list_tuple",
27+
"replace_print_struct_type",
28+
"replace_select_case",
29+
"replace_sign_from_value",
30+
"create_subroutine_from_function",
31+
"transform_optional_argument_functions",
32+
"unused_functions",
33+
"update_array_dim_intrinsic_calls",
34+
"replace_where",
3735
]
3836

3937

4038

41-
for pass_name, prefix in passes:
42-
print(f"Processing: {pass_name}")
43-
name = pass_name
44-
if name.startswith("pass"):
45-
name = name[5:]
39+
for name in passes:
40+
print(f"Processing: {name}")
4641
name_up = name.upper()
47-
if prefix != "":
48-
prefix += "_"
49-
arguments = r"""Allocator &al, ASR::TranslationUnit_t &unit,
50-
const PassOptions &pass_options"""
51-
return_type = "void"
52-
if pass_name == "instantiate_template":
53-
arguments = r"""Allocator &al,
54-
std::map<std::string, ASR::ttype_t*> subs, std::map<std::string, ASR::symbol_t*> rt_subs,
55-
SymbolTable *current_scope, std::string new_func_name, ASR::symbol_t *sym"""
56-
return_type = "ASR::symbol_t*"
57-
58-
59-
6042
header = rf"""#ifndef LIBASR_PASS_{name_up}_H
6143
#define LIBASR_PASS_{name_up}_H
6244
@@ -65,12 +47,13 @@
6547
6648
namespace LCompilers {{
6749
68-
{return_type} pass_{prefix}{name}({arguments});
50+
void pass_{name}(Allocator &al, ASR::TranslationUnit_t &unit,
51+
const PassOptions &pass_options);
6952
7053
}} // namespace LCompilers
7154
7255
#endif // LIBASR_PASS_{name_up}_H
7356
"""
74-
header_filename = f"pass/{pass_name}.h"
57+
header_filename = f"pass/{name}.h"
7558
f = open(header_filename, "w")
7659
f.write(header)

0 commit comments

Comments
 (0)