Fixed initialization of option tables
[libfirm] / ir / be / bespillbelady.c
index 375a0fc..a1e8200 100644 (file)
  */
 
 /**
- * Author:      Daniel Grund, Matthias Braun
- * Date:        20.09.2005
- * Copyright:   (c) Universitaet Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
- *
+ * @file
+ * @brief       Beladys spillalgorithm.
+ * @author      Daniel Grund, Matthias Braun
+ * @date        20.09.2005
+ * @version     $Id$
  */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -45,7 +45,7 @@
 #include "beutil.h"
 #include "bearch_t.h"
 #include "bespillbelady.h"
-#include "beuses_t.h"
+#include "beuses.h"
 #include "besched_t.h"
 #include "beirgmod.h"
 #include "belive_t.h"
@@ -53,6 +53,8 @@
 #include "bechordal_t.h"
 #include "bespilloptions.h"
 #include "beloopana.h"
+#include "beirg_t.h"
+#include "bemodule.h"
 
 #define DBG_SPILL   1
 #define DBG_WSETS   2
@@ -81,7 +83,7 @@ typedef struct _belady_env_t {
        struct obstack ob;
        const arch_env_t *arch;
        const arch_register_class_t *cls;
-       const be_lv_t *lv;
+       be_lv_t *lv;
        be_loopana_t *loop_ana;
        int n_regs;                     /** number of regs in this reg-class */
 
@@ -370,6 +372,7 @@ static loc_t to_take_or_not_to_take(belady_env_t *env, ir_node* first,
        loc_t loc;
        loc.time = USES_INFINITY;
        loc.irn = node;
+       (void) block;
 
        if (!arch_irn_consider_in_reg_alloc(env->arch, env->cls, node)) {
                loc.time = USES_INFINITY;
@@ -707,13 +710,15 @@ void be_spill_belady_spill_env(be_irg_t *birg, const arch_register_class_t *cls,
        if(n_regs == 0)
                return;
 
-       be_invalidate_liveness(birg);
-       be_assure_liveness(birg);
+       be_liveness_assure_sets(be_assure_liveness(birg));
+
        /* construct control flow loop tree */
        if(! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) {
                construct_cf_backedges(irg);
        }
 
+       be_clear_links(irg);
+
        /* init belady env */
        obstack_init(&env.ob);
        env.arch      = birg->main_env->arch_env;
@@ -728,9 +733,7 @@ void be_spill_belady_spill_env(be_irg_t *birg, const arch_register_class_t *cls,
        } else {
                env.senv = spill_env;
        }
-       DEBUG_ONLY(be_set_spill_env_dbg_module(env.senv, dbg);)
 
-       be_clear_links(irg);
        /* Decide which phi nodes will be spilled and place copies for them into the graph */
        irg_block_walk_graph(irg, compute_live_ins, NULL, &env);
        /* Fix high register pressure with belady algorithm */