X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_finish.c;h=4c34288fffea41cef395d2b066271e1db4359f4e;hb=24d40727065059adc92788e516b63c17c3c21c00;hp=a001bfe29332fd15d6ce5eda4fa2cfdc23443b28;hpb=bf1c97a05ee28668fc71d30100ec3ec5799299a9;p=libfirm diff --git a/ir/be/sparc/sparc_finish.c b/ir/be/sparc/sparc_finish.c index a001bfe29..4c34288ff 100644 --- a/ir/be/sparc/sparc_finish.c +++ b/ir/be/sparc/sparc_finish.c @@ -114,7 +114,6 @@ void sparc_introduce_prolog_epilog(ir_graph *irg) be_stack_layout_t *layout = be_get_irg_stack_layout(irg); ir_node *block = get_nodes_block(start); ir_node *initial_sp = be_get_initial_reg_value(irg, sp_reg); - ir_node *sp = initial_sp; ir_node *schedpoint = start; ir_type *frame_type = get_irg_frame_type(irg); unsigned frame_size = get_type_size_bytes(frame_type); @@ -136,14 +135,12 @@ void sparc_introduce_prolog_epilog(ir_graph *irg) schedpoint = sched_next(schedpoint); if (!layout->sp_relative) { - ir_node *save = new_bd_sparc_Save_imm(NULL, block, sp, NULL, - -SPARC_MIN_STACKSIZE-frame_size); + ir_node *const save = new_bd_sparc_Save_imm(NULL, block, initial_sp, NULL, -(SPARC_MIN_STACKSIZE + frame_size)); arch_set_irn_register(save, sp_reg); sched_add_after(schedpoint, save); schedpoint = save; - edges_reroute(initial_sp, save); - set_irn_n(save, n_sparc_Save_stack, initial_sp); + edges_reroute_except(initial_sp, save, save); /* we still need the Save even if noone is explicitely using the * value. (TODO: this isn't 100% correct yet, something at the end of @@ -156,9 +153,8 @@ void sparc_introduce_prolog_epilog(ir_graph *irg) sched_add_after(schedpoint, keep); } } else { - ir_node *incsp = be_new_IncSP(sp_reg, block, sp, frame_size, 0); - edges_reroute(initial_sp, incsp); - be_set_IncSP_pred(incsp, sp); + ir_node *const incsp = be_new_IncSP(sp_reg, block, initial_sp, frame_size, 0); + edges_reroute_except(initial_sp, incsp, incsp); sched_add_after(schedpoint, incsp); } } @@ -251,7 +247,7 @@ static void finish_sparc_FrameAddr(ir_node *node) sched_add_before(node, new_frameaddr); arch_set_irn_register(new_frameaddr, reg); - exchange(node, new_frameaddr); + be_peephole_exchange(node, new_frameaddr); } } @@ -283,7 +279,7 @@ static void finish_sparc_Ld(ir_node *node) for (i = 0; i < n_outs; i++) { arch_set_irn_register_out(new_load, i, arch_get_irn_register_out(node, i)); } - exchange(node, new_load); + be_peephole_exchange(node, new_load); } } @@ -347,7 +343,7 @@ static void finish_sparc_Ldf(ir_node *node) for (i = 0; i < n_outs; i++) { arch_set_irn_register_out(new_load, i, arch_get_irn_register_out(node, i)); } - exchange(node, new_load); + be_peephole_exchange(node, new_load); } } @@ -381,7 +377,7 @@ static void finish_sparc_St(ir_node *node) for (i = 0; i < n_outs; i++) { arch_set_irn_register_out(new_load, i, arch_get_irn_register_out(node, i)); } - exchange(node, new_load); + be_peephole_exchange(node, new_load); } } @@ -416,7 +412,7 @@ static void finish_sparc_Stf(ir_node *node) for (i = 0; i < n_outs; i++) { arch_set_irn_register_out(new_load, i, arch_get_irn_register_out(node, i)); } - exchange(node, new_load); + be_peephole_exchange(node, new_load); } } @@ -543,7 +539,7 @@ static void peephole_sparc_RestoreZero(ir_node *node) continue; if (be_is_Copy(schedpoint) && be_can_move_down(heights, schedpoint, node)) { - ir_node *op = get_irn_n(schedpoint, n_be_Copy_op); + ir_node *const op = be_get_Copy_op(schedpoint); replace_with_restore_imm(node, schedpoint, op, NULL, 0); } else if (is_sparc_Or(schedpoint) && arch_get_irn_flags(schedpoint) & ((arch_irn_flags_t)sparc_arch_irn_flag_immediate_form) &&