X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Firtools.c;h=ea56db0ec1e440c33830062b62c35ba0290bb034;hb=e997eedfb605aa149004122d63c7c54a8e384132;hp=5accaf5d01c76421629437697433d19de7bb4cbf;hpb=f8cc15664f571aa7ef89d6f6bc8d5bd2b8ca7d53;p=libfirm diff --git a/ir/common/irtools.c b/ir/common/irtools.c index 5accaf5d0..ea56db0ec 100644 --- a/ir/common/irtools.c +++ b/ir/common/irtools.c @@ -1,20 +1,6 @@ /* - * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. - * * This file is part of libFirm. - * - * This file may be distributed and/or modified under the terms of the - * GNU General Public License version 2 as published by the Free Software - * Foundation and appearing in the file LICENSE.GPL included in the - * packaging of this file. - * - * Licensees holding valid libFirm Professional Edition licenses may use - * this file in accordance with the libFirm Commercial License. - * Agreement provided with the Software. - * - * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. + * Copyright (C) 2012 University of Karlsruhe. */ /** @@ -69,28 +55,33 @@ void firm_collect_block_phis(ir_node *node, void *env) void copy_irn_to_irg(ir_node *n, ir_graph *irg) { - ir_op *op = get_irn_op(n); ir_graph *old_irg; ir_node *nn = NULL; /* do not copy standard nodes */ - if (op == op_NoMem) + switch (get_irn_opcode(n)) { + case iro_NoMem: n = get_irg_no_mem(irg); - else if (op == op_Block) { - old_irg = get_irn_irg(n); + break; + case iro_Block: + old_irg = get_irn_irg(n); if (n == get_irg_start_block(old_irg)) nn = get_irg_start_block(irg); else if (n == get_irg_end_block(old_irg)) nn = get_irg_end_block(irg); - } - else if (op == op_Start) + break; + + case iro_Start: nn = get_irg_start(irg); - else if (op == op_End) + break; + + case iro_End: nn = get_irg_end(irg); - else if (op == op_Proj) { - old_irg = get_irn_irg(n); + break; + case iro_Proj: + old_irg = get_irn_irg(n); if (n == get_irg_initial_exec(old_irg)) nn = get_irg_initial_exec(irg); else if (n == get_irg_frame(old_irg)) @@ -99,6 +90,7 @@ void copy_irn_to_irg(ir_node *n, ir_graph *irg) nn = get_irg_initial_mem(irg); else if (n == get_irg_args(old_irg)) nn = get_irg_args(irg); + break; } if (nn) { @@ -109,7 +101,7 @@ void copy_irn_to_irg(ir_node *n, ir_graph *irg) nn = new_ir_node(get_irn_dbg_info(n), irg, NULL, /* no block yet, will be set later */ - op, + get_irn_op(n), get_irn_mode(n), get_irn_arity(n), get_irn_in(n) + 1); @@ -180,6 +172,7 @@ void irn_rewire_inputs(ir_node *node) { ir_node *new_node; int arity; + int n_deps; int i; new_node = get_new_node(node); @@ -197,15 +190,20 @@ void irn_rewire_inputs(ir_node *node) set_irn_n(new_node, i, new_in); } + n_deps = get_irn_deps(new_node); + for (i = 0; i < n_deps; ++i) { + ir_node *dep = get_irn_dep(node, i); + ir_node *new_dep = get_new_node(dep); + set_irn_dep(new_node, i, new_dep); + } + /* Now the new node is complete. We can add it to the hash table for CSE. */ add_identities(new_node); } void firm_pset_dump(pset *set) { - void *obj; - - foreach_pset(set, void*, obj) { + foreach_pset(set, void, obj) { ir_fprintf(stderr, "%+F\n", obj); } }