test both context handling mechanisms of isl_pip
[platform/upstream/isl.git] / isl_fold.c
index 2f37054..3e3599f 100644 (file)
@@ -13,8 +13,8 @@
 #include <isl_point_private.h>
 #include <isl_dim_private.h>
 #include <isl_map_private.h>
-#include <isl_lp.h>
-#include <isl_seq.h>
+#include <isl/lp.h>
+#include <isl/seq.h>
 #include <isl_mat_private.h>
 
 static __isl_give isl_qpolynomial_fold *qpolynomial_fold_alloc(
@@ -293,7 +293,7 @@ static int isl_qpolynomial_sign(__isl_keep isl_set *set,
                isl_qpolynomial *t;
 
                min = isl_qpolynomial_cst(isl_dim_copy(qp->dim), l);
-               base = isl_qpolynomial_pow(isl_dim_copy(qp->dim),
+               base = isl_qpolynomial_var_pow(isl_dim_copy(qp->dim),
                                                qp->upoly->var, 1);
 
                r = isl_qpolynomial_alloc(isl_dim_copy(qp->dim), 0,
@@ -530,6 +530,33 @@ error:
        return NULL;
 }
 
+__isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist(
+       __isl_take isl_qpolynomial_fold *fold, __isl_take isl_set *context)
+{
+       int i;
+
+       if (!fold || !context)
+               goto error;
+
+       fold = isl_qpolynomial_fold_cow(fold);
+       if (!fold)
+               return NULL;
+
+       for (i = 0; i < fold->n; ++i) {
+               fold->qp[i] = isl_qpolynomial_gist(fold->qp[i],
+                                                       isl_set_copy(context));
+               if (!fold->qp[i])
+                       goto error;
+       }
+
+       isl_set_free(context);
+       return fold;
+error:
+       isl_set_free(context);
+       isl_qpolynomial_fold_free(fold);
+       return NULL;
+}
+
 #define HAS_TYPE
 
 #undef PW