X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fbearch_ia32.c;h=5c799f77a7c5989992b3dfb452d3e2789f39b2ca;hb=bba15007f36643c7c6f9281c8be00d8511bfb4f9;hp=c5ea4791605c1c7a058270ab8be07920f9e0c6f0;hpb=939b0af78227f2d14a4362a1b5518fd9e05b1053;p=libfirm diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index c5ea47916..5c799f77a 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -84,7 +84,6 @@ #include "ia32_x87.h" #include "ia32_dbg_stat.h" #include "ia32_finish.h" -#include "ia32_util.h" #include "ia32_fpu.h" #include "ia32_architecture.h" @@ -1258,15 +1257,14 @@ static void introduce_prolog_epilog(ir_graph *irg) ir_mode *mode_gp = mode_Iu; if (!layout->sp_relative) { - layout->initial_bias = -4; - /* push ebp */ ir_node *mem = get_irg_initial_mem(irg); ir_node *noreg = ia32_new_NoReg_gp(irg); ir_node *initial_bp = be_abi_get_ignore_irn(irg, bp); ir_node *curr_bp = initial_bp; - ir_node *push - = new_bd_ia32_Push(NULL, block, noreg, noreg, mem, curr_bp, curr_sp); + ir_node *push = new_bd_ia32_Push(NULL, block, noreg, noreg, mem, curr_bp, curr_sp); + ir_node *incsp; + curr_sp = new_r_Proj(push, mode_gp, pn_ia32_Push_stack); mem = new_r_Proj(push, mode_M, pn_ia32_Push_M); arch_set_irn_register(curr_sp, sp); @@ -1282,10 +1280,12 @@ static void introduce_prolog_epilog(ir_graph *irg) edges_reroute(initial_bp, curr_bp); set_irn_n(push, n_ia32_Push_val, initial_bp); - ir_node *incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); + incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); edges_reroute(initial_sp, incsp); set_irn_n(push, n_ia32_Push_stack, initial_sp); sched_add_after(curr_sp, incsp); + + layout->initial_bias = -4; } else { ir_node *incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); edges_reroute(initial_sp, incsp);