Merge branch 'maint'
[platform/upstream/isl.git] / isl_morph.c
index 20a4063..8a526e7 100644 (file)
@@ -8,9 +8,10 @@
  * 91893 Orsay, France 
  */
 
-#include <isl_morph.h>
-#include <isl_seq.h>
 #include <isl_map_private.h>
+#include <isl_morph.h>
+#include <isl/seq.h>
+#include <isl_mat_private.h>
 #include <isl_dim_private.h>
 #include <isl_equalities.h>
 
@@ -125,7 +126,7 @@ __isl_give isl_morph *isl_morph_remove_dom_dims(__isl_take isl_morph *morph,
 
        dom_offset = 1 + isl_dim_offset(morph->dom->dim, type);
 
-       morph->dom = isl_basic_set_remove(morph->dom, type, first, n);
+       morph->dom = isl_basic_set_remove_dims(morph->dom, type, first, n);
 
        morph->map = isl_mat_drop_cols(morph->map, dom_offset + first, n);
 
@@ -152,7 +153,7 @@ __isl_give isl_morph *isl_morph_remove_ran_dims(__isl_take isl_morph *morph,
 
        ran_offset = 1 + isl_dim_offset(morph->ran->dim, type);
 
-       morph->ran = isl_basic_set_remove(morph->ran, type, first, n);
+       morph->ran = isl_basic_set_remove_dims(morph->ran, type, first, n);
 
        morph->map = isl_mat_drop_rows(morph->map, ran_offset + first, n);
 
@@ -630,6 +631,9 @@ __isl_give isl_basic_set *isl_morph_basic_set(__isl_take isl_morph *morph,
 
        res = add_strides(res, morph);
 
+       if (isl_basic_set_is_rational(bset))
+               res = isl_basic_set_set_rational(res);
+
        res = isl_basic_set_simplify(res);
        res = isl_basic_set_finalize(res);
 
@@ -756,3 +760,19 @@ __isl_give isl_morph *isl_basic_set_full_compression(
 
        return morph;
 }
+
+__isl_give isl_vec *isl_morph_vec(__isl_take isl_morph *morph,
+       __isl_take isl_vec *vec)
+{
+       if (!morph)
+               goto error;
+
+       vec = isl_mat_vec_product(isl_mat_copy(morph->map), vec);
+
+       isl_morph_free(morph);
+       return vec;
+error:
+       isl_morph_free(morph);
+       isl_vec_free(vec);
+       return NULL;
+}