From: Adam Szalkowski Date: Mon, 28 Aug 2006 10:01:21 +0000 (+0000) Subject: we NEED to insert reloads at the end of a basic block! reverted to old version X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=e4580496799bee21aa9b69caccc292329c45816c;p=libfirm we NEED to insert reloads at the end of a basic block! reverted to old version --- 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; }