X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgmod.c;h=6a4039aad3d09ff6e69db6482bac5096e382f0e9;hb=8f355cb9b3d20c10f71d1b1e17cbf59a51ced83b;hp=1abdf7ead02cd891fa868c360e98414ad51d381a;hpb=11d8edd41767b8d85a2431138527a1ebab0ed40e;p=libfirm diff --git a/ir/ir/irgmod.c b/ir/ir/irgmod.c index 1abdf7ead..6a4039aad 100644 --- a/ir/ir/irgmod.c +++ b/ir/ir/irgmod.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -54,11 +54,12 @@ void turn_into_tuple(ir_node *node, int arity) { } else { /* don't use get_nodes_block here, we allow turn_into_tuple for unpinned nodes */ ir_node *block = get_irn_n(node, -1); - /* Allocate new array, don't free old in_array, it's on the obstack. */ edges_node_deleted(node, current_ir_graph); + /* Allocate new array, don't free old in_array, it's on the obstack. */ node->in = NEW_ARR_D(ir_node *, current_ir_graph->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_irn_n(node, -1, block); } } @@ -125,6 +126,7 @@ void exchange(ir_node *old, ir_node *nw) { */ static void collect(ir_node *n, void *env) { ir_node *pred; + (void) env; if (is_Phi(n)) { set_irn_link(n, get_irn_link(get_nodes_block(n))); @@ -209,9 +211,6 @@ void part_block(ir_node *node) { set_irn_link(new_block, phi); set_irn_link(old_block, NULL); while (phi) { - if(get_nodes_block(phi) == old_block); /* @@@ inlinening chokes on phis that don't - obey this condition. How do they get into - the list??? Example: InterfaceIII */ set_nodes_block(phi, new_block); phi = get_irn_link(phi); }