From 2c84f42ed64cb79ab7f79ec802bd4374312bd399 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 9 Aug 2016 15:26:10 +0200 Subject: [PATCH] isl_basic_{map,set}_free_inequality: return modified result Since these functions modify the input (albeit in-place), it is more convenient for error handling to return the modified result. Signed-off-by: Sven Verdoolaege --- isl_coalesce.c | 3 ++- isl_convex_hull.c | 12 ++++-------- isl_map.c | 20 +++++++++++++------- isl_map_private.h | 6 ++++-- isl_map_simplify.c | 3 +-- isl_output.c | 3 +-- isl_tab.c | 3 ++- 7 files changed, 27 insertions(+), 23 deletions(-) diff --git a/isl_coalesce.c b/isl_coalesce.c index e195d68b..dc0a374b 100644 --- a/isl_coalesce.c +++ b/isl_coalesce.c @@ -2939,7 +2939,8 @@ static isl_stat tab_insert_divs(struct isl_coalesce_info *info, if (isl_tab_rollback(info->tab, snap) < 0) return isl_stat_error; info->bmap = isl_basic_map_cow(info->bmap); - if (isl_basic_map_free_inequality(info->bmap, 2 * n) < 0) + info->bmap = isl_basic_map_free_inequality(info->bmap, 2 * n); + if (info->bmap < 0) return isl_stat_error; return fix_constant_divs(info, n, expanded); diff --git a/isl_convex_hull.c b/isl_convex_hull.c index 8def929a..bfebb6d7 100644 --- a/isl_convex_hull.c +++ b/isl_convex_hull.c @@ -2221,10 +2221,8 @@ static __isl_give isl_basic_set *add_bound(__isl_take isl_basic_set *hull, if (!bound) break; } - if (j < i) { - isl_basic_set_free_inequality(hull, 1); - return hull; - } + if (j < i) + return isl_basic_set_free_inequality(hull, 1); for (j = i + 1; j < set->n; ++j) { int bound; @@ -2238,10 +2236,8 @@ static __isl_give isl_basic_set *add_bound(__isl_take isl_basic_set *hull, if (!bound) break; } - if (j < set->n) { - isl_basic_set_free_inequality(hull, 1); - return hull; - } + if (j < set->n) + return isl_basic_set_free_inequality(hull, 1); entry = isl_hash_table_find(hull->ctx, data->hull_table, c_hash, has_ineq, &v, 1); diff --git a/isl_map.c b/isl_map.c index d73eceeb..dee4725b 100644 --- a/isl_map.c +++ b/isl_map.c @@ -1607,20 +1607,24 @@ int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset) return isl_basic_map_alloc_inequality(bset_to_bmap(bset)); } -int isl_basic_map_free_inequality(struct isl_basic_map *bmap, unsigned n) +__isl_give isl_basic_map *isl_basic_map_free_inequality( + __isl_take isl_basic_map *bmap, unsigned n) { if (!bmap) - return -1; + return NULL; if (n > bmap->n_ineq) isl_die(isl_basic_map_get_ctx(bmap), isl_error_invalid, - "invalid number of inequalities", return -1); + "invalid number of inequalities", + return isl_basic_map_free(bmap)); bmap->n_ineq -= n; - return 0; + return bmap; } -int isl_basic_set_free_inequality(struct isl_basic_set *bset, unsigned n) +__isl_give isl_basic_set *isl_basic_set_free_inequality( + __isl_take isl_basic_set *bset, unsigned n) { - return isl_basic_map_free_inequality(bset_to_bmap(bset), n); + return bset_from_bmap(isl_basic_map_free_inequality(bset_to_bmap(bset), + n)); } int isl_basic_map_drop_inequality(struct isl_basic_map *bmap, unsigned pos) @@ -2049,7 +2053,9 @@ __isl_give isl_basic_map *isl_basic_map_set_to_empty( return isl_basic_map_free(bmap); if (isl_basic_map_free_div(bmap, bmap->n_div) < 0) return isl_basic_map_free(bmap); - isl_basic_map_free_inequality(bmap, bmap->n_ineq); + bmap = isl_basic_map_free_inequality(bmap, bmap->n_ineq); + if (!bmap) + return NULL; if (bmap->n_eq > 0) { bmap = isl_basic_map_free_equality(bmap, bmap->n_eq - 1); if (!bmap) diff --git a/isl_map_private.h b/isl_map_private.h index 4031aa4f..248327a1 100644 --- a/isl_map_private.h +++ b/isl_map_private.h @@ -225,14 +225,16 @@ __isl_give isl_map *isl_map_alloc_space(__isl_take isl_space *dim, int n, int isl_basic_map_alloc_equality(struct isl_basic_map *bmap); int isl_basic_set_alloc_equality(struct isl_basic_set *bset); -int isl_basic_set_free_inequality(struct isl_basic_set *bset, unsigned n); +__isl_give isl_basic_set *isl_basic_set_free_inequality( + __isl_take isl_basic_set *bset, unsigned n); __isl_give isl_basic_map *isl_basic_map_free_equality( __isl_take isl_basic_map *bmap, unsigned n); __isl_give isl_basic_set *isl_basic_set_free_equality( __isl_take isl_basic_set *bset, unsigned n); int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset); int isl_basic_map_alloc_inequality(__isl_keep isl_basic_map *bmap); -int isl_basic_map_free_inequality(struct isl_basic_map *bmap, unsigned n); +__isl_give isl_basic_map *isl_basic_map_free_inequality( + __isl_take isl_basic_map *bmap, unsigned n); int isl_basic_map_alloc_div(struct isl_basic_map *bmap); __isl_give isl_basic_map *isl_basic_map_insert_div( __isl_take isl_basic_map *bmap, int pos, __isl_keep isl_vec *div); diff --git a/isl_map_simplify.c b/isl_map_simplify.c index c3abe1bd..3d05c516 100644 --- a/isl_map_simplify.c +++ b/isl_map_simplify.c @@ -3180,8 +3180,7 @@ __isl_give isl_basic_map *isl_basic_map_gist(__isl_take isl_basic_map *bmap, n_ineq = bset->n_ineq; eq = isl_basic_set_copy(bset); eq = isl_basic_set_cow(eq); - if (isl_basic_set_free_inequality(eq, n_ineq) < 0) - eq = isl_basic_set_free(eq); + eq = isl_basic_set_free_inequality(eq, n_ineq); bset = isl_basic_set_free_equality(bset, n_eq); eq_bmap = isl_basic_map_overlying_set(eq, isl_basic_map_copy(bmap)); diff --git a/isl_output.c b/isl_output.c index dab546eb..913d2f51 100644 --- a/isl_output.c +++ b/isl_output.c @@ -1264,8 +1264,7 @@ static __isl_give isl_basic_map *get_aff(__isl_take isl_basic_map *bmap) bmap = isl_basic_map_cow(bmap); if (!bmap) return NULL; - if (isl_basic_map_free_inequality(bmap, bmap->n_ineq) < 0) - goto error; + bmap = isl_basic_map_free_inequality(bmap, bmap->n_ineq); nparam = isl_basic_map_dim(bmap, isl_dim_param); n_in = isl_basic_map_dim(bmap, isl_dim_in); diff --git a/isl_tab.c b/isl_tab.c index b4feb834..1cb016a0 100644 --- a/isl_tab.c +++ b/isl_tab.c @@ -3996,7 +3996,8 @@ static isl_stat perform_undo(struct isl_tab *tab, struct isl_tab_undo *undo) tab->bmap = isl_basic_map_free_equality(tab->bmap, 1); return tab->bmap ? isl_stat_ok : isl_stat_error; case isl_tab_undo_bmap_ineq: - return isl_basic_map_free_inequality(tab->bmap, 1); + tab->bmap = isl_basic_map_free_inequality(tab->bmap, 1); + return tab->bmap ? isl_stat_ok : isl_stat_error; case isl_tab_undo_bmap_div: return drop_bmap_div(tab, undo->u.var_index); case isl_tab_undo_saved_basis: -- 2.11.4.GIT