[packages/cloog-isl/DEVEL-isl-0.19] - added isl-update patch from git (needed to build with isl 0.19)
qboosh
qboosh at pld-linux.org
Sun Apr 1 23:43:24 CEST 2018
commit 5615b4bfd360e14bcba59ac08c4cbbe6aeecd859
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Apr 1 23:43:08 2018 +0200
- added isl-update patch from git (needed to build with isl 0.19)
cloog-isl-update.patch | 527 +++++++++++++++++++++++++++++++++++++++++++++++++
cloog-isl.spec | 11 +-
2 files changed, 534 insertions(+), 4 deletions(-)
---
diff --git a/cloog-isl.spec b/cloog-isl.spec
index 3338b23..0af6130 100644
--- a/cloog-isl.spec
+++ b/cloog-isl.spec
@@ -2,7 +2,7 @@
# Conditional build:
%bcond_without osl # OpenScop support
#
-%define isl_ver 0.18
+%define isl_ver 0.19
Summary: The Chunky Loop Generator
Summary(pl.UTF-8): Chunky Loop Generator - generator pętli cząstkowych
Name: cloog-isl
@@ -15,6 +15,8 @@ Group: Development/Tools
#Source0Download: https://github.com/periscop/cloog/releases
Source0: https://github.com/periscop/cloog/releases/download/cloog-%{version}/cloog-%{version}.tar.gz
# Source0-md5: 7e9058076193d8f53aae40cab94ad017
+# git diff HEAD..origin/update-isl
+Patch0: cloog-isl-update.patch
URL: http://www.cloog.org/
BuildRequires: autoconf >= 2.53
BuildRequires: automake
@@ -22,7 +24,7 @@ BuildRequires: gmp-devel >= 5.0.2
BuildRequires: gmp-c++-devel >= 5.0.2
BuildRequires: isl-devel >= %{isl_ver}
BuildRequires: libtool
-%{?with_osl:BuildRequires: osl-devel >= 0.9.1}
+%{?with_osl:BuildRequires: osl-devel >= 0.9.2}
BuildRequires: texinfo-texi2dvi
Requires: %{name}-libs = %{version}-%{release}
Provides: cloog = %{version}
@@ -53,7 +55,7 @@ Summary: Chunky Loop Generator shared library - isl based version
Summary(pl.UTF-8): Biblioteka współdzielona Chunky Loop Generatora - wersja oparta na isl
Group: Libraries
Requires: isl >= %{isl_ver}
-%{?with_osl:Requires: osl >= 0.9.1}
+%{?with_osl:Requires: osl >= 0.9.2}
%description libs
Chunky Loop Generator shared library - isl based version.
@@ -70,7 +72,7 @@ Requires: %{name}-libs = %{version}-%{release}
Requires: gmp-devel >= 5.0.2
Requires: gmp-c++-devel >= 5.0.2
Requires: isl-devel >= %{isl_ver}
-%{?with_osl:Requires: osl-devel >= 0.9.1}
+%{?with_osl:Requires: osl-devel >= 0.9.2}
Provides: cloog-devel = %{version}
%description devel
@@ -93,6 +95,7 @@ Statyczna biblioteka opartej na isl wersji Chunky Loop Generatora.
%prep
%setup -q -n cloog-%{version}
+%patch0 -p1
%build
%{__libtoolize}
diff --git a/cloog-isl-update.patch b/cloog-isl-update.patch
new file mode 100644
index 0000000..51209da
--- /dev/null
+++ b/cloog-isl-update.patch
@@ -0,0 +1,527 @@
+#diff --git a/.gitmodules b/.gitmodules
+#index 5180bb6..26afac3 100644
+#--- a/.gitmodules
+#+++ b/.gitmodules
+#@@ -1,6 +1,8 @@
+# [submodule "isl"]
+# path = isl
+# url = git://repo.or.cz/isl.git
+#+ ignore = dirty
+# [submodule "osl"]
+# path = osl
+# url = https://github.com/periscop/openscop.git
+#+ ignore = dirty
+#diff --git a/isl b/isl
+#index 362c91b..0ce949a 160000
+#--- a/isl
+#+++ b/isl
+#@@ -1 +1 @@
+#-Subproject commit 362c91b6daeb3fd3c9d6f921fd04f55db64f7763
+#+Subproject commit 0ce949a1277de2e3121ed5715bdde639d6f4ba0f
+#diff --git a/osl b/osl
+#index 403e15a..f32f625 160000
+#--- a/osl
+#+++ b/osl
+#@@ -1 +1 @@
+#-Subproject commit 403e15a962e98330bc263a379d5629cae3393a68
+#+Subproject commit f32f625e26eff3290577b00053a56b98c4960104
+diff --git a/source/isl/constraints.c b/source/isl/constraints.c
+index 84d2156..0020367 100644
+--- a/source/isl/constraints.c
++++ b/source/isl/constraints.c
+@@ -513,7 +513,9 @@ static struct cloog_isl_dim constraint_cloog_dim_to_isl_dim(
+ }
+ pos -= dim;
+ }
+- assert(0);
++
++ ci_dim.pos = -1;
++ return ci_dim;
+ }
+
+ static struct clast_expr *div_expr(CloogConstraint *constraint, int pos,
+@@ -534,6 +536,9 @@ static struct clast_expr *div_expr(CloogConstraint *constraint, int pos,
+ struct cloog_isl_dim dim;
+
+ dim = constraint_cloog_dim_to_isl_dim(constraint, i);
++ if (dim.pos <= -1)
++ continue;
++
+ if (dim.type == isl_dim_set)
+ dim.type = isl_dim_in;
+ c = isl_aff_get_coefficient_val(div, dim.type, dim.pos);
+@@ -553,6 +558,9 @@ static struct clast_expr *div_expr(CloogConstraint *constraint, int pos,
+ struct cloog_isl_dim dim;
+
+ dim = constraint_cloog_dim_to_isl_dim(constraint, i);
++ if (dim.pos <= -1)
++ continue;
++
+ if (dim.type == isl_dim_set)
+ dim.type = isl_dim_in;
+ c = isl_aff_get_coefficient_val(div, dim.type, dim.pos);
+@@ -620,35 +628,44 @@ struct clast_expr *cloog_constraint_variable_expr(CloogConstraint *constraint,
+ */
+ int cloog_constraint_involves(CloogConstraint *constraint, int v)
+ {
+- isl_val *c;
+- int res;
++ int res = 0;
+
+- c = cloog_constraint_coefficient_get_val(constraint, v);
+- res = !isl_val_is_zero(c);
+- isl_val_free(c);
+- return res;
++ isl_val* const val = cloog_constraint_coefficient_get_val(constraint, v);
++ if (val)
++ {
++ res = !isl_val_is_zero(val);
++ isl_val_free(val);
++ }
++
++ return res;
+ }
+
+ int cloog_constraint_is_lower_bound(CloogConstraint *constraint, int v)
+ {
+- isl_val *c;
+- int res;
++ int res = 0;
+
+- c = cloog_constraint_coefficient_get_val(constraint, v);
+- res = isl_val_is_pos(c);
+- isl_val_free(c);
+- return res;
++ isl_val* const val = cloog_constraint_coefficient_get_val(constraint, v);
++ if (val)
++ {
++ res = isl_val_is_pos(val);
++ isl_val_free(val);
++ }
++
++ return res;
+ }
+
+ int cloog_constraint_is_upper_bound(CloogConstraint *constraint, int v)
+ {
+- isl_val *c;
+- int res;
++ int res = 0;
+
+- c = cloog_constraint_coefficient_get_val(constraint, v);
+- res = isl_val_is_neg(c);
+- isl_val_free(c);
+- return res;
++ isl_val* const val = cloog_constraint_coefficient_get_val(constraint, v);
++ if (val)
++ {
++ res = isl_val_is_neg(val);
++ isl_val_free(val);
++ }
++
++ return res;
+ }
+
+ int cloog_constraint_is_equality(CloogConstraint *constraint)
+@@ -656,16 +673,51 @@ int cloog_constraint_is_equality(CloogConstraint *constraint)
+ return isl_constraint_is_equality(cloog_constraint_to_isl(constraint));
+ }
+
++typedef struct cloog_drop_constraint_data
++{
++ isl_constraint* constraint;
++ isl_basic_set* basic_set;
++} cloog_drop_constraint_data;
++
++static inline isl_stat cloog_basic_set_ignore_constraint(
++ __isl_take isl_constraint* const c, void* const user)
++{
++ cloog_drop_constraint_data* const data = user;
++ isl_constraint* const ignore = data->constraint;
++
++ isl_aff* a1 = isl_constraint_get_aff(c);
++ isl_aff* a2 = isl_constraint_get_aff(ignore);
++ isl_pw_aff* pw1 = isl_pw_aff_from_aff(a1);
++ isl_pw_aff* pw2 = isl_pw_aff_from_aff(a2);
++
++ if (!isl_pw_aff_is_equal(pw1, pw2))
++ data->basic_set = isl_basic_set_add_constraint(data->basic_set, c);
++ else
++ isl_constraint_free(c);
++
++ isl_pw_aff_free(pw1);
++ isl_pw_aff_free(pw2);
++
++ return isl_stat_ok;
++}
++
+ CloogConstraintSet *cloog_constraint_set_drop_constraint(
+ CloogConstraintSet *constraints, CloogConstraint *constraint)
+ {
+- isl_basic_set *bset;
+- isl_constraint *c;
++ isl_basic_set* bset = cloog_constraints_set_to_isl(constraints);
++ isl_constraint* c = cloog_constraint_to_isl(cloog_constraint_copy(constraint));
+
+- bset = cloog_constraints_set_to_isl(constraints);
+- c = cloog_constraint_to_isl(cloog_constraint_copy(constraint));
+- bset = isl_basic_set_drop_constraint(bset, c);
+- return cloog_constraint_set_from_isl_basic_set(bset);
++ isl_space* space = isl_basic_set_get_space(bset);
++ isl_basic_set* result = isl_basic_set_universe(space);
++ cloog_drop_constraint_data data = { .basic_set = result, .constraint = c, };
++ isl_basic_set_foreach_constraint(
++ bset, cloog_basic_set_ignore_constraint, &data);
++
++ isl_basic_set_free(bset);
++ isl_constraint_free(c);
++
++ result = data.basic_set;
++ return cloog_constraint_set_from_isl_basic_set(result);
+ }
+
+ void cloog_constraint_coefficient_get(CloogConstraint *constraint,
+@@ -689,17 +741,17 @@ void cloog_constraint_coefficient_get(CloogConstraint *constraint,
+ 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;
+
+- if (!constraint)
+- return NULL;
++ struct cloog_isl_dim dim = constraint_cloog_dim_to_isl_dim(constraint, var);
++ isl_constraint* const c = cloog_constraint_to_isl(constraint);
+
+- 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;
++ isl_val *val = NULL;
++ if (dim.pos > -1)
++ val = isl_constraint_get_coefficient_val(c, dim.type, dim.pos);
++
++ return val;
+ }
+
+
+@@ -707,15 +759,18 @@ isl_val *cloog_constraint_coefficient_get_val(CloogConstraint *constraint,
+ void cloog_constraint_coefficient_set(CloogConstraint *constraint,
+ int var, cloog_int_t val)
+ {
+- struct cloog_isl_dim dim;
+- isl_constraint *c;
++ struct cloog_isl_dim dim;
++ isl_constraint *c;
+
+- assert(constraint);
++ assert(constraint);
+
+- dim = constraint_cloog_dim_to_isl_dim(constraint, var);
+- c = cloog_constraint_to_isl(constraint);
+- isl_constraint_set_coefficient_val(c, dim.type, dim.pos,
+- cloog_int_to_isl_val(isl_constraint_get_ctx(c), val));
++ dim = constraint_cloog_dim_to_isl_dim(constraint, var);
++ if (dim.pos <= -1)
++ return;
++
++ c = cloog_constraint_to_isl(constraint);
++ 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)
+diff --git a/source/isl/domain.c b/source/isl/domain.c
+index eb3a962..06d77b0 100644
+--- a/source/isl/domain.c
++++ b/source/isl/domain.c
+@@ -58,8 +58,12 @@ CloogConstraintSet *cloog_domain_constraints(CloogDomain *domain)
+ {
+ isl_basic_set *bset;
+ isl_set *set = isl_set_from_cloog_domain(domain);
++ isl_basic_set_list *list;
+ assert(isl_set_n_basic_set(set) == 1);
+- bset = isl_set_copy_basic_set(set);
++
++ list = isl_set_get_basic_set_list(set);
++ bset = isl_basic_set_list_get_basic_set(list, 0);
++ isl_basic_set_list_free(list);
+ return cloog_constraint_set_from_isl_basic_set(bset);
+ }
+
+@@ -70,6 +74,7 @@ void cloog_domain_print_constraints(FILE *foo, CloogDomain *domain,
+ isl_printer *p;
+ isl_basic_set *bset;
+ isl_set *set = isl_set_from_cloog_domain(domain);
++ isl_basic_set_list *list;
+
+ p = isl_printer_to_file(isl_set_get_ctx(set), foo);
+ if (print_number) {
+@@ -77,7 +82,9 @@ void cloog_domain_print_constraints(FILE *foo, CloogDomain *domain,
+ p = isl_printer_print_set(p, set);
+ } else {
+ assert(isl_set_n_basic_set(set) == 1);
+- bset = isl_set_copy_basic_set(set);
++ list = isl_set_get_basic_set_list(set);
++ bset = isl_basic_set_list_get_basic_set(list, 0);
++ isl_basic_set_list_free(list);
+ p = isl_printer_set_output_format(p, ISL_FORMAT_POLYLIB);
+ p = isl_printer_print_basic_set(p, bset);
+ isl_basic_set_free(bset);
+@@ -230,6 +237,7 @@ void cloog_domain_sort(CloogDomain **doms, unsigned nb_doms, unsigned level,
+ unsigned char **follows;
+ isl_set *set_i, *set_j;
+ isl_basic_set *bset_i, *bset_j;
++ isl_basic_set_list *list_i, *list_j;
+
+ if (!nb_doms)
+ return;
+@@ -255,8 +263,12 @@ void cloog_domain_sort(CloogDomain **doms, unsigned nb_doms, unsigned level,
+ continue;
+ set_i = isl_set_from_cloog_domain(doms[i]);
+ set_j = isl_set_from_cloog_domain(doms[j]);
+- bset_i = isl_set_copy_basic_set(set_i);
+- bset_j = isl_set_copy_basic_set(set_j);
++ list_i = isl_set_get_basic_set_list(set_i);
++ list_j = isl_set_get_basic_set_list(set_j);
++ bset_i = isl_basic_set_list_get_basic_set(list_i, 0);
++ bset_j = isl_basic_set_list_get_basic_set(list_j, 0);
++ isl_basic_set_list_free(list_i);
++ isl_basic_set_list_free(list_j);
+ cmp = isl_basic_set_compare_at(bset_i, bset_j, level-1);
+ isl_basic_set_free(bset_i);
+ isl_basic_set_free(bset_j);
+@@ -574,6 +586,39 @@ static struct isl_basic_set *isl_basic_set_read_from_matrix(struct isl_ctx *ctx,
+ return bset;
+ }
+
++/**
++ * isl_basic_map_read_from_matrix:
++ * Convert matrix to basic_map. The matrix contains nparam parameter columns.
++ * Returns a pointer to the basic_map if successful; NULL otherwise.
++ */
++static isl_basic_map *isl_basic_map_read_from_matrix(isl_ctx *ctx,
++ CloogMatrix* matrix, int nparam, int n_in)
++{
++ struct isl_space *dim;
++ struct isl_basic_map *bmap;
++ int i;
++ unsigned nrows, ncolumns;
++
++ nrows = matrix->NbRows;
++ ncolumns = matrix->NbColumns;
++ int nvariables = ncolumns - 2 - nparam;
++
++ dim = isl_space_alloc(ctx, nparam, n_in, nvariables - n_in);
++
++ bmap = isl_basic_map_universe(isl_space_copy(dim));
++
++ for (i = 0; i < nrows; ++i) {
++ cloog_int_t *row = matrix->p[i];
++ struct isl_constraint *constraint =
++ isl_constraint_read_from_matrix(isl_space_copy(dim), row);
++ bmap = isl_basic_map_add_constraint(bmap, constraint);
++ }
++
++ isl_space_free(dim);
++
++ return bmap;
++}
++
+ /**
+ * cloog_domain_from_cloog_matrix:
+ * Create a CloogDomain containing the constraints described in matrix.
+@@ -601,16 +646,9 @@ CloogScattering *cloog_scattering_from_cloog_matrix(CloogState *state,
+ CloogMatrix *matrix, int nb_scat, int nb_par)
+ {
+ struct isl_ctx *ctx = state->backend->ctx;
+- struct isl_basic_set *bset;
+ struct isl_basic_map *scat;
+- struct isl_space *dims;
+- unsigned dim;
+
+- bset = isl_basic_set_read_from_matrix(ctx, matrix, nb_par);
+- dim = isl_basic_set_n_dim(bset) - nb_scat;
+- dims = isl_space_alloc(ctx, nb_par, nb_scat, dim);
+-
+- scat = isl_basic_map_from_basic_set(bset, dims);
++ scat = isl_basic_map_read_from_matrix(ctx, matrix, nb_par, nb_scat);
+ scat = isl_basic_map_reverse(scat);
+ return cloog_scattering_from_isl_map(isl_map_from_basic_map(scat));
+ }
+@@ -1351,10 +1389,22 @@ int cloog_domain_isconvex(CloogDomain * domain)
+ CloogDomain *cloog_domain_cut_first(CloogDomain *domain, CloogDomain **rest)
+ {
+ isl_set *set = isl_set_from_cloog_domain(domain);
+- struct isl_basic_set *first;
++ isl_basic_set *first;
++ isl_basic_set_list *list;
++ int i, n;
+
+- first = isl_set_copy_basic_set(set);
+- set = isl_set_drop_basic_set(set, first);
++ list = isl_set_get_basic_set_list(set);
++ isl_set_free(set);
++ n = isl_basic_set_list_n_basic_set(list);
++ assert(n > 0);
++
++ first = isl_basic_set_list_get_basic_set(list, 0);
++ set = isl_set_empty(isl_basic_set_get_space(first));
++ for (i = 1; i < n; ++i) {
++ set = isl_set_union(set, isl_set_from_basic_set(
++ isl_basic_set_list_get_basic_set(list, i)));
++ }
++ isl_basic_set_list_free(list);
+ *rest = cloog_domain_from_isl_set(set);
+
+ return cloog_domain_from_isl_set(isl_set_from_basic_set(first));
+diff --git a/test/checker.sh b/test/checker.sh
+index f94ff37..07d18b1 100755
+--- a/test/checker.sh
++++ b/test/checker.sh
+@@ -319,7 +319,7 @@ for x in $TEST_FILES; do
+
+ print_step "$input" "$STEP_GENERATING_HYBRID" "$input_log"
+ $cloog $options -q -callable 1 "$input" -o test_test_$$.c;
+- $generate_test "$input" test_main_$$.c >/dev/null 2>>$input_log
++ $generate_test "$input" test_main_$$.c $options >/dev/null 2>>$input_log
+
+ print_step "$input" "$STEP_COMPILING_HYBRID" "$input_log"
+ fix_env_compile
+diff --git a/test/dartef.f b/test/dartef.f
+index 6786bab..10d02f8 100644
+--- a/test/dartef.f
++++ b/test/dartef.f
+@@ -1,4 +1,4 @@
+-! Generated from ../test/dartef.cloog by CLooG 0.18.4-dac762f gmp bits in 0.06s.
++! Generated from test/dartef.cloog by CLooG 0.18.5-2439d87 gmp bits in 0.05s.
+ IF (n >= 1) THEN
+ DO t3=n+3, 3*n+1
+ IF (MOD(t3+n+1, 2) == 0) THEN
+@@ -46,11 +46,6 @@ IF (n >= 1) THEN
+ END IF
+ END DO
+ END DO
+- IF (t1 <= -1) THEN
+- DO t3=1, n
+- S2((t1+n-1),n,t3)
+- END DO
+- END IF
+ DO t2=-t1+2*n+1, MIN(-t1+2*n+3,t1+2*n+1)
+ DO t3=1, n
+ IF (MOD(t1+t2+1, 2) == 0) THEN
+@@ -58,6 +53,11 @@ IF (n >= 1) THEN
+ END IF
+ END DO
+ END DO
++ IF (t1 <= -1) THEN
++ DO t3=1, n
++ S2((t1+n-1),n,t3)
++ END DO
++ END IF
+ END DO
+ DO t3=1, n
+ S2(n,1,t3)
+diff --git a/test/generate_test_advanced.c b/test/generate_test_advanced.c
+index d0708b0..81ea3b7 100644
+--- a/test/generate_test_advanced.c
++++ b/test/generate_test_advanced.c
+@@ -55,6 +55,7 @@ struct bounds {
+ } lowerbound;
+ };
+
++#ifdef DEBUG
+ static void print_bounds(FILE *out, struct bounds *bounds) {
+ unsigned end = bounds->names.nb_names;
+ unsigned i;
+@@ -68,6 +69,7 @@ static void print_bounds(FILE *out, struct bounds *bounds) {
+ fprintf(out, "\n");
+ }
+ }
++#endif
+
+
+ #define get_lowerbound(bounds,where) ( (bounds)->lowerbound.value->p[(where)] )
+@@ -232,7 +234,7 @@ static bool get_expression_reduction_bound(struct clast_reduction *reduc,
+ char which_bound,
+ cloog_int_t *bound) {
+
+- bool valid;
++ bool valid = false;
+ switch (reduc->type) {
+ case clast_red_sum:
+ valid = get_expression_reduction_sum_bound(reduc, bounds,
+@@ -255,7 +257,7 @@ static bool get_expression_bin_bound(struct clast_binary *bin,
+ char which_bound,
+ cloog_int_t *bound) {
+
+- bool valid;
++ bool valid = false;
+
+ switch (bin->type) {
+ case clast_bin_div:
+@@ -287,7 +289,7 @@ static bool get_expression_bound(struct clast_expr *expr,
+ char which_bound,
+ cloog_int_t *bound) {
+
+- bool valid;
++ bool valid = false;
+ switch (expr->type) {
+ case clast_expr_name :
+ valid = get_expression_name_bound((struct clast_name*) expr,
+@@ -599,7 +601,7 @@ static bool update_expr_red_bound(struct clast_reduction *reduction,
+ cloog_int_t value, struct bounds *bounds, char which_bound,
+ cloog_int_t div) {
+
+- bool retval;
++ bool retval = false;
+
+ switch (reduction->type) {
+ case clast_red_sum:
+@@ -902,7 +904,7 @@ static inline void print_help(FILE *out) {
+ fprintf(out, "\x1b[1m%s\x1b[0m", help);
+ }
+
+-static const char getopt_flags[] = "ohl:u:m:";
++static const char getopt_flags[] = "+ohl:u:m:";
+
+ int main(int argc, char **argv) {
+
+@@ -943,12 +945,14 @@ int main(int argc, char **argv) {
+ break;
+ }
+ }
+- if ((argc - optind) != 2) {
++
++ if ((argc - optind) < 2) {
+ fprintf(stderr,
+ "\x1b[1m\x1b[31mError: Bad arguments\x1b[0m\n\n");
+ print_help(stderr);
+ return EXIT_FAILURE;
+ }
++
+ input_name = argv[optind];
+ output_name = argv[optind + 1];
+
+@@ -979,7 +983,17 @@ int main(int argc, char **argv) {
+ }
+
+ state = cloog_state_malloc();
+- options = cloog_options_malloc(state);
++ FILE *input = NULL, *output = NULL;
++ cloog_options_read(state, argc-1, argv+1, &input, &output, &options);
++ if (input != NULL && input != stdin)
++ fclose(input);
++ if (output != NULL && output != stdout)
++ fclose(output);
++ options->name = NULL; // No need to free because it is pointing to argv ...
++#ifdef DEBUG
++ cloog_options_print(stderr, options);
++#endif
++
+ if (set_openscop_option)
+ options->openscop = 1;
+ program = cloog_program_read(input_file, options);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/cloog-isl.git/commitdiff/5615b4bfd360e14bcba59ac08c4cbbe6aeecd859
More information about the pld-cvs-commit
mailing list