@@ -16,11 +16,12 @@ public class Simple {
16
16
static final int DUMP_AFTER_PARSE = 1 <<0 ;
17
17
static final int DUMP_AFTER_OPTO = 1 <<1 ;
18
18
static final int DUMP_AFTER_TYPE_CHECK = 1 <<2 ;
19
- static final int DUMP_AFTER_INSTR_SELECT = 1 <<3 ;
20
- static final int DUMP_AFTER_GCM = 1 <<4 ;
21
- static final int DUMP_AFTER_LOCAL_SCHED = 1 <<5 ;
22
- static final int DUMP_AFTER_REG_ALLOC = 1 <<6 ;
23
- static final int DUMP_AFTER_ENCODE = 1 <<7 ;
19
+ static final int DUMP_AFTER_LOOP_TREE = 1 <<3 ;
20
+ static final int DUMP_AFTER_INSTR_SELECT = 1 <<4 ;
21
+ static final int DUMP_AFTER_GCM = 1 <<5 ;
22
+ static final int DUMP_AFTER_LOCAL_SCHED = 1 <<6 ;
23
+ static final int DUMP_AFTER_REG_ALLOC = 1 <<7 ;
24
+ static final int DUMP_AFTER_ENCODE = 1 <<8 ;
24
25
25
26
static final int DUMP_FINAL = 1 <<16 ;
26
27
@@ -88,12 +89,13 @@ static void dump(CodeGen code, int dump, int pass) {
88
89
case DUMP_AFTER_PARSE -> "01-parse.dot" ;
89
90
case DUMP_AFTER_OPTO -> "02-opto.dot" ;
90
91
case DUMP_AFTER_TYPE_CHECK -> "03-type_check.dot" ;
91
- case DUMP_AFTER_INSTR_SELECT -> "04-instr_select.dot" ;
92
- case DUMP_AFTER_GCM -> "05-gcm.dot" ;
93
- case DUMP_AFTER_LOCAL_SCHED -> "06-local_sched.dot" ;
94
- case DUMP_AFTER_REG_ALLOC -> "07-reg_allos.dot" ;
95
- case DUMP_AFTER_ENCODE -> "08-local_sched.dot" ;
96
- case DUMP_FINAL -> "09-final.dot" ;
92
+ case DUMP_AFTER_LOOP_TREE -> "04-loop_tree.dot" ;
93
+ case DUMP_AFTER_INSTR_SELECT -> "05-instr_select.dot" ;
94
+ case DUMP_AFTER_GCM -> "06-gcm.dot" ;
95
+ case DUMP_AFTER_LOCAL_SCHED -> "07-local_sched.dot" ;
96
+ case DUMP_AFTER_REG_ALLOC -> "08-reg_allos.dot" ;
97
+ case DUMP_AFTER_ENCODE -> "09-local_sched.dot" ;
98
+ case DUMP_FINAL -> "10-final.dot" ;
97
99
default -> throw Utils .TODO ();
98
100
};
99
101
@@ -110,6 +112,7 @@ static void dump(CodeGen code, int dump, int pass) {
110
112
case DUMP_AFTER_PARSE -> "After Parse:" ;
111
113
case DUMP_AFTER_OPTO -> "After OPTO:" ;
112
114
case DUMP_AFTER_TYPE_CHECK -> "After Type Check:" ;
115
+ case DUMP_AFTER_LOOP_TREE -> "After Loop Tree:" ;
113
116
case DUMP_AFTER_INSTR_SELECT -> "After Instruction Selection:" ;
114
117
case DUMP_AFTER_GCM -> "After GCM:" ;
115
118
case DUMP_AFTER_LOCAL_SCHED -> "After Local Scheduling:" ;
@@ -134,6 +137,8 @@ static void print_compilation_times(CodeGen code) {
134
137
System .out .println (String .format ("Optimization Time: %.3f sec" , t ));
135
138
total += t = code ._tTypeCheck / 1e3 ;
136
139
System .out .println (String .format ("Type Checking Time: %.3f sec" , t ));
140
+ total += t = code ._tLoopTree / 1e3 ;
141
+ System .out .println (String .format ("Loop Tree Time: %.3f sec" , t ));
137
142
total += t = code ._tInsSel / 1e3 ;
138
143
System .out .println (String .format ("Instruction Selection Time: %.3f sec" , t ));
139
144
total += t = code ._tGCM / 1e3 ;
@@ -180,6 +185,7 @@ public static void main(String[] args) throws Exception {
180
185
case "--dump-after-parse" : dump |= DUMP_AFTER_PARSE ; break ;
181
186
case "--dump-after-opto" : dump |= DUMP_AFTER_OPTO ; break ;
182
187
case "--dump-after-type-check" : dump |= DUMP_AFTER_TYPE_CHECK ; break ;
188
+ case "--dump-after-loop-tree" : dump |= DUMP_AFTER_LOOP_TREE ; break ;
183
189
case "--dump-after-instr-select" : dump |= DUMP_AFTER_INSTR_SELECT ; break ;
184
190
case "--dump-after-gcm" : dump |= DUMP_AFTER_GCM ; break ;
185
191
case "--dump-after-local-sched" : dump |= DUMP_AFTER_LOCAL_SCHED ; break ;
@@ -250,6 +256,9 @@ public static void main(String[] args) throws Exception {
250
256
code .typeCheck ();
251
257
dump (code , dump , DUMP_AFTER_TYPE_CHECK );
252
258
259
+ code .loopTree ();
260
+ dump (code , dump , DUMP_AFTER_LOOP_TREE );
261
+
253
262
if (do_codegen ) {
254
263
code .instSelect (cpu , abi );
255
264
dump (code , dump , DUMP_AFTER_INSTR_SELECT );
0 commit comments