*/
typedef union {
ir_entity *ent;
- tarval *tv;
+ ir_tarval *tv;
} path_elem_t;
/**
*/
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 */
*/
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;
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);
*/
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;
* @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);
}
/*
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);
/* 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);
}
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
irp_free_resources(irp, IR_RESOURCE_ENTITY_LINK);
- current_ir_graph = rem;
return res;
}