fixed precedence constraint
[libfirm] / ir / be / bemain.c
index 3cdbab6..70e0a4c 100644 (file)
 #include <stdarg.h>
 #include <stdio.h>
 
-#ifdef WITH_LIBCORE
 #include <libcore/lc_opts.h>
 #include <libcore/lc_opts_enum.h>
 #include <libcore/lc_timing.h>
-#endif /* WITH_LIBCORE */
 
 #include "obst.h"
 #include "bitset.h"
@@ -72,11 +70,12 @@ static be_options_t be_options = {
        BE_TIME_OFF,                       /* no timing */
        0,                                 /* no opt profile */
        1,                                 /* try to omit frame pointer */
-       0,                                 /* always stabs debugging output */
+       0,                                 /* no stabs debugging output */
        BE_VRFY_WARN,                      /* verification level: warn */
        BE_SCHED_LIST,                     /* scheduler: list scheduler */
        "i44pc52.info.uni-karlsruhe.de",   /* ilp server */
-       "cplex"                            /* ilp solver */
+       "cplex",                           /* ilp solver */
+       "",                                /* filename for statistic output */
 };
 
 /* config file. */
@@ -85,8 +84,6 @@ static char config_file[256] = { 0 };
 /* back end instruction set architecture to use */
 static const arch_isa_if_t *isa_if = NULL;
 
-#ifdef WITH_LIBCORE
-
 /* possible dumping options */
 static const lc_opt_enum_mask_items_t dump_items[] = {
        { "none",       DUMP_NONE },
@@ -148,8 +145,6 @@ static const lc_opt_table_entry_t be_main_options[] = {
        { NULL }
 };
 
-#endif /* WITH_LIBCORE */
-
 static be_module_list_entry_t *isa_ifs = NULL;
 
 void be_register_isa_if(const char *name, const arch_isa_if_t *isa)
@@ -162,7 +157,6 @@ void be_register_isa_if(const char *name, const arch_isa_if_t *isa)
 
 void be_opt_register(void)
 {
-#ifdef WITH_LIBCORE
        lc_opt_entry_t *be_grp;
        static int run_once = 0;
 
@@ -178,21 +172,16 @@ void be_opt_register(void)
 
        be_add_module_list_opt(be_grp, "isa", "the instruction set architecture",
                               &isa_ifs, (void**) &isa_if);
-#endif /* WITH_LIBCORE */
 }
 
 /* Parse one argument. */
 int be_parse_arg(const char *arg) {
-#ifdef WITH_LIBCORE
        lc_opt_entry_t *be_grp = lc_opt_get_grp(firm_opt_get_root(), "be");
        if (strcmp(arg, "help") == 0 || (arg[0] == '?' && arg[1] == '\0')) {
                lc_opt_print_help(be_grp, stdout);
                return -1;
        }
        return lc_opt_from_single_arg(be_grp, NULL, arg, NULL);
-#else
-       return 0;
-#endif /* WITH_LIBCORE */
 }
 
 /** The be parameters returned by default, all off. */
@@ -320,8 +309,6 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env)
        set_irg_phase_state(irg, phase_backend);
 }
 
-#ifdef WITH_LIBCORE
-
 #define BE_TIMER_PUSH(timer)                                                        \
        if (be_options.timing == BE_TIME_ON) {                                          \
                int res = lc_timer_push(timer);                                             \
@@ -344,15 +331,6 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env)
 
 #define BE_TIMER_ONLY(code)   do { if (be_options.timing == BE_TIME_ON) { code; } } while(0)
 
-#else
-
-#define BE_TIMER_PUSH(timer)
-#define BE_TIMER_POP(timer)
-#define BE_TIMER_ONLY(code)
-
-#endif /* WITH_LIBCORE */
-
-
 /**
  * The Firm backend main loop.
  * Do architecture specific lowering for all graphs
@@ -375,7 +353,6 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
        unsigned num_birgs;
        ir_graph **irg_list, **backend_irg_list;
 
-#ifdef WITH_LIBCORE
        lc_timer_t *t_abi      = NULL;
        lc_timer_t *t_codegen  = NULL;
        lc_timer_t *t_sched    = NULL;
@@ -397,7 +374,6 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                t_verify   = lc_timer_register("verify",   "graph verification");
                t_other    = lc_timer_register("other",    "other");
        }
-#endif /* WITH_LIBCORE */
 
        be_init_env(&env, file_handle);
 
@@ -524,11 +500,6 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
 
                be_do_stat_nodes(irg, "03 Prepare");
 
-               /* Transformation may produce nodes only reachable via out edges, kill them. */
-#if 1
-               edges_deactivate(irg);
-               edges_activate(irg);
-#endif
                dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
                BE_TIMER_ONLY(num_nodes_r = get_num_reachable_nodes(irg));
 
@@ -564,9 +535,7 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                                break;
 #ifdef WITH_ILP
                        case BE_SCHED_ILP:
-                               be_ilp_sched(birg);
-                               //fprintf(stderr, "Warning: ILP scheduler not yet fully implemented, falling back to list scheduler.\n");
-                               //list_sched(birg, &be_options);
+                               be_ilp_sched(birg, &be_options);
                                break;
 #endif /* WITH_ILP */
                };
@@ -744,11 +713,12 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                be_free_birg(birg);
 
         /* switched off due to statistics (statistic module needs all irgs) */
+#if 0   /* STA needs irgs */
 #ifdef FIRM_STATISTICS
                if (! stat_is_active())
-#endif
+#endif /* FIRM_STATISTICS */
                        free_ir_graph(irg);
-
+#endif /* if 0 */
                if(be_stat_ev_is_active()) {
                        be_stat_ev_pop();
                }
@@ -764,7 +734,6 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
 /* Main interface to the frontend. */
 void be_main(FILE *file_handle, const char *cup_name)
 {
-#ifdef WITH_LIBCORE
        lc_timer_t *t = NULL;
 
        /* The user specified another config file to read. do that now. */
@@ -790,7 +759,6 @@ void be_main(FILE *file_handle, const char *cup_name)
 #ifdef FIRM_STATISTICS
        be_init_stat_file(be_options.stat_file_name, cup_name);
 #endif
-#endif /* WITH_LIBCORE */
 
        /* never build code for pseudo irgs */
        set_visit_pseudo_irgs(0);
@@ -799,7 +767,6 @@ void be_main(FILE *file_handle, const char *cup_name)
 
        be_main_loop(file_handle, cup_name);
 
-#ifdef WITH_LIBCORE
        if (be_options.timing == BE_TIME_ON) {
                lc_timer_stop(t);
                lc_timer_leave_high_priority();
@@ -813,7 +780,6 @@ void be_main(FILE *file_handle, const char *cup_name)
 #ifdef FIRM_STATISTICS
        be_close_stat_file();
 #endif
-#endif /* WITH_LIBCORE */
 }
 
 /** The debug info retriever function. */