X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Floop_unrolling.c;h=7e52ea5166bc5cbc13a16b1d01fe40e6970475f5;hb=85d72a506c89cd19337601049c2911ad72644879;hp=dff83ef0aa666e87e405b4c3d467b198a3f9c1a2;hpb=7fc52b373a2220382500988c432fd82e81e4fda3;p=libfirm diff --git a/ir/opt/loop_unrolling.c b/ir/opt/loop_unrolling.c index dff83ef0a..7e52ea516 100644 --- a/ir/opt/loop_unrolling.c +++ b/ir/opt/loop_unrolling.c @@ -1,3 +1,22 @@ +/* + * Copyright (C) 1995-2007 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. + */ + /** * * @file loop_unrolling.c @@ -10,24 +29,14 @@ * Created: 16.11.2004 * CVS-ID: $Id$ * Copyright: (c) 2004 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#ifdef HAVE_STRING_H #include -#endif -#ifdef HAVE_MALLOC_H -#include -#endif -#ifdef HAVE_ALLOCA_H -#include -#endif - -#include "loop_unrolling.h" +#include "iroptimize.h" #include "irnode_t.h" #include "irgwalk.h" #include "ircons.h" @@ -38,10 +47,11 @@ #include "trouts.h" #include "hashptr.h" #include "pset.h" -#include "strength_red.h" +#include "strength_red_t.h" #include "compute_loop_info.h" #include "irdump.h" #include "irtools.h" +#include "xmalloc.h" /* We will unroll maximal 4-times. */ #define MAX_UNROLL 4 @@ -62,6 +72,7 @@ static int set_cmp(const void *elt, const void *key, size_t size) { const copies_t *c1 = elt; const copies_t *c2 = key; + (void) size; return c1->irn != c2->irn; } @@ -102,6 +113,8 @@ set_preds (set *l_n, copies_t *value, induct_var_info *info, int unroll_factor, ir_node *loop_head; int i, p, irn_arity; copies_t key, *value_pred; + (void) env; + if(value->copy[0] == NULL || get_irn_op(value->irn) != get_irn_op(value->copy[0])) return; @@ -947,13 +960,12 @@ void optimize_loop_unrolling(ir_graph *irg /* unroll factor, max body size */) compute_loop_info(irg); /* Call algorithm that computes the backedges */ // construct_cf_backedges(irg); - dump_loop_tree(current_ir_graph, "-deadlooptree"); /* Call algorithm that computes the dominator trees. */ - compute_doms(irg); + assure_doms(irg); /* Call algorithm that computes the out edges */ - compute_irg_outs(irg); + assure_irg_outs(irg); collect_phiprojs(irg); @@ -962,7 +974,7 @@ void optimize_loop_unrolling(ir_graph *irg /* unroll factor, max body size */) if (unroll_done) { /* unrolling was done, all info is invalid */ - set_irg_dom_inconsistent(irg); + set_irg_doms_inconsistent(irg); set_irg_outs_inconsistent(irg); set_irg_loopinfo_state(current_ir_graph, loopinfo_cf_inconsistent); set_trouts_inconsistent();