spills and reloads don't take frame pointer as input any more
authorChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Tue, 12 Dec 2006 15:30:47 +0000 (15:30 +0000)
committerChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Tue, 12 Dec 2006 15:30:47 +0000 (15:30 +0000)
ir/be/bespill.c
ir/be/bespillremat.c

index 149923d..c2a1b6f 100644 (file)
@@ -366,7 +366,6 @@ static void spill_phi(spill_env_t *env, spill_info_t *spillinfo) {
                        assert(be_is_Reload(reload) || is_Phi(reload));
                        set_irn_n(reload, get_edge_src_pos(edge), spillinfo->spill);
                }
-               set_irn_n(old_spill, be_pos_Spill_frame, new_Bad());
                set_irn_n(old_spill, be_pos_Spill_val, new_Bad());
                //sched_remove(old_spill);
                spillinfo->old_spill = NULL;
@@ -429,7 +428,7 @@ static int is_value_available(spill_env_t *env, ir_node *arg, ir_node *reloader)
         *
         * So we can only do this test for ignore registers (of our register class)
         */
-       if(arch_get_irn_reg_class(env->arch_env, arg, -1) == env->chordal_env->cls
+       if(arch_get_irn_reg_class(env->arch_env, arg, -1) == env->cls
           && arch_irn_is(env->arch_env, arg, ignore)) {
                int i, arity;
 
index e1d7596..cf50012 100644 (file)
@@ -3401,16 +3401,14 @@ connect_all_spills_with_keep(spill_ilp_t * si)
 /** insert a spill at an arbitrary position */
 ir_node *be_spill2(const arch_env_t *arch_env, ir_node *irn, ir_node *insert)
 {
-       ir_node *bl     = is_Block(insert)?insert:get_nodes_block(insert);
+       ir_node  *bl    = is_Block(insert)?insert:get_nodes_block(insert);
        ir_graph *irg   = get_irn_irg(bl);
-       ir_node *frame  = get_irg_frame(irg);
-       ir_node *spill;
-       ir_node *next;
-
-       const arch_register_class_t *cls       = arch_get_irn_reg_class(arch_env, irn, -1);
-       const arch_register_class_t *cls_frame = arch_get_irn_reg_class(arch_env, frame, -1);
+       ir_node  *frame = get_irg_frame(irg);
+       ir_node  *spill;
+       ir_node  *next;
+       const arch_register_class_t *cls = arch_get_irn_reg_class(arch_env, irn, -1);
 
-       spill = be_new_Spill(cls, cls_frame, irg, bl, frame, irn);
+       spill = be_new_Spill(cls, irg, bl, irn);
 
        /*
         * search the right insertion point. a spill of a phi cannot be put
@@ -3424,7 +3422,7 @@ ir_node *be_spill2(const arch_env_t *arch_env, ir_node *irn, ir_node *insert)
         * which is its default initialization (see above).
         */
 
-       if(bl == get_irg_start_block(irg) && sched_get_time_step(frame) >= sched_get_time_step(insert))
+       if (bl == get_irg_start_block(irg) && sched_get_time_step(frame) >= sched_get_time_step(insert))
                insert = frame;
 
        for (next = sched_next(insert); is_Phi(next) || is_Proj(next); next = sched_next(insert))