From f07f43733ee8d48586c9ef9472d0788d485c13c7 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 26 Sep 2006 12:56:57 +0000 Subject: [PATCH 1/1] fix broken remove_critical_cf [r8296] --- ir/ir/irgopt.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ir/ir/irgopt.c b/ir/ir/irgopt.c index 822311228..1c07a6a5f 100644 --- a/ir/ir/irgopt.c +++ b/ir/ir/irgopt.c @@ -2069,27 +2069,28 @@ void place_code(ir_graph *irg) { */ static void walk_critical_cf_edges(ir_node *n, void *env) { int arity, i; - ir_node *pre, *cfop, *block, *jmp; + ir_node *pre, *block, *jmp; int *changed = env; + ir_graph *irg = get_irn_irg(n); /* Block has multiple predecessors */ arity = get_irn_arity(n); if (arity > 1) { - if (n == get_irg_end_block(current_ir_graph)) + if (n == get_irg_end_block(irg)) return; /* No use to add a block here. */ for (i = 0; i < arity; ++i) { + const ir_op *cfop; + pre = get_irn_n(n, i); - cfop = skip_Proj(pre); + cfop = get_irn_op(skip_Proj(pre)); /* Predecessor has multiple successors. Insert new control flow edge but ignore exception edges. */ - if (! is_fragile_op(cfop) && is_op_forking(cfop)) { + if (! is_op_fragile(cfop) && is_op_forking(cfop)) { /* set predecessor of new block */ - block = new_Block(1, &pre); + block = new_r_Block(irg, 1, &pre); /* insert new jmp node to new block */ - set_cur_block(block); - jmp = new_Jmp(); - set_cur_block(n); + jmp = new_r_Jmp(irg, block); /* set successor of new block */ set_irn_n(n, i, jmp); *changed = 1; -- 2.20.1