summaryrefslogtreecommitdiffstats
path: root/polly/lib/External
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2018-05-31 03:59:05 +0000
committerTobias Grosser <tobias@grosser.es>2018-05-31 03:59:05 +0000
commitce27773a8ebcdb58c9b946497c2410fe622ccdb7 (patch)
tree27838100a1aeb6f83eaba99eeffa06eeef3bcf1f /polly/lib/External
parentfc01dd281df1c2283b0f5aa42a3ffb6efa05bd9a (diff)
downloadbcm5719-llvm-ce27773a8ebcdb58c9b946497c2410fe622ccdb7.tar.gz
bcm5719-llvm-ce27773a8ebcdb58c9b946497c2410fe622ccdb7.zip
Update isl to isl-0.19-173-g77fe2538
Besides other changes, this update introduces functions to translate a maps and sets into lists of their elements. These lists are useful as we can define iterators for lists, which allow us to replace many uses of foreach. llvm-svn: 333621
Diffstat (limited to 'polly/lib/External')
-rw-r--r--polly/lib/External/isl/GIT_HEAD_ID2
-rw-r--r--polly/lib/External/isl/Makefile.am1
-rw-r--r--polly/lib/External/isl/Makefile.in1
-rw-r--r--polly/lib/External/isl/doc/user.pod35
-rw-r--r--polly/lib/External/isl/include/isl/map.h2
-rw-r--r--polly/lib/External/isl/include/isl/stride_info.h3
-rw-r--r--polly/lib/External/isl/include/isl/union_map.h2
-rw-r--r--polly/lib/External/isl/include/isl/union_set.h2
-rw-r--r--polly/lib/External/isl/isl_aff.c6
-rw-r--r--polly/lib/External/isl/isl_ast.c2
-rw-r--r--polly/lib/External/isl/isl_ast_graft.c2
-rw-r--r--polly/lib/External/isl/isl_ast_graft_private.h2
-rw-r--r--polly/lib/External/isl/isl_bound.c2
-rw-r--r--polly/lib/External/isl/isl_coalesce.c4
-rw-r--r--polly/lib/External/isl/isl_constraint.c2
-rw-r--r--polly/lib/External/isl/isl_map.c8
-rw-r--r--polly/lib/External/isl/isl_map_private.h3
-rw-r--r--polly/lib/External/isl/isl_multi_templ.c1
-rw-r--r--polly/lib/External/isl/isl_polynomial.c6
-rw-r--r--polly/lib/External/isl/isl_pw_templ.c4
-rw-r--r--polly/lib/External/isl/isl_reordering.c4
-rw-r--r--polly/lib/External/isl/isl_reordering.h2
-rw-r--r--polly/lib/External/isl/isl_schedule_band.c4
-rw-r--r--polly/lib/External/isl/isl_schedule_read.c2
-rw-r--r--polly/lib/External/isl/isl_scheduler.c2
-rw-r--r--polly/lib/External/isl/isl_space.c1
-rw-r--r--polly/lib/External/isl/isl_stride.c22
-rw-r--r--polly/lib/External/isl/isl_tab.c7
-rw-r--r--polly/lib/External/isl/isl_test.c203
-rw-r--r--polly/lib/External/isl/isl_union_map.c48
-rw-r--r--polly/lib/External/isl/isl_union_templ.c1
-rw-r--r--polly/lib/External/isl/set_list_from_map_list_inl.c9
32 files changed, 343 insertions, 52 deletions
diff --git a/polly/lib/External/isl/GIT_HEAD_ID b/polly/lib/External/isl/GIT_HEAD_ID
index 45641b61d24..f4d2113b0a9 100644
--- a/polly/lib/External/isl/GIT_HEAD_ID
+++ b/polly/lib/External/isl/GIT_HEAD_ID
@@ -1 +1 @@
-isl-0.19-152-g437e6ab0
+isl-0.19-173-g77fe2538
diff --git a/polly/lib/External/isl/Makefile.am b/polly/lib/External/isl/Makefile.am
index e60fdd6afcf..9b73a167f33 100644
--- a/polly/lib/External/isl/Makefile.am
+++ b/polly/lib/External/isl/Makefile.am
@@ -379,6 +379,7 @@ EXTRA_DIST = \
read_in_string_templ.c \
set_to_map.c \
set_from_map.c \
+ set_list_from_map_list_inl.c \
isl_tab_lexopt_templ.c \
uset_to_umap.c \
uset_from_umap.c \
diff --git a/polly/lib/External/isl/Makefile.in b/polly/lib/External/isl/Makefile.in
index 095050292e6..714b6d784ec 100644
--- a/polly/lib/External/isl/Makefile.in
+++ b/polly/lib/External/isl/Makefile.in
@@ -1179,6 +1179,7 @@ EXTRA_DIST = \
read_in_string_templ.c \
set_to_map.c \
set_from_map.c \
+ set_list_from_map_list_inl.c \
isl_tab_lexopt_templ.c \
uset_to_umap.c \
uset_from_umap.c \
diff --git a/polly/lib/External/isl/doc/user.pod b/polly/lib/External/isl/doc/user.pod
index ba3c2556e31..04e8cedebd8 100644
--- a/polly/lib/External/isl/doc/user.pod
+++ b/polly/lib/External/isl/doc/user.pod
@@ -607,6 +607,10 @@ in which the object was created.
isl_ctx *isl_ast_node_get_ctx(
__isl_keep isl_ast_node *node);
+ #include <isl/stride_info.h>
+ isl_ctx *isl_stride_info_get_ctx(
+ __isl_keep isl_stride_info *si);
+
=head2 Return Types
C<isl> uses two special return types for functions that either return
@@ -2277,8 +2281,9 @@ from
#include <isl/map.h>
int isl_map_n_basic_map(__isl_keep isl_map *map);
-It is also possible to obtain a list of basic sets from a set
-or union set
+It is also possible to obtain a list of (basic) sets from a set
+or union set, a list of basic maps from a map and a list of maps from a union
+map.
#include <isl/set.h>
__isl_give isl_basic_set_list *isl_set_get_basic_set_list(
@@ -2288,6 +2293,16 @@ or union set
__isl_give isl_basic_set_list *
isl_union_set_get_basic_set_list(
__isl_keep isl_union_set *uset);
+ __isl_give isl_set_list *isl_union_set_get_set_list(
+ __isl_keep isl_union_set *uset);
+
+ #include <isl/map.h>
+ __isl_give isl_basic_map_list *isl_map_get_basic_map_list(
+ __isl_keep isl_map *map);
+
+ #include <isl/union_map.h>
+ __isl_give isl_map_list *isl_union_map_get_map_list(
+ __isl_keep isl_union_map *umap);
The returned list can be manipulated using the functions in L<"Lists">.
@@ -4011,9 +4026,12 @@ using the following functions.
__isl_give isl_aff *isl_stride_info_get_offset(
__isl_keep isl_stride_info *si);
-The stride info object can be released using the following function.
+The stride info object can be copied and released using the following
+functions.
#include <isl/stride_info.h>
+ __isl_give isl_stride_info *isl_stride_info_copy(
+ __isl_keep isl_stride_info *si);
__isl_null isl_stride_info *isl_stride_info_free(
__isl_take isl_stride_info *si);
@@ -9959,18 +9977,22 @@ Exact division. That is, the result is known to be an integer.
Result of integer division, rounded towards negative
infinity.
+The divisor is known to be positive.
=item C<isl_ast_op_pdiv_q>
Result of integer division, where dividend is known to be non-negative.
+The divisor is known to be positive.
=item C<isl_ast_op_pdiv_r>
Remainder of integer division, where dividend is known to be non-negative.
+The divisor is known to be positive.
=item C<isl_ast_op_zdiv_r>
Equal to zero iff the remainder on integer division is zero.
+The divisor is known to be positive.
=item C<isl_ast_op_cond>
@@ -10139,7 +10161,10 @@ the context of an C<isl_ast_build>.
The function C<isl_ast_expr_address_of> can be applied to an
C<isl_ast_expr> of type C<isl_ast_op_access> only. It is meant
-to represent the address of the C<isl_ast_expr_access>. The function
+to represent the address of the C<isl_ast_expr_access>.
+The second argument of the functions C<isl_ast_expr_pdiv_q> and
+C<isl_ast_expr_pdiv_r> should always evaluate to a positive number.
+The function
C<isl_ast_expr_and_then> as well as C<isl_ast_expr_or_else> are short-circuit
versions of C<isl_ast_expr_and> and C<isl_ast_expr_or>, respectively.
@@ -10167,7 +10192,7 @@ versions of C<isl_ast_expr_and> and C<isl_ast_expr_or>, respectively.
__isl_keep isl_ast_build *build,
__isl_take isl_multi_pw_aff *mpa);
-The set <set> and
+The set C<set> and
the domains of C<pa>, C<mpa> and C<pma> should correspond
to the schedule space of C<build>.
The tuple id of C<mpa> or C<pma> is used as the array being accessed or
diff --git a/polly/lib/External/isl/include/isl/map.h b/polly/lib/External/isl/include/isl/map.h
index 0a855ed4e96..6728e3f55c9 100644
--- a/polly/lib/External/isl/include/isl/map.h
+++ b/polly/lib/External/isl/include/isl/map.h
@@ -620,6 +620,8 @@ int isl_map_n_basic_map(__isl_keep isl_map *map);
__isl_export
isl_stat isl_map_foreach_basic_map(__isl_keep isl_map *map,
isl_stat (*fn)(__isl_take isl_basic_map *bmap, void *user), void *user);
+__isl_give isl_basic_map_list *isl_map_get_basic_map_list(
+ __isl_keep isl_map *map);
__isl_give isl_map *isl_map_fixed_power_val(__isl_take isl_map *map,
__isl_take isl_val *exp);
diff --git a/polly/lib/External/isl/include/isl/stride_info.h b/polly/lib/External/isl/include/isl/stride_info.h
index 66fa0e133ac..7a4e0dcb1e3 100644
--- a/polly/lib/External/isl/include/isl/stride_info.h
+++ b/polly/lib/External/isl/include/isl/stride_info.h
@@ -15,10 +15,13 @@ extern "C" {
struct isl_stride_info;
typedef struct isl_stride_info isl_stride_info;
+isl_ctx *isl_stride_info_get_ctx(__isl_keep isl_stride_info *si);
__isl_give isl_val *isl_stride_info_get_stride(__isl_keep isl_stride_info *si);
__isl_give isl_aff *isl_stride_info_get_offset(__isl_keep isl_stride_info *si);
__isl_null isl_stride_info *isl_stride_info_free(
__isl_take isl_stride_info *si);
+__isl_give isl_stride_info *isl_stride_info_copy(
+ __isl_keep isl_stride_info *si);
#if defined(__cplusplus)
}
diff --git a/polly/lib/External/isl/include/isl/union_map.h b/polly/lib/External/isl/include/isl/union_map.h
index 86fa49530d2..18db9af4e21 100644
--- a/polly/lib/External/isl/include/isl/union_map.h
+++ b/polly/lib/External/isl/include/isl/union_map.h
@@ -235,6 +235,8 @@ int isl_union_map_n_map(__isl_keep isl_union_map *umap);
__isl_export
isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
isl_stat (*fn)(__isl_take isl_map *map, void *user), void *user);
+__isl_give isl_map_list *isl_union_map_get_map_list(
+ __isl_keep isl_union_map *umap);
isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap,
isl_bool (*test)(__isl_keep isl_map *map, void *user), void *user);
__isl_give isl_union_map *isl_union_map_remove_map_if(
diff --git a/polly/lib/External/isl/include/isl/union_set.h b/polly/lib/External/isl/include/isl/union_set.h
index 289693b8b7c..0e6fc9843f4 100644
--- a/polly/lib/External/isl/include/isl/union_set.h
+++ b/polly/lib/External/isl/include/isl/union_set.h
@@ -121,6 +121,8 @@ isl_stat isl_union_set_foreach_set(__isl_keep isl_union_set *uset,
isl_stat (*fn)(__isl_take isl_set *set, void *user), void *user);
__isl_give isl_basic_set_list *isl_union_set_get_basic_set_list(
__isl_keep isl_union_set *uset);
+__isl_give isl_set_list *isl_union_set_get_set_list(
+ __isl_keep isl_union_set *uset);
isl_bool isl_union_set_contains(__isl_keep isl_union_set *uset,
__isl_keep isl_space *space);
__isl_give isl_set *isl_union_set_extract_set(__isl_keep isl_union_set *uset,
diff --git a/polly/lib/External/isl/isl_aff.c b/polly/lib/External/isl/isl_aff.c
index 3d3ff597085..3e0ddd27591 100644
--- a/polly/lib/External/isl/isl_aff.c
+++ b/polly/lib/External/isl/isl_aff.c
@@ -557,10 +557,6 @@ __isl_give isl_aff *isl_aff_align_params(__isl_take isl_aff *aff,
if (!equal_params) {
isl_reordering *exp;
- model = isl_space_drop_dims(model, isl_dim_in,
- 0, isl_space_dim(model, isl_dim_in));
- model = isl_space_drop_dims(model, isl_dim_out,
- 0, isl_space_dim(model, isl_dim_out));
exp = isl_parameter_alignment_reordering(aff->ls->dim, model);
exp = isl_reordering_extend_space(exp,
isl_aff_get_domain_space(aff));
@@ -7618,7 +7614,7 @@ static isl_stat isl_union_pw_aff_check_match_domain_space(
return isl_stat_error;
if (!match)
isl_die(isl_space_get_ctx(space), isl_error_invalid,
- "expecting set space", return -1);
+ "expecting set space", return isl_stat_error);
upa_space = isl_union_pw_aff_get_space(upa);
match = isl_space_has_equal_params(space, upa_space);
diff --git a/polly/lib/External/isl/isl_ast.c b/polly/lib/External/isl/isl_ast.c
index e143e05b6f3..96443e9720a 100644
--- a/polly/lib/External/isl/isl_ast.c
+++ b/polly/lib/External/isl/isl_ast.c
@@ -358,7 +358,7 @@ isl_bool isl_ast_expr_is_equal(__isl_keep isl_ast_expr *expr1,
if (equal < 0 || !equal)
return equal;
}
- return 1;
+ return isl_bool_true;
case isl_ast_expr_error:
return isl_bool_error;
}
diff --git a/polly/lib/External/isl/isl_ast_graft.c b/polly/lib/External/isl/isl_ast_graft.c
index 0c616052227..5c79eae0807 100644
--- a/polly/lib/External/isl/isl_ast_graft.c
+++ b/polly/lib/External/isl/isl_ast_graft.c
@@ -993,7 +993,7 @@ __isl_give isl_ast_node *isl_ast_node_from_graft_list(
return isl_ast_node_from_ast_node_list(node_list);
}
-void *isl_ast_graft_free(__isl_take isl_ast_graft *graft)
+__isl_null isl_ast_graft *isl_ast_graft_free(__isl_take isl_ast_graft *graft)
{
if (!graft)
return NULL;
diff --git a/polly/lib/External/isl/isl_ast_graft_private.h b/polly/lib/External/isl/isl_ast_graft_private.h
index 400b9a88dde..0456a6f8cfc 100644
--- a/polly/lib/External/isl/isl_ast_graft_private.h
+++ b/polly/lib/External/isl/isl_ast_graft_private.h
@@ -53,7 +53,7 @@ __isl_give isl_ast_graft_list *isl_ast_graft_list_fuse(
__isl_keep isl_ast_build *build);
__isl_give isl_ast_graft *isl_ast_graft_alloc_domain(
__isl_take isl_map *schedule, __isl_keep isl_ast_build *build);
-void *isl_ast_graft_free(__isl_take isl_ast_graft *graft);
+__isl_null isl_ast_graft *isl_ast_graft_free(__isl_take isl_ast_graft *graft);
__isl_give isl_ast_graft_list *isl_ast_graft_list_sort_guard(
__isl_take isl_ast_graft_list *list);
diff --git a/polly/lib/External/isl/isl_bound.c b/polly/lib/External/isl/isl_bound.c
index d4177f4a13c..29aae9a213e 100644
--- a/polly/lib/External/isl/isl_bound.c
+++ b/polly/lib/External/isl/isl_bound.c
@@ -45,7 +45,7 @@ static isl_stat compressed_guarded_poly_bound(__isl_take isl_basic_set *bset,
error:
isl_basic_set_free(bset);
isl_qpolynomial_free(poly);
- return -1;
+ return isl_stat_error;
}
static isl_stat unwrapped_guarded_poly_bound(__isl_take isl_basic_set *bset,
diff --git a/polly/lib/External/isl/isl_coalesce.c b/polly/lib/External/isl/isl_coalesce.c
index 7ad8548e3e7..01fc7cdbc22 100644
--- a/polly/lib/External/isl/isl_coalesce.c
+++ b/polly/lib/External/isl/isl_coalesce.c
@@ -2703,9 +2703,9 @@ static isl_bool same_divs(__isl_keep isl_basic_map *bmap1,
total = isl_basic_map_total_dim(bmap1);
for (i = 0; i < bmap1->n_div; ++i)
if (!isl_seq_eq(bmap1->div[i], bmap2->div[i], 2 + total))
- return 0;
+ return isl_bool_false;
- return 1;
+ return isl_bool_true;
}
/* Assuming that "tab" contains the equality constraints and
diff --git a/polly/lib/External/isl/isl_constraint.c b/polly/lib/External/isl/isl_constraint.c
index 7612559a9ac..f135c8f4571 100644
--- a/polly/lib/External/isl/isl_constraint.c
+++ b/polly/lib/External/isl/isl_constraint.c
@@ -1248,7 +1248,7 @@ error:
isl_constraint_free(lower);
isl_constraint_free(upper);
isl_basic_set_free(context);
- return -1;
+ return isl_stat_error;
}
__isl_give isl_aff *isl_constraint_get_bound(
diff --git a/polly/lib/External/isl/isl_map.c b/polly/lib/External/isl/isl_map.c
index 0bce2e1e7a0..c3d7adb1da3 100644
--- a/polly/lib/External/isl/isl_map.c
+++ b/polly/lib/External/isl/isl_map.c
@@ -11753,10 +11753,6 @@ __isl_give isl_map *isl_map_align_params(__isl_take isl_map *map,
if (!aligned) {
isl_reordering *exp;
- model = isl_space_drop_dims(model, isl_dim_in,
- 0, isl_space_dim(model, isl_dim_in));
- model = isl_space_drop_dims(model, isl_dim_out,
- 0, isl_space_dim(model, isl_dim_out));
exp = isl_parameter_alignment_reordering(map->dim, model);
exp = isl_reordering_extend_space(exp, isl_map_get_space(map));
map = isl_map_realign(map, exp);
@@ -11801,10 +11797,6 @@ __isl_give isl_basic_map *isl_basic_map_align_params(
isl_reordering *exp;
struct isl_dim_map *dim_map;
- model = isl_space_drop_dims(model, isl_dim_in,
- 0, isl_space_dim(model, isl_dim_in));
- model = isl_space_drop_dims(model, isl_dim_out,
- 0, isl_space_dim(model, isl_dim_out));
exp = isl_parameter_alignment_reordering(bmap->dim, model);
exp = isl_reordering_extend_space(exp,
isl_basic_map_get_space(bmap));
diff --git a/polly/lib/External/isl/isl_map_private.h b/polly/lib/External/isl/isl_map_private.h
index b132619aee7..bccafd505aa 100644
--- a/polly/lib/External/isl/isl_map_private.h
+++ b/polly/lib/External/isl/isl_map_private.h
@@ -534,9 +534,6 @@ __isl_give isl_basic_map *isl_basic_map_reduce_coefficients(
__isl_give isl_basic_map *isl_basic_map_shift_div(
__isl_take isl_basic_map *bmap, int div, int pos, isl_int shift);
-__isl_give isl_basic_map_list *isl_map_get_basic_map_list(
- __isl_keep isl_map *map);
-
int isl_basic_set_count_upto(__isl_keep isl_basic_set *bset,
isl_int max, isl_int *count);
int isl_set_count_upto(__isl_keep isl_set *set, isl_int max, isl_int *count);
diff --git a/polly/lib/External/isl/isl_multi_templ.c b/polly/lib/External/isl/isl_multi_templ.c
index 335bdd52e34..fcd43d7e8a9 100644
--- a/polly/lib/External/isl/isl_multi_templ.c
+++ b/polly/lib/External/isl/isl_multi_templ.c
@@ -515,7 +515,6 @@ __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params)(
if (!multi)
goto error;
}
- model = isl_space_params(model);
exp = isl_parameter_alignment_reordering(multi->space, model);
exp = isl_reordering_extend_space(exp,
FN(MULTI(BASE),get_domain_space)(multi));
diff --git a/polly/lib/External/isl/isl_polynomial.c b/polly/lib/External/isl/isl_polynomial.c
index 521611a99fe..e195ce55bad 100644
--- a/polly/lib/External/isl/isl_polynomial.c
+++ b/polly/lib/External/isl/isl_polynomial.c
@@ -4273,10 +4273,6 @@ __isl_give isl_qpolynomial *isl_qpolynomial_align_params(
if (!equal_params) {
isl_reordering *exp;
- model = isl_space_drop_dims(model, isl_dim_in,
- 0, isl_space_dim(model, isl_dim_in));
- model = isl_space_drop_dims(model, isl_dim_out,
- 0, isl_space_dim(model, isl_dim_out));
exp = isl_parameter_alignment_reordering(qp->dim, model);
exp = isl_reordering_extend_space(exp,
isl_qpolynomial_get_domain_space(qp));
@@ -4380,7 +4376,7 @@ static isl_stat set_div(__isl_take isl_set *set,
error:
isl_set_free(set);
isl_qpolynomial_free(qp);
- return -1;
+ return isl_stat_error;
}
/* Split the domain "set" such that integer division "div"
diff --git a/polly/lib/External/isl/isl_pw_templ.c b/polly/lib/External/isl/isl_pw_templ.c
index f054c97ddfa..a828f695ee6 100644
--- a/polly/lib/External/isl/isl_pw_templ.c
+++ b/polly/lib/External/isl/isl_pw_templ.c
@@ -330,10 +330,6 @@ __isl_give PW *FN(PW,align_params)(__isl_take PW *pw, __isl_take isl_space *mode
if (!equal_params) {
isl_reordering *exp;
- model = isl_space_drop_dims(model, isl_dim_in,
- 0, isl_space_dim(model, isl_dim_in));
- model = isl_space_drop_dims(model, isl_dim_out,
- 0, isl_space_dim(model, isl_dim_out));
exp = isl_parameter_alignment_reordering(pw->dim, model);
exp = isl_reordering_extend_space(exp,
FN(PW,get_domain_space)(pw));
diff --git a/polly/lib/External/isl/isl_reordering.c b/polly/lib/External/isl/isl_reordering.c
index 4df3ae1bf8b..754033d2690 100644
--- a/polly/lib/External/isl/isl_reordering.c
+++ b/polly/lib/External/isl/isl_reordering.c
@@ -70,7 +70,7 @@ __isl_give isl_reordering *isl_reordering_cow(__isl_take isl_reordering *r)
return isl_reordering_dup(r);
}
-void *isl_reordering_free(__isl_take isl_reordering *exp)
+__isl_null isl_reordering *isl_reordering_free(__isl_take isl_reordering *exp)
{
if (!exp)
return NULL;
@@ -124,7 +124,7 @@ __isl_give isl_reordering *isl_parameter_alignment_reordering(
if (!exp)
return NULL;
- exp->space = isl_space_copy(aligner);
+ exp->space = isl_space_params(isl_space_copy(aligner));
for (i = 0; i < alignee->nparam; ++i) {
isl_id *id_i;
diff --git a/polly/lib/External/isl/isl_reordering.h b/polly/lib/External/isl/isl_reordering.h
index 58629dd9d06..f7cf1fee86b 100644
--- a/polly/lib/External/isl/isl_reordering.h
+++ b/polly/lib/External/isl/isl_reordering.h
@@ -25,7 +25,7 @@ __isl_give isl_space *isl_reordering_get_space(__isl_keep isl_reordering *r);
__isl_give isl_reordering *isl_parameter_alignment_reordering(
__isl_keep isl_space *alignee, __isl_keep isl_space *aligner);
__isl_give isl_reordering *isl_reordering_copy(__isl_keep isl_reordering *exp);
-void *isl_reordering_free(__isl_take isl_reordering *exp);
+__isl_null isl_reordering *isl_reordering_free(__isl_take isl_reordering *exp);
__isl_give isl_reordering *isl_reordering_extend_space(
__isl_take isl_reordering *exp, __isl_take isl_space *space);
__isl_give isl_reordering *isl_reordering_extend(__isl_take isl_reordering *exp,
diff --git a/polly/lib/External/isl/isl_schedule_band.c b/polly/lib/External/isl/isl_schedule_band.c
index e4825f3df6b..d29bb9d3c96 100644
--- a/polly/lib/External/isl/isl_schedule_band.c
+++ b/polly/lib/External/isl/isl_schedule_band.c
@@ -371,7 +371,7 @@ enum isl_ast_loop_type isl_schedule_band_member_get_ast_loop_type(
if (pos < 0 || pos >= band->n)
isl_die(isl_schedule_band_get_ctx(band), isl_error_invalid,
- "invalid member position", return -1);
+ "invalid member position", return isl_ast_loop_error);
if (!band->loop_type)
return isl_ast_loop_default;
@@ -426,7 +426,7 @@ enum isl_ast_loop_type isl_schedule_band_member_get_isolate_ast_loop_type(
if (pos < 0 || pos >= band->n)
isl_die(isl_schedule_band_get_ctx(band), isl_error_invalid,
- "invalid member position", return -1);
+ "invalid member position", return isl_ast_loop_error);
if (!band->isolate_loop_type)
return isl_ast_loop_default;
diff --git a/polly/lib/External/isl/isl_schedule_read.c b/polly/lib/External/isl/isl_schedule_read.c
index 52a6febaf51..9b81e391ef8 100644
--- a/polly/lib/External/isl/isl_schedule_read.c
+++ b/polly/lib/External/isl/isl_schedule_read.c
@@ -714,7 +714,7 @@ static __isl_give isl_schedule_tree *isl_stream_read_schedule_tree(
break;
case isl_schedule_key_child:
isl_die(isl_stream_get_ctx(s), isl_error_unsupported,
- "cannot identity node type", return NULL);
+ "cannot identify node type", return NULL);
case isl_schedule_key_end:
case isl_schedule_key_error:
return NULL;
diff --git a/polly/lib/External/isl/isl_scheduler.c b/polly/lib/External/isl/isl_scheduler.c
index b47dcc245cd..4e08d2012c3 100644
--- a/polly/lib/External/isl/isl_scheduler.c
+++ b/polly/lib/External/isl/isl_scheduler.c
@@ -562,7 +562,7 @@ static isl_bool graph_has_edge(struct isl_sched_graph *graph,
edge = graph_find_edge(graph, type, src, dst);
if (!edge)
- return 0;
+ return isl_bool_false;
empty = isl_map_plain_is_empty(edge->map);
if (empty < 0)
diff --git a/polly/lib/External/isl/isl_space.c b/polly/lib/External/isl/isl_space.c
index baccf18c82f..2a83e80a585 100644
--- a/polly/lib/External/isl/isl_space.c
+++ b/polly/lib/External/isl/isl_space.c
@@ -2562,7 +2562,6 @@ __isl_give isl_space *isl_space_align_params(__isl_take isl_space *space1,
isl_space_check_named_params(space2) < 0)
goto error;
- space2 = isl_space_params(space2);
exp = isl_parameter_alignment_reordering(space1, space2);
exp = isl_reordering_extend_space(exp, space1);
isl_space_free(space2);
diff --git a/polly/lib/External/isl/isl_stride.c b/polly/lib/External/isl/isl_stride.c
index fef3dcbc382..98e0db916cf 100644
--- a/polly/lib/External/isl/isl_stride.c
+++ b/polly/lib/External/isl/isl_stride.c
@@ -22,6 +22,16 @@ struct isl_stride_info {
isl_aff *offset;
};
+/* Return the ctx to which "si" belongs.
+ */
+isl_ctx *isl_stride_info_get_ctx(__isl_keep isl_stride_info *si)
+{
+ if (!si)
+ return NULL;
+
+ return isl_val_get_ctx(si->stride);
+}
+
/* Free "si" and return NULL.
*/
__isl_null isl_stride_info *isl_stride_info_free(
@@ -56,6 +66,18 @@ error:
return NULL;
}
+/* Make a copy of "si" and return it.
+ */
+__isl_give isl_stride_info *isl_stride_info_copy(
+ __isl_keep isl_stride_info *si)
+{
+ if (!si)
+ return NULL;
+
+ return isl_stride_info_alloc(isl_val_copy(si->stride),
+ isl_aff_copy(si->offset));
+}
+
/* Return the stride of "si".
*/
__isl_give isl_val *isl_stride_info_get_stride(__isl_keep isl_stride_info *si)
diff --git a/polly/lib/External/isl/isl_tab.c b/polly/lib/External/isl/isl_tab.c
index 4a81b24d8a3..0fb9e34e206 100644
--- a/polly/lib/External/isl/isl_tab.c
+++ b/polly/lib/External/isl/isl_tab.c
@@ -2281,10 +2281,10 @@ static isl_stat add_div_constraints(struct isl_tab *tab, unsigned div,
isl_vec_free(ineq);
- return 0;
+ return isl_stat_ok;
error:
isl_vec_free(ineq);
- return -1;
+ return isl_stat_error;
}
/* Check whether the div described by "div" is obviously non-negative.
@@ -3681,7 +3681,8 @@ static isl_stat perform_undo_var(struct isl_tab *tab, struct isl_tab_undo *undo)
case isl_tab_undo_redundant:
if (!var->is_row || var->index != tab->n_redundant - 1)
isl_die(isl_tab_get_ctx(tab), isl_error_internal,
- "not undoing last redundant row", return -1);
+ "not undoing last redundant row",
+ return isl_stat_error);
return restore_last_redundant(tab);
case isl_tab_undo_freeze:
var->frozen = 0;
diff --git a/polly/lib/External/isl/isl_test.c b/polly/lib/External/isl/isl_test.c
index 84a7c9db4c2..80292643b20 100644
--- a/polly/lib/External/isl/isl_test.c
+++ b/polly/lib/External/isl/isl_test.c
@@ -3384,6 +3384,208 @@ static int test_bound(isl_ctx *ctx)
return 0;
}
+/* Check that the conversion from 'set' to 'basic set list' works as expected.
+ */
+static isl_stat test_get_list_bset_from_set(isl_ctx *ctx)
+{
+ int i;
+ isl_bool equal;
+ isl_set *set, *set2;
+ isl_basic_set_list *bset_list;
+
+ set = isl_set_read_from_str(ctx, "{ [0]; [2]; [3] }");
+ bset_list = isl_set_get_basic_set_list(set);
+
+ set2 = isl_set_empty(isl_set_get_space(set));
+
+ for (i = 0; i < isl_basic_set_list_n_basic_set(bset_list); i++) {
+ isl_basic_set *bset;
+ bset = isl_basic_set_list_get_basic_set(bset_list, i);
+ set2 = isl_set_union(set2, isl_set_from_basic_set(bset));
+ }
+
+ equal = isl_set_is_equal(set, set2);
+
+ isl_set_free(set);
+ isl_set_free(set2);
+ isl_basic_set_list_free(bset_list);
+
+ if (equal < 0)
+ return isl_stat_error;
+
+ if (!equal)
+ isl_die(ctx, isl_error_unknown, "sets are not equal",
+ return isl_stat_error);
+
+ return isl_stat_ok;
+}
+
+/* Check that the conversion from 'union set' to 'basic set list' works as
+ * expected.
+ */
+static isl_stat test_get_list_bset_from_uset(isl_ctx *ctx)
+{
+ int i;
+ isl_bool equal;
+ isl_union_set *uset, *uset2;
+ isl_basic_set_list *bset_list;
+
+ uset = isl_union_set_read_from_str(ctx, "{ A[0]; B[2]; B[3] }");
+ bset_list = isl_union_set_get_basic_set_list(uset);
+
+ uset2 = isl_union_set_empty(isl_union_set_get_space(uset));
+
+ for (i = 0; i < isl_basic_set_list_n_basic_set(bset_list); i++) {
+ isl_basic_set *bset;
+ bset = isl_basic_set_list_get_basic_set(bset_list, i);
+ uset2 = isl_union_set_union(uset2,
+ isl_union_set_from_basic_set(bset));
+ }
+
+ equal = isl_union_set_is_equal(uset, uset2);
+
+ isl_union_set_free(uset);
+ isl_union_set_free(uset2);
+ isl_basic_set_list_free(bset_list);
+
+ if (equal < 0)
+ return isl_stat_error;
+
+ if (!equal)
+ isl_die(ctx, isl_error_unknown, "sets are not equal",
+ return isl_stat_error);
+
+ return isl_stat_ok;
+}
+
+/* Check that the conversion from 'union set' to 'set list' works as expected.
+ */
+static isl_stat test_get_list_set_from_uset(isl_ctx *ctx)
+{
+ int i;
+ isl_bool equal;
+ isl_union_set *uset, *uset2;
+ isl_set_list *set_list;
+
+ uset = isl_union_set_read_from_str(ctx, "{ A[0]; A[2]; B[3] }");
+ set_list = isl_union_set_get_set_list(uset);
+
+ uset2 = isl_union_set_empty(isl_union_set_get_space(uset));
+
+ for (i = 0; i < isl_set_list_n_set(set_list); i++) {
+ isl_set *set;
+ set = isl_set_list_get_set(set_list, i);
+ uset2 = isl_union_set_union(uset2, isl_union_set_from_set(set));
+ }
+
+ equal = isl_union_set_is_equal(uset, uset2);
+
+ isl_union_set_free(uset);
+ isl_union_set_free(uset2);
+ isl_set_list_free(set_list);
+
+ if (equal < 0)
+ return isl_stat_error;
+
+ if (!equal)
+ isl_die(ctx, isl_error_unknown, "union sets are not equal",
+ return isl_stat_error);
+
+ return isl_stat_ok;
+}
+
+/* Check that the conversion from 'map' to 'basic map list' works as expected.
+ */
+static isl_stat test_get_list_bmap_from_map(isl_ctx *ctx)
+{
+ int i;
+ isl_bool equal;
+ isl_map *map, *map2;
+ isl_basic_map_list *bmap_list;
+
+ map = isl_map_read_from_str(ctx,
+ "{ [0] -> [0]; [2] -> [0]; [3] -> [0] }");
+ bmap_list = isl_map_get_basic_map_list(map);
+
+ map2 = isl_map_empty(isl_map_get_space(map));
+
+ for (i = 0; i < isl_basic_map_list_n_basic_map(bmap_list); i++) {
+ isl_basic_map *bmap;
+ bmap = isl_basic_map_list_get_basic_map(bmap_list, i);
+ map2 = isl_map_union(map2, isl_map_from_basic_map(bmap));
+ }
+
+ equal = isl_map_is_equal(map, map2);
+
+ isl_map_free(map);
+ isl_map_free(map2);
+ isl_basic_map_list_free(bmap_list);
+
+ if (equal < 0)
+ return isl_stat_error;
+
+ if (!equal)
+ isl_die(ctx, isl_error_unknown, "maps are not equal",
+ return isl_stat_error);
+
+ return isl_stat_ok;
+}
+
+/* Check that the conversion from 'union map' to 'map list' works as expected.
+ */
+static isl_stat test_get_list_map_from_umap(isl_ctx *ctx)
+{
+ int i;
+ isl_bool equal;
+ isl_union_map *umap, *umap2;
+ isl_map_list *map_list;
+
+ umap = isl_union_map_read_from_str(ctx,
+ "{ A[0] -> [0]; A[2] -> [0]; B[3] -> [0] }");
+ map_list = isl_union_map_get_map_list(umap);
+
+ umap2 = isl_union_map_empty(isl_union_map_get_space(umap));
+
+ for (i = 0; i < isl_map_list_n_map(map_list); i++) {
+ isl_map *map;
+ map = isl_map_list_get_map(map_list, i);
+ umap2 = isl_union_map_union(umap2, isl_union_map_from_map(map));
+ }
+
+ equal = isl_union_map_is_equal(umap, umap2);
+
+ isl_union_map_free(umap);
+ isl_union_map_free(umap2);
+ isl_map_list_free(map_list);
+
+ if (equal < 0)
+ return isl_stat_error;
+
+ if (!equal)
+ isl_die(ctx, isl_error_unknown, "union maps are not equal",
+ return isl_stat_error);
+
+ return isl_stat_ok;
+}
+
+/* Check that the conversion from isl objects to lists works as expected.
+ */
+static int test_get_list(isl_ctx *ctx)
+{
+ if (test_get_list_bset_from_set(ctx))
+ return -1;
+ if (test_get_list_bset_from_uset(ctx))
+ return -1;
+ if (test_get_list_set_from_uset(ctx))
+ return -1;
+ if (test_get_list_bmap_from_map(ctx))
+ return -1;
+ if (test_get_list_map_from_umap(ctx))
+ return -1;
+
+ return 0;
+}
+
static int test_lift(isl_ctx *ctx)
{
const char *str;
@@ -9109,6 +9311,7 @@ struct {
{ "piecewise quasi-polynomials", &test_pwqp },
{ "lift", &test_lift },
{ "bound", &test_bound },
+ { "get lists", &test_get_list },
{ "union", &test_union },
{ "split periods", &test_split_periods },
{ "lexicographic order", &test_lex },
diff --git a/polly/lib/External/isl/isl_union_map.c b/polly/lib/External/isl/isl_union_map.c
index 5c3e0c283db..5ea7c400b87 100644
--- a/polly/lib/External/isl/isl_union_map.c
+++ b/polly/lib/External/isl/isl_union_map.c
@@ -29,6 +29,7 @@
#include <set_from_map.c>
#include <uset_to_umap.c>
#include <uset_from_umap.c>
+#include <set_list_from_map_list_inl.c>
/* Return the number of parameters of "umap", where "type"
* is required to be set to isl_dim_param.
@@ -254,7 +255,6 @@ __isl_give isl_union_map *isl_union_map_align_params(
return umap;
}
- model = isl_space_params(model);
data.exp = isl_parameter_alignment_reordering(umap->dim, model);
if (!data.exp)
goto error;
@@ -552,6 +552,52 @@ isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap,
return isl_bool_error;
}
+/* Add "map" to "list".
+ */
+static isl_stat add_list_map(__isl_take isl_map *map, void *user)
+{
+ isl_map_list **list = user;
+
+ *list = isl_map_list_add(*list, map);
+
+ if (!*list)
+ return isl_stat_error;
+ return isl_stat_ok;
+}
+
+/* Return the maps in "umap" as a list.
+ *
+ * First construct a list of the appropriate size and then add all the
+ * elements.
+ */
+__isl_give isl_map_list *isl_union_map_get_map_list(
+ __isl_keep isl_union_map *umap)
+{
+ int n_maps;
+ isl_ctx *ctx;
+ isl_map_list *list;
+
+ if (!umap)
+ return NULL;
+ ctx = isl_union_map_get_ctx(umap);
+ n_maps = isl_union_map_n_map(umap);
+ list = isl_map_list_alloc(ctx, n_maps);
+
+ if (isl_union_map_foreach_map(umap, &add_list_map, &list) < 0)
+ list = isl_map_list_free(list);
+
+ return list;
+}
+
+/* Return the sets in "uset" as a list.
+ */
+__isl_give isl_set_list *isl_union_set_get_set_list(
+ __isl_keep isl_union_set *uset)
+{
+ return set_list_from_map_list(
+ isl_union_map_get_map_list(uset_to_umap(uset)));
+}
+
static isl_stat copy_map(void **entry, void *user)
{
isl_map *map = *entry;
diff --git a/polly/lib/External/isl/isl_union_templ.c b/polly/lib/External/isl/isl_union_templ.c
index f71a81bfd12..090d271f8a0 100644
--- a/polly/lib/External/isl/isl_union_templ.c
+++ b/polly/lib/External/isl/isl_union_templ.c
@@ -427,7 +427,6 @@ __isl_give UNION *FN(UNION,align_params)(__isl_take UNION *u,
return u;
}
- model = isl_space_params(model);
r = isl_parameter_alignment_reordering(u->space, model);
isl_space_free(model);
diff --git a/polly/lib/External/isl/set_list_from_map_list_inl.c b/polly/lib/External/isl/set_list_from_map_list_inl.c
new file mode 100644
index 00000000000..108c53476ff
--- /dev/null
+++ b/polly/lib/External/isl/set_list_from_map_list_inl.c
@@ -0,0 +1,9 @@
+#include <isl/map_type.h>
+
+/* Return the set list that was treated as the map list "list".
+ */
+static __isl_give isl_set_list *set_list_from_map_list(
+ __isl_take isl_map_list *list)
+{
+ return (isl_set_list *) list;
+}
OpenPOWER on IntegriCloud