X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_map_simplify.c;h=47b13c0f93f7c5c211d4e9b9f765b4127544dbad;hb=de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0;hp=c3bbbc41fc19e7691d65968a4a75ffd2a7c84766;hpb=0c5873a9205d90212b2478aa3500bbfb5d5c6e50;p=platform%2Fupstream%2Fisl.git diff --git a/isl_map_simplify.c b/isl_map_simplify.c index c3bbbc4..47b13c0 100644 --- a/isl_map_simplify.c +++ b/isl_map_simplify.c @@ -1241,6 +1241,10 @@ struct isl_basic_map *isl_basic_map_simplify(struct isl_basic_map *bmap) return NULL; while (progress) { progress = 0; + if (!bmap) + break; + if (isl_basic_map_plain_is_empty(bmap)) + break; bmap = isl_basic_map_normalize_constraints(bmap); bmap = normalize_div_expressions(bmap); bmap = remove_duplicate_divs(bmap, &progress); @@ -1329,9 +1333,12 @@ static int div_is_redundant(struct isl_basic_map *bmap, int div) return 0; } - for (i = 0; i < bmap->n_div; ++i) + for (i = 0; i < bmap->n_div; ++i) { + if (isl_int_is_zero(bmap->div[i][0])) + continue; if (!isl_int_is_zero(bmap->div[i][1+pos])) return 0; + } return 1; } @@ -1449,6 +1456,8 @@ struct isl_basic_map *isl_basic_map_eliminate_vars( bmap = isl_basic_map_cow(bmap); for (d = pos + n - 1; d >= 0 && d >= pos; --d) bmap = remove_dependent_vars(bmap, d); + if (!bmap) + return NULL; for (d = pos + n - 1; d >= 0 && d >= total - bmap->n_div && d >= pos; --d) @@ -2108,6 +2117,8 @@ static struct isl_basic_map *normalize_divs_in_context( for (i = 0; i < context->n_eq; ++i) { int k; k = isl_basic_map_alloc_equality(bmap); + if (k < 0) + return isl_basic_map_free(bmap); isl_seq_cpy(bmap->eq[k], context->eq[i], 1 + total_context); isl_seq_clr(bmap->eq[k] + 1 + total_context, isl_basic_map_total_dim(bmap) - total_context); @@ -2180,6 +2191,8 @@ __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map, goto error;; isl_assert(map->ctx, isl_space_is_equal(map->dim, context->dim), goto error); map = isl_map_compute_divs(map); + if (!map) + goto error; for (i = 0; i < map->n; ++i) context = isl_basic_map_align_divs(context, map->p[i]); for (i = map->n - 1; i >= 0; --i) {