X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fopt_blocks.c;h=47fccb6e42c421ee07399861220195d0bb1ae161;hb=8c9921a1fc166552f6e416434fd8394a4fc210a3;hp=ab9bd398490541a4c7e7c8cdeb50cc5a27c257b6;hpb=4db6c5b3708319ba7eff5489e1fe1c7a01fdd866;p=libfirm diff --git a/ir/opt/opt_blocks.c b/ir/opt/opt_blocks.c index ab9bd3984..47fccb6e4 100644 --- a/ir/opt/opt_blocks.c +++ b/ir/opt/opt_blocks.c @@ -21,7 +21,6 @@ * @file * @brief Combining congruent blocks * @author Michael Beck - * @version $Id$ * * This phase find congruent blocks. * Two block are congruent, if they contains only equal calculations. @@ -40,7 +39,7 @@ #include "set.h" #include "irpass.h" #include "debug.h" -#include "irtools.h" +#include "util.h" /* define this for general block shaping: congruent blocks are found not only before the end block but anywhere in the graph */ @@ -155,7 +154,7 @@ typedef struct listmap_t { DEBUG_ONLY(static firm_dbg_module_t *dbg;) /** Next partition number. */ -DEBUG_ONLY(static unsigned part_nr = 0); +DEBUG_ONLY(static unsigned part_nr = 0;) #ifdef DEBUG_libfirm /** @@ -293,7 +292,7 @@ static partition_t *create_partition(ir_node *meet_block, environment_t *env) INIT_LIST_HEAD(&part->blocks); part->meet_block = meet_block; part->n_blocks = 0; - DEBUG_ONLY(part->nr = part_nr++); + DEBUG_ONLY(part->nr = part_nr++;) list_add_tail(&part->part_list, &env->partitions); return part; } /* create_partition */ @@ -735,7 +734,7 @@ static void apply(ir_graph *irg, partition_t *part) ir_node **ins, **phi_ins; phi_t *repr_phi, *phi; pair_t *repr_pair, *pair; - int i, j, k, n, block_nr, n_phis; + int i, j, k, n, n_phis; list_del(&repr->block_list); @@ -769,10 +768,8 @@ static void apply(ir_graph *irg, partition_t *part) /* collect new in arrays */ end = get_irg_end(irg); - block_nr = 0; list_for_each_entry(block_t, bl, &part->blocks, block_list) { block = bl->block; - ++block_nr; DB((dbg, LEVEL_1, "%+F, ", block)); @@ -1103,8 +1100,9 @@ static void check_for_cf_meet(ir_node *block, void *ctx) if (! is_Jmp(pred) && ! is_Raise(pred) && !is_Bad(pred)) continue; - preds[k++].pred = pred; - preds[k++].index = i; + preds[k].pred = pred; + preds[k].index = i; + ++k; } if (k > 1) @@ -1204,7 +1202,7 @@ int shape_blocks(ir_graph *irg) /* register a debug mask */ FIRM_DBG_REGISTER(dbg, "firm.opt.blocks"); - DEBUG_ONLY(part_nr = 0); + DEBUG_ONLY(part_nr = 0;) DB((dbg, LEVEL_1, "Shaping blocks for %+F\n", irg)); /* works better, when returns are placed at the end of the blocks */ @@ -1262,11 +1260,8 @@ int shape_blocks(ir_graph *irg) if (res) { /* control flow changed */ - set_irg_extblk_inconsistent(irg); - set_irg_doms_inconsistent(irg); - - /* Calls might be removed. */ - set_trouts_inconsistent(); + clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE + | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS); } for (bl = env.all_blocks; bl != NULL; bl = bl->all_next) {