X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelower.c;h=5354b7f6a0008b9446d0a67d3a29b60e0f8416be;hb=6ee1fce95429dbf57fda4455ca5f2cf011ac8190;hp=2cd2b90bf868eef1084eef2fb54ff7aea26734b0;hpb=81191be9419f49c1338f460dd7cd180197aa46d5;p=libfirm diff --git a/ir/be/belower.c b/ir/be/belower.c index 2cd2b90bf..5354b7f6a 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.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. */ /** @@ -86,8 +72,6 @@ typedef struct reg_pair_t { typedef enum perm_type_t { PERM_CYCLE, PERM_CHAIN, - PERM_SWAP, - PERM_COPY } perm_type_t; /** Structure to represent cycles or chains in a Perm. */ @@ -616,19 +600,10 @@ static void assure_constraints_walker(ir_node *block, void *walk_env) constraint_env_t *env = (constraint_env_t*)walk_env; sched_foreach_reverse(block, irn) { - ir_mode *mode = get_irn_mode(irn); - - if (mode == mode_T) { - foreach_out_edge(irn, edge) { - ir_node *proj = get_edge_src_irn(edge); - - mode = get_irn_mode(proj); - if (mode_is_datab(mode)) - assure_different_constraints(proj, irn, env); - } - } else if (mode_is_datab(mode)) { - assure_different_constraints(irn, irn, env); - } + be_foreach_value(irn, value, + if (mode_is_datab(get_irn_mode(value))) + assure_different_constraints(value, irn, env); + ); } } @@ -801,10 +776,9 @@ void assure_constraints(ir_graph *irg) ir_node *keep; keep = be_new_Keep(get_nodes_block(cp), n, get_irn_in(cp) + 1); - sched_add_before(cp, keep); + sched_replace(cp, keep); /* Set all ins (including the block) of the CopyKeep BAD to keep the verifier happy. */ - sched_remove(cp); kill_node(cp); } } @@ -859,7 +833,7 @@ static int push_through_perm(ir_node *perm) * the former dead operand would be live now at the point of * the Perm, increasing the register pressure by one. */ - sched_foreach_reverse_from(sched_prev(perm), irn) { + sched_foreach_reverse_before(perm, irn) { be_foreach_use(irn, cls, in_req_, op, op_req_, if (!be_values_interfere(lv, op, one_proj)) { frontier = irn;