Mercurial > hg > CbC > CbC_gcc
diff gcc/graphite-interchange.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children |
line wrap: on
line diff
--- a/gcc/graphite-interchange.c Tue May 25 18:58:51 2010 +0900 +++ b/gcc/graphite-interchange.c Tue Mar 22 17:18:12 2011 +0900 @@ -1,7 +1,7 @@ /* Interchange heuristics and transform for loop interchange on polyhedral representation. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. Contributed by Sebastian Pop <sebastian.pop@amd.com> and Harsha Jagasia <harsha.jagasia@amd.com>. @@ -23,34 +23,17 @@ #include "config.h" #include "system.h" #include "coretypes.h" -#include "tm.h" -#include "ggc.h" -#include "tree.h" -#include "rtl.h" -#include "output.h" -#include "basic-block.h" -#include "diagnostic.h" #include "tree-flow.h" -#include "toplev.h" #include "tree-dump.h" -#include "timevar.h" #include "cfgloop.h" #include "tree-chrec.h" #include "tree-data-ref.h" #include "tree-scalar-evolution.h" -#include "tree-pass.h" -#include "domwalk.h" -#include "value-prof.h" -#include "pointer-set.h" -#include "gimple.h" -#include "params.h" +#include "sese.h" #ifdef HAVE_cloog -#include "cloog/cloog.h" #include "ppl_c.h" -#include "sese.h" #include "graphite-ppl.h" -#include "graphite.h" #include "graphite-poly.h" /* Builds a linear expression, of dimension DIM, representing PDR's @@ -321,7 +304,7 @@ { char *str; void (*gmp_free) (void *, size_t); - + fprintf (dump_file, "\nStride in BB_%d, DR_%d, depth %d:", pbb_index (pbb), PDR_ID (pdr), (int) depth); str = mpz_get_str (0, 10, stride); @@ -350,11 +333,11 @@ mpz_init (s); mpz_init (n); - for (j = 0; VEC_iterate (lst_p, LST_SEQ (loop), j, l); j++) + FOR_EACH_VEC_ELT (lst_p, LST_SEQ (loop), j, l) if (LST_LOOP_P (l)) memory_strides_in_loop_1 (l, depth, strides); else - for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (LST_PBB (l)), i, pdr); i++) + FOR_EACH_VEC_ELT (poly_dr_p, PBB_DRS (LST_PBB (l)), i, pdr) { pdr_stride_in_loop (s, depth, pdr); mpz_set_si (n, PDR_NB_REFS (pdr)); @@ -463,22 +446,20 @@ profitable to interchange the loops at DEPTH1 and DEPTH2. */ static bool -lst_interchange_profitable_p (lst_p loop1, lst_p loop2) +lst_interchange_profitable_p (lst_p nest, int depth1, int depth2) { mpz_t d1, d2; bool res; - gcc_assert (loop1 && loop2 - && LST_LOOP_P (loop1) && LST_LOOP_P (loop2) - && lst_depth (loop1) < lst_depth (loop2)); + gcc_assert (depth1 < depth2); mpz_init (d1); mpz_init (d2); - memory_strides_in_loop (loop1, lst_depth (loop1), d1); - memory_strides_in_loop (loop2, lst_depth (loop2), d2); + memory_strides_in_loop (nest, depth1, d1); + memory_strides_in_loop (nest, depth2, d2); - res = value_lt (d1, d2); + res = mpz_cmp (d1, d2) < 0; mpz_clear (d1); mpz_clear (d2); @@ -527,7 +508,7 @@ int i; lst_p l; - for (i = 0; VEC_iterate (lst_p, LST_SEQ (lst), i, l); i++) + FOR_EACH_VEC_ELT (lst_p, LST_SEQ (lst), i, l) lst_apply_interchange (l, depth1, depth2); } else @@ -609,12 +590,12 @@ lst_p before = NULL, nest = NULL, after = NULL; - if (!lst_interchange_profitable_p (loop1, loop2)) - return false; - if (!lst_perfectly_nested_p (loop1, loop2)) lst_perfect_nestify (loop1, loop2, &before, &nest, &after); + if (!lst_interchange_profitable_p (loop2, depth1, depth2)) + return false; + lst_apply_interchange (loop2, depth1, depth2); /* Sync the transformed LST information and the PBB scatterings @@ -673,7 +654,7 @@ loop1 = VEC_index (lst_p, LST_SEQ (outer_father), outer); - for (inner = 0; VEC_iterate (lst_p, LST_SEQ (inner_father), inner, loop2); inner++) + FOR_EACH_VEC_ELT (lst_p, LST_SEQ (inner_father), inner, loop2) if (LST_LOOP_P (loop2) && (lst_try_interchange_loops (scop, loop1, loop2) || lst_interchange_select_inner (scop, outer_father, outer, loop2))) @@ -709,7 +690,7 @@ } if (LST_LOOP_P (loop)) - for (i = 0; VEC_iterate (lst_p, LST_SEQ (loop), i, l); i++) + FOR_EACH_VEC_ELT (lst_p, LST_SEQ (loop), i, l) if (LST_LOOP_P (l)) res |= lst_interchange_select_outer (scop, l, i);