isl_lp.c: isl_basic_set_opt_lp_val: extract isl_basic_set_space_has_equal_params
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 4 Nov 2015 09:19:30 +0000 (4 10:19 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 7 Mar 2017 11:44:06 +0000 (7 12:44 +0100)
This reduces the dependence on the internal representation.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_lp.c
isl_map.c
isl_map_private.h

index e2757ce..57191b1 100644 (file)
--- a/isl_lp.c
+++ b/isl_lp.c
@@ -320,13 +320,16 @@ error:
 static __isl_give isl_val *isl_basic_set_opt_lp_val(
        __isl_keep isl_basic_set *bset, int max, __isl_keep isl_aff *obj)
 {
+       isl_bool equal;
        isl_val *res;
 
        if (!bset || !obj)
                return NULL;
 
-       if (isl_space_match(bset->dim, isl_dim_param,
-                           obj->ls->dim, isl_dim_param))
+       equal = isl_basic_set_space_has_equal_params(bset, obj->ls->dim);
+       if (equal < 0)
+               return NULL;
+       if (equal)
                return isl_basic_set_opt_lp_val_aligned(bset, max, obj);
 
        bset = isl_basic_set_copy(bset);
index 0fab03c..4d17346 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -11259,6 +11259,17 @@ error:
        return NULL;
 }
 
+/* Do "bset" and "space" have the same parameters?
+ */
+isl_bool isl_basic_set_space_has_equal_params(__isl_keep isl_basic_set *bset,
+       __isl_keep isl_space *space)
+{
+       isl_space *bset_space;
+
+       bset_space = isl_basic_set_peek_space(bset);
+       return isl_space_match(bset_space, isl_dim_param, space, isl_dim_param);
+}
+
 /* Align the parameters of "bset" to those of "model", introducing
  * additional parameters if needed.
  */
index 5c212f5..0fcfa13 100644 (file)
@@ -438,6 +438,8 @@ isl_stat isl_map_check_named_params(__isl_keep isl_map *map);
 
 isl_bool isl_map_has_equal_params(__isl_keep isl_map *map1,
        __isl_keep isl_map *map2);
+isl_bool isl_basic_set_space_has_equal_params(__isl_keep isl_basic_set *bset,
+       __isl_keep isl_space *space);
 
 __isl_give isl_map *isl_map_align_params_map_map_and(
        __isl_take isl_map *map1, __isl_take isl_map *map2,