privately export isl_basic_set_lineality_space
[platform/upstream/isl.git] / isl_convex_hull.c
index e5ed01c..d11daa4 100644 (file)
@@ -496,7 +496,7 @@ static isl_int *wrap_facet(struct isl_set *set, isl_int *facet, isl_int *ridge)
        }
        isl_int_clear(num);
        isl_int_clear(den);
-       isl_vec_free(set->ctx, obj);
+       isl_vec_free(obj);
        isl_basic_set_free(lp);
        isl_set_free(set);
        isl_assert(set->ctx, res == isl_lp_ok, return NULL);
@@ -1217,13 +1217,13 @@ static struct isl_vec *valid_direction(
                isl_seq_combine(dir->block.data,
                                bset1->ctx->one, dir->block.data,
                                sample->block.data[n++], bset1->ineq[i], 1 + d);
-       isl_vec_free(ctx, sample);
+       isl_vec_free(sample);
        isl_basic_set_free(bset1);
        isl_basic_set_free(bset2);
        isl_seq_normalize(dir->block.data + 1, dir->size - 1);
        return dir;
 error:
-       isl_vec_free(ctx, sample);
+       isl_vec_free(sample);
        isl_basic_set_free(bset1);
        isl_basic_set_free(bset2);
        return NULL;
@@ -1352,11 +1352,11 @@ static struct isl_basic_set *convex_hull_pair_pointed(
        hull = uset_convex_hull(set);
        hull = isl_basic_set_preimage(hull, T);
         
-       isl_vec_free(ctx, dir);
+       isl_vec_free(dir);
 
        return hull;
 error:
-       isl_vec_free(ctx, dir);
+       isl_vec_free(dir);
        isl_basic_set_free(bset1);
        isl_basic_set_free(bset2);
        return NULL;
@@ -1401,12 +1401,12 @@ error:
        return NULL;
 }
 
-/* Compute the lineality space of an "underlying" basic set.
+/* Compute the lineality space of a basic set.
+ * We currently do not allow the basic set to have any divs.
  * We basically just drop the constants and turn every inequality
  * into an equality.
  */
-static struct isl_basic_set *ubasic_set_lineality_space(
-       struct isl_basic_set *bset)
+struct isl_basic_set *isl_basic_set_lineality_space(struct isl_basic_set *bset)
 {
        int i, k;
        struct isl_basic_set *lin = NULL;
@@ -1414,6 +1414,7 @@ static struct isl_basic_set *ubasic_set_lineality_space(
 
        if (!bset)
                goto error;
+       isl_assert(bset->ctx, bset->n_div == 0, goto error);
        dim = isl_basic_set_total_dim(bset);
 
        lin = isl_basic_set_alloc_dim(isl_basic_set_get_dim(bset), 0, dim, 0);
@@ -1466,7 +1467,7 @@ static struct isl_basic_set *uset_combined_lineality_space(struct isl_set *set)
        lin = isl_set_alloc_dim(isl_set_get_dim(set), set->n, 0);
        for (i = 0; i < set->n; ++i)
                lin = isl_set_add(lin,
-                   ubasic_set_lineality_space(isl_basic_set_copy(set->p[i])));
+                   isl_basic_set_lineality_space(isl_basic_set_copy(set->p[i])));
        isl_set_free(set);
        return isl_set_affine_hull(lin);
 }
@@ -1498,7 +1499,7 @@ static struct isl_basic_set *uset_convex_hull_unbounded(struct isl_set *set)
                convex_hull = convex_hull_pair(convex_hull, t);
                if (set->n == 0)
                        break;
-               t = ubasic_set_lineality_space(isl_basic_set_copy(convex_hull));
+               t = isl_basic_set_lineality_space(isl_basic_set_copy(convex_hull));
                if (!t)
                        goto error;
                if (isl_basic_set_is_universe(t)) {