From f263917cbf18bbd28cf79cc6280c5a02e4667337 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Sat, 15 Aug 2009 07:10:20 +0000 Subject: [PATCH] Correct the use of ppl_Pointset_Powerset_C_Polyhedron_maximize. 2009-08-15 Sebastian Pop 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. From-SVN: r150789 --- gcc/ChangeLog | 9 +++++++++ gcc/ChangeLog.graphite | 25 +++++++++++++++++++++++++ gcc/graphite-interchange.c | 29 ----------------------------- gcc/graphite-poly.c | 26 +++----------------------- gcc/graphite-ppl.c | 31 +++++++++++++++++++++++++++++++ gcc/graphite-ppl.h | 3 +++ 6 files changed, 71 insertions(+), 52 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca2a399c1df4..fc097c3a2f33 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-08-15 Sebastian Pop + + 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 * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 1a0e3fa15542..ec52e267e04d 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,28 @@ +2009-08-15 Sebastian Pop + + 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 + + * graphite-poly.c (print_pbb): Print PBB index. + +2009-08-13 Sebastian Pop + + * Merge from mainline (r150672:150764). + +2009-08-13 Sebastian Pop + + * 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 + + * Merge from mainline (r150372:150672). + 2009-08-11 Sebastian Pop PR middle-end/40980 diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index c9da69be76e5..314f17ca0c45 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 944c4bf2553a..f9b93e4ee4c4 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 967b6ea7958d..ca65c8534b8c 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 cfa31ec08037..0ed6b34126d0 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. */ -- 2.47.2