From: Rubino Geiß Date: Tue, 20 Dec 2005 19:39:35 +0000 (+0000) Subject: fixed iredges related bug in set_irn_in X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=9b56fd8f96da9542caf597ad1d5d71bae56e09f9;p=libfirm fixed iredges related bug in set_irn_in [r7111] --- diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 9c2b87258..c767793fa 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -238,17 +238,24 @@ set_irn_in (ir_node *node, int arity, ir_node **in) { } else { arr = &node->in; } - if (arity != ARR_LEN(*arr) - 1) { + + for (i = 0; i < arity; i++) { + if (i < ARR_LEN(*arr)-1) + edges_notify_edge(node, i, in[i], (*arr)[i+1], current_ir_graph); + else + edges_notify_edge(node, i, in[i], NULL, current_ir_graph); + } + for(;i < ARR_LEN(*arr)-1; i++) { + edges_notify_edge(node, i, NULL, (*arr)[i+1], current_ir_graph); + } + + if (arity != ARR_LEN(*arr) - 1) { ir_node * block = (*arr)[0]; *arr = NEW_ARR_D(ir_node *, current_ir_graph->obst, arity + 1); (*arr)[0] = block; } fix_backedges(current_ir_graph->obst, node); - for (i = 0; i < arity; i++) { - edges_notify_edge(node, i, in[i], (*arr)[i+1], current_ir_graph); - } - memcpy((*arr) + 1, in, sizeof(ir_node *) * arity); }