return 0;
}
+int isl_dim_may_be_set(__isl_keep isl_dim *dim)
+{
+ if (!dim)
+ return -1;
+ if (isl_dim_size(dim, isl_dim_in) != 0)
+ return 0;
+ if (isl_dim_is_named_or_nested(dim, isl_dim_in))
+ return 0;
+ return 1;
+}
+
__isl_give isl_dim *isl_dim_reset(__isl_take isl_dim *dim,
enum isl_dim_type type)
{
unsigned isl_dim_offset(__isl_keep isl_dim *dim, enum isl_dim_type type);
+int isl_dim_may_be_set(__isl_keep isl_dim *dim);
int isl_dim_is_named_or_nested(__isl_keep isl_dim *dim, enum isl_dim_type type);
int isl_dim_has_named_params(__isl_keep isl_dim *dim);
__isl_give isl_dim *isl_dim_reset(__isl_take isl_dim *dim,
return domain;
}
+int isl_basic_map_may_be_set(__isl_keep isl_basic_map *bmap)
+{
+ if (!bmap)
+ return -1;
+ return isl_dim_may_be_set(bmap->dim);
+}
+
struct isl_basic_set *isl_basic_map_range(struct isl_basic_map *bmap)
{
+ if (!bmap)
+ return NULL;
+ if (isl_basic_map_may_be_set(bmap))
+ return bmap;
return isl_basic_map_domain(isl_basic_map_reverse(bmap));
}
return NULL;
}
+int isl_map_may_be_set(__isl_keep isl_map *map)
+{
+ if (!map)
+ return -1;
+ return isl_dim_may_be_set(map->dim);
+}
+
struct isl_set *isl_map_range(struct isl_map *map)
{
int i;
if (!map)
goto error;
- if (isl_map_dim(map, isl_dim_in) == 0 &&
- !isl_dim_is_named_or_nested(map->dim, isl_dim_in))
+ if (isl_map_may_be_set(map))
return (isl_set *)map;
map = isl_map_cow(map);
unsigned isl_basic_set_offset(struct isl_basic_set *bset,
enum isl_dim_type type);
+int isl_basic_map_may_be_set(__isl_keep isl_basic_map *bmap);
+int isl_map_may_be_set(__isl_keep isl_map *map);
int isl_map_compatible_domain(struct isl_map *map, struct isl_set *set);
int isl_basic_map_compatible_domain(struct isl_basic_map *bmap,
struct isl_basic_set *bset);