From 133bd84e0ed57ea1e192037f83b696c4c4ca3b4c Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Tue, 26 Sep 2006 11:29:13 +0000 Subject: [PATCH] Fixed remove_critical_cf_edges(): - use irg_block_walk_graph() to speed up - build block only at critical edges: curretn block has more than 1 predecessor and the predecessor is a forking op - ignore ALL exception edges [r8294] --- ir/ir/irgopt.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/ir/ir/irgopt.c b/ir/ir/irgopt.c index 4fabc0237..822311228 100644 --- a/ir/ir/irgopt.c +++ b/ir/ir/irgopt.c @@ -2069,19 +2069,21 @@ void place_code(ir_graph *irg) { */ static void walk_critical_cf_edges(ir_node *n, void *env) { int arity, i; - ir_node *pre, *block, *jmp; + ir_node *pre, *cfop, *block, *jmp; int *changed = env; /* Block has multiple predecessors */ - if (is_Block(n) && (get_irn_arity(n) > 1)) { + arity = get_irn_arity(n); + if (arity > 1) { if (n == get_irg_end_block(current_ir_graph)) return; /* No use to add a block here. */ - arity = get_irn_arity(n); - for (i=0; i