X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=05069a8c7b482047dd47575dbde7b3b5d805e8e6;hb=ab0e5a91b4acdb44ae152930042cbfa9e927bcdd;hp=c3be35a34f2bc927633c9e6b26e107f5dd5dcd05;hpb=e93c2b0ff34a60adeb2cea4f39dc4c8ad7c336dc;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index c3be35a34..05069a8c7 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -154,7 +154,11 @@ new_ir_node(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mod if (arity < 0) { res->in = NEW_ARR_F(ir_node *, 1); /* 1: space for block */ } else { - res->in = NEW_ARR_D(ir_node *, irg->obst, (arity+1)); + /* not nice but necessary: End must always have a flexible array */ + if (op == op_End) + res->in = NEW_ARR_F(ir_node *, (arity+1)); + else + res->in = NEW_ARR_D(ir_node *, irg->obst, (arity+1)); memcpy(&res->in[1], in, sizeof(ir_node *) * arity); }