Added sparse matrix impl. Used by copyopt_ilp
[libfirm] / ir / be / bemain.c
index a8692d4..372e695 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "irprog.h"
 #include "irgraph.h"
+#include "irdump.h"
 
 #include "be_t.h"
 #include "bera_t.h"
 #include "besched_t.h"
 #include "belistsched.h"
 #include "belive_t.h"
-#include "bephicongr_t.h"
 #include "beutil.h"
 #include "bechordal.h"
+#include "bechordal.h"
+#include "bephiopt.h"
 #include "phistat.h"
 
+#include "beasm_dump_globals.h"
+#include "beasm_asm_gnu.h"
+
+#undef DUMP_ALLOCATED
+#undef DUMP_LOCALIZED
+
 #define N_PHASES 256
 
 typedef struct _be_graph_info_t {
@@ -94,7 +102,8 @@ void be_init(void)
        be_liveness_init();
        be_numbering_init();
        be_ra_init();
-       be_phi_congr_class_init();
+       be_ra_chordal_init();
+       be_phi_opt_init();
 }
 
 extern void be_ra_chordal(ir_graph *irg);
@@ -106,15 +115,20 @@ static void be_main_loop(void)
        for(i = 0, n = get_irp_n_irgs(); i < n; ++i) {
                ir_graph *irg = get_irp_irg(i);
 
+               localize_consts(irg);
+#ifdef DUMP_LOCALIZED
+               dump_consts_local(0);
+               dump_ir_block_graph(irg, "-local-const");
+#endif
                be_numbering(irg);
-               list_sched(irg, trivial_selector, NULL);
+               list_sched(irg, trivial_selector);
                be_liveness(irg);
                be_ra_chordal(irg);
-               be_phi_congr_classes(irg);
-
-
-               dump_allocated_irg(irg);
 
+#ifdef DUMP_ALLOCATED
+               dump_allocated_irg(irg, "");
+#endif
+               be_phi_opt(irg);
 
                be_ra_chordal_done(irg);
                be_numbering_done(irg);
@@ -123,6 +137,15 @@ static void be_main_loop(void)
 
 void be_main(int argc, const char *argv[])
 {
+  assembler_t *gnu_assembler;
+  FILE *asm_output_file;
+
        be_main_loop();
-       do_phi_statistics();
+       gnu_assembler = gnuasm_create_assembler();
+       asm_output_file = fopen("asm_output.asm", "w");
+
+       asm_dump_globals ( gnu_assembler );
+       gnuasm_dump ( gnu_assembler, asm_output_file );
+       gnuasm_delete_assembler ( gnu_assembler );
+       fclose(asm_output_file);
 }