isl_map_from_domain_and_range: implement in terms of isl_map_apply_range
[platform/upstream/isl.git] / isl_map.c
index bd3eeab..b9f8b01 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -3442,15 +3442,23 @@ __isl_give isl_set *isl_set_reset_dim(__isl_take isl_set *set,
 
 struct isl_basic_set *isl_basic_map_domain(struct isl_basic_map *bmap)
 {
+       isl_dim *dim;
        struct isl_basic_set *domain;
        unsigned n_in;
        unsigned n_out;
+
        if (!bmap)
                return NULL;
+       dim = isl_dim_domain(isl_basic_map_get_dim(bmap));
+
        n_in = isl_basic_map_n_in(bmap);
        n_out = isl_basic_map_n_out(bmap);
        domain = isl_basic_set_from_basic_map(bmap);
-       return isl_basic_set_project_out(domain, isl_dim_set, n_in, n_out);
+       domain = isl_basic_set_project_out(domain, isl_dim_set, n_in, n_out);
+
+       domain = isl_basic_set_reset_dim(domain, dim);
+
+       return domain;
 }
 
 struct isl_basic_set *isl_basic_map_range(struct isl_basic_map *bmap)
@@ -3527,8 +3535,8 @@ __isl_give isl_map *isl_map_from_domain(__isl_take isl_set *set)
 __isl_give isl_map *isl_map_from_domain_and_range(__isl_take isl_set *domain,
        __isl_take isl_set *range)
 {
-       return isl_map_product(isl_map_from_domain(domain),
-                              isl_map_from_range(range));
+       return isl_map_apply_range(isl_map_from_domain(domain),
+                                  isl_map_from_range(range));
 }
 
 struct isl_set *isl_set_from_map(struct isl_map *map)