CVS:
[libfirm] / ir / ir / irnode.c
index f3b5277..a9fccc2 100644 (file)
@@ -8,6 +8,7 @@
 #include "irnode_t.h"
 #include "irgraph_t.h"
 #include "ident_t.h"
+#include "irmode_t.h"
 #include "array.h"
 
 #ifdef DEBUG_libfirm
@@ -219,7 +220,7 @@ get_irn_modecode (ir_node *node)
 
 
 inline ident *
-get_irn_modename (ir_node *node)
+get_irn_modeident (ir_node *node)
 {
   assert(node);
   return node->mode->name;
@@ -1535,7 +1536,7 @@ get_Alloc_size (ir_node *node) {
 }
 
 inline void
-set_Allco_size (ir_node *node, ir_node *size) {
+set_Alloc_size (ir_node *node, ir_node *size) {
   assert (node->op == op_Alloc);
   set_irn_n(node, 1, size);
 }
@@ -1730,7 +1731,10 @@ skip_nop (ir_node *node) {
   /* don't assert node !!! */
 
   if (node && (node->op == op_Id) && (node != get_Id_pred(node))) {
-    return get_Id_pred(node);
+    /* Don't use get_Id_pred:  We get into an endless loop for
+       self-referencing Ids. */
+    assert (get_irn_arity (node) > 0);
+    return node->in[0+1];
   } else {
     return node;
   }