This reduces the dependence on the internal representation.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
@@ -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);
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.
*/
@@ -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,