old_bp should not be part of the between type, this fixes stack alignment for functio...
[libfirm] / ir / be / beflags.c
index 6537ac7..97905da 100644 (file)
@@ -176,7 +176,7 @@ static void rematerialize_or_move(ir_node *flags_needed, ir_node *node,
                        get_nodes_block(node) != get_nodes_block(flags_needed)) {
                int i;
 
-               for (i = get_irn_arity(copy); i >= 0; --i) {
+               for (i = get_irn_arity(copy) - 1; i >= 0; --i) {
                        be_liveness_update(lv, get_irn_n(copy, i));
                }
        }
@@ -301,9 +301,9 @@ void be_sched_fix_flags(be_irg_t *birg, const arch_register_class_t *flag_cls,
        if(remat == NULL)
                remat = &default_remat;
 
-       set_using_irn_link(irg);
+       ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
        irg_block_walk_graph(irg, fix_flags_walker, NULL, birg->lv);
-       clear_using_irn_link(irg);
+       ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
 
        if(changed) {
                be_remove_dead_nodes_from_schedule(birg);