add isl_pw_multi_aff_product
[platform/upstream/isl.git] / isl_convex_hull.c
index 20c0e2f..2fe4f73 100644 (file)
@@ -14,6 +14,7 @@
 #include <isl_mat_private.h>
 #include <isl/set.h>
 #include <isl/seq.h>
+#include <isl_options_private.h>
 #include "isl_equalities.h"
 #include "isl_tab.h"
 
@@ -93,7 +94,7 @@ __isl_give isl_basic_map *isl_basic_map_remove_redundancies(
        if (bmap->n_ineq <= 1)
                return bmap;
 
-       tab = isl_tab_from_basic_map(bmap);
+       tab = isl_tab_from_basic_map(bmap, 0);
        if (isl_tab_detect_implicit_equalities(tab) < 0)
                goto error;
        if (isl_tab_detect_redundant(tab) < 0)
@@ -1168,7 +1169,7 @@ static struct isl_vec *valid_direction(
                goto error;
        lp = valid_direction_lp(isl_basic_set_copy(bset1),
                                isl_basic_set_copy(bset2));
-       tab = isl_tab_from_basic_set(lp);
+       tab = isl_tab_from_basic_set(lp, 0);
        sample = isl_tab_get_sample_value(tab);
        isl_tab_free(tab);
        isl_basic_set_free(lp);
@@ -1866,6 +1867,7 @@ static struct isl_basic_set *uset_convex_hull_wrap_bounded(struct isl_set *set)
        if (set->n == 1) {
                convex_hull = isl_basic_set_copy(set->p[0]);
                isl_set_free(set);
+               convex_hull = isl_basic_map_remove_redundancies(convex_hull);
                return convex_hull;
        }
        if (isl_set_n_dim(set) == 1)
@@ -2116,7 +2118,7 @@ static int is_bound(struct sh_data *data, struct isl_set *set, int j,
        isl_int opt;
 
        if (!data->p[j].tab) {
-               data->p[j].tab = isl_tab_from_basic_set(set->p[j]);
+               data->p[j].tab = isl_tab_from_basic_set(set->p[j], 0);
                if (!data->p[j].tab)
                        return -1;
        }
@@ -2338,6 +2340,9 @@ struct isl_basic_map *isl_map_simple_hull(struct isl_map *map)
 
        hull = isl_basic_map_intersect(hull, affine_hull);
        hull = isl_basic_map_remove_redundancies(hull);
+
+       if (!hull)
+               return NULL;
        ISL_F_SET(hull, ISL_BASIC_MAP_NO_IMPLICIT);
        ISL_F_SET(hull, ISL_BASIC_MAP_ALL_EQUALITIES);