static irn_height_t *maybe_get_height_data(const ir_heights_t *heights,
const ir_node *node)
{
- irn_height_t *height = (irn_height_t*)ir_nodemap_get(&heights->data, node);
+ irn_height_t *height = ir_nodemap_get(irn_height_t, &heights->data, node);
return height;
}
static irn_height_t *get_height_data(ir_heights_t *heights, const ir_node *node)
{
- irn_height_t *height = (irn_height_t*)ir_nodemap_get(&heights->data, node);
+ irn_height_t *height = ir_nodemap_get(irn_height_t, &heights->data, node);
if (height == NULL) {
height = OALLOCZ(&heights->obst, irn_height_t);
ir_nodemap_insert(&heights->data, node, height);
return false;
}
-/**
- * Check, if one node can be reached from another one, according to data
- * dependence.
- */
int heights_reachable_in_block(ir_heights_t *h, const ir_node *n,
const ir_node *m)
{
{
irn_height_t *ih = get_height_data(h, irn);
- const ir_edge_t *edge;
-
/* bail out if we already visited that node. */
if (ih->visited >= h->visited)
return ih->height;
static unsigned compute_heights_in_block(ir_node *bl, ir_heights_t *h)
{
- int max_height = -1;
- const ir_edge_t *edge;
+ int max_height = -1;
h->visited++;
unsigned heights_recompute_block(ir_heights_t *h, ir_node *block)
{
ir_graph *irg = get_irn_irg(block);
- const ir_edge_t *edge;
- edges_assure(irg);
+ assure_edges(irg);
- /* reset phase data for all nodes in the block */
+ /* reset data for all nodes in the block */
foreach_out_edge(block, edge) {
ir_node *irn = get_edge_src_irn(edge);
irn_height_t *ih = get_height_data(h, irn);
obstack_init(&res->obst);
res->dump_handle = dump_add_node_info_callback(height_dump_cb, res);
- edges_assure(irg);
+ assure_edges(irg);
irg_block_walk_graph(irg, compute_heights_in_block_walker, NULL, res);
return res;