*** empty log message ***
[libfirm] / ir / ir / irnode.c
index f1d3d68..a9fccc2 100644 (file)
@@ -6,6 +6,9 @@
 */
 
 #include "irnode_t.h"
+#include "irgraph_t.h"
+#include "ident_t.h"
+#include "irmode_t.h"
 #include "array.h"
 
 #ifdef DEBUG_libfirm
@@ -114,7 +117,7 @@ ir_node_print (XP_PAR1, const xprintf_info *info ATTRIBUTE((unused)), XP_PARN)
     return printed;
   }
 
-  XPF1 ("%I", get_irn_opname(np));
+  XPF1 ("%I", get_irn_opident(np));
 
   switch (get_irn_opcode (np)) {       /* node label */
   case iro_Const:
@@ -217,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;
@@ -245,8 +248,15 @@ get_irn_opcode (ir_node *node)
   return node->op->code;
 }
 
-inline ident *
+inline const char *
 get_irn_opname (ir_node *node)
+{
+  assert(node);
+  return id_to_str(node->op->name);
+}
+
+inline ident *
+get_irn_opident (ir_node *node)
 {
   assert(node);
   return node->op->name;
@@ -564,8 +574,6 @@ get_SymConst_ptrinfo (ir_node *node) {
   assert (   (node->op == op_SymConst)
           && (get_SymConst_kind(node) == linkage_ptr_info));
   return node->attr.i.tori.ptrinfo;
-
-
 }
 
 inline void
@@ -575,6 +583,18 @@ set_SymConst_ptrinfo (ir_node *node, ident *ptrinfo) {
   node->attr.i.tori.ptrinfo = ptrinfo;
 }
 
+inline type_or_id_p
+get_SymConst_type_or_id (ir_node *node) {
+  assert (node->op == op_SymConst);
+  return &(node->attr.i.tori);
+}
+
+inline void
+set_SymConst_type_or_id (ir_node *node, type_or_id_p tori) {
+  assert (node->op == op_SymConst);
+  memcpy (&(node->attr.i.tori), tori, sizeof(type_or_id));
+}
+
 inline ir_node *
 get_Sel_mem (ir_node *node) {
   assert (node->op == op_Sel);
@@ -689,11 +709,16 @@ get_Call_param_arr (ir_node *node) {
 }
 
 inline int
-get_Call_arity (ir_node *node) {
+get_Call_n_params (ir_node *node)  {
   assert (node->op == op_Call);
   return (get_irn_arity(node) - CALL_PARAM_OFFSET);
 }
 
+inline int
+get_Call_arity (ir_node *node) {
+  return get_Call_n_params(node);
+}
+
 /* inline void
 set_Call_arity (ir_node *node, ir_node *arity) {
   assert (node->op == op_Call);
@@ -1511,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);
 }
@@ -1706,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;
   }