X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_stackframe.c;h=9a043d766c08429198fd09f2184ed5a67dd5b77d;hb=6ccff2965d94c272f71df2a1655336af47bb7753;hp=8d913038ffe5a4584dfaf5cb64972aa36eb52fa5;hpb=3468a2defb934ee3f8207e841fab34598a988b03;p=libfirm diff --git a/ir/be/sparc/sparc_stackframe.c b/ir/be/sparc/sparc_stackframe.c index 8d913038f..9a043d766 100644 --- a/ir/be/sparc/sparc_stackframe.c +++ b/ir/be/sparc/sparc_stackframe.c @@ -21,7 +21,6 @@ * @file * @brief Manage addressing into the stackframe * @author Matthias Braun - * @version $Id$ */ #include "config.h" @@ -65,7 +64,7 @@ static void process_bias(ir_node *block, bool sp_relative, int bias, if (entity != NULL) { int offset = get_entity_offset(entity); if (sp_relative) - offset += bias; + offset += bias + SPARC_MIN_STACKSIZE; arch_set_frame_offset(irn, offset); } @@ -89,6 +88,12 @@ static void process_bias(ir_node *block, bool sp_relative, int bias, } } +#ifndef NDEBUG + if (block == get_irg_end_block(get_irn_irg(block))) { + assert(bias == 0); + } +#endif + /* continue at the successor blocks */ foreach_block_succ(block, edge) { ir_node *succ = get_edge_src_irn(edge); @@ -311,7 +316,6 @@ static void process_frame_types(ir_graph *irg) void sparc_fix_stack_bias(ir_graph *irg) { - int initial_bias; bool sp_relative = be_get_irg_stack_layout(irg)->sp_relative; ir_node *start_block = get_irg_start_block(irg); @@ -320,9 +324,6 @@ void sparc_fix_stack_bias(ir_graph *irg) ir_reserve_resources(irg, IR_RESOURCE_BLOCK_VISITED); inc_irg_block_visited(irg); - initial_bias = 0; - if (sp_relative) - initial_bias = SPARC_MIN_STACKSIZE; - process_bias(start_block, sp_relative, initial_bias, 0); + process_bias(start_block, sp_relative, 0, 0); ir_free_resources(irg, IR_RESOURCE_BLOCK_VISITED); }