From a0619aec305bc8fb0d2aff10fa53a4427527c370 Mon Sep 17 00:00:00 2001 From: Sebastian Hack Date: Fri, 17 Mar 2006 12:21:22 +0000 Subject: [PATCH] Fixed a bug concernign the placement of spill nodes --- ir/be/benode.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ir/be/benode.c b/ir/be/benode.c index e79acc33b..925b658ce 100644 --- a/ir/be/benode.c +++ b/ir/be/benode.c @@ -818,11 +818,13 @@ ir_node *be_spill(const arch_env_t *arch_env, ir_node *irn, ir_node *ctx) * pointer is set up. This is done by setting insert to the end of the block * which is its default initialization (see above). */ - if(bl != get_irg_start_block(irg)) { - insert = sched_next(irn); - while((is_Phi(insert) || is_Proj(insert)) && !sched_is_end(insert)) - insert = sched_next(insert); - } + + insert = sched_next(irn); + if(bl == get_irg_start_block(irg) && insert != bl && sched_get_time_step(frame) >= sched_get_time_step(insert)) + insert = sched_next(frame); + + while((is_Phi(insert) || is_Proj(insert)) && !sched_is_end(insert)) + insert = sched_next(insert); sched_add_before(insert, spill); return spill; -- 2.20.1