isl_map_gist_basic_map: drop empty pieces in result
authorSven Verdoolaege <skimo@kotnet.org>
Mon, 25 Oct 2010 11:37:04 +0000 (13:37 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 26 Oct 2010 14:41:19 +0000 (16:41 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_map_simplify.c

index d0199c8..2d1179b 100644 (file)
@@ -1870,11 +1870,17 @@ __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map,
        map = isl_map_compute_divs(map);
        for (i = 0; i < map->n; ++i)
                context = isl_basic_map_align_divs(context, map->p[i]);
-       for (i = 0; i < map->n; ++i) {
+       for (i = map->n - 1; i >= 0; --i) {
                map->p[i] = isl_basic_map_gist(map->p[i],
                                                isl_basic_map_copy(context));
                if (!map->p[i])
                        goto error;
+               if (isl_basic_map_fast_is_empty(map->p[i])) {
+                       isl_basic_map_free(map->p[i]);
+                       if (i != map->n - 1)
+                               map->p[i] = map->p[map->n - 1];
+                       map->n--;
+               }
        }
        isl_basic_map_free(context);
        ISL_F_CLR(map, ISL_MAP_NORMALIZED);