X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fscalar_replace.c;h=ad3c7316ddd96d7ccb7ede53090d220dc51d055a;hb=3398ae4a8b3cbf66cb0b274ddcd85a2ea863ece1;hp=1aa743626a74b9a7c53afa674a753d0412fd06b5;hpb=6730cf921d356d992d35526daf57f82af7ab0816;p=libfirm diff --git a/ir/opt/scalar_replace.c b/ir/opt/scalar_replace.c index 1aa743626..ad3c7316d 100644 --- a/ir/opt/scalar_replace.c +++ b/ir/opt/scalar_replace.c @@ -57,7 +57,7 @@ */ typedef union { ir_entity *ent; - tarval *tv; + ir_tarval *tv; } path_elem_t; /** @@ -86,8 +86,8 @@ DEBUG_ONLY(static firm_dbg_module_t *dbg;) */ static int path_cmp(const void *elt, const void *key, size_t size) { - const path_t *p1 = elt; - const path_t *p2 = key; + const path_t *p1 = (const path_t*)elt; + const path_t *p2 = (const path_t*)key; (void) size; /* we can use memcmp here, because identical tarvals should have identical addresses */ @@ -101,8 +101,8 @@ static int path_cmp(const void *elt, const void *key, size_t size) */ static int ent_cmp(const void *elt, const void *key, size_t size) { - const scalars_t *c1 = elt; - const scalars_t *c2 = key; + const scalars_t *c1 = (const scalars_t*)elt; + const scalars_t *c2 = (const scalars_t*)key; (void) size; return c1->ent != c2->ent; @@ -485,14 +485,15 @@ static unsigned allocate_value_numbers(pset *sels, ir_entity *ent, unsigned vnum DB((dbg, SET_LEVEL_3, " Visiting Sel nodes of entity %+F\n", ent)); /* visit all Sel nodes in the chain of the entity */ - for (sel = get_entity_link(ent); sel; sel = next) { - next = get_irn_link(sel); + for (sel = (ir_node*)get_entity_link(ent); sel != NULL; + sel = next) { + next = (ir_node*)get_irn_link(sel); /* we must mark this sel for later */ pset_insert_ptr(sels, sel); key = find_path(sel, 0); - path = set_find(pathes, key, PATH_SIZE(key), path_hash(key)); + path = (path_t*)set_find(pathes, key, PATH_SIZE(key), path_hash(key)); if (path) { SET_VNUM(sel, path->vnum); @@ -556,7 +557,7 @@ typedef struct env_t { */ static void topologic_walker(ir_node *node, void *ctx) { - env_t *env = ctx; + env_t *env = (env_t*)ctx; ir_graph *irg = get_irn_irg(node); ir_node *adr, *block, *mem, *val; ir_mode *mode; @@ -653,24 +654,25 @@ static void topologic_walker(ir_node *node, void *ctx) * @param modes A flexible array, containing all the modes of * the value numbers. */ -static void do_scalar_replacements(pset *sels, int nvals, ir_mode **modes) +static void do_scalar_replacements(ir_graph *irg, pset *sels, int nvals, + ir_mode **modes) { env_t env; - ssa_cons_start(current_ir_graph, nvals); + ssa_cons_start(irg, nvals); - env.nvals = nvals; - env.modes = modes; - env.sels = sels; + env.nvals = nvals; + env.modes = modes; + env.sels = sels; /* * second step: walk over the graph blockwise in topological order * and fill the array as much as possible. */ - DB((dbg, SET_LEVEL_3, "Substituting Loads and Stores in %+F\n", current_ir_graph)); - irg_walk_blkwise_graph(current_ir_graph, NULL, topologic_walker, &env); + DB((dbg, SET_LEVEL_3, "Substituting Loads and Stores in %+F\n", irg)); + irg_walk_blkwise_graph(irg, NULL, topologic_walker, &env); - ssa_cons_finish(current_ir_graph); + ssa_cons_finish(irg); } /* @@ -688,12 +690,8 @@ int scalar_replacement_opt(ir_graph *irg) set *set_ent; pset *sels; ir_type *ent_type, *frame_tp; - ir_graph *rem; int res = 0; - rem = current_ir_graph; - current_ir_graph = irg; - /* Call algorithm that computes the out edges */ assure_irg_outs(irg); @@ -752,9 +750,9 @@ int scalar_replacement_opt(ir_graph *irg) /* If scalars were found. */ if (nvals > 0) { - do_scalar_replacements(sels, nvals, modes); + do_scalar_replacements(irg, sels, nvals, modes); - foreach_set(set_ent, value) { + foreach_set(set_ent, scalars_t*, value) { free_entity(value->ent); } @@ -776,7 +774,6 @@ int scalar_replacement_opt(ir_graph *irg) ir_free_resources(irg, IR_RESOURCE_IRN_LINK); irp_free_resources(irp, IR_RESOURCE_ENTITY_LINK); - current_ir_graph = rem; return res; }