be: Change insert_Perm_after() to insert_Perm_before().
[libfirm] / ir / opt / opt_blocks.c
index e552ce6..70b13a9 100644 (file)
@@ -162,8 +162,7 @@ DEBUG_ONLY(static unsigned part_nr = 0;)
  */
 static void dump_partition(const char *msg, const partition_t *part)
 {
-       const block_t *block;
-       int           first = 1;
+       int first = 1;
 
        DB((dbg, LEVEL_2, " %s part%u (%u blocks) {\n  ", msg, part->nr, part->n_blocks));
        list_for_each_entry(block_t, block, &part->blocks, block_list) {
@@ -241,7 +240,7 @@ static listmap_entry_t *listmap_find(listmap_t *map, void *id)
        key.id   = id;
        key.list = NULL;
        key.next = NULL;
-       entry    = (listmap_entry_t*)set_insert(map->map, &key, sizeof(key), hash_ptr(id));
+       entry    = set_insert(listmap_entry_t, map->map, &key, sizeof(key), hash_ptr(id));
 
        if (entry->list == NULL) {
                /* a new entry, put into the list */
@@ -422,9 +421,6 @@ static opcode_key_t *opcode(const node_t *node, environment_t *env)
        case iro_Const:
                key.u.tv  = get_Const_tarval(irn);
                break;
-       case iro_Conv:
-               key.u.intVal = get_Conv_strict(irn);
-               break;
        case iro_Load:
                key.mode = get_Load_mode(irn);
                break;
@@ -438,7 +434,7 @@ static opcode_key_t *opcode(const node_t *node, environment_t *env)
                break;
        }
 
-       entry = (opcode_key_t*)set_insert(env->opcode2id_map, &key, sizeof(key), opcode_hash(&key));
+       entry = set_insert(opcode_key_t, env->opcode2id_map, &key, sizeof(key), opcode_hash(&key));
        return entry;
 }  /* opcode */
 
@@ -507,7 +503,6 @@ static void propagate_blocks(partition_t *part, environment_t *env)
 {
        block_t         *ready_blocks = NULL;
        unsigned        n_ready       = 0;
-       block_t         *bl, *next;
        listmap_t       map;
        listmap_entry_t *iter;
 
@@ -542,10 +537,9 @@ static void propagate_blocks(partition_t *part, environment_t *env)
                        for (i = get_irn_arity(irn) - 1; i >= 0; --i) {
                                ir_node *pred  = get_irn_n(irn, i);
                                ir_node *block = get_nodes_block(skip_Proj(pred));
-                               node_t *p_node;
 
                                if (block != bl->block) {
-                                       p_node = create_node(pred, bl, env);
+                                       node_t *p_node = create_node(pred, bl, env);
                                        if (is_input_node(pred, irn, i)) {
                                                /* is a block live input */
                                                p_node->is_input = 1;
@@ -557,7 +551,7 @@ static void propagate_blocks(partition_t *part, environment_t *env)
                                        }
                                } else if (! irn_visited_else_mark(pred)) {
                                        /* not yet visited, ok */
-                                       p_node = create_node(pred, bl, env);
+                                       create_node(pred, bl, env);
 
                                        if (is_Phi(pred)) {
                                                /* update the Phi list */
@@ -617,8 +611,6 @@ static void propagate_blocks(partition_t *part, environment_t *env)
  */
 static void propagate(environment_t *env)
 {
-       partition_t *part, *next;
-
        list_for_each_entry_safe(partition_t, part, next, &env->partitions, part_list) {
                if (part->n_blocks < 2) {
                        /* zero or one block left, kill this partition */
@@ -654,7 +646,6 @@ static void *live_throughs(const block_t *bl, const ir_node *phi)
 static void propagate_blocks_live_troughs(partition_t *part, environment_t *env)
 {
        const ir_node   *meet_block = part->meet_block;
-       block_t         *bl, *next;
        listmap_t       map;
        listmap_entry_t *iter;
        const ir_node   *phi;
@@ -708,8 +699,6 @@ static void propagate_blocks_live_troughs(partition_t *part, environment_t *env)
  */
 static void propagate_live_troughs(environment_t *env)
 {
-       partition_t *part, *next;
-
        list_for_each_entry_safe(partition_t, part, next, &env->partitions, part_list) {
                propagate_blocks_live_troughs(part, env);
        }
@@ -729,7 +718,6 @@ static void propagate_live_troughs(environment_t *env)
 static void apply(ir_graph *irg, partition_t *part)
 {
        block_t *repr = list_entry(part->blocks.next, block_t, block_list);
-       block_t *bl;
        ir_node *block, *end, *meet_block, *p, *next;
        ir_node **ins, **phi_ins;
        phi_t   *repr_phi, *phi;
@@ -1192,10 +1180,9 @@ static void add_roots(ir_graph *irg, environment_t *env)
 #endif /* GENERAL_SHAPE */
 
 /* Combines congruent end blocks into one. */
-int shape_blocks(ir_graph *irg)
+void shape_blocks(ir_graph *irg)
 {
        environment_t env;
-       partition_t   *part;
        block_t       *bl;
        int           res, n;
 
@@ -1260,8 +1247,7 @@ int shape_blocks(ir_graph *irg)
 
        if (res) {
                /* control flow changed */
-               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
-                                  | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS);
+               clear_irg_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_DOMINANCE);
        }
 
        for (bl = env.all_blocks; bl != NULL; bl = bl->all_next) {
@@ -1271,11 +1257,9 @@ int shape_blocks(ir_graph *irg)
        DEL_ARR_F(env.live_outs);
        del_set(env.opcode2id_map);
        obstack_free(&env.obst, NULL);
-
-       return res;
 }  /* shape_blocks */
 
 ir_graph_pass_t *shape_blocks_pass(const char *name)
 {
-       return def_graph_pass_ret(name ? name : "shape_blocks", shape_blocks);
+       return def_graph_pass(name ? name : "shape_blocks", shape_blocks);
 }  /* shape_blocks_pass */