* @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.
#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 */
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
/**
key.id = id;
key.list = NULL;
key.next = NULL;
- entry = (listmap_entry_t*)set_insert(map->map, &key, sizeof(key), HASH_PTR(id));
+ entry = (listmap_entry_t*)set_insert(map->map, &key, sizeof(key), hash_ptr(id));
if (entry->list == NULL) {
/* a new entry, put into the list */
static unsigned opcode_hash(const opcode_key_t *entry)
{
/* assume long >= int */
- return (unsigned)(PTR_TO_INT(entry->mode) * 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 */
/**
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 */
/* 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 */
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) {