@@ -16,11 +16,12 @@ public class Simple {
1616 static final int DUMP_AFTER_PARSE = 1 <<0 ;
1717 static final int DUMP_AFTER_OPTO = 1 <<1 ;
1818 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 ;
2425
2526 static final int DUMP_FINAL = 1 <<16 ;
2627
@@ -88,12 +89,13 @@ static void dump(CodeGen code, int dump, int pass) {
8889 case DUMP_AFTER_PARSE -> "01-parse.dot" ;
8990 case DUMP_AFTER_OPTO -> "02-opto.dot" ;
9091 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" ;
9799 default -> throw Utils .TODO ();
98100 };
99101
@@ -110,6 +112,7 @@ static void dump(CodeGen code, int dump, int pass) {
110112 case DUMP_AFTER_PARSE -> "After Parse:" ;
111113 case DUMP_AFTER_OPTO -> "After OPTO:" ;
112114 case DUMP_AFTER_TYPE_CHECK -> "After Type Check:" ;
115+ case DUMP_AFTER_LOOP_TREE -> "After Loop Tree:" ;
113116 case DUMP_AFTER_INSTR_SELECT -> "After Instruction Selection:" ;
114117 case DUMP_AFTER_GCM -> "After GCM:" ;
115118 case DUMP_AFTER_LOCAL_SCHED -> "After Local Scheduling:" ;
@@ -134,6 +137,8 @@ static void print_compilation_times(CodeGen code) {
134137 System .out .println (String .format ("Optimization Time: %.3f sec" , t ));
135138 total += t = code ._tTypeCheck / 1e3 ;
136139 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 ));
137142 total += t = code ._tInsSel / 1e3 ;
138143 System .out .println (String .format ("Instruction Selection Time: %.3f sec" , t ));
139144 total += t = code ._tGCM / 1e3 ;
@@ -180,6 +185,7 @@ public static void main(String[] args) throws Exception {
180185 case "--dump-after-parse" : dump |= DUMP_AFTER_PARSE ; break ;
181186 case "--dump-after-opto" : dump |= DUMP_AFTER_OPTO ; break ;
182187 case "--dump-after-type-check" : dump |= DUMP_AFTER_TYPE_CHECK ; break ;
188+ case "--dump-after-loop-tree" : dump |= DUMP_AFTER_LOOP_TREE ; break ;
183189 case "--dump-after-instr-select" : dump |= DUMP_AFTER_INSTR_SELECT ; break ;
184190 case "--dump-after-gcm" : dump |= DUMP_AFTER_GCM ; break ;
185191 case "--dump-after-local-sched" : dump |= DUMP_AFTER_LOCAL_SCHED ; break ;
@@ -250,6 +256,9 @@ public static void main(String[] args) throws Exception {
250256 code .typeCheck ();
251257 dump (code , dump , DUMP_AFTER_TYPE_CHECK );
252258
259+ code .loopTree ();
260+ dump (code , dump , DUMP_AFTER_LOOP_TREE );
261+
253262 if (do_codegen ) {
254263 code .instSelect (cpu , abi );
255264 dump (code , dump , DUMP_AFTER_INSTR_SELECT );
0 commit comments