isl_map_gist: also perform gist in universe context
[platform/upstream/isl.git] / isl_map_simplify.c
index 1c298c4..767ad22 100644 (file)
@@ -12,6 +12,7 @@
 #include "isl_map_private.h"
 #include "isl_seq.h"
 #include "isl_tab.h"
+#include <isl_dim_private.h>
 
 static void swap_equality(struct isl_basic_map *bmap, int a, int b)
 {
@@ -57,7 +58,7 @@ struct isl_basic_set *isl_basic_set_drop_dims(
 
        isl_assert(bset->ctx, first + n <= bset->dim->n_out, goto error);
 
-       if (n == 0)
+       if (n == 0 && !isl_dim_get_tuple_name(bset->dim, isl_dim_set))
                return bset;
 
        bset = isl_basic_set_cow(bset);
@@ -98,7 +99,7 @@ struct isl_set *isl_set_drop_dims(
 
        isl_assert(set->ctx, first + n <= set->dim->n_out, goto error);
 
-       if (n == 0)
+       if (n == 0 && !isl_dim_get_tuple_name(set->dim, isl_dim_set))
                return set;
        set = isl_set_cow(set);
        if (!set)
@@ -168,7 +169,7 @@ struct isl_basic_map *isl_basic_map_drop(struct isl_basic_map *bmap,
        dim = isl_basic_map_dim(bmap, type);
        isl_assert(bmap->ctx, first + n <= dim, goto error);
 
-       if (n == 0)
+       if (n == 0 && !isl_dim_get_tuple_name(bmap->dim, type))
                return bmap;
 
        bmap = isl_basic_map_cow(bmap);
@@ -227,7 +228,7 @@ struct isl_map *isl_map_drop(struct isl_map *map,
 
        isl_assert(map->ctx, first + n <= isl_map_dim(map, type), goto error);
 
-       if (n == 0)
+       if (n == 0 && !isl_dim_get_tuple_name(map->dim, type))
                return map;
        map = isl_map_cow(map);
        if (!map)
@@ -1806,10 +1807,6 @@ struct isl_basic_map *isl_basic_map_gist(struct isl_basic_map *bmap,
        if (!bmap || !context)
                goto error;
 
-       if (isl_basic_map_is_universe(context)) {
-               isl_basic_map_free(context);
-               return bmap;
-       }
        if (isl_basic_map_is_universe(bmap)) {
                isl_basic_map_free(context);
                return bmap;
@@ -1855,10 +1852,6 @@ __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map,
        if (!map || !context)
                goto error;;
 
-       if (isl_basic_map_is_universe(context)) {
-               isl_basic_map_free(context);
-               return map;
-       }
        if (isl_basic_map_fast_is_empty(context)) {
                struct isl_dim *dim = isl_dim_copy(map->dim);
                isl_basic_map_free(context);