Added index -> node map to irgs
[libfirm] / ir / ir / irnode.c
index dafd5b4..37f320e 100644 (file)
@@ -142,7 +142,7 @@ new_ir_node (dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mo
   res->op       = op;
   res->mode     = mode;
   res->visited  = 0;
-  res->node_idx = get_irg_next_node_idx(irg);
+  res->node_idx = irg_register_node_idx(irg, res);
   res->link     = NULL;
   if (arity < 0) {
     res->in = NEW_ARR_F (ir_node *, 1);  /* 1: space for block */
@@ -564,6 +564,15 @@ unsigned (get_irn_idx)(const ir_node *node) {
   return _get_irn_idx(node);
 }
 
+int get_irn_pred_pos(ir_node *node, ir_node *arg) {
+  int i;
+  for (i = get_irn_arity(node) - 1; i >= 0; i--) {
+    if (get_irn_n(node, i) == arg)
+      return i;
+  }
+  return -1;
+}
+
 /** manipulate fields of individual nodes **/
 
 /* this works for all except Block */