X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Finterval_analysis.c;h=930e814c29b165c6d64c1dee904dac77239c8e91;hb=ddb4920b93942bad275d30869ea91e7a6aaf1fe3;hp=4b198f0775147dac99405b2da81759e27485a287;hpb=6c165ecbc0725a21b7f68a31f8624c218e7d1288;p=libfirm diff --git a/ir/ana/interval_analysis.c b/ir/ana/interval_analysis.c index 4b198f077..930e814c2 100644 --- a/ir/ana/interval_analysis.c +++ b/ir/ana/interval_analysis.c @@ -221,23 +221,26 @@ static void construct_interval_block(ir_node *b, ir_loop *l) { assert(n_cfgpreds > 0); for (i = 0; i < n_cfgpreds; ++i) { + ir_node *cfop, *pred; + ir_loop *pred_l; + if (is_backedge(b, i)) { if (b != get_loop_element(l, 0).node) { - if (get_firm_verbosity()) { - printf("Loophead not at loop position 0. "); DDMN(b); - } + if (get_firm_verbosity()) { + printf("Loophead not at loop position 0. "); DDMN(b); + } } /* There are no backedges in the interval decomposition. */ add_region_in(b, NULL); continue; } - ir_node *cfop = skip_Proj(get_Block_cfgpred(b, i)); - ir_node *pred = get_nodes_block(cfop); + cfop = skip_Proj(get_Block_cfgpred(b, i)); + pred = get_nodes_block(cfop); /* We want nice blocks. */ assert( get_irn_op(pred) != op_Bad && get_irn_op(skip_Proj(get_Block_cfgpred(b, i))) != op_Bad); - ir_loop *pred_l = get_irn_loop(pred); + pred_l = get_irn_loop(pred); if (pred_l == l) { add_region_in(b, pred); //if (is_fragile_op(cfop)) inc_region_n_exc_outs(b); @@ -245,33 +248,33 @@ static void construct_interval_block(ir_node *b, ir_loop *l) { } else { int found = find_inner_loop(b, l, pred, cfop); if (!found) { - if (b != get_loop_element(l, 0).node) { - if (get_firm_verbosity()) { - printf("Loop entry not at loop position 0. "); DDMN(b); - } - } - found = find_outer_loop(l, pred_l, pred, cfop); - if (found) add_region_in(b, NULL); /* placeholder */ + if (b != get_loop_element(l, 0).node) { + if (get_firm_verbosity()) { + printf("Loop entry not at loop position 0. "); DDMN(b); + } + } + found = find_outer_loop(l, pred_l, pred, cfop); + if (found) add_region_in(b, NULL); /* placeholder */ } if (!found) { - found = find_previous_loop(l, pred_l, b, pred, cfop); + found = find_previous_loop(l, pred_l, b, pred, cfop); } if (!found) { - DDMG(current_ir_graph); - DDMN(b); - DDMN(pred); - assert(is_backedge(b, i)); - assert(found && "backedge from inner loop"); + DDMG(current_ir_graph); + DDMN(b); + DDMN(pred); + assert(is_backedge(b, i)); + assert(found && "backedge from inner loop"); } } if (b != get_loop_element(l, 0).node) { /* Check for improper region */ if (has_backedges(b)) { - printf("Improper Region!!!!!!\n"); - DDMG(current_ir_graph); - DDMN(b); - DDML(l); + printf("Improper Region!!!!!!\n"); + DDMG(current_ir_graph); + DDMN(b); + DDML(l); } } } @@ -303,7 +306,6 @@ void construct_intervals(ir_graph *irg) { construct_cf_backedges(current_ir_graph); - l = get_irg_loop(current_ir_graph); construct_interval_edges(l); @@ -468,7 +470,7 @@ void dump_interval_loop(FILE *F, ir_loop *l) { void dump_interval_graph(ir_graph *irg, const char *suffix) { FILE *f; - if (strncmp(get_entity_name(get_irg_entity(irg)), dump_file_filter, strlen(dump_file_filter)) != 0) + if (!is_filtered_dump_name(get_entity_ident(get_irg_entity(irg)))) return; f = vcg_open(irg, suffix, "-intervals");