X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Farm%2Fbearch_arm.c;h=65f9ebeb58b2f6578a8a3d0057ca530abcd06517;hb=226c238839ce84c2c310c8e7522838160c6f71af;hp=03a6d20da2edc2f5b45cb0e70cdb3406ee90cfb7;hpb=d96cf3cbdb3d7a08f9492aa70f97c02bb0c85e39;p=libfirm diff --git a/ir/be/arm/bearch_arm.c b/ir/be/arm/bearch_arm.c index 03a6d20da..65f9ebeb5 100644 --- a/ir/be/arm/bearch_arm.c +++ b/ir/be/arm/bearch_arm.c @@ -1,20 +1,6 @@ /* - * Copyright (C) 1995-2008 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. */ /** @@ -191,11 +177,8 @@ static void transform_Reload(ir_node *node) ir_node *proj; ir_node *load; - ir_node *sched_point = sched_prev(node); - load = new_bd_arm_Ldr(dbgi, block, ptr, mem, mode, entity, false, 0, true); - sched_add_after(sched_point, load); - sched_remove(node); + sched_replace(node, load); proj = new_rd_Proj(dbgi, load, mode, pn_arm_Ldr_res); @@ -215,27 +198,20 @@ static void transform_Spill(ir_node *node) ir_node *val = get_irn_n(node, n_be_Spill_val); ir_mode *mode = get_irn_mode(val); ir_entity *entity = be_get_frame_entity(node); - ir_node *sched_point; ir_node *store; - sched_point = sched_prev(node); store = new_bd_arm_Str(dbgi, block, ptr, val, mem, mode, entity, false, 0, true); - - sched_remove(node); - sched_add_after(sched_point, store); + sched_replace(node, store); exchange(node, store); } static void arm_after_ra_walker(ir_node *block, void *data) { - ir_node *node, *prev; (void) data; - for (node = sched_last(block); !sched_is_begin(node); node = prev) { - prev = sched_prev(node); - + sched_foreach_reverse_safe(block, node) { if (be_is_Reload(node)) { transform_Reload(node); } else if (be_is_Spill(node)) {