From: Michael Beck Date: Tue, 26 Sep 2006 11:29:13 +0000 (+0000) Subject: Fixed remove_critical_cf_edges(): X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=133bd84e0ed57ea1e192037f83b696c4c4ca3b4c;p=libfirm 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] --- 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