diff options
Diffstat (limited to 'gcc/graphite-ppl.c')
-rw-r--r-- | gcc/graphite-ppl.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/graphite-ppl.c b/gcc/graphite-ppl.c index 967b6ea7958..3e84dcf9039 100644 --- a/gcc/graphite-ppl.c +++ b/gcc/graphite-ppl.c @@ -613,4 +613,36 @@ 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 the + pointset powerset of polyhedra PS. */ + +void +ppl_max_for_le_pointset (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 |