summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--math/cloog/Makefile7
-rw-r--r--math/cloog/PLIST3
-rw-r--r--math/cloog/distinfo13
-rw-r--r--math/cloog/patches/patch-include_cloog_isl_constraintset.h28
-rw-r--r--math/cloog/patches/patch-source_isl_constraints.c443
-rw-r--r--math/cloog/patches/patch-source_isl_domain.c634
6 files changed, 11 insertions, 1117 deletions
diff --git a/math/cloog/Makefile b/math/cloog/Makefile
index e1490ea700c..cdb86c8216e 100644
--- a/math/cloog/Makefile
+++ b/math/cloog/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.7 2014/04/25 21:01:27 wiz Exp $
+# $NetBSD: Makefile,v 1.8 2016/10/09 19:46:52 wiz Exp $
-DISTNAME= cloog-0.18.1
+DISTNAME= cloog-0.18.4
CATEGORIES= math
-MASTER_SITES= ${MASTER_SITE_GNU:=gcc/infrastructure/}
+MASTER_SITES= http://www.bastoul.net/cloog/pages/download/
MAINTAINER= kuehro@gmx.de
HOMEPAGE= http://www.cloog.org/
@@ -18,6 +18,7 @@ TEST_TARGET= check
CONFIGURE_ARGS+= --with-isl=system
CONFIGURE_ARGS+= --with-bits=gmp
+BUILDLINK_API_DEPENDS.gmp+= gmp>=6.0
.include "../../devel/gmp/buildlink3.mk"
.include "../../math/isl/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/math/cloog/PLIST b/math/cloog/PLIST
index ccb0afab4b9..e58d04a0d02 100644
--- a/math/cloog/PLIST
+++ b/math/cloog/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.5 2014/04/25 21:01:27 wiz Exp $
+@comment $NetBSD: PLIST,v 1.6 2016/10/09 19:46:52 wiz Exp $
bin/cloog
include/cloog/block.h
include/cloog/clast.h
@@ -22,6 +22,7 @@ include/cloog/state.h
include/cloog/statement.h
include/cloog/stride.h
include/cloog/union_domain.h
+include/cloog/util.h
include/cloog/version.h
lib/cloog-isl/cloog-isl-config.cmake
lib/isl/isl-config.cmake
diff --git a/math/cloog/distinfo b/math/cloog/distinfo
index c4b2ae013de..0268934dbad 100644
--- a/math/cloog/distinfo
+++ b/math/cloog/distinfo
@@ -1,10 +1,7 @@
-$NetBSD: distinfo,v 1.6 2015/11/03 23:33:31 agc Exp $
+$NetBSD: distinfo,v 1.7 2016/10/09 19:46:52 wiz Exp $
-SHA1 (cloog-0.18.1.tar.gz) = 2dc70313e8e2c6610b856d627bce9c9c3f848077
-RMD160 (cloog-0.18.1.tar.gz) = 5c4a182efc0d42e7d5c30e6fcca5832776a2e69a
-SHA512 (cloog-0.18.1.tar.gz) = 0b12d9f3c39a2425e28e1d7c0a2b3787287fe3e6e3052f094d2ab6cffeb205ce19044100cbfd805659b3e6b3d21ac2f5a3c92848f476de54edfe6b1cbd2172e9
-Size (cloog-0.18.1.tar.gz) = 3857324 bytes
-SHA1 (patch-include_cloog_isl_constraintset.h) = ec640f64d8b40038abeff65122363bcd5aeb2e58
-SHA1 (patch-source_isl_constraints.c) = 377d1662787e389e00816fe42e529a26d28a7928
-SHA1 (patch-source_isl_domain.c) = 8afc17ec42ca25b702cfff644f5a5d3ae36d0419
+SHA1 (cloog-0.18.4.tar.gz) = 8f7568ca1873f8d55bb694c8b9b83f7f4c6c1aa5
+RMD160 (cloog-0.18.4.tar.gz) = 12d7a27442fc95f01f7c6445b5559579f8f614cc
+SHA512 (cloog-0.18.4.tar.gz) = d35d67b08ffe13c1a010b65bfe4dd02b0ae013d5b489e330dc950bd3514defca8f734bd37781856dcedf0491ff6122c34eecb4b0fe32a22d7e6bdadea98c8c23
+Size (cloog-0.18.4.tar.gz) = 4796456 bytes
SHA1 (patch-test_checker.sh) = a62a4fba0f433e6c6685f2d7a92f0cb039a1d1f0
diff --git a/math/cloog/patches/patch-include_cloog_isl_constraintset.h b/math/cloog/patches/patch-include_cloog_isl_constraintset.h
deleted file mode 100644
index 92c4fcee4de..00000000000
--- a/math/cloog/patches/patch-include_cloog_isl_constraintset.h
+++ /dev/null
@@ -1,28 +0,0 @@
-$NetBSD: patch-include_cloog_isl_constraintset.h,v 1.1 2014/04/25 21:01:27 wiz Exp $
-
-From: Taj Muhammad Khan <taj.khan@lri.fr>
-Date: Thu, 5 Dec 2013 02:25:16 +0000 (+0530)
-Subject: Use isl_val instead of isl_int
-X-Git-Url: http://repo.or.cz/w/cloog.git/commitdiff_plain/2d8b7c6b43ee46fee978a57fa6877de49675f357?hp=d02b7193c157b61ddeabae55718793c078d73961
-
-Use isl_val instead of isl_int
-
-isl is moving from the macro-based isl_int to a more generic
-integer type isl_val, so CLooG does with this patch.
-Authors are Uday Bondhugula, Taj Muhammad Khan and Cedric Bastoul.
-
---- include/cloog/isl/constraintset.h.orig 2013-10-11 07:27:03.000000000 +0000
-+++ include/cloog/isl/constraintset.h
-@@ -27,6 +27,12 @@ CloogConstraintSet *cloog_constraint_set
- CloogConstraint *cloog_constraint_from_isl_constraint(struct isl_constraint *constraint);
- isl_constraint *cloog_constraint_to_isl(CloogConstraint *constraint);
-
-+__isl_give isl_val *cloog_int_to_isl_val(isl_ctx* ctx, cloog_int_t c);
-+void isl_val_to_cloog_int(__isl_keep isl_val *val, cloog_int_t *cint);
-+
-+__isl_give isl_val *cloog_constraint_coefficient_get_val(CloogConstraint *constraint,
-+ int var);
-+
- #if defined(__cplusplus)
- }
- #endif
diff --git a/math/cloog/patches/patch-source_isl_constraints.c b/math/cloog/patches/patch-source_isl_constraints.c
deleted file mode 100644
index e8bba7f31e2..00000000000
--- a/math/cloog/patches/patch-source_isl_constraints.c
+++ /dev/null
@@ -1,443 +0,0 @@
-$NetBSD: patch-source_isl_constraints.c,v 1.1 2014/04/25 21:01:27 wiz Exp $
-
-From: Taj Muhammad Khan <taj.khan@lri.fr>
-Date: Thu, 5 Dec 2013 02:25:16 +0000 (+0530)
-Subject: Use isl_val instead of isl_int
-X-Git-Url: http://repo.or.cz/w/cloog.git/commitdiff_plain/2d8b7c6b43ee46fee978a57fa6877de49675f357?hp=d02b7193c157b61ddeabae55718793c078d73961
-
-Use isl_val instead of isl_int
-
-isl is moving from the macro-based isl_int to a more generic
-integer type isl_val, so CLooG does with this patch.
-Authors are Uday Bondhugula, Taj Muhammad Khan and Cedric Bastoul.
-
---- source/isl/constraints.c.orig 2013-10-11 07:27:03.000000000 +0000
-+++ source/isl/constraints.c
-@@ -5,11 +5,51 @@
- #include <cloog/isl/backend.h>
- #include <isl/aff.h>
- #include <isl/set.h>
-+#include <isl/val.h>
-+#include <isl/val_gmp.h>
-
-
- #define ALLOC(type) (type*)malloc(sizeof(type))
- #define ALLOCN(type,n) (type*)malloc((n)*sizeof(type))
-
-+__isl_give isl_val *cloog_int_to_isl_val(isl_ctx* ctx, cloog_int_t c)
-+{
-+ isl_val *v;
-+#if defined(CLOOG_INT_INT)
-+ v = isl_val_int_from_si(ctx, c);
-+#elif defined(CLOOG_INT_LONG)
-+ v = isl_val_int_from_si(ctx, c);
-+#elif defined(CLOOG_INT_LONG_LONG)
-+ v = isl_val_int_from_si(ctx, c);
-+#elif defined(CLOOG_INT_GMP)
-+ v = isl_val_int_from_gmp(ctx, c);
-+#else
-+#error "No integer type defined"
-+#endif
-+ return v;
-+}
-+
-+/*
-+ * CLooG'll be dealing in integers so we expect numerator/1 form
-+ * from isl_val. Thus get numerator to assign to cloog_int
-+ */
-+void isl_val_to_cloog_int(__isl_keep isl_val *val, cloog_int_t *cint)
-+{
-+ assert(isl_val_is_int(val));
-+#if defined(CLOOG_INT_INT)
-+ *cint = isl_val_get_num_si(val);
-+#elif defined(CLOOG_INT_LONG)
-+ *cint = isl_val_get_num_si(val);
-+#elif defined(CLOOG_INT_LONG_LONG)
-+ *cint = isl_val_get_num_si(val);
-+#elif defined(CLOOG_INT_GMP)
-+ isl_val_get_num_gmp(val, *cint);
-+#else
-+#error "No integer type defined"
-+#endif
-+}
-+
-+
- CloogConstraintSet *cloog_constraint_set_from_isl_basic_set(struct isl_basic_set *bset)
- {
- return (CloogConstraintSet *)bset;
-@@ -266,53 +306,65 @@ int cloog_equal_count(CloogEqualities *e
- static int cloog_constraint_equal_type(CloogConstraint *cc, int level)
- {
- int i;
-- isl_int c;
-+ isl_val *c;
- int type = EQTYPE_NONE;
- struct isl_constraint *constraint = cloog_constraint_to_isl(cc);
-
-- isl_int_init(c);
-- isl_constraint_get_constant(constraint, &c);
-- if (!isl_int_is_zero(c))
-+ c = isl_constraint_get_constant_val(constraint);
-+ if (!isl_val_is_zero(c))
- type = EQTYPE_CONSTANT;
-- isl_constraint_get_coefficient(constraint, isl_dim_set, level - 1, &c);
-- if (!isl_int_is_one(c) && !isl_int_is_negone(c))
-+ isl_val_free(c);
-+ c = isl_constraint_get_coefficient_val(constraint, isl_dim_set, level - 1);
-+ if (!isl_val_is_one(c) && !isl_val_is_negone(c))
- type = EQTYPE_EXAFFINE;
-+ isl_val_free(c);
- for (i = 0; i < isl_constraint_dim(constraint, isl_dim_param); ++i) {
-- isl_constraint_get_coefficient(constraint, isl_dim_param, i, &c);
-- if (isl_int_is_zero(c))
-+ c = isl_constraint_get_coefficient_val(constraint, isl_dim_param, i);
-+ if (isl_val_is_zero(c)){
-+ isl_val_free(c);
- continue;
-- if ((!isl_int_is_one(c) && !isl_int_is_negone(c)) ||
-+ }
-+ if ((!isl_val_is_one(c) && !isl_val_is_negone(c)) ||
- type != EQTYPE_NONE) {
- type = EQTYPE_EXAFFINE;
-+ isl_val_free(c);
- break;
- }
- type = EQTYPE_PUREITEM;
-+ isl_val_free(c);
- }
- for (i = 0; i < isl_constraint_dim(constraint, isl_dim_set); ++i) {
- if (i == level - 1)
- continue;
-- isl_constraint_get_coefficient(constraint, isl_dim_set, i, &c);
-- if (isl_int_is_zero(c))
-+ c = isl_constraint_get_coefficient_val(constraint, isl_dim_set, i);
-+ if (isl_val_is_zero(c)){
-+ isl_val_free(c);
- continue;
-- if ((!isl_int_is_one(c) && !isl_int_is_negone(c)) ||
-+ }
-+ if ((!isl_val_is_one(c) && !isl_val_is_negone(c)) ||
- type != EQTYPE_NONE) {
- type = EQTYPE_EXAFFINE;
-+ isl_val_free(c);
- break;
- }
- type = EQTYPE_PUREITEM;
-+ isl_val_free(c);
- }
- for (i = 0; i < isl_constraint_dim(constraint, isl_dim_div); ++i) {
-- isl_constraint_get_coefficient(constraint, isl_dim_div, i, &c);
-- if (isl_int_is_zero(c))
-+ c = isl_constraint_get_coefficient_val(constraint, isl_dim_div, i);
-+ if (isl_val_is_zero(c)){
-+ isl_val_free(c);
- continue;
-- if ((!isl_int_is_one(c) && !isl_int_is_negone(c)) ||
-+ }
-+ if ((!isl_val_is_one(c) && !isl_val_is_negone(c)) ||
- type != EQTYPE_NONE) {
- type = EQTYPE_EXAFFINE;
-+ isl_val_free(c);
- break;
- }
- type = EQTYPE_PUREITEM;
-+ isl_val_free(c);
- }
-- isl_int_clear(c);
-
- if (type == EQTYPE_NONE)
- type = EQTYPE_CONSTANT;
-@@ -447,27 +499,31 @@ static struct clast_expr *div_expr(Cloog
- {
- int i, nb_elts;
- unsigned dim = cloog_constraint_total_dimension(constraint);
-- cloog_int_t c;
-+ isl_val *c;
- struct clast_reduction *r;
- struct clast_expr *e = NULL;
- isl_aff *div;
-+ cloog_int_t cint;
-
-+ cloog_int_init(cint);
- div = isl_constraint_get_div(cloog_constraint_to_isl(constraint), pos);
-
-- cloog_int_init(c);
- for (i = 0, nb_elts = 0; i < dim; ++i) {
- struct cloog_isl_dim dim;
-
- dim = constraint_cloog_dim_to_isl_dim(constraint, i);
- if (dim.type == isl_dim_set)
- dim.type = isl_dim_in;
-- isl_aff_get_coefficient(div, dim.type, dim.pos, &c);
-- if (!cloog_int_is_zero(c))
-+ c = isl_aff_get_coefficient_val(div, dim.type, dim.pos);
-+ if (!isl_val_is_zero(c))
- ++nb_elts;
-+
-+ isl_val_free(c);
- }
-- isl_aff_get_constant(div, &c);
-- if (!cloog_int_is_zero(c))
-+ c = isl_aff_get_constant_val(div);
-+ if (!isl_val_is_zero(c))
- ++nb_elts;
-+ isl_val_free(c);
-
- r = new_clast_reduction(clast_red_sum, nb_elts);
- for (i = 0, nb_elts = 0; i < dim; ++i) {
-@@ -477,22 +533,35 @@ static struct clast_expr *div_expr(Cloog
- dim = constraint_cloog_dim_to_isl_dim(constraint, i);
- if (dim.type == isl_dim_set)
- dim.type = isl_dim_in;
-- isl_aff_get_coefficient(div, dim.type, dim.pos, &c);
-- if (cloog_int_is_zero(c))
-+ c = isl_aff_get_coefficient_val(div, dim.type, dim.pos);
-+ if (isl_val_is_zero(c)){
-+ isl_val_free(c);
- continue;
-+ }
-
- v = cloog_constraint_variable_expr(constraint, 1 + i, names);
-
-- r->elts[nb_elts++] = &new_clast_term(c, v)->expr;
-+ /* We are interested only in the numerator */
-+ cloog_int_set_si(cint, isl_val_get_num_si(c));
-+ r->elts[nb_elts++] = &new_clast_term(cint, v)->expr;
-+
-+ isl_val_free(c);
- }
-- isl_aff_get_constant(div, &c);
-- if (!cloog_int_is_zero(c))
-- r->elts[nb_elts++] = &new_clast_term(c, NULL)->expr;
-
-- isl_aff_get_denominator(div, &c);
-- e = &new_clast_binary(clast_bin_fdiv, &r->expr, c)->expr;
-+ c = isl_aff_get_constant_val(div);
-+ if (!isl_val_is_zero(c)) {
-+ /* We are interested only in the numerator */
-+ cloog_int_set_si(cint, isl_val_get_num_si(c));
-+ r->elts[nb_elts++] = &new_clast_term(cint, NULL)->expr;
-+ }
-+ isl_val_free(c);
-
-- cloog_int_clear(c);
-+ c = isl_aff_get_denominator_val(div);
-+ isl_val_to_cloog_int(c, &cint);
-+ isl_val_free(c);
-+ e = &new_clast_binary(clast_bin_fdiv, &r->expr, cint)->expr;
-+
-+ cloog_int_clear(cint);
-
- isl_aff_free(div);
-
-@@ -529,37 +598,34 @@ struct clast_expr *cloog_constraint_vari
- */
- int cloog_constraint_involves(CloogConstraint *constraint, int v)
- {
-- isl_int c;
-+ isl_val *c;
- int res;
-
-- isl_int_init(c);
-- cloog_constraint_coefficient_get(constraint, v, &c);
-- res = !isl_int_is_zero(c);
-- isl_int_clear(c);
-+ c = cloog_constraint_coefficient_get_val(constraint, v);
-+ res = !isl_val_is_zero(c);
-+ isl_val_free(c);
- return res;
- }
-
- int cloog_constraint_is_lower_bound(CloogConstraint *constraint, int v)
- {
-- isl_int c;
-+ isl_val *c;
- int res;
-
-- isl_int_init(c);
-- cloog_constraint_coefficient_get(constraint, v, &c);
-- res = isl_int_is_pos(c);
-- isl_int_clear(c);
-+ c = cloog_constraint_coefficient_get_val(constraint, v);
-+ res = isl_val_is_pos(c);
-+ isl_val_free(c);
- return res;
- }
-
- int cloog_constraint_is_upper_bound(CloogConstraint *constraint, int v)
- {
-- isl_int c;
-+ isl_val *c;
- int res;
-
-- isl_int_init(c);
-- cloog_constraint_coefficient_get(constraint, v, &c);
-- res = isl_int_is_neg(c);
-- isl_int_clear(c);
-+ c = cloog_constraint_coefficient_get_val(constraint, v);
-+ res = isl_val_is_neg(c);
-+ isl_val_free(c);
- return res;
- }
-
-@@ -585,15 +651,37 @@ void cloog_constraint_coefficient_get(Cl
- {
- struct cloog_isl_dim dim;
- isl_constraint *c;
-+ isl_val *ival;
-
- if (!constraint)
-- return;
-+ val = NULL;
-
- dim = constraint_cloog_dim_to_isl_dim(constraint, var);
- c = cloog_constraint_to_isl(constraint);
-- isl_constraint_get_coefficient(c, dim.type, dim.pos, val);
-+ ival = isl_constraint_get_coefficient_val(c, dim.type, dim.pos);
-+
-+ isl_val_to_cloog_int(ival, val);
-+ isl_val_free(ival);
- }
-
-+isl_val *cloog_constraint_coefficient_get_val(CloogConstraint *constraint,
-+ int var)
-+{
-+ struct cloog_isl_dim dim;
-+ isl_constraint *c;
-+ isl_val *val;
-+
-+ if (!constraint)
-+ return NULL;
-+
-+ dim = constraint_cloog_dim_to_isl_dim(constraint, var);
-+ c = cloog_constraint_to_isl(constraint);
-+ val = isl_constraint_get_coefficient_val(c, dim.type, dim.pos);
-+ return val;
-+}
-+
-+
-+
- void cloog_constraint_coefficient_set(CloogConstraint *constraint,
- int var, cloog_int_t val)
- {
-@@ -604,14 +692,26 @@ void cloog_constraint_coefficient_set(Cl
-
- dim = constraint_cloog_dim_to_isl_dim(constraint, var);
- c = cloog_constraint_to_isl(constraint);
-- isl_constraint_set_coefficient(c, dim.type, dim.pos, val);
-+ isl_constraint_set_coefficient_val(c, dim.type, dim.pos,
-+ cloog_int_to_isl_val(isl_constraint_get_ctx(c), val));
- }
-
- void cloog_constraint_constant_get(CloogConstraint *constraint, cloog_int_t *val)
- {
-- isl_constraint_get_constant(cloog_constraint_to_isl(constraint), val);
-+ isl_val *ival;
-+ ival = isl_constraint_get_constant_val(cloog_constraint_to_isl(constraint));
-+ isl_val_to_cloog_int(ival, val);
-+ isl_val_free(ival);
- }
-
-+
-+__isl_give isl_val *cloog_constraint_constant_get_val(CloogConstraint *constraint)
-+{
-+ return isl_constraint_get_constant_val(cloog_constraint_to_isl(constraint));
-+}
-+
-+
-+
- /**
- * Copy the coefficient of constraint c into dst in PolyLib order,
- * i.e., first the coefficients of the variables, then the coefficients
-@@ -700,15 +800,11 @@ CloogConstraintSet *cloog_constraint_set
-
- static int add_constant_term(CloogConstraint *c, void *user)
- {
-- isl_int *bound = (isl_int *)user;
-- isl_int v;
--
-- isl_int_init(v);
-+ isl_val **bound = (isl_val **)user;
-+ isl_val *v;
-
-- cloog_constraint_constant_get(c, &v);
-- isl_int_add(*bound, *bound, v);
--
-- isl_int_clear(v);
-+ v = cloog_constraint_constant_get_val(c);
-+ *bound = isl_val_add(*bound, v);
-
- return 0;
- }
-@@ -822,11 +918,14 @@ CloogConstraintSet *cloog_constraint_set
- c = isl_constraint_set_coefficient_si(c, isl_dim_set, dim.pos, -1);
- bset = isl_basic_set_add_constraint(bset, c);
-
-- isl_int_set_si(*bound, 0);
-+ cloog_int_set_si(*bound, 0);
-+ isl_val *v = cloog_int_to_isl_val(isl_basic_set_get_ctx(bset), *bound);
- constraints = cloog_constraint_set_from_isl_basic_set(bset);
- cloog_constraint_set_foreach_constraint(constraints,
-- add_constant_term, bound);
-+ add_constant_term, &v);
-+ isl_val_to_cloog_int(v, bound); //return the value to bound
-
-+ isl_val_free(v);
- isl_basic_set_free(orig);
- return cloog_constraint_set_from_isl_basic_set(bset);
- }
-@@ -896,31 +995,27 @@ static isl_aff *extract_stride_offset(__
- isl_space *dim = isl_constraint_get_space(c);
- isl_local_space *ls = isl_local_space_from_space(dim);
- isl_aff *offset = isl_aff_zero_on_domain(ls);
-- isl_int u;
-+ isl_val *u;
- unsigned nparam, nvar;
-
-- isl_int_init(u);
--
- nparam = isl_constraint_dim(c, isl_dim_param);
- nvar = isl_constraint_dim(c, isl_dim_set);
-
- for (i = 0; i < nparam; ++i) {
-- isl_constraint_get_coefficient(c, isl_dim_param, i, &u);
-- isl_int_mul(u, u, stride->factor);
-- offset = isl_aff_set_coefficient(offset, isl_dim_param, i, u);
-+ u = isl_constraint_get_coefficient_val(c, isl_dim_param, i);
-+ u = isl_val_mul(u, cloog_int_to_isl_val(isl_constraint_get_ctx(c), stride->factor));
-+ offset = isl_aff_set_coefficient_val(offset, isl_dim_param, i, u);
- }
- for (i = 0; i < nvar; ++i) {
- if (i == level - 1)
- continue;
-- isl_constraint_get_coefficient(c, isl_dim_set, i, &u);
-- isl_int_mul(u, u, stride->factor);
-- offset = isl_aff_set_coefficient(offset, isl_dim_in, i, u);
-- }
-- isl_constraint_get_constant(c, &u);
-- isl_int_mul(u, u, stride->factor);
-- offset = isl_aff_set_constant(offset, u);
--
-- isl_int_clear(u);
-+ u = isl_constraint_get_coefficient_val(c, isl_dim_set, i);
-+ u = isl_val_mul(u, cloog_int_to_isl_val(isl_constraint_get_ctx(c), stride->factor));
-+ offset = isl_aff_set_coefficient_val(offset, isl_dim_in, i, u);
-+ }
-+ u = isl_constraint_get_constant_val(c);
-+ u = isl_val_mul(u, cloog_int_to_isl_val(isl_constraint_get_ctx(c), stride->factor));
-+ offset = isl_aff_set_constant_val(offset, u);
-
- return offset;
- }
-@@ -953,9 +1048,9 @@ CloogConstraint *cloog_constraint_stride
- offset = extract_stride_offset(stride_c, level, stride);
-
- lower = isl_aff_sub(lower, isl_aff_copy(offset));
-- lower = isl_aff_scale_down(lower, stride->stride);
-+ lower = isl_aff_scale_down_val(lower, cloog_int_to_isl_val(isl_constraint_get_ctx(stride_c), stride->stride));
- lower = isl_aff_ceil(lower);
-- lower = isl_aff_scale(lower, stride->stride);
-+ lower = isl_aff_scale_val(lower, cloog_int_to_isl_val(isl_constraint_get_ctx(stride_c), stride->stride));
- lower = isl_aff_add(lower, offset);
- lower = isl_aff_neg(lower);
- lower = isl_aff_add_coefficient_si(lower, isl_dim_in, level - 1, 1);
diff --git a/math/cloog/patches/patch-source_isl_domain.c b/math/cloog/patches/patch-source_isl_domain.c
deleted file mode 100644
index 49915eae8ac..00000000000
--- a/math/cloog/patches/patch-source_isl_domain.c
+++ /dev/null
@@ -1,634 +0,0 @@
-$NetBSD: patch-source_isl_domain.c,v 1.1 2014/04/25 21:01:27 wiz Exp $
-
-From: Taj Muhammad Khan <taj.khan@lri.fr>
-Date: Thu, 5 Dec 2013 02:25:16 +0000 (+0530)
-Subject: Use isl_val instead of isl_int
-X-Git-Url: http://repo.or.cz/w/cloog.git/commitdiff_plain/2d8b7c6b43ee46fee978a57fa6877de49675f357?hp=d02b7193c157b61ddeabae55718793c078d73961
-
-Use isl_val instead of isl_int
-
-isl is moving from the macro-based isl_int to a more generic
-integer type isl_val, so CLooG does with this patch.
-Authors are Uday Bondhugula, Taj Muhammad Khan and Cedric Bastoul.
-
---- source/isl/domain.c.orig 2013-10-11 07:27:03.000000000 +0000
-+++ source/isl/domain.c
-@@ -7,7 +7,11 @@
- #include <isl/list.h>
- #include <isl/constraint.h>
- #include <isl/ilp.h>
-+#include <isl/lp.h>
- #include <isl/aff.h>
-+#include <isl/map.h>
-+#include <isl/val.h>
-+#include <isl/val_gmp.h>
-
- #ifdef OSL_SUPPORT
- #include <osl/macros.h>
-@@ -510,15 +514,18 @@ static struct isl_constraint *isl_constr
- else
- constraint = isl_inequality_alloc(ls);
-
-- for (j = 0; j < nvariables; ++j)
-- isl_constraint_set_coefficient(constraint, isl_dim_out, j,
-- row[1 + j]);
--
-- for (j = 0; j < nparam; ++j)
-- isl_constraint_set_coefficient(constraint, isl_dim_param, j,
-- row[1 + nvariables + j]);
-+ for (j = 0; j < nvariables; ++j) {
-+ isl_val *val = cloog_int_to_isl_val(isl_constraint_get_ctx(constraint), row[1 + j]);
-+ isl_constraint_set_coefficient_val(constraint, isl_dim_out, j, val);
-+ }
-+
-+ for (j = 0; j < nparam; ++j) {
-+ isl_val *val = cloog_int_to_isl_val(isl_constraint_get_ctx(constraint), row[1 + nvariables + j]);
-+ isl_constraint_set_coefficient_val(constraint, isl_dim_param, j, val);
-+ }
-
-- isl_constraint_set_constant(constraint, row[1 + nvariables + nparam]);
-+ isl_val *val = cloog_int_to_isl_val(isl_constraint_get_ctx(constraint), row[1 + nvariables + nparam]);
-+ isl_constraint_set_constant_val(constraint, val);
-
- return constraint;
- }
-@@ -631,7 +638,6 @@ CloogDomain *cloog_domain_from_osl_relat
- return domain;
- }
-
--
- /**
- * Converts an openscop scattering relation to a CLooG scattering.
- * \param[in,out] state CLooG state.
-@@ -779,10 +785,22 @@ int cloog_domain_is_otl(CloogDomain *dom
- void cloog_domain_stride(CloogDomain *domain, int strided_level,
- cloog_int_t *stride, cloog_int_t *offset)
- {
-+ int ret = -1;
- isl_set *set = isl_set_from_cloog_domain(domain);
-- isl_set_dim_residue_class(set, strided_level - 1, stride, offset);
-- if (!isl_int_is_zero(*offset))
-- isl_int_sub(*offset, *stride, *offset);
-+ isl_val *stride_val = NULL;
-+ isl_val *offset_val = NULL;
-+ ret = isl_set_dim_residue_class_val(set, strided_level - 1, &stride_val, &offset_val);
-+ if (ret != 0)
-+ cloog_die("failure to compute stride.\n");
-+ isl_val_to_cloog_int(stride_val, stride);
-+ isl_val_to_cloog_int(offset_val, offset);
-+
-+ if (!cloog_int_is_zero(*offset))
-+ cloog_int_sub(*offset, *stride, *offset);
-+
-+ isl_val_free(stride_val);
-+ isl_val_free(offset_val);
-+
- return;
- }
-
-@@ -796,7 +814,7 @@ static int constraint_can_stride(__isl_t
- {
- struct cloog_can_stride *ccs = (struct cloog_can_stride *)user;
- int i;
-- isl_int v;
-+ isl_val *v;
- unsigned n_div;
-
- if (isl_constraint_is_equality(c)) {
-@@ -804,21 +822,22 @@ static int constraint_can_stride(__isl_t
- return 0;
- }
-
-- isl_int_init(v);
-- isl_constraint_get_coefficient(c, isl_dim_set, ccs->level - 1, &v);
-- if (isl_int_is_pos(v)) {
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, ccs->level - 1);
-+ if (isl_val_is_pos(v)) {
- n_div = isl_constraint_dim(c, isl_dim_div);
-+
- for (i = 0; i < n_div; ++i) {
-- isl_constraint_get_coefficient(c, isl_dim_div, i, &v);
-- if (!isl_int_is_zero(v))
-+ isl_val_free(v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_div, i);
-+ if (!isl_val_is_zero(v))
- break;
- }
- if (i < n_div)
- ccs->can_stride = 0;
- }
-- isl_int_clear(v);
-- isl_constraint_free(c);
-+ isl_val_free(v);
-
-+ isl_constraint_free(c);
- return 0;
- }
-
-@@ -903,7 +922,7 @@ struct cloog_stride_lower {
- static int constraint_stride_lower(__isl_take isl_constraint *c, void *user)
- {
- struct cloog_stride_lower *csl = (struct cloog_stride_lower *)user;
-- isl_int v;
-+ isl_val *v;
- isl_constraint *bound;
- isl_aff *b;
-
-@@ -912,31 +931,31 @@ static int constraint_stride_lower(__isl
- return 0;
- }
-
-- isl_int_init(v);
-- isl_constraint_get_coefficient(c, isl_dim_set, csl->level - 1, &v);
-- if (!isl_int_is_pos(v)) {
-- isl_int_clear(v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, csl->level - 1);
-+ if (!isl_val_is_pos(v)) {
-+ isl_val_free(v);
- isl_constraint_free(c);
-
- return 0;
- }
-+ isl_val_free(v);
-
- b = isl_constraint_get_bound(c, isl_dim_set, csl->level - 1);
-
- b = isl_aff_neg(b);
-- b = isl_aff_add_constant(b, csl->stride->offset);
-- b = isl_aff_scale_down(b, csl->stride->stride);
-+ b = isl_aff_add_constant_val(b, cloog_int_to_isl_val(isl_constraint_get_ctx(c), csl->stride->offset));
-+ b = isl_aff_scale_down_val(b, cloog_int_to_isl_val(isl_constraint_get_ctx(c), csl->stride->stride));
- b = isl_aff_floor(b);
-- b = isl_aff_scale(b, csl->stride->stride);
-- isl_int_neg(v, csl->stride->offset);
-- b = isl_aff_add_constant(b, v);
-+ b = isl_aff_scale_val(b, cloog_int_to_isl_val(isl_constraint_get_ctx(c), csl->stride->stride));
-+ v = cloog_int_to_isl_val(isl_constraint_get_ctx(c), csl->stride->offset);
-+ v = isl_val_neg(v);
-+ b = isl_aff_add_constant_val(b, v);
- b = isl_aff_add_coefficient_si(b, isl_dim_in, csl->level - 1, 1);
-
- bound = isl_inequality_from_aff(b);
-
- csl->bounds = isl_basic_set_add_constraint(csl->bounds, bound);
-
-- isl_int_clear(v);
- isl_constraint_free(c);
-
- return 0;
-@@ -960,7 +979,7 @@ static int constraint_stride_lower(__isl
- static int constraint_stride_lower_c(__isl_take isl_constraint *c, void *user)
- {
- struct cloog_stride_lower *csl = (struct cloog_stride_lower *)user;
-- isl_int v;
-+ isl_val *v;
- isl_constraint *bound;
- isl_constraint *csl_c;
- isl_aff *d, *b;
-@@ -970,10 +989,9 @@ static int constraint_stride_lower_c(__i
- return 0;
- }
-
-- isl_int_init(v);
-- isl_constraint_get_coefficient(c, isl_dim_set, csl->level - 1, &v);
-- if (!isl_int_is_pos(v)) {
-- isl_int_clear(v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, csl->level - 1);
-+ if (!isl_val_is_pos(v)) {
-+ isl_val_free(v);
- isl_constraint_free(c);
-
- return 0;
-@@ -984,15 +1002,15 @@ static int constraint_stride_lower_c(__i
- d = isl_constraint_get_aff(csl_c);
- d = isl_aff_drop_dims(d, isl_dim_div, 0, isl_aff_dim(d, isl_dim_div));
- d = isl_aff_set_coefficient_si(d, isl_dim_in, csl->level - 1, 0);
-- d = isl_aff_scale(d, csl->stride->factor);
-+ d = isl_aff_scale_val(d, cloog_int_to_isl_val(isl_constraint_get_ctx(csl_c), csl->stride->factor));
-
- b = isl_constraint_get_bound(c, isl_dim_set, csl->level - 1);
-
- b = isl_aff_neg(b);
- b = isl_aff_add(b, isl_aff_copy(d));
-- b = isl_aff_scale_down(b, csl->stride->stride);
-+ b = isl_aff_scale_down_val(b, cloog_int_to_isl_val(isl_constraint_get_ctx(csl_c), csl->stride->stride));
- b = isl_aff_floor(b);
-- b = isl_aff_scale(b, csl->stride->stride);
-+ b = isl_aff_scale_val(b, cloog_int_to_isl_val(isl_constraint_get_ctx(csl_c), csl->stride->stride));
- b = isl_aff_sub(b, d);
- b = isl_aff_add_coefficient_si(b, isl_dim_in, csl->level - 1, 1);
-
-@@ -1000,7 +1018,7 @@ static int constraint_stride_lower_c(__i
-
- csl->bounds = isl_basic_set_add_constraint(csl->bounds, bound);
-
-- isl_int_clear(v);
-+ isl_val_free(v);
- isl_constraint_free(c);
-
- return 0;
-@@ -1090,28 +1108,30 @@ struct cloog_bound_split {
- static int constraint_bound_split(__isl_take isl_constraint *c, void *user)
- {
- struct cloog_bound_split *cbs = (struct cloog_bound_split *)user;
-- isl_int v;
-+ isl_val *v;
- int i;
- int handle = 0;
-
-- isl_int_init(v);
-- isl_constraint_get_coefficient(c, isl_dim_set, cbs->level - 1, &v);
-- if (!cbs->lower && isl_int_is_pos(v))
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, cbs->level - 1);
-+ if (!cbs->lower && isl_val_is_pos(v))
- cbs->lower = handle = 1;
-- else if (!cbs->upper && isl_int_is_neg(v))
-+ else if (!cbs->upper && isl_val_is_neg(v))
- cbs->upper = handle = 1;
-+
- if (handle) {
- for (i = 0; i < isl_set_dim(cbs->set, isl_dim_param); ++i) {
-- isl_constraint_get_coefficient(c, isl_dim_param, i, &v);
-- if (isl_int_is_zero(v))
-+ isl_val_free(v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_param, i);
-+ if (isl_val_is_zero(v))
- continue;
-+
- cbs->set = isl_set_split_dims(cbs->set,
- isl_dim_param, i, 1);
- }
- }
-- isl_int_clear(v);
-- isl_constraint_free(c);
-+ isl_val_free(v);
-
-+ isl_constraint_free(c);
- return (cbs->lower && cbs->upper) ? -1 : 0;
- }
-
-@@ -1203,7 +1223,7 @@ static int injective_scattering(CloogSca
- * - scattdims is the total number of scattering dimentions.
- */
- int cloog_scattering_lazy_block(CloogScattering *s1, CloogScattering *s2,
-- CloogScatteringList *scattering, int scattdims)
-+ CloogScatteringList *scattering, int scattdims)
- {
- int i;
- struct isl_space *dim;
-@@ -1211,8 +1231,8 @@ int cloog_scattering_lazy_block(CloogSca
- struct isl_set *delta;
- isl_map *map1 = isl_map_from_cloog_scattering(s1);
- isl_map *map2 = isl_map_from_cloog_scattering(s2);
-- int fixed, block;
-- isl_int cst;
-+ int block;
-+ isl_val *cst;
- unsigned n_scat;
-
- n_scat = isl_map_dim(map1, isl_dim_out);
-@@ -1225,22 +1245,33 @@ int cloog_scattering_lazy_block(CloogSca
- rel = isl_map_apply_domain(rel, isl_map_copy(map1));
- rel = isl_map_apply_range(rel, isl_map_copy(map2));
- delta = isl_map_deltas(rel);
-- isl_int_init(cst);
-+ cst = NULL;
- for (i = 0; i < n_scat; ++i) {
-- fixed = isl_set_fast_dim_is_fixed(delta, i, &cst);
-- if (fixed != 1)
-+ cst = isl_set_plain_get_val_if_fixed(delta, isl_dim_set, i);
-+ if (!cst){
-+ isl_val_free(cst);
- break;
-- if (isl_int_is_zero(cst))
-+ }
-+ if (isl_val_is_zero(cst)){
-+ isl_val_free(cst);
- continue;
-- if (i + 1 < n_scat)
-+ }
-+ if (i + 1 < n_scat){
-+ isl_val_free(cst);
- break;
-- if (!isl_int_is_one(cst))
-+ }
-+ if (!isl_val_is_one(cst)){
-+ isl_val_free(cst);
- break;
-- if (!injective_scattering(scattering))
-+ }
-+ if (!injective_scattering(scattering)){
-+ isl_val_free(cst);
- break;
-+ }
-+
-+ isl_val_free(cst);
- }
- block = i >= n_scat;
-- isl_int_clear(cst);
- isl_set_free(delta);
- return block;
- }
-@@ -1345,10 +1376,25 @@ CloogDomain *cloog_domain_simplify_union
- * If value is not NULL, then it is set to the constant value of dimension.
- */
- int cloog_scattering_lazy_isscalar(CloogScattering *scatt, int dimension,
-- cloog_int_t *value)
-+ cloog_int_t *value)
- {
- isl_map *map = isl_map_from_cloog_scattering(scatt);
-- return isl_map_fast_is_fixed(map, isl_dim_out, dimension, value);
-+ isl_val *v = isl_map_plain_get_val_if_fixed(map, isl_dim_out, dimension);
-+ if (v != NULL) {
-+ if (!isl_val_is_nan(v)){
-+ if (value != NULL)
-+ isl_val_to_cloog_int(v, value);
-+
-+ isl_val_free(v);
-+ return 1;
-+ }
-+ else {
-+ isl_val_free(v);
-+ return 0;
-+ }
-+ }
-+
-+ return 0;
- }
-
-
-@@ -1362,7 +1408,22 @@ int cloog_domain_lazy_isconstant(CloogDo
- cloog_int_t *value)
- {
- isl_set *set = isl_set_from_cloog_domain(domain);
-- return isl_set_fast_dim_is_fixed(set, dimension, value);
-+ isl_val *cst = isl_set_plain_get_val_if_fixed(set, isl_dim_set, dimension);
-+ if (cst != NULL) {
-+ if (!isl_val_is_nan(cst)){
-+ if (value != NULL)
-+ isl_val_to_cloog_int(cst, value);
-+
-+ isl_val_free(cst);
-+ return 1;
-+ }
-+ else {
-+ isl_val_free(cst);
-+ return 0;
-+ }
-+ }
-+
-+ return 0;
- }
-
-
-@@ -1595,7 +1656,7 @@ static void Euclid(cloog_int_t a, cloog_
- cloog_int_mul(tmp, tmp, d);
- cloog_int_sub(c, c, tmp);
- cloog_int_swap(c, d);
-- cloog_int_swap(e, f);
-+ cloog_int_swap(e, f);
- }
- cloog_int_set(*g, c);
- if (cloog_int_is_zero(a))
-@@ -1631,49 +1692,70 @@ static void Euclid(cloog_int_t a, cloog_
- static CloogStride *construct_stride(isl_constraint *c, int level)
- {
- int i, n, sign;
-- isl_int v, m, gcd, stride, factor;
-+ isl_val *v, *m, *gcd, *stride;
-+ isl_val *v_copy, *m_copy, *gcd_copy;
-+ cloog_int_t c_v, c_m, c_gcd, c_stride, c_factor;
- CloogStride *s;
-+ isl_ctx *ctx = isl_constraint_get_ctx(c);;
-
- if (!c)
- return NULL;
-
-- isl_int_init(v);
-- isl_int_init(m);
-- isl_int_init(gcd);
-- isl_int_init(factor);
-- isl_int_init(stride);
--
-- isl_constraint_get_coefficient(c, isl_dim_set, level - 1, &v);
-- sign = isl_int_sgn(v);
-- isl_int_abs(m, v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, level - 1);
-
-- isl_int_set_si(gcd, 0);
-+ sign = isl_val_sgn(v);
-+ m = isl_val_abs(v); /* *takes* v. */
-+
-+ gcd = isl_val_int_from_si(ctx, 0);
- n = isl_constraint_dim(c, isl_dim_div);
- for (i = 0; i < n; ++i) {
-- isl_constraint_get_coefficient(c, isl_dim_div, i, &v);
-- isl_int_gcd(gcd, gcd, v);
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_div, i);
-+ gcd = isl_val_gcd(gcd, v);
- }
-
-- isl_int_gcd(v, m, gcd);
-- isl_int_divexact(stride, gcd, v);
-+ m_copy = isl_val_copy(m);
-+ gcd_copy = isl_val_copy(gcd);
-+
-+ v = isl_val_gcd(m, gcd);
-+
-+ v_copy = isl_val_copy(v);
-+ gcd = isl_val_copy(gcd_copy);
-+ stride = isl_val_div(gcd, v);
-
-- if (isl_int_is_zero(stride) || isl_int_is_one(stride))
-+ if (isl_val_is_zero(stride) || isl_val_is_one(stride))
- s = NULL;
- else {
-- Euclid(m, stride, &factor, &v, &gcd);
-+ cloog_int_init(c_m);
-+ cloog_int_init(c_stride);
-+ cloog_int_init(c_v);
-+ cloog_int_init(c_gcd);
-+ cloog_int_init(c_factor);
-+
-+ isl_val_to_cloog_int(m_copy, &c_m);
-+ isl_val_to_cloog_int(stride, &c_stride);
-+ isl_val_to_cloog_int(v_copy, &c_v);
-+ isl_val_to_cloog_int(gcd_copy, &c_gcd);
-+
-+ Euclid(c_m, c_stride, &c_factor, &c_v, &c_gcd);
- if (sign > 0)
-- isl_int_neg(factor, factor);
-+ cloog_int_neg(c_factor, c_factor);
-
- c = isl_constraint_copy(c);
-- s = cloog_stride_alloc_from_constraint(stride,
-- cloog_constraint_from_isl_constraint(c), factor);
-+ s = cloog_stride_alloc_from_constraint(c_stride,
-+ cloog_constraint_from_isl_constraint(c), c_factor);
-+
-+
-+ cloog_int_clear(c_m);
-+ cloog_int_clear(c_stride);
-+ cloog_int_clear(c_v);
-+ cloog_int_clear(c_gcd);
-+ cloog_int_clear(c_factor);
- }
-
-- isl_int_clear(stride);
-- isl_int_clear(factor);
-- isl_int_clear(gcd);
-- isl_int_clear(m);
-- isl_int_clear(v);
-+ isl_val_free(stride);
-+ isl_val_free(gcd_copy);
-+ isl_val_free(m_copy);
-+ isl_val_free(v_copy);
-
- return s;
- }
-@@ -1694,7 +1776,7 @@ static int find_stride(__isl_take isl_co
- {
- struct cloog_isl_find_stride_data *data;
- int n;
-- isl_int v;
-+ isl_val *v;
-
- if (!isl_constraint_is_equality(c)) {
- isl_constraint_free(c);
-@@ -1714,13 +1796,11 @@ static int find_stride(__isl_take isl_co
- return 0;
- }
-
-- isl_int_init(v);
--
-- isl_constraint_get_coefficient(c, isl_dim_set, data->level - 1, &v);
-- if (!isl_int_is_zero(v))
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, data->level - 1);
-+ if (!isl_val_is_zero(v))
- data->stride = construct_stride(c, data->level);
-
-- isl_int_clear(v);
-+ isl_val_free(v);
-
- isl_constraint_free(c);
-
-@@ -1769,7 +1849,7 @@ struct cloog_can_unroll {
- int level;
- isl_constraint *c;
- isl_set *set;
-- isl_int *n;
-+ isl_val *n;
- };
-
-
-@@ -1782,11 +1862,11 @@ struct cloog_can_unroll {
- * with l the given lower bound and i the iterator identified by level.
- */
- static int is_valid_unrolling_lower_bound(struct cloog_can_unroll *ccu,
-- __isl_keep isl_constraint *c, isl_int *v)
-+ __isl_keep isl_constraint *c, isl_val **v)
- {
- unsigned n_div;
- isl_aff *aff;
-- enum isl_lp_result res;
-+ enum isl_lp_result;
-
- n_div = isl_constraint_dim(c, isl_dim_div);
- if (isl_constraint_involves_dims(c, isl_dim_div, 0, n_div))
-@@ -1796,15 +1876,19 @@ static int is_valid_unrolling_lower_boun
- aff = isl_aff_ceil(aff);
- aff = isl_aff_neg(aff);
- aff = isl_aff_add_coefficient_si(aff, isl_dim_in, ccu->level - 1, 1);
-- res = isl_set_max(ccu->set, aff, v);
-+ *v = isl_set_max_val(ccu->set, aff);
- isl_aff_free(aff);
-
-- if (res == isl_lp_unbounded)
-- return 0;
-+ if (!*v || isl_val_is_nan(*v))
-+ cloog_die("Fail to decide about unrolling (cannot find max)");
-
-- assert(res == isl_lp_ok);
-+ if (isl_val_is_infty(*v) || isl_val_is_neginfty(*v)){
-+ isl_val_free(*v);
-+ *v = NULL;
-+ return 0;
-+ }
-
-- cloog_int_add_ui(*v, *v, 1);
-+ *v = isl_val_add_ui(*v, 1);
-
- return 1;
- }
-@@ -1818,21 +1902,21 @@ static int is_valid_unrolling_lower_boun
- static int constraint_can_unroll(__isl_take isl_constraint *c, void *user)
- {
- struct cloog_can_unroll *ccu = (struct cloog_can_unroll *)user;
-- isl_int v;
-- isl_int count;
-+ isl_val *v;
-+ isl_val *count = NULL;
-
-- isl_int_init(v);
-- isl_int_init(count);
-- isl_constraint_get_coefficient(c, isl_dim_set, ccu->level - 1, &v);
-- if (isl_int_is_pos(v) &&
-- is_valid_unrolling_lower_bound(ccu, c, &count) &&
-- (!ccu->c || isl_int_lt(count, *ccu->n))) {
-+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, ccu->level - 1);
-+ if (isl_val_is_pos(v) &&
-+ is_valid_unrolling_lower_bound(ccu, c, &count) &&
-+ (!ccu->c || (isl_val_lt(count, ccu->n))) ) {
- isl_constraint_free(ccu->c);
- ccu->c = isl_constraint_copy(c);
-- isl_int_set(*ccu->n, count);
-+ if (ccu->n)
-+ isl_val_free(ccu->n);
-+ ccu->n = isl_val_copy(count);
- }
-- isl_int_clear(count);
-- isl_int_clear(v);
-+ isl_val_free(count);
-+ isl_val_free(v);
- isl_constraint_free(c);
-
- return 0;
-@@ -1872,7 +1956,8 @@ int cloog_domain_can_unroll(CloogDomain
- CloogConstraint **lb)
- {
- isl_set *set = isl_set_from_cloog_domain(domain);
-- struct cloog_can_unroll ccu = { 1, level, NULL, set, n };
-+ isl_val *v = cloog_int_to_isl_val(isl_set_get_ctx(set), *n);
-+ struct cloog_can_unroll ccu = { 1, level, NULL, set, v };
- int r;
-
- *lb = NULL;
-@@ -1887,6 +1972,11 @@ int cloog_domain_can_unroll(CloogDomain
-
- *lb = cloog_constraint_from_isl_constraint(ccu.c);
-
-+ isl_val_to_cloog_int(ccu.n, n);
-+ /* Note: we have to free ccu.n and not v because v has been
-+ * freed and replaced in ccu during isl_set_foreach_basic_set
-+ */
-+ isl_val_free(ccu.n);
- return ccu.can_unroll;
- }
-
-@@ -1904,6 +1994,7 @@ CloogDomain *cloog_domain_fixed_offset(C
- {
- isl_aff *aff;
- isl_set *set = isl_set_from_cloog_domain(domain);
-+ isl_ctx *ctx = isl_set_get_ctx(set);
- isl_constraint *c;
- isl_constraint *eq;
-
-@@ -1911,7 +2002,7 @@ CloogDomain *cloog_domain_fixed_offset(C
- aff = isl_constraint_get_bound(c, isl_dim_set, level - 1);
- aff = isl_aff_ceil(aff);
- aff = isl_aff_add_coefficient_si(aff, isl_dim_in, level - 1, -1);
-- aff = isl_aff_add_constant(aff, offset);
-+ aff = isl_aff_add_constant_val(aff, cloog_int_to_isl_val(ctx, offset));
- eq = isl_equality_from_aff(aff);
- set = isl_set_add_constraint(set, eq);
-