From 1bf54572503fce92368fc2021c2299e36dedd9e1 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 14 Jul 2011 17:53:28 +0200 Subject: [PATCH] decouple isl_qpolynomial_substitute_equalities isl_qpolynomial_substitute_equalities was being called from within two contexts, one where the space of the equalities includes the divs and one where it does not. Split isl_qpolynomial_substitute_equalities into two functions, one for each of these two cases. Signed-off-by: Sven Verdoolaege --- isl_polynomial.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/isl_polynomial.c b/isl_polynomial.c index 524aa6f..abd752b 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -2380,7 +2380,7 @@ error: return NULL; } -__isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities( +static __isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities_lifted( __isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq) { int i, j, k; @@ -2446,6 +2446,22 @@ error: return NULL; } +/* Exploit the equalities in "eq" to simplify the quasi-polynomial. + */ +__isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities( + __isl_take isl_qpolynomial *qp, __isl_take isl_basic_set *eq) +{ + if (!qp || !eq) + goto error; + if (qp->div->n_row > 0) + eq = isl_basic_set_add(eq, isl_dim_set, qp->div->n_row); + return isl_qpolynomial_substitute_equalities_lifted(qp, eq); +error: + isl_basic_set_free(eq); + isl_qpolynomial_free(qp); + return NULL; +} + static __isl_give isl_basic_set *add_div_constraints( __isl_take isl_basic_set *bset, __isl_take isl_mat *div) { @@ -2495,7 +2511,7 @@ __isl_give isl_qpolynomial *isl_qpolynomial_gist( } aff = isl_set_affine_hull(context); - return isl_qpolynomial_substitute_equalities(qp, aff); + return isl_qpolynomial_substitute_equalities_lifted(qp, aff); error: isl_qpolynomial_free(qp); isl_set_free(context); -- 2.7.4