/**
* Change the out count
+ *
+ * @param tgt the edge target
+ * @param kind the kind of the edge
*/
static INLINE void edge_change_cnt(ir_node *tgt, ir_edge_kind_t kind, int ofs) {
irn_edge_info_t *info = _get_irn_edge_info(tgt, kind);
info->out_count += ofs;
+
+#if 0
+ assert(info->out_count >= 0);
+ if (info->out_count == 0 && kind == EDGE_KIND_NORMAL) {
+ /* tgt lost it's last user */
+ int i;
+
+ 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);
+ }
+ 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);
+
+ }
+ }
+#endif
}
/**
}
}
-
-void edges_node_deleted_kind(ir_node *old, ir_edge_kind_t kind, ir_graph *irg)
+/**
+ * Delete all in edges of a given kind from the node old.
+ *
+ * @param old the node
+ * @param kind the kind of edges to remove
+ * @param irg the irg of the old node
+ */
+static void edges_node_deleted_kind(ir_node *old, ir_edge_kind_t kind, ir_graph *irg)
{
int i, n;
e->present = 1;
} else {
w->problem_found = 1;
+#if 0
ir_fprintf(stderr, "Edge Verifier: edge %+F,%d -> %+F (kind: \"%s\") is missing\n",
irn, i, get_n(irn, i, w->kind), get_kind_str(w->kind));
+#endif
}
}
}
if (w->kind == EDGE_KIND_NORMAL && get_irn_arity(e->src) <= e->pos) {
w->problem_found = 1;
+#if 0
ir_fprintf(stderr, "Edge Verifier: edge(%ld) %+F -> %+F recorded at src position %d, but src has arity %d\n",
edge_get_id(e), e->src, irn, e->pos, get_irn_arity(e->src));
+#endif
continue;
}
if (irn != tgt) {
w->problem_found = 1;
+#if 0
ir_fprintf(stderr, "Edge Verifier: edge(%ld) %+F,%d (kind \"%s\") is no out edge of %+F but of %+F\n",
edge_get_id(e), e->src, e->pos, get_kind_str(w->kind), irn, tgt);
+#endif
}
}
}