heights_t *heights_new(ir_graph *irg)
{
heights_t *res = xmalloc(sizeof(res[0]));
- phase_init(&res->ph, "heights", irg, PHASE_DEFAULT_GROWTH, irn_height_init);
+ phase_init(&res->ph, "heights", irg, PHASE_DEFAULT_GROWTH, irn_height_init, NULL);
res->dump_handle = dump_add_node_info_callback(height_dump_cb, res);
heights_recompute(res);
phi_classes_t *res = xmalloc(sizeof(*res));
FIRM_DBG_REGISTER(res->dbg, "ir.ana.phiclass");
- phase_init(&res->ph, "phi_classes", irg, PHASE_DEFAULT_GROWTH, irn_phi_class_init);
+ phase_init(&res->ph, "phi_classes", irg, PHASE_DEFAULT_GROWTH, irn_phi_class_init, NULL);
res->irg = irg;
res->all_phi_classes = pset_new_ptr(5);
phi_classes_t *res = xmalloc(sizeof(*res));
FIRM_DBG_REGISTER(res->dbg, "ir.ana.phiclass");
- phase_init(&res->ph, "phi_classes", irg, PHASE_DEFAULT_GROWTH, irn_phi_class_init);
+ phase_init(&res->ph, "phi_classes", irg, PHASE_DEFAULT_GROWTH, irn_phi_class_init, NULL);
res->irg = irg;
res->all_phi_classes = pset_new_ptr(5);
co2_t env;
FILE *f;
- phase_init(&env.ph, "co2", co->cenv->birg->irg, PHASE_DEFAULT_GROWTH, co2_irn_init);
+ phase_init(&env.ph, "co2", co->cenv->birg->irg, PHASE_DEFAULT_GROWTH, co2_irn_init, NULL);
env.touched = NULL;
env.visited = 0;
env.co = co;
coloring_t *coloring_init(coloring_t *c, ir_graph *irg, const arch_env_t *aenv)
{
- phase_init(&c->ph, "regs_map", irg, PHASE_DEFAULT_GROWTH, regs_irn_data_init);
+ phase_init(&c->ph, "regs_map", irg, PHASE_DEFAULT_GROWTH, regs_irn_data_init, NULL);
c->arch_env = aenv;
c->irg = irg;
return c;
ifg->node_map = pmap_create(); /* to find all nodes, should be replaced by a "keywalker" of irphase */
- phase_init(&ifg->ph, "ptr_map", env->irg, PHASE_DEFAULT_GROWTH, ptr_irn_data_init);
+ phase_init(&ifg->ph, "ptr_map", env->irg, PHASE_DEFAULT_GROWTH, ptr_irn_data_init, NULL);
obstack_init(&ifg->obst);
dom_tree_walk_irg(env->irg, find_neighbour_walker, NULL, ifg);
env.opts = &ilp_opts;
env.birg = birg;
env.be_opts = be_opts;
- phase_init(&env.ph, name, env.irg, PHASE_DEFAULT_GROWTH, init_ilpsched_irn);
+ phase_init(&env.ph, name, env.irg, PHASE_DEFAULT_GROWTH, init_ilpsched_irn, NULL);
/* assign a unique per block number to all interesting nodes */
irg_walk_in_or_dep_graph(env.irg, NULL, build_block_idx, &env);
lv->hook_info.context = lv;
lv->hook_info.hook._hook_node_info = lv_dump_block;
register_hook(hook_node_info, &lv->hook_info);
- phase_init(&lv->ph, "liveness", irg, PHASE_DEFAULT_GROWTH, lv_phase_data_init);
+ phase_init(&lv->ph, "liveness", irg, PHASE_DEFAULT_GROWTH, lv_phase_data_init, NULL);
compute_liveness(lv);
return lv;
bitset_clear_all(lv->nodes);
phase_free(&lv->ph);
- phase_init(&lv->ph, "liveness", lv->irg, PHASE_DEFAULT_GROWTH, lv_phase_data_init);
+ phase_init(&lv->ph, "liveness", lv->irg, PHASE_DEFAULT_GROWTH, lv_phase_data_init, NULL);
compute_liveness(lv);
}
mris_env_t *env = xmalloc(sizeof(env[0]));
ir_graph *irg = be_get_birg_irg(birg);
- phase_init(&env->ph, "mris", irg, 2 * PHASE_DEFAULT_GROWTH, mris_irn_data_init);
+ phase_init(&env->ph, "mris", irg, 2 * PHASE_DEFAULT_GROWTH, mris_irn_data_init, NULL);
env->aenv = be_get_birg_arch_env(birg);
env->irg = irg;
env->visited = 0;
int i, n;
const ir_edge_t *edge;
- phase_init(&rss->ph, "rss block preprocessor", rss->irg, PHASE_DEFAULT_GROWTH, init_rss_irn);
+ phase_init(&rss->ph, "rss block preprocessor", rss->irg, PHASE_DEFAULT_GROWTH, init_rss_irn, NULL);
DBG((rss->dbg, LEVEL_1, "preprocessing block %+F\n", block));
rss->block = block;
* Author: Sebastian Hack
* Modified by:
* Created:
- * CVS-ID: $Id$
+ * SVN-ID: $Id$
* Copyright: (c) 1998-2006 Universitaet Karlsruhe
* Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
*/
#include "irnode_t.h"
#include "irphase_t.h"
-ir_phase *phase_init(ir_phase *ph, const char *name, ir_graph *irg, unsigned growth_factor, phase_irn_data_init_t *data_init)
+ir_phase *phase_init(ir_phase *ph, const char *name, ir_graph *irg, unsigned growth_factor, phase_irn_data_init_t *data_init, void *priv)
{
assert(growth_factor >= 256 && "growth factor must greater or equal to 256/256");
assert(data_init && "You must provide a data constructor");
ph->irg = irg;
ph->n_data_ptr = 0;
ph->data_ptr = NULL;
+ ph->priv = priv;
return ph;
}
}
ir_node *phase_get_first_node(ir_phase *phase) {
- int i;
+ unsigned i;
for (i = 0; i < phase->n_data_ptr; ++i)
if (phase->data_ptr[i])
}
ir_node *phase_get_next_node(ir_phase *phase, ir_node *start) {
- int i;
+ unsigned i;
for (i = get_irn_idx(start) + 1; i < phase->n_data_ptr; ++i)
if (phase->data_ptr[i])
* @param priv Some private pointer which is kept in the phase and can be retrieved with phase_get_private().
* @return A new phase object.
*/
-ir_phase *phase_init(ir_phase *ph, const char *name, ir_graph *irg, unsigned growth_factor, phase_irn_data_init_t *data_init);
+ir_phase *phase_init(ir_phase *ph, const char *name, ir_graph *irg, unsigned growth_factor, phase_irn_data_init_t *data_init, void *priv);
/**
* Free the phase and all node data associated with it.