return bmap;
tab = isl_tab_from_basic_map(bmap);
- tab = isl_tab_detect_implicit_equalities(tab);
+ if (isl_tab_detect_implicit_equalities(tab) < 0)
+ goto error;
bmap = isl_basic_map_update_from_tab(bmap, tab);
isl_tab_free(tab);
bmap = isl_basic_map_gauss(bmap, NULL);
ISL_F_SET(bmap, ISL_BASIC_MAP_NO_IMPLICIT);
return bmap;
+error:
+ isl_tab_free(tab);
+ isl_basic_map_free(bmap);
+ return NULL;
}
struct isl_basic_set *isl_basic_set_implicit_equalities(
struct isl_vec *sample = NULL;
struct isl_tab_undo *snap;
unsigned dim;
- int k;
if (!tab)
return NULL;
static struct isl_basic_set *extend_affine_hull(struct isl_tab *tab,
struct isl_basic_set *hull)
{
- int i, j, k;
+ int i, j;
unsigned dim;
if (!tab || !hull)
break;
isl_vec_free(sample);
- tab = isl_tab_add_eq(tab, hull->eq[j]);
- if (!tab)
+ if (isl_tab_add_eq(tab, hull->eq[j]) < 0)
goto error;
}
if (j == hull->n_eq)
if (hull->n_eq > tab->n_zero) {
for (j = 0; j < hull->n_eq; ++j) {
isl_seq_normalize(tab->mat->ctx, hull->eq[j], 1 + tab->n_var);
- tab = isl_tab_add_eq(tab, hull->eq[j]);
+ if (isl_tab_add_eq(tab, hull->eq[j]) < 0)
+ goto error;
}
}
{
bmap = isl_basic_map_detect_equalities(bmap);
bmap = isl_basic_map_cow(bmap);
- isl_basic_map_free_inequality(bmap, bmap->n_ineq);
+ if (bmap)
+ isl_basic_map_free_inequality(bmap, bmap->n_ineq);
return bmap;
}
struct isl_basic_map *hull = NULL;
struct isl_set *set;
+ map = isl_map_detect_equalities(map);
+ map = isl_map_align_divs(map);
+
if (!map)
return NULL;
return hull;
}
- map = isl_map_detect_equalities(map);
- map = isl_map_align_divs(map);
- if (!map)
- return NULL;
model = isl_basic_map_copy(map->p[0]);
set = isl_map_underlying_set(map);
set = isl_set_cow(set);