30#define EL_BASE ast_graft
61 if (!node || !guard || !enforced)
140 n = isl_ast_graft_list_n_ast_graft(list);
142 if (
n < 0 || depth < 0)
144 graft_0 = isl_ast_graft_list_get_ast_graft(list, 0);
151 else if (dim <= depth)
156 if (skip < 0 || skip) {
161 for (i = 1; i <
n; ++i) {
163 graft = isl_ast_graft_list_get_ast_graft(list, i);
190 if (depth < 0 || dim < 0)
242 n = isl_ast_graft_list_n_ast_graft(list);
255 graft_0 = isl_ast_graft_list_get_ast_graft(list, 0);
266 set_list = isl_set_list_alloc(ctx,
n);
268 for (i = 0; i <
n; ++i) {
273 graft = isl_ast_graft_list_get_ast_graft(list, i);
277 set_list = isl_set_list_add(set_list,
isl_set_copy(guard_i));
336 data.
list = isl_ast_node_list_alloc(ctx, 0);
340 data.
list = isl_ast_node_list_free(data.
list);
416 if (!graft || !enforced)
420 graft->enforced = enforced;
466 isl_ast_node_list *
list;
477 list = isl_ast_node_list_from_ast_node(*body);
500 n = isl_ast_graft_list_n_ast_graft(
list);
502 if (
n < 0 || depth < 0 || !graft)
508 last = isl_ast_graft_list_get_ast_graft(
list,
n - 1);
516 list = isl_ast_graft_list_set_ast_graft(
list,
n - 1, last);
521 return isl_ast_graft_list_free(
list);
565 for (i = first; i <
n; ++i) {
597 isl_ast_graft_list *
res;
600 n = isl_ast_graft_list_n_ast_graft(list);
602 return isl_ast_graft_list_free(list);
612 return isl_ast_graft_list_free(list);
615 res = isl_ast_graft_list_alloc(ctx,
n);
617 for (i = 0; i <
n; ++i) {
620 int subset, found_then, found_else;
623 graft = isl_ast_graft_list_get_ast_graft(list, i);
627 found_then = found_else = -1;
633 for (j = n_if - 1; j >= 0; --j) {
661 else if (found_else >= 0)
669 if (graft && graft->
node !=
node && i !=
n - 1) {
675 else if (found_else >= 0)
691 else if (found_else >= 0)
695 res = isl_ast_graft_list_add(
res, graft);
698 res = isl_ast_graft_list_free(
res);
700 isl_ast_graft_list_free(list);
719 n = isl_ast_graft_list_n_ast_graft(list);
721 return isl_ast_graft_list_free(list);
724 for (i = 0; i <
n; ++i) {
727 graft = isl_ast_graft_list_get_ast_graft(list, i);
734 list = isl_ast_graft_list_set_ast_graft(list, i, graft);
738 return isl_ast_graft_list_free(list);
751 isl_ast_node_list *node_list;
753 n = isl_ast_graft_list_n_ast_graft(list);
756 ctx = isl_ast_graft_list_get_ctx(list);
757 node_list = isl_ast_node_list_alloc(ctx,
n);
758 for (i = 0; i <
n; ++i) {
762 graft = isl_ast_graft_list_get_ast_graft(list, i);
764 node_list = isl_ast_node_list_add(node_list,
node);
786 n = isl_ast_graft_list_n_ast_graft(list);
788 if (
n < 0 || depth < 0)
794 for (i = 0; i <
n; ++i) {
797 graft = isl_ast_graft_list_get_ast_graft(list, i);
851 n = isl_ast_graft_list_n_ast_graft(list);
853 return isl_ast_graft_list_free(list);
855 for (i = 0; i <
n; ++i) {
858 graft = isl_ast_graft_list_get_ast_graft(list, i);
865 list = isl_ast_graft_list_set_ast_graft(list, i, graft);
868 return isl_ast_graft_list_free(list);
902 isl_ast_node_list *node_list;
914 isl_ast_graft_list_free(list);
967 n = isl_ast_graft_list_n_ast_graft(list);
969 return isl_ast_graft_list_free(list);
973 return isl_ast_graft_list_from_ast_graft(graft);
984 isl_ast_graft_list *list;
988 list = isl_ast_graft_list_alloc(ctx, 2);
989 list = isl_ast_graft_list_add(list, graft1);
990 list = isl_ast_graft_list_add(list, graft2);
1041 isl_ast_node_list *node_list;
1045 isl_ast_graft_list_free(list);
1055 if (--graft->ref > 0)
1072 if (!graft || !enforced)
1080 if (!graft->enforced)
1134 graft->enforced = enforced;
1142 if (!graft->enforced || !graft->guard)
1153 __isl_take isl_ast_graft_list *list,
int product)
1158 n = isl_ast_graft_list_n_ast_graft(list);
1160 return isl_ast_graft_list_free(list);
1161 for (i = 0; i <
n; ++i) {
1164 graft = isl_ast_graft_list_get_ast_graft(list, i);
1166 list = isl_ast_graft_list_set_ast_graft(list, i, graft);
1185 isl_multi_aff_copy(
ma));
1188 if (!graft->enforced || !graft->guard)
1203 n = isl_ast_graft_list_n_ast_graft(list);
1205 list = isl_ast_graft_list_free(list);
1206 for (i = 0; i <
n; ++i) {
1209 graft = isl_ast_graft_list_get_ast_graft(list, i);
1211 isl_multi_aff_copy(
ma));
1212 list = isl_ast_graft_list_set_ast_graft(list, i, graft);
1215 isl_multi_aff_free(
ma);
1232 return isl_ast_graft_list_sort(list, &
cmp_graft, NULL);
1264 if (!list1 || !list2 || !build)
1266 if (list2->n == 0) {
1267 isl_ast_graft_list_free(list2);
1270 if (list1->n == 0) {
1271 isl_ast_graft_list_free(list1);
1276 for (i = 0; i < list2->n; ++i) {
1278 graft = isl_ast_graft_list_get_ast_graft(list2, i);
1282 for (j = list1->n; j >= 0; --j) {
1293 list1->p[j - 1]->guard);
1296 list1 = isl_ast_graft_list_free(list1);
1305 list1 = isl_ast_graft_list_insert(list1, j,
1312 graft_j = isl_ast_graft_list_get_ast_graft(list1, j);
1314 list1 = isl_ast_graft_list_set_ast_graft(list1, j,
1323 "element failed to get inserted",
break);
1331 list1 = isl_ast_graft_list_free(list1);
1332 isl_ast_graft_list_free(list2);
1336 isl_ast_graft_list_free(list1);
1337 isl_ast_graft_list_free(list2);
1359 isl_maybe_isl_ast_graft_list
m;
1363 m = isl_set_to_ast_graft_list_try_get(data->
guard2list, graft->guard);
1369 m.value = isl_ast_graft_list_add(
m.value, graft);
1371 m.value = isl_ast_graft_list_from_ast_graft(graft);
1375 isl_set_to_ast_graft_list_set(data->
guard2list, guard,
m.value);
1391 n = isl_ast_graft_list_size(list);
1395 ctx = isl_ast_graft_list_get_ctx(list);
1396 data.
guard2list = isl_set_to_ast_graft_list_alloc(ctx,
n);
1399 return isl_set_to_ast_graft_list_free(data.
guard2list);
1409 isl_ast_graft_list **list =
user;
1412 *list = isl_ast_graft_list_concat(*list, guard_list);
1426 list = isl_ast_graft_list_clear(list);
1427 if (isl_set_to_ast_graft_list_foreach(
guard2list,
1429 list = isl_ast_graft_list_free(list);
1450 n = isl_ast_graft_list_size(list);
1452 return isl_ast_graft_list_free(list);
1510#define KEY enum isl_graft_key
1512#define KEY_ERROR isl_graft_key_error
1514#define KEY_END isl_graft_key_end
1516#define KEY_STR key_str
1518#define KEY_EXTRACT extract_key
1520#define KEY_GET get_key
1529 extracted = get_key(s);
1532 if (extracted !=
key)
struct isl_multi_aff isl_multi_aff
__isl_give isl_ast_node * isl_ast_node_copy(__isl_keep isl_ast_node *node)
__isl_export __isl_give isl_ast_node_list * isl_ast_node_block_get_children(__isl_keep isl_ast_node *node)
__isl_give isl_printer * isl_printer_print_ast_node(__isl_take isl_printer *p, __isl_keep isl_ast_node *node)
__isl_null isl_ast_node * isl_ast_node_free(__isl_take isl_ast_node *node)
isl_ctx * isl_ast_node_get_ctx(__isl_keep isl_ast_node *node)
int isl_options_get_ast_build_allow_else(isl_ctx *ctx)
int isl_options_get_ast_build_allow_or(isl_ctx *ctx)
__isl_give isl_ast_build * isl_ast_build_copy(__isl_keep isl_ast_build *build)
__isl_null isl_ast_build * isl_ast_build_free(__isl_take isl_ast_build *build)
isl_ctx * isl_ast_build_get_ctx(__isl_keep isl_ast_build *build)
isl_stat isl_stat_non_null(void *obj)
#define isl_calloc_type(ctx, type)
#define isl_die(ctx, errno, msg, code)
#define isl_alloc_array(ctx, type, n)
isl_bool isl_bool_not(isl_bool b)
isl_bool __isl_keep ISL_KEY * key
isl_stat isl_stat(*) void user)
isl_bool isl_bool(* test)(__isl_keep ISL_KEY *key, __isl_keep ISL_VAL *val, void *user)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
int GMPQAPI() cmp(mp_rat op1, mp_rat op2)
__isl_give isl_ast_node * isl_ast_node_from_ast_node_list(__isl_take isl_ast_node_list *list)
__isl_give isl_ast_node * isl_ast_node_alloc_block(__isl_take isl_ast_node_list *list)
__isl_give isl_ast_node * isl_stream_read_ast_node(__isl_keep isl_stream *s)
__isl_give isl_ast_node * isl_ast_node_alloc_if(__isl_take isl_ast_expr *guard)
__isl_give isl_ast_node * isl_ast_node_alloc_mark(__isl_take isl_id *id, __isl_take isl_ast_node *node)
__isl_give isl_set * isl_ast_build_get_generated(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_replace_pending_by_guard(__isl_take isl_ast_build *build, __isl_take isl_set *guard)
__isl_give isl_space * isl_ast_build_get_space(__isl_keep isl_ast_build *build, int internal)
isl_size isl_ast_build_get_depth(__isl_keep isl_ast_build *build)
__isl_give isl_set * isl_ast_build_get_domain(__isl_keep isl_ast_build *build)
__isl_give isl_ast_expr * isl_ast_build_expr_from_set_internal(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_ast_node * isl_ast_build_call_from_executed(__isl_keep isl_ast_build *build, __isl_take isl_map *executed)
__isl_give isl_set * isl_ast_graft_list_extract_hoistable_guard(__isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft * ast_graft_list_fuse(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
static __isl_give isl_basic_set * update_enforced(__isl_take isl_basic_set *enforced, __isl_keep isl_ast_graft *graft, int depth)
__isl_give isl_ast_graft * isl_ast_graft_set_enforced(__isl_take isl_ast_graft *graft, __isl_take isl_basic_set *enforced)
__isl_give isl_ast_graft * isl_ast_graft_insert_mark(__isl_take isl_ast_graft *graft, __isl_take isl_id *mark)
__isl_give isl_ast_graft_list * isl_ast_graft_list_preimage_multi_aff(__isl_take isl_ast_graft_list *list, __isl_take isl_multi_aff *ma)
__isl_give isl_ast_graft_list * isl_ast_graft_list_merge(__isl_take isl_ast_graft_list *list1, __isl_take isl_ast_graft_list *list2, __isl_keep isl_ast_build *build)
__isl_give isl_ast_node * isl_ast_node_from_graft_list(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft * isl_stream_read_ast_graft(__isl_keep isl_stream *s)
__isl_give isl_ast_graft_list * isl_ast_graft_list_group_on_guard(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_null isl_ast_graft * isl_ast_graft_free(__isl_take isl_ast_graft *graft)
static isl_ast_graft * graft_alloc(__isl_take isl_ast_node *node, __isl_take isl_set *guard, __isl_take isl_basic_set *enforced)
__isl_give isl_ast_graft * isl_ast_graft_alloc_from_children(__isl_take isl_ast_graft_list *list, __isl_take isl_set *guard, __isl_take isl_basic_set *enforced, __isl_keep isl_ast_build *build, __isl_keep isl_ast_build *sub_build)
static __isl_give isl_ast_graft_list * insert_pending_guard_nodes(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_node_list * extract_node_list(__isl_keep isl_ast_graft_list *list)
static isl_bool equal_independent_guards(__isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_gist_guards(__isl_take isl_ast_graft_list *list, __isl_take isl_set *context)
__isl_give isl_ast_graft * isl_ast_graft_unembed(__isl_take isl_ast_graft *graft, int product)
__isl_give isl_basic_set * isl_ast_graft_list_extract_shared_enforced(__isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_insert_for(__isl_take isl_ast_graft *graft, __isl_take isl_ast_node *node)
__isl_give isl_ast_graft_list * isl_ast_graft_list_sort_guard(__isl_take isl_ast_graft_list *list)
static __isl_give isl_ast_node * ast_node_insert_if(__isl_take isl_ast_node *node, __isl_take isl_set *guard, __isl_keep isl_ast_build *build)
static __isl_give isl_set * hoist_guard(__isl_take isl_set *guard, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_enforce(__isl_take isl_ast_graft *graft, __isl_take isl_basic_set *enforced)
static __isl_give isl_ast_graft_list * gist_guards(__isl_take isl_ast_graft_list *list, __isl_keep isl_set *context)
static isl_stat add_same_guard(__isl_take isl_set *guard, __isl_take isl_ast_graft_list *guard_list, void *user)
static __isl_give isl_ast_graft_list * reconstruct(__isl_take isl_ast_graft_list *list, __isl_keep isl_set_to_ast_graft_list *guard2list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_insert_pending_guard_nodes(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_add_guard(__isl_take isl_ast_graft *graft, __isl_take isl_set *guard, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft * insert_pending_guard_node(__isl_take isl_ast_graft *graft, __isl_keep isl_ast_build *build)
__isl_give isl_basic_set * isl_ast_graft_get_enforced(__isl_keep isl_ast_graft *graft)
__isl_give isl_printer * isl_printer_print_ast_graft(__isl_take isl_printer *p, __isl_keep isl_ast_graft *graft)
static __isl_give isl_ast_graft * isl_ast_graft_copy(__isl_keep isl_ast_graft *graft)
static isl_stat insert_if(__isl_take isl_basic_set *bset, void *user)
static isl_stat add_to_guard_list(__isl_take isl_ast_graft *graft, void *user)
__isl_give isl_ast_graft_list * isl_ast_graft_list_fuse(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft * isl_ast_graft_fuse(__isl_take isl_ast_graft *graft1, __isl_take isl_ast_graft *graft2, __isl_keep isl_ast_build *build)
static __isl_give isl_set_to_ast_graft_list * split_on_guard(__isl_keep isl_ast_graft_list *list, int *any_match)
static __isl_give isl_ast_graft * insert_if_node(__isl_take isl_ast_graft *graft, __isl_take isl_set *guard, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_unembed(__isl_take isl_ast_graft_list *list, int product)
__isl_give isl_ast_graft * isl_ast_graft_preimage_multi_aff(__isl_take isl_ast_graft *graft, __isl_take isl_multi_aff *ma)
static __isl_give isl_ast_graft * store_guard(__isl_take isl_ast_graft *graft, __isl_take isl_set *guard, __isl_keep isl_ast_build *build)
isl_ctx * isl_ast_graft_get_ctx(__isl_keep isl_ast_graft *graft)
__isl_give isl_ast_graft * isl_ast_graft_alloc(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build)
__isl_give isl_ast_node * isl_ast_graft_get_node(__isl_keep isl_ast_graft *graft)
static int clear_if_nodes(struct isl_if_node *if_node, int first, int n)
static __isl_give isl_ast_graft_list * extend_else(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_node *last_if, __isl_take isl_ast_graft *graft, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft_list * extend_then(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_node *last_if, __isl_take isl_ast_graft *graft, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_graft_list * graft_extend_body(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_node **body, __isl_take isl_ast_graft *graft, __isl_keep isl_ast_build *build)
static int cmp_graft(__isl_keep isl_ast_graft *a, __isl_keep isl_ast_graft *b, void *user)
static isl_stat read_key(__isl_keep isl_stream *s, enum isl_graft_key key)
static void extend_body(__isl_keep isl_ast_node **body, __isl_take isl_ast_node *node)
__isl_give isl_set * isl_ast_graft_get_guard(__isl_keep isl_ast_graft *graft)
__isl_give isl_ast_graft * isl_ast_graft_alloc_domain(__isl_take isl_map *executed, __isl_keep isl_ast_build *build)
__isl_give isl_ast_node * isl_ast_node_if_set_then(__isl_take isl_ast_node *node, __isl_take isl_ast_node *child)
__isl_give isl_ast_node * isl_ast_node_for_set_body(__isl_take isl_ast_node *node, __isl_take isl_ast_node *body)
static __isl_give isl_map * universe(__isl_take isl_map *map)
__isl_give isl_basic_set * isl_basic_map_domain(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_set * isl_map_domain(__isl_take isl_map *bmap)
__isl_export __isl_give isl_map * isl_set_unwrap(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_set_unwrap(__isl_take isl_basic_set *bset)
struct isl_basic_set isl_basic_set
__isl_null isl_printer * isl_printer_free(__isl_take isl_printer *printer)
__isl_give isl_printer * isl_printer_print_str(__isl_take isl_printer *p, const char *s)
__isl_give isl_basic_set * isl_set_unshifted_simple_hull_from_set_list(__isl_take isl_set *set, __isl_take isl_set_list *list)
__isl_export __isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_set_coalesce(__isl_take isl_set *set)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_export __isl_give isl_set * isl_basic_set_union(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_export __isl_give isl_set * isl_set_subtract(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_set * isl_set_make_disjoint(__isl_take isl_set *set)
__isl_export isl_bool isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_set * isl_set_union(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_overload __isl_give isl_set * isl_set_preimage_multi_aff(__isl_take isl_set *set, __isl_take isl_multi_aff *ma)
__isl_give isl_basic_set * isl_basic_set_preimage_multi_aff(__isl_take isl_basic_set *bset, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_basic_set * isl_basic_set_params(__isl_take isl_basic_set *bset)
__isl_export isl_bool isl_set_is_disjoint(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_eliminate(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_set_simple_hull(__isl_take isl_set *set)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_export isl_bool isl_set_is_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_remove_divs_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_printer * isl_printer_print_set(__isl_take isl_printer *printer, __isl_keep isl_set *map)
isl_bool isl_set_involves_dims(__isl_keep isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_set * isl_set_gist(__isl_take isl_set *set, __isl_take isl_set *context)
__isl_give isl_set * isl_set_compute_divs(__isl_take isl_set *set)
__isl_give isl_printer * isl_printer_print_basic_set(__isl_take isl_printer *printer, __isl_keep isl_basic_set *bset)
__isl_export isl_stat isl_set_foreach_basic_set(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_basic_set *bset, void *user), void *user)
__isl_give isl_basic_set * isl_basic_set_eliminate(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_empty(__isl_take isl_space *space)
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
int isl_set_plain_cmp(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
isl_bool isl_set_plain_is_universe(__isl_keep isl_set *set)
__isl_export isl_size isl_set_n_basic_set(__isl_keep isl_set *set)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_export __isl_give isl_set * isl_set_empty(__isl_take isl_space *space)
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
__isl_constructor __isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
__isl_give isl_basic_set * isl_basic_set_universe(__isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_set_params(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_align_params(__isl_take isl_basic_set *bset, __isl_take isl_space *model)
__isl_give isl_basic_set * isl_basic_set_remove_unknown_divs(__isl_take isl_basic_set *bset)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
isl_ctx * isl_stream_get_ctx(__isl_keep isl_stream *s)
int isl_stream_eat(__isl_keep isl_stream *s, int type)
__isl_give isl_basic_set * isl_stream_read_basic_set(__isl_keep isl_stream *s)
__isl_give isl_set * isl_stream_read_set(__isl_keep isl_stream *s)
isl_set_to_ast_graft_list * guard2list