info->out_count += ofs;
#if 0
+ ir_graph *irg = get_irn_irg(tgt);
assert(info->out_count >= 0);
if (info->out_count == 0 && kind == EDGE_KIND_NORMAL) {
/* tgt lost it's last user */
for (i = get_irn_arity(tgt) - 1; i >= -1; --i) {
ir_node *prev = get_irn_n(tgt, i);
- edges_notify_edge(tgt, i, NULL, prev, current_ir_graph);
+ edges_notify_edge(tgt, i, NULL, prev, irg);
}
for (i = get_irn_deps(tgt) - 1; i >= 0; --i) {
ir_node *prev = get_irn_dep(tgt, i);
- edges_notify_edge_kind(tgt, i, NULL, prev, EDGE_KIND_DEP, current_ir_graph);
+ edges_notify_edge_kind(tgt, i, NULL, prev, EDGE_KIND_DEP, irg);
}
}
}
if (edges_activated_kind(irg, EDGE_KIND_BLOCK) && is_Block(src)) {
- if (pos == -1) {
- /* a MacroBlock edge: ignore it here */
- } else {
- ir_node *bl_old = old_tgt ? get_nodes_block(skip_Proj(old_tgt)) : NULL;
- ir_node *bl_tgt = NULL;
+ ir_node *bl_old = old_tgt ? get_nodes_block(skip_Proj(old_tgt)) : NULL;
+ ir_node *bl_tgt = NULL;
- if (tgt)
- bl_tgt = is_Bad(tgt) ? tgt : get_nodes_block(skip_Proj(tgt));
+ if (tgt)
+ bl_tgt = is_Bad(tgt) ? tgt : get_nodes_block(skip_Proj(tgt));
- edges_notify_edge_kind(src, pos, bl_tgt, bl_old, EDGE_KIND_BLOCK, irg);
- }
+ edges_notify_edge_kind(src, pos, bl_tgt, bl_old, EDGE_KIND_BLOCK, irg);
}
}
{
visitor_info_t *info = data;
+ if (is_Deleted(irn))
+ return;
+
if (!irn_visited_else_mark(irn)) {
info->visit(irn, info->data);
}