@@ -563,8 +563,7 @@ static __isl_give isl_basic_set *extend(__isl_take isl_basic_set *hull,
if (!facet || !hull_facet)
goto error;
hull = isl_basic_set_cow(hull);
- hull = isl_basic_set_extend_space(hull,
- isl_space_copy(hull->dim), 0, 0, facet->n_ineq);
+ hull = isl_basic_set_extend(hull, 0, 0, facet->n_ineq);
if (!hull)
goto error;
for (j = 0; j < facet->n_ineq; ++j) {
@@ -994,7 +993,7 @@ error:
static __isl_give isl_basic_set *valid_direction_lp(
__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
{
- isl_space *dim;
+ isl_space *space;
struct isl_basic_set *lp;
unsigned d;
int n;
@@ -1007,8 +1006,8 @@ static __isl_give isl_basic_set *valid_direction_lp(
d = 1 + total;
n = 2 +
2 * bset1->n_eq + bset1->n_ineq + 2 * bset2->n_eq + bset2->n_ineq;
- dim = isl_space_set_alloc(bset1->ctx, 0, n);
- lp = isl_basic_set_alloc_space(dim, 0, d, n);
+ space = isl_space_set_alloc(bset1->ctx, 0, n);
+ lp = isl_basic_set_alloc_space(space, 0, d, n);
if (!lp)
goto error;
for (i = 0; i < n; ++i) {
@@ -1592,7 +1591,7 @@ static isl_bool has_constraint(struct isl_ctx *ctx,
*/
static isl_bool has_facets(__isl_keep isl_basic_set *bset)
{
- int n_eq;
+ isl_size n_eq;
n_eq = isl_basic_set_n_equality(bset);
if (n_eq < 0)
@@ -1973,7 +1972,7 @@ error:
return NULL;
}
-struct isl_basic_set *isl_set_convex_hull(struct isl_set *set)
+__isl_give isl_basic_set *isl_set_convex_hull(__isl_take isl_set *set)
{
return bset_from_bmap(isl_map_convex_hull(set_to_map(set)));
}
@@ -2477,7 +2476,7 @@ __isl_give isl_basic_map *isl_map_simple_hull(__isl_take isl_map *map)
return map_simple_hull(map, 1);
}
-struct isl_basic_set *isl_set_simple_hull(struct isl_set *set)
+__isl_give isl_basic_set *isl_set_simple_hull(__isl_take isl_set *set)
{
return bset_from_bmap(isl_map_simple_hull(set_to_map(set)));
}
@@ -2614,12 +2613,14 @@ static __isl_give isl_basic_map *select_shared_equalities(
__isl_give isl_basic_map *isl_basic_map_plain_unshifted_simple_hull(
__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
{
- bmap1 = isl_basic_map_drop_constraint_involving_unknown_divs(bmap1);
- bmap2 = isl_basic_map_drop_constraint_involving_unknown_divs(bmap2);
+ if (isl_basic_map_check_equal_space(bmap1, bmap2) < 0)
+ goto error;
+
+ bmap1 = isl_basic_map_drop_constraints_involving_unknown_divs(bmap1);
+ bmap2 = isl_basic_map_drop_constraints_involving_unknown_divs(bmap2);
+ bmap1 = isl_basic_map_order_divs(bmap1);
bmap2 = isl_basic_map_align_divs(bmap2, bmap1);
bmap1 = isl_basic_map_align_divs(bmap1, bmap2);
- bmap1 = isl_basic_map_gauss(bmap1, NULL);
- bmap2 = isl_basic_map_gauss(bmap2, NULL);
bmap1 = isl_basic_map_sort_constraints(bmap1);
bmap2 = isl_basic_map_sort_constraints(bmap2);
@@ -2629,6 +2630,10 @@ __isl_give isl_basic_map *isl_basic_map_plain_unshifted_simple_hull(
isl_basic_map_free(bmap2);
bmap1 = isl_basic_map_finalize(bmap1);
return bmap1;
+error:
+ isl_basic_map_free(bmap1);
+ isl_basic_map_free(bmap2);
+ return NULL;
}
/* Compute a superset of the convex hull of "map" that is described
@@ -2653,7 +2658,7 @@ __isl_give isl_basic_map *isl_map_plain_unshifted_simple_hull(
return NULL;
if (map->n <= 1)
return map_simple_hull_trivial(map);
- map = isl_map_drop_constraint_involving_unknown_divs(map);
+ map = isl_map_drop_constraints_involving_unknown_divs(map);
hull = isl_basic_map_copy(map->p[0]);
for (i = 1; i < map->n; ++i) {
isl_basic_map *bmap_i;