diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ChangeLog.graphite | 25 | ||||
-rw-r--r-- | gcc/graphite-interchange.c | 29 | ||||
-rw-r--r-- | gcc/graphite-poly.c | 26 | ||||
-rw-r--r-- | gcc/graphite-ppl.c | 31 | ||||
-rw-r--r-- | gcc/graphite-ppl.h | 3 |
6 files changed, 71 insertions, 52 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca2a399..fc097c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-08-15 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/40981 + * graphite-interchange.c (ppl_max_for_le): Moved... + * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le. + * graphite-ppl.c (ppl_max_for_le): ... here. Correct the use of + ppl_Pointset_Powerset_C_Polyhedron_maximize. + * graphite-ppl.h (ppl_max_for_le): Declared. + 2009-08-14 Olatunji Ruwase <tjruwase@google.com> * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 1a0e3fa..ec52e26 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,28 @@ +2009-08-15 Sebastian Pop <sebastian.pop@amd.com> + + PR middle-end/40981 + * graphite-ppl.c (ppl_max_for_le): Correct the use of + ppl_Pointset_Powerset_C_Polyhedron_maximize. + +2009-08-13 Sebastian Pop <sebastian.pop@amd.com> + + * graphite-poly.c (print_pbb): Print PBB index. + +2009-08-13 Sebastian Pop <sebastian.pop@amd.com> + + * Merge from mainline (r150672:150764). + +2009-08-13 Sebastian Pop <sebastian.pop@amd.com> + + * graphite-interchange.c (ppl_max_for_le): Moved... + * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le. + * graphite-ppl.c (ppl_max_for_le): ... here. + * graphite-ppl.h (ppl_max_for_le): Declared. + +2009-08-12 Sebastian Pop <sebastian.pop@amd.com> + + * Merge from mainline (r150372:150672). + 2009-08-11 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/40980 diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index c9da69b..314f17c 100644 --- a/gcc/graphite-interchange.c +++ b/gcc/graphite-interchange.c @@ -53,35 +53,6 @@ along with GCC; see the file COPYING3. If not see #include "graphite.h" #include "graphite-poly.h" -/* Return in RES the maximum of the linear expression LE on polyhedron PS. */ - -static void -ppl_max_for_le (ppl_Pointset_Powerset_C_Polyhedron_t ps, - ppl_Linear_Expression_t le, Value res) -{ - ppl_Coefficient_t num, denom; - Value dv, nv; - int maximum; - - value_init (nv); - value_init (dv); - ppl_new_Coefficient (&num); - ppl_new_Coefficient (&denom); - ppl_Pointset_Powerset_C_Polyhedron_maximize (ps, le, num, denom, &maximum); - - if (maximum) - { - ppl_Coefficient_to_mpz_t (num, nv); - ppl_Coefficient_to_mpz_t (denom, dv); - value_division (res, nv, dv); - } - - value_clear (nv); - value_clear (dv); - ppl_delete_Coefficient (num); - ppl_delete_Coefficient (denom); -} - /* Builds a linear expression, of dimension DIM, representing PDR's memory access: diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index 944c4bf..f9b93e4 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -711,35 +711,15 @@ pbb_number_of_iterations (poly_bb_p pbb, graphite_dim_t loop_depth, Value niter) { - ppl_dimension_type loop_iter = pbb_iterator_dim (pbb, loop_depth); ppl_Linear_Expression_t le; - ppl_Coefficient_t num, denom; - Value dv; - int maximum; ppl_dimension_type dim; - value_init (dv); - ppl_new_Coefficient (&num); - ppl_new_Coefficient (&denom); ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim); ppl_new_Linear_Expression_with_dimension (&le, dim); - ppl_set_coef (le, loop_iter, 1); - ppl_Pointset_Powerset_C_Polyhedron_maximize (PBB_DOMAIN (pbb), le, - num, denom, &maximum); - - if (maximum == 1) - { - ppl_Coefficient_to_mpz_t (num, niter); - ppl_Coefficient_to_mpz_t (denom, dv); - value_division (niter, niter, dv); - } - else - value_set_si (niter, -1); - - value_clear (dv); + ppl_set_coef (le, pbb_iterator_dim (pbb, loop_depth), 1); + value_set_si (niter, -1); + ppl_max_for_le (PBB_DOMAIN (pbb), le, niter); ppl_delete_Linear_Expression (le); - ppl_delete_Coefficient (num); - ppl_delete_Coefficient (denom); } #endif diff --git a/gcc/graphite-ppl.c b/gcc/graphite-ppl.c index 967b6ea..ca65c85 100644 --- a/gcc/graphite-ppl.c +++ b/gcc/graphite-ppl.c @@ -613,4 +613,35 @@ ppl_read_polyhedron_matrix (ppl_Polyhedron_t *ph, FILE *file) new_C_Polyhedron_from_Cloog_Matrix (ph, mat); cloog_matrix_free (mat); } + +/* Return in RES the maximum of the linear expression LE on polyhedron PS. */ + +void +ppl_max_for_le (ppl_Pointset_Powerset_C_Polyhedron_t ps, + ppl_Linear_Expression_t le, Value res) +{ + ppl_Coefficient_t num, denom; + Value dv, nv; + int maximum, err; + + value_init (nv); + value_init (dv); + ppl_new_Coefficient (&num); + ppl_new_Coefficient (&denom); + err = ppl_Pointset_Powerset_C_Polyhedron_maximize (ps, le, num, denom, &maximum); + + if (err > 0) + { + ppl_Coefficient_to_mpz_t (num, nv); + ppl_Coefficient_to_mpz_t (denom, dv); + gcc_assert (value_notzero_p (dv)); + value_division (res, nv, dv); + } + + value_clear (nv); + value_clear (dv); + ppl_delete_Coefficient (num); + ppl_delete_Coefficient (denom); +} + #endif diff --git a/gcc/graphite-ppl.h b/gcc/graphite-ppl.h index cfa31ec..0ed6b34 100644 --- a/gcc/graphite-ppl.h +++ b/gcc/graphite-ppl.h @@ -44,6 +44,9 @@ void ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t, int, int); void ppl_set_inhomogeneous_gmp (ppl_Linear_Expression_t, Value); void ppl_set_coef_gmp (ppl_Linear_Expression_t, ppl_dimension_type, Value); +void ppl_max_for_le (ppl_Pointset_Powerset_C_Polyhedron_t, + ppl_Linear_Expression_t, Value); + /* Assigns to RES the value of the INTEGER_CST T. */ |