dump_ir_block_graph(irg, suffix);
set_dump_node_edge_hook(old);
}
+
+static void clear_link(ir_node *irn, void *data)
+{
+ set_irn_link(irn, NULL);
+}
+
+static void collect_phis(ir_node *irn, void *data)
+{
+ if(is_Phi(irn)) {
+ ir_node *bl = get_nodes_block(irn);
+ set_irn_link(irn, get_irn_link(bl));
+ set_irn_link(bl, irn);
+ }
+}
+
+void be_clear_links(ir_graph *irg)
+{
+ irg_walk_graph(irg, clear_link, NULL, NULL);
+}
+
+void be_collect_phis(ir_graph *irg)
+{
+ irg_walk_graph(irg, collect_phis, NULL, NULL);
+}
return is_Block(irn) ? irn : get_nodes_block(irn);
}
+static INLINE int is_firm_be_mode(const ir_mode *mode)
+{
+ return mode_is_data(mode);
+}
+
/**
* Check, if a node produces or consumes a data value.
* If it does, it is significant for scheduling and register allocation.
int i, n;
/* If the node produces a data value, return immediately. */
- if(mode_is_datab(get_irn_mode(irn)))
+ if(is_firm_be_mode(get_irn_mode(irn)))
return 1;
/* else check, if it takes a data value, if that is so, return */
for(i = 0, n = get_irn_arity(irn); i < n; ++i) {
ir_node *op = get_irn_n(irn, i);
- if(mode_is_datab(get_irn_mode(op)))
+ if(is_firm_be_mode(get_irn_mode(op)))
return 1;
}