From 89bab8163011bc3c14ce9968d6f8f69af184ae2e Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 29 Jun 2010 12:17:00 +0000 Subject: [PATCH] simplify and maybe even fix bugs in turn_into_tuple [r27672] --- ir/ir/irgmod.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/ir/ir/irgmod.c b/ir/ir/irgmod.c index 1003739db..bae5974ba 100644 --- a/ir/ir/irgmod.c +++ b/ir/ir/irgmod.c @@ -46,21 +46,16 @@ */ void turn_into_tuple(ir_node *node, int arity) { - assert(node); - set_irn_op(node, op_Tuple); - if (get_irn_arity(node) == arity) { - /* keep old array */ - } else { - ir_graph *irg = get_irn_irg(node); - ir_node *block = get_nodes_block(node); - edges_node_deleted(node, irg); - /* Allocate new array, don't free old in_array, it's on the obstack. */ - node->in = NEW_ARR_D(ir_node *, irg->obst, arity+1); - /* clear the new in array, else edge_notify tries to delete garbage */ - memset(node->in, 0, (arity+1) * sizeof(node->in[0])); - /* set the block back */ - set_nodes_block(node, block); + ir_graph *irg = get_irn_irg(node); + ir_node **in = ALLOCAN(ir_node*, arity); + int i; + + /* construct a new in array, with every input being bad */ + for (i = 0; i < arity; ++i) { + in[i] = new_r_Bad(irg); } + set_irn_in(node, arity, in); + set_irn_op(node, op_Tuple); } /** -- 2.20.1