X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=a9fccc2d44f26732899d9161cfe3bf6128742553;hb=5f8ddee6b08c8040c0a304a347d65045c1141d52;hp=f3b527789111a6de89953117ae4af187da921624;hpb=2faa3bd7c1c63d2f28380f3b0771844034499f73;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index f3b527789..a9fccc2d4 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -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; }