From b299a619f5c9d58d53a60b2a96cba5e0c26e3fb9 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sat, 12 Sep 2009 19:50:54 +0200 Subject: [PATCH] isl_map_simplify.c: break if set turns out to be empty during div coalescing --- isl_map_simplify.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/isl_map_simplify.c b/isl_map_simplify.c index 9275c3b..307b93c 100644 --- a/isl_map_simplify.c +++ b/isl_map_simplify.c @@ -1917,6 +1917,14 @@ static int div_find_coalesce(struct isl_basic_map *bmap, int *pairs, } isl_int_add(bmap->ineq[l][0], bmap->ineq[l][0], bmap->ineq[u][0]); + if (isl_int_is_neg(bmap->ineq[l][0])) { + isl_int_sub(bmap->ineq[l][0], + bmap->ineq[l][0], bmap->ineq[u][0]); + bmap = isl_basic_map_copy(bmap); + bmap = isl_basic_map_set_to_empty(bmap); + isl_basic_map_free(bmap); + return -1; + } isl_int_add_ui(bmap->ineq[l][0], bmap->ineq[l][0], 1); for (i = 0; i < bmap->n_div; ++i) { if (i == div) @@ -2246,6 +2254,9 @@ static struct isl_basic_map *coalesce_or_drop_more_redundant_divs( } } + if (ISL_F_ISSET(bmap, ISL_BASIC_MAP_EMPTY)) + return bmap; + return drop_more_redundant_divs(bmap, pairs, n); } -- 2.7.4