X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fdead_code_elimination.c;h=b9876ee996c7f4d7cb0e5ff3185dc23922ad283b;hb=3398ae4a8b3cbf66cb0b274ddcd85a2ea863ece1;hp=cd969565133a867310130b3ff3a17f1d91cbadfd;hpb=c8e1cf6a41fa2077058cce740783ab78990ac0ab;p=libfirm diff --git a/ir/opt/dead_code_elimination.c b/ir/opt/dead_code_elimination.c index cd9695651..b9876ee99 100644 --- a/ir/opt/dead_code_elimination.c +++ b/ir/opt/dead_code_elimination.c @@ -61,16 +61,16 @@ static void rewire_inputs(ir_node *node, void *env) static void copy_node_dce(ir_node *node, void *env) { - int i; - ir_node *new_node = exact_copy(node); - ir_graph *irg = get_irn_irg(new_node); + ir_phase_id i; + ir_node *new_node = exact_copy(node); + ir_graph *irg = get_irn_irg(new_node); (void) env; /* preserve the node numbers for easier debugging */ new_node->node_nr = node->node_nr; /* copy phase information for this node */ - for (i = 0; i <= PHASE_LAST; i++) { + for (i = PHASE_FIRST; i <= PHASE_LAST; ++i) { ir_phase *phase = irg_get_phase(irg, i); if (phase == NULL) continue; @@ -85,22 +85,20 @@ static void copy_node_dce(ir_node *node, void *env) } /** - * Copies the graph reachable from current_ir_graph->end to the obstack - * in current_ir_graph and fixes the environment. - * Then fixes the fields in current_ir_graph containing nodes of the - * graph. + * Copies the graph reachable from the End node to the obstack + * in irg. Then fixes the fields containing nodes of the graph. * * @param copy_node_nr If non-zero, the node number will be copied */ static void copy_graph_env(ir_graph *irg) { - ir_node *new_anchor; - int i; + ir_node *new_anchor; + ir_phase_id i; /* init the new_phases array */ /* TODO: this is wrong, it should only allocate a new data_ptr inside * the phase! */ - for (i = 0; i <= PHASE_LAST; i++) { + for (i = PHASE_FIRST; i <= PHASE_LAST; ++i) { ir_phase *old_ph = irg_get_phase(irg, i); if (old_ph == NULL) { new_phases[i] = NULL; @@ -114,12 +112,12 @@ static void copy_graph_env(ir_graph *irg) irg_walk_anchors(irg, copy_node_dce, rewire_inputs, NULL); /* fix the anchor */ - new_anchor = get_irn_link(irg->anchor); + new_anchor = (ir_node*)get_irn_link(irg->anchor); assert(new_anchor != NULL); irg->anchor = new_anchor; /* copy the new phases into the irg */ - for (i = 0; i <= PHASE_LAST; i++) { + for (i = PHASE_FIRST; i <= PHASE_LAST; ++i) { ir_phase *old_ph = irg_get_phase(irg, i); if (old_ph == NULL) continue; @@ -142,7 +140,6 @@ static void copy_graph_env(ir_graph *irg) */ void dead_node_elimination(ir_graph *irg) { - ir_graph *rem; struct obstack *graveyard_obst = NULL; struct obstack *rebirth_obst = NULL; @@ -151,10 +148,6 @@ void dead_node_elimination(ir_graph *irg) /* inform statistics that we started a dead-node elimination run */ hook_dead_node_elim(irg, 1); - /* Remember external state of current_ir_graph. */ - rem = current_ir_graph; - current_ir_graph = irg; - assert(get_irg_phase_state(irg) != phase_building); /* Handle graph state */ @@ -186,8 +179,6 @@ void dead_node_elimination(ir_graph *irg) /* inform statistics that the run is over */ hook_dead_node_elim(irg, 0); - - current_ir_graph = rem; } ir_graph_pass_t *dead_node_elimination_pass(const char *name) @@ -223,7 +214,7 @@ typedef struct survive_dce_list_t { static void dead_node_hook(void *context, ir_graph *irg, int start) { - survive_dce_t *sd = context; + survive_dce_t *sd = (survive_dce_t*)context; (void) irg; /* Create a new map before the dead node elimination is performed. */ @@ -242,8 +233,8 @@ static void dead_node_hook(void *context, ir_graph *irg, int start) */ static void dead_node_subst_hook(void *context, ir_graph *irg, ir_node *old, ir_node *nw) { - survive_dce_t *sd = context; - survive_dce_list_t *list = pmap_get(sd->places, old); + survive_dce_t *sd = (survive_dce_t*)context; + survive_dce_list_t *list = (survive_dce_list_t*)pmap_get(sd->places, old); (void) irg; /* If the node is to be patched back, write the new address to all registered locations. */ @@ -304,7 +295,7 @@ void survive_dce_register_irn(survive_dce_t *sd, ir_node **place) { if (*place != NULL) { ir_node *irn = *place; - survive_dce_list_t *curr = pmap_get(sd->places, irn); + survive_dce_list_t *curr = (survive_dce_list_t*)pmap_get(sd->places, irn); survive_dce_list_t *nw = OALLOC(&sd->obst, survive_dce_list_t); nw->next = curr;