Inline gen_Minus_ex() into its only caller gen_Minus().
[libfirm] / ir / be / bespillbelady.c
index 948bbe4..db7f4a8 100644 (file)
@@ -83,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 */
 
@@ -372,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;
@@ -608,9 +609,12 @@ static void belady(ir_node *block, void *data) {
                /* allocate all values _defined_ by this instruction */
                workset_clear(new_vals);
                if (get_irn_mode(irn) == mode_T) { /* special handling for tuples and projs */
-                       ir_node *proj;
-                       for(proj=sched_next(irn); is_Proj(proj); proj=sched_next(proj))
+                       const ir_edge_t *edge;
+
+                       foreach_out_edge(irn, edge) {
+                               ir_node *proj = get_edge_src_irn(edge);
                                workset_insert(env, new_vals, proj);
+                       }
                } else {
                        workset_insert(env, new_vals, irn);
                }
@@ -704,13 +708,9 @@ void be_spill_belady_spill_env(be_irg_t *birg, const arch_register_class_t *cls,
        ir_graph *irg = be_get_birg_irg(birg);
        int n_regs;
 
-       /* some special classes contain only ignore regs, nothing to do then */
        n_regs = cls->n_regs - be_put_ignore_regs(birg, cls, NULL);
-       if(n_regs == 0)
-               return;
+       be_liveness_assure_sets(be_assure_liveness(birg));
 
-       be_invalidate_liveness(birg);
-       be_assure_liveness(birg);
        /* construct control flow loop tree */
        if(! (get_irg_loopinfo_state(irg) & loopinfo_cf_consistent)) {
                construct_cf_backedges(irg);