X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fifconv.c;h=78184eece588af3335b57e6b8d6e1ed8e66111d1;hb=b27ae245166bb695bc4e418ff416d91bc37d0f28;hp=04502fc4525f4c8b5caf5eacce5e98094880b2ce;hpb=9aab2f882395c6b4df60388d2d49c356eb6fd4e8;p=libfirm diff --git a/ir/opt/ifconv.c b/ir/opt/ifconv.c index 04502fc45..78184eece 100644 --- a/ir/opt/ifconv.c +++ b/ir/opt/ifconv.c @@ -283,6 +283,8 @@ restart: ir_cdep* cdep; pred0 = get_Block_cfgpred_block(block, i); + if (pred0 == block) continue; + for (cdep = find_cdep(pred0); cdep != NULL; cdep = get_cdep_next(cdep)) { const ir_node* dependency = get_cdep_node(cdep); ir_node* projx0 = walk_to_projx(pred0, dependency); @@ -310,6 +312,7 @@ restart: dbg_info* cond_dbg; pred1 = get_Block_cfgpred_block(block, j); + if (pred1 == block) continue; if (!is_cdep_on(pred1, dependency)) continue; @@ -474,6 +477,8 @@ void opt_if_conv(ir_graph *irg) DB((dbg, LEVEL_1, "Running if-conversion on %+F\n", irg)); + env.changed |= remove_bads(irg); + normalize_one_return(irg); remove_critical_cf_edges(irg); @@ -491,9 +496,7 @@ void opt_if_conv(ir_graph *irg) local_optimize_graph(irg); /* graph has changed, invalidate analysis info */ - set_irg_outs_inconsistent(irg); set_irg_extblk_inconsistent(irg); - set_irg_loopinfo_inconsistent(irg); set_irg_doms_inconsistent(irg); }