From e4580496799bee21aa9b69caccc292329c45816c Mon Sep 17 00:00:00 2001 From: Adam Szalkowski Date: Mon, 28 Aug 2006 10:01:21 +0000 Subject: [PATCH] we NEED to insert reloads at the end of a basic block! reverted to old version --- ir/be/benode.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ir/be/benode.c b/ir/be/benode.c index 8e2ba8337..c8a30283f 100644 --- a/ir/be/benode.c +++ b/ir/be/benode.c @@ -945,18 +945,22 @@ ir_node *be_reload(const arch_env_t *arch_env, const arch_register_class_t *cls, { ir_node *reload; - ir_node *block = get_nodes_block(insert); - ir_graph *irg = get_irn_irg(block); + ir_node *bl = is_Block(insert) ? insert : get_nodes_block(insert); + ir_graph *irg = get_irn_irg(bl); ir_node *frame = get_irg_frame(irg); const arch_register_class_t *cls_frame = arch_get_irn_reg_class(arch_env, frame, -1); assert(be_is_Spill(spill) || (is_Phi(spill) && get_irn_mode(spill) == mode_M)); - reload = be_new_Reload(cls, cls_frame, irg, block, frame, spill, mode); + reload = be_new_Reload(cls, cls_frame, irg, bl, frame, spill, mode); - assert(!is_Block(insert)); + if(is_Block(insert)) { + insert = sched_skip(insert, 0, sched_skip_cf_predicator, (void *) arch_env); + sched_add_after(insert, reload); + } - sched_add_before(insert, reload); + else + sched_add_before(insert, reload); return reload; } -- 2.20.1