X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fcritical_edges.c;h=11b282d551abf6bc26ada9e4c64f0b4825912663;hb=183c08a8d00578cfc700cdd0d8387b920a5996da;hp=0d0a88493ea7c92e78d2a7dab724235eb6cb7d68;hpb=d304e6e0053ecf1de3f541121ee70d7542bf9f84;p=libfirm diff --git a/ir/opt/critical_edges.c b/ir/opt/critical_edges.c index 0d0a88493..11b282d55 100644 --- a/ir/opt/critical_edges.c +++ b/ir/opt/critical_edges.c @@ -22,7 +22,6 @@ * @brief Remove critical edges. * @author Christian Schaefer, Goetz Lindenmaier, Sebastian Felis, * Michael Beck - * @version $Id$ */ #include "config.h" @@ -69,7 +68,7 @@ static void walk_critical_cf_edges(ir_node *n, void *env) cfop = get_irn_op(skip_Proj(pre)); if (is_op_fragile(cfop)) { - if (cenv->ignore_exc_edges && get_Proj_proj(pre) == pn_Generic_X_except) + if (cenv->ignore_exc_edges && is_x_except_Proj(pre)) continue; goto insert; } @@ -90,9 +89,9 @@ insert: /* set successor of new block */ set_irn_n(n, i, jmp); cenv->changed = 1; - } /* predecessor has multiple successors */ - } /* for all predecessors */ - } /* n is a multi-entry block */ + } + } + } } void remove_critical_cf_edges_ex(ir_graph *irg, int ignore_exception_edges) @@ -105,9 +104,10 @@ void remove_critical_cf_edges_ex(ir_graph *irg, int ignore_exception_edges) irg_block_walk_graph(irg, NULL, walk_critical_cf_edges, &env); if (env.changed) { /* control flow changed */ - set_irg_extblk_inconsistent(irg); - set_irg_doms_inconsistent(irg); + clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE + | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS); } + set_irg_state(irg, IR_GRAPH_STATE_NO_CRITICAL_EDGES); } void remove_critical_cf_edges(ir_graph *irg)