X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fopt_blocks.c;h=3735c14aaeb94d9337dfbbda776f6205e62e2b49;hb=2b7851654f662026548655434f80c7fce7f5de5a;hp=9e2235e580d47b63cc337129eebe28958ca650c8;hpb=ce6161a7e42a48f7422b7babcc64d8ace18e2687;p=libfirm diff --git a/ir/opt/opt_blocks.c b/ir/opt/opt_blocks.c index 9e2235e58..3735c14aa 100644 --- a/ir/opt/opt_blocks.c +++ b/ir/opt/opt_blocks.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -40,6 +40,7 @@ #include "set.h" #include "irpass.h" #include "debug.h" +#include "irtools.h" /* define this for general block shaping: congruent blocks are found not only before the end block but anywhere in the graph */ @@ -261,7 +262,7 @@ static listmap_entry_t *listmap_find(listmap_t *map, void *id) static unsigned opcode_hash(const opcode_key_t *entry) { /* assume long >= int */ - return (entry->mode - (ir_mode *)0) * 9 + entry->code + entry->u.proj * 3 + HASH_PTR(entry->u.addr) + entry->arity; + return (unsigned)(PTR_TO_INT(entry->mode) * 9 + entry->code + entry->u.proj * 3 + HASH_PTR(entry->u.addr) + entry->arity); } /* opcode_hash */ /** @@ -1073,7 +1074,7 @@ static void find_liveouts(ir_node *irn, void *ctx) } /* find_liveouts */ /** - * Check if the current block is the meet block of a its predecessors. + * Check if the current block is the meet block of its predecessors. */ static void check_for_cf_meet(ir_node *block, void *ctx) { @@ -1097,16 +1098,14 @@ static void check_for_cf_meet(ir_node *block, void *ctx) k = 0; for (i = n - 1; i >= 0; --i) { ir_node *pred = get_Block_cfgpred(block, i); - ir_node *pred_block; /* pred must be a direct jump to us */ if (! is_Jmp(pred) && ! is_Raise(pred) && !is_Bad(pred)) continue; - pred_block = get_nodes_block(skip_Proj(pred)); - preds[k].pred = pred; preds[k].index = i; + ++k; } if (k > 1) @@ -1174,7 +1173,7 @@ static void add_roots(ir_graph *irg, environment_t *env) * Else, we will split identical blocks if we start which different roots. */ for (bl = env->all_blocks; bl != NULL; bl = bl->all_next) { - int i, n = ARR_LEN(bl->roots); + size_t i, n = ARR_LEN(bl->roots); #if 1 /* TODO: is this really needed? The roots are already in @@ -1264,10 +1263,8 @@ int shape_blocks(ir_graph *irg) if (res) { /* control flow changed */ - set_irg_outs_inconsistent(irg); set_irg_extblk_inconsistent(irg); set_irg_doms_inconsistent(irg); - set_irg_loopinfo_inconsistent(irg); /* Calls might be removed. */ set_trouts_inconsistent();