add isl_schedule_node_schedule
[isl.git] / isl_convex_hull.c
index a6af5ba..a15092e 100644 (file)
@@ -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;