tab_total = isl_basic_map_total_dim(tab->bmap);
bmap_total = isl_basic_map_total_dim(bmap);
- dim = isl_dim_total(tab->bmap->dim);
+ dim = isl_space_dim(tab->bmap->dim, isl_dim_all);
if (isl_tab_extend_cons(tab, 2 * bmap->n_eq + bmap->n_ineq) < 0)
return -1;
tab_total = isl_basic_map_total_dim(tab->bmap);
bmap_total = isl_basic_map_total_dim(bmap);
- dim = isl_dim_total(tab->bmap->dim);
+ dim = isl_space_dim(tab->bmap->dim, isl_dim_all);
v = isl_vec_alloc(bmap->ctx, 1 + tab_total);
if (!v)
/* Return the set difference between map1 and map2.
* (U_i A_i) \ (U_j B_j) is computed as U_i (A_i \ (U_j B_j))
*/
-struct isl_map *isl_map_subtract(struct isl_map *map1, struct isl_map *map2)
+static __isl_give isl_map *map_subtract( __isl_take isl_map *map1,
+ __isl_take isl_map *map2)
{
int i;
struct isl_map *diff;
if (!map1 || !map2)
goto error;
- isl_assert(map1->ctx, isl_dim_equal(map1->dim, map2->dim), goto error);
+ isl_assert(map1->ctx, isl_space_is_equal(map1->dim, map2->dim), goto error);
if (isl_map_is_empty(map2)) {
isl_map_free(map2);
return NULL;
}
+__isl_give isl_map *isl_map_subtract( __isl_take isl_map *map1,
+ __isl_take isl_map *map2)
+{
+ return isl_map_align_params_map_map_and(map1, map2, &map_subtract);
+}
+
struct isl_set *isl_set_subtract(struct isl_set *set1, struct isl_set *set2)
{
return (struct isl_set *)
}
isl_int_clear(m);
- return isl_point_alloc(isl_basic_map_get_dim(bmap), point);
+ return isl_point_alloc(isl_basic_map_get_space(bmap), point);
error:
isl_int_clear(m);
isl_vec_free(point);
if (!map1 || !map2)
return -1;
+ if (!isl_map_has_equal_space(map1, map2))
+ return 0;
+
if (isl_map_is_empty(map1))
return 1;
if (!set)
return NULL;
- universe = isl_set_universe(isl_set_get_dim(set));
+ universe = isl_set_universe(isl_set_get_space(set));
return isl_set_subtract(universe, set);
}