/*
- * 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.
*
#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 */
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 */
/**
} /* 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)
{
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;
+ preds[k++].pred = pred;
+ preds[k++].index = i;
}
if (k > 1)
* 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
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();