- Split bearch.h correctly into bearch.h and bearch_t.h
[libfirm] / ir / be / bemain.c
index 70e0a4c..2c3ab57 100644 (file)
@@ -34,7 +34,7 @@
 #include "cfopt.h"
 #include "execfreq.h"
 
-#include "bearch.h"
+#include "bearch_t.h"
 #include "be_t.h"
 #include "bemodule.h"
 #include "beutil.h"
@@ -193,12 +193,12 @@ const static backend_params be_params = {
 };
 
 /* Perform schedule verification if requested. */
-static void be_sched_vrfy(ir_graph *irg, int vrfy_opt) {
+static void be_sched_vrfy(be_irg_t *birg, int vrfy_opt) {
        if (vrfy_opt == BE_VRFY_WARN) {
-               be_verify_schedule(irg);
+               be_verify_schedule(birg);
        }
        else if (vrfy_opt == BE_VRFY_ASSERT) {
-               assert(be_verify_schedule(irg) && "Schedule verification failed.");
+               assert(be_verify_schedule(birg) && "Schedule verification failed.");
        }
 }
 
@@ -225,7 +225,6 @@ static be_main_env_t *be_init_env(be_main_env_t *env, FILE *file_handle)
        obstack_init(&env->obst);
        env->arch_env = obstack_alloc(&env->obst, sizeof(env->arch_env[0]));
        env->options  = &be_options;
-       FIRM_DBG_REGISTER(env->dbg, "be.main");
 
        arch_env_init(env->arch_env, isa_if, file_handle, env);
 
@@ -282,7 +281,6 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env)
        edges_deactivate_kind(irg, EDGE_KIND_DEP);
        edges_activate_kind(irg, EDGE_KIND_DEP);
 
-       DBG((env->dbg, LEVEL_2, "====> IRG: %F\n", irg));
        dump(DUMP_INITIAL, irg, "-begin", dump_ir_block_graph);
 
        be_stat_init_irg(env->arch_env, irg);
@@ -545,7 +543,7 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
 
                /* check schedule */
                BE_TIMER_PUSH(t_verify);
-               be_sched_vrfy(irg, be_options.vrfy_option);
+               be_sched_vrfy(birg, be_options.vrfy_option);
                BE_TIMER_POP(t_verify);
 
                be_do_stat_nodes(irg, "04 Schedule");
@@ -565,26 +563,26 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                dump(DUMP_SCHED, irg, "-assured", dump_ir_block_graph_sched);
                be_do_stat_nodes(irg, "05 Constraints");
 
+               /* stuff needs to be done after scheduling but before register allocation */
+               BE_TIMER_PUSH(t_codegen);
+               arch_code_generator_before_ra(birg->cg);
+               BE_TIMER_POP(t_codegen);
+
                /* connect all stack modifying nodes together (see beabi.c) */
                BE_TIMER_PUSH(t_abi);
-               be_abi_fix_stack_nodes(birg->abi, NULL);
+               be_abi_fix_stack_nodes(birg->abi);
                BE_TIMER_POP(t_abi);
 
                dump(DUMP_SCHED, irg, "-fix_stack", dump_ir_block_graph_sched);
 
                /* check schedule */
                BE_TIMER_PUSH(t_verify);
-               be_sched_vrfy(irg, be_options.vrfy_option);
+               be_sched_vrfy(birg, be_options.vrfy_option);
                BE_TIMER_POP(t_verify);
 
                /* do some statistics */
                be_do_stat_reg_pressure(birg);
 
-               /* stuff needs to be done after scheduling but before register allocation */
-               BE_TIMER_PUSH(t_codegen);
-               arch_code_generator_before_ra(birg->cg);
-               BE_TIMER_POP(t_codegen);
-
 #ifdef FIRM_STATISTICS
                if(be_stat_ev_is_active()) {
                        be_stat_ev_l("costs_before_ra",
@@ -614,7 +612,7 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
 
                /* fix stack offsets */
                BE_TIMER_PUSH(t_abi);
-               be_abi_fix_stack_nodes(birg->abi, NULL);
+               be_abi_fix_stack_nodes(birg->abi);
                be_remove_dead_nodes_from_schedule(irg);
                be_abi_fix_stack_bias(birg->abi);
                BE_TIMER_POP(t_abi);
@@ -633,17 +631,15 @@ static void be_main_loop(FILE *file_handle, const char *cup_name)
                        irg_verify(irg, VRFY_ENFORCE_SSA);
                        be_check_dominance(irg);
                        be_verify_out_edges(irg);
-                       be_verify_schedule(irg);
+                       be_verify_schedule(birg);
                        be_verify_register_allocation(env.arch_env, irg);
-                       be_verify_spillslots(env.arch_env, irg);
                } else if (be_options.vrfy_option == BE_VRFY_ASSERT) {
                        assert(irg_verify(irg, VRFY_ENFORCE_SSA) && "irg verification failed");
                        assert(be_verify_out_edges(irg) && "out edge verification failed");
                        assert(be_check_dominance(irg) && "Dominance verification failed");
-                       assert(be_verify_schedule(irg) && "Schedule verification failed");
+                       assert(be_verify_schedule(birg) && "Schedule verification failed");
                        assert(be_verify_register_allocation(env.arch_env, irg)
                               && "register allocation verification failed");
-                       assert(be_verify_spillslots(env.arch_env, irg) && "Spillslot verification failed");
 
                }
                BE_TIMER_POP(t_verify);