From 825375a55436e20a593d6de975edca42c6c7fc66 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Mon, 8 Aug 2016 12:21:22 +0200 Subject: [PATCH] isl_basic_map_insert_dims: create empty basic map directly isl_basic_map_set_to_empty should only be used on basic maps that turn out to be empty. There is also no need to construct an isl_dim_map if no constraints are going to be copied. Signed-off-by: Sven Verdoolaege --- isl_map.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/isl_map.c b/isl_map.c index f9513f56..6c8e6941 100644 --- a/isl_map.c +++ b/isl_map.c @@ -3846,7 +3846,7 @@ __isl_give isl_basic_map *isl_basic_map_insert_dims( __isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, unsigned n) { - isl_bool rational; + isl_bool rational, is_empty; isl_space *res_space; struct isl_basic_map *res; struct isl_dim_map *dim_map; @@ -3856,10 +3856,17 @@ __isl_give isl_basic_map *isl_basic_map_insert_dims( if (n == 0) return basic_map_space_reset(bmap, type); + is_empty = isl_basic_map_plain_is_empty(bmap); + if (is_empty < 0) + return isl_basic_map_free(bmap); res_space = isl_space_insert_dims(isl_basic_map_get_space(bmap), type, pos, n); if (!res_space) return isl_basic_map_free(bmap); + if (is_empty) { + isl_basic_map_free(bmap); + return isl_basic_map_empty(res_space); + } total = isl_basic_map_total_dim(bmap) + n; dim_map = isl_dim_map_alloc(bmap->ctx, total); @@ -3885,11 +3892,6 @@ __isl_give isl_basic_map *isl_basic_map_insert_dims( res = isl_basic_map_free(res); if (rational) res = isl_basic_map_set_rational(res); - if (isl_basic_map_plain_is_empty(bmap)) { - isl_basic_map_free(bmap); - free(dim_map); - return isl_basic_map_set_to_empty(res); - } res = isl_basic_map_add_constraints_dim_map(res, bmap, dim_map); return isl_basic_map_finalize(res); } -- 2.11.4.GIT