[polly] r236932 - Update isl to c3892bebc0

Tobias Grosser tobias at grosser.es
Sat May 9 02:37:36 PDT 2015


Author: grosser
Date: Sat May  9 04:37:30 2015
New Revision: 236932

URL: http://llvm.org/viewvc/llvm-project?rev=236932&view=rev
Log:
Update isl to c3892bebc0

Various smaller improvements and bugfixes.

Removed:
    polly/trunk/lib/External/isl/include/isl/dim.h
    polly/trunk/lib/External/isl/isl_dim.c
Modified:
    polly/trunk/lib/CMakeLists.txt
    polly/trunk/lib/External/isl/AUTHORS
    polly/trunk/lib/External/isl/ChangeLog
    polly/trunk/lib/External/isl/Makefile.am
    polly/trunk/lib/External/isl/basis_reduction_tab.c
    polly/trunk/lib/External/isl/basis_reduction_templ.c
    polly/trunk/lib/External/isl/codegen.c
    polly/trunk/lib/External/isl/configure.ac
    polly/trunk/lib/External/isl/include/isl/aff.h
    polly/trunk/lib/External/isl/include/isl/constraint.h
    polly/trunk/lib/External/isl/include/isl/map.h
    polly/trunk/lib/External/isl/include/isl/point.h
    polly/trunk/lib/External/isl/include/isl/polynomial.h
    polly/trunk/lib/External/isl/include/isl/set.h
    polly/trunk/lib/External/isl/include/isl/union_map.h
    polly/trunk/lib/External/isl/include/isl/union_set.h
    polly/trunk/lib/External/isl/isl_ast_build.c
    polly/trunk/lib/External/isl/isl_ast_build_expr.c
    polly/trunk/lib/External/isl/isl_ast_codegen.c
    polly/trunk/lib/External/isl/isl_coalesce.c
    polly/trunk/lib/External/isl/isl_flow.c
    polly/trunk/lib/External/isl/isl_fold.c
    polly/trunk/lib/External/isl/isl_input.c
    polly/trunk/lib/External/isl/isl_map.c
    polly/trunk/lib/External/isl/isl_map_list.c
    polly/trunk/lib/External/isl/isl_map_simplify.c
    polly/trunk/lib/External/isl/isl_map_subtract.c
    polly/trunk/lib/External/isl/isl_obj.c
    polly/trunk/lib/External/isl/isl_scheduler.c
    polly/trunk/lib/External/isl/isl_set_list.c
    polly/trunk/lib/External/isl/isl_space.c
    polly/trunk/lib/External/isl/isl_tab_pip.c
    polly/trunk/lib/External/isl/isl_test.c
    polly/trunk/lib/External/isl/isl_transitive_closure.c
    polly/trunk/lib/Makefile
    polly/trunk/test/DependenceInfo/sequential_loops.ll

Modified: polly/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CMakeLists.txt?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/CMakeLists.txt (original)
+++ polly/trunk/lib/CMakeLists.txt Sat May  9 04:37:30 2015
@@ -36,7 +36,6 @@ set (ISL_FILES
     External/isl/isl_convex_hull.c
     External/isl/isl_ctx.c
     External/isl/isl_deprecated.c
-    External/isl/isl_dim.c
     External/isl/isl_dim_map.c
     External/isl/isl_equalities.c
     External/isl/isl_factorization.c

Modified: polly/trunk/lib/External/isl/AUTHORS
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/AUTHORS?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/AUTHORS (original)
+++ polly/trunk/lib/External/isl/AUTHORS Sat May  9 04:37:30 2015
@@ -34,6 +34,7 @@ Johannes Doerfert
 Tobias Grosser
 Alexandre Isoard
 Andreas Kloeckner
+Michael Kruse
 Sebastian Pop
 Louis-Noel Pouchet
 Uday Kumar Reddy

Modified: polly/trunk/lib/External/isl/ChangeLog
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/ChangeLog?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/ChangeLog (original)
+++ polly/trunk/lib/External/isl/ChangeLog Sat May  9 04:37:30 2015
@@ -1,3 +1,9 @@
+version: 0.14.1
+date: Thu Apr  9 12:57:23 CEST 2015
+changes:
+	- fix bug in affine expression normalization
+	- fix handling of conditional validity constraints
+---
 version: 0.14
 date: Sat Oct 25 16:08:47 CEST 2014
 changes:

Modified: polly/trunk/lib/External/isl/Makefile.am
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/Makefile.am?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/Makefile.am (original)
+++ polly/trunk/lib/External/isl/Makefile.am Sat May  9 04:37:30 2015
@@ -85,7 +85,6 @@ libisl_la_SOURCES = \
 	isl_ctx.c \
 	isl_ctx_private.h \
 	isl_deprecated.c \
-	isl_dim.c \
 	isl_dim_map.h \
 	isl_dim_map.c \
 	isl_equalities.c \
@@ -232,7 +231,6 @@ pkginclude_HEADERS = \
 	include/isl/band.h \
 	include/isl/constraint.h \
 	include/isl/ctx.h \
-	include/isl/dim.h \
 	include/isl/flow.h \
 	include/isl/id.h \
 	include/isl/id_to_ast_expr.h \

Modified: polly/trunk/lib/External/isl/basis_reduction_tab.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/basis_reduction_tab.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/basis_reduction_tab.c (original)
+++ polly/trunk/lib/External/isl/basis_reduction_tab.c Sat May  9 04:37:30 2015
@@ -181,8 +181,11 @@ static int solve_lp(struct tab_lp *lp)
 		isl_vec_free(sample);
 	}
 	isl_int_divexact_ui(lp->opt_denom, lp->opt_denom, 2);
-	if (res != isl_lp_ok)
+	if (res < 0)
 		return -1;
+	if (res != isl_lp_ok)
+		isl_die(lp->ctx, isl_error_internal,
+			"unexpected missing (bounded) solution", return -1);
 	return 0;
 }
 

Modified: polly/trunk/lib/External/isl/basis_reduction_templ.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/basis_reduction_templ.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/basis_reduction_templ.c (original)
+++ polly/trunk/lib/External/isl/basis_reduction_templ.c Sat May  9 04:37:30 2015
@@ -51,7 +51,6 @@ struct isl_tab *isl_tab_compute_reduced_
 	unsigned dim;
 	struct isl_ctx *ctx;
 	struct isl_mat *B;
-	int unbounded;
 	int i;
 	GBR_LP *lp = NULL;
 	GBR_type F_old, alpha, F_new;
@@ -133,8 +132,8 @@ struct isl_tab *isl_tab_compute_reduced_
 
 	GBR_lp_set_obj(lp, B->row[1+i]+1, dim);
 	ctx->stats->gbr_solved_lps++;
-	unbounded = GBR_lp_solve(lp);
-	isl_assert(ctx, !unbounded, goto error);
+	if (GBR_lp_solve(lp) < 0)
+		goto error;
 	GBR_lp_get_obj_val(lp, &F[i]);
 
 	if (GBR_lt(F[i], one)) {
@@ -151,8 +150,8 @@ struct isl_tab *isl_tab_compute_reduced_
 		if (i+1 == tab->n_zero) {
 			GBR_lp_set_obj(lp, B->row[1+i+1]+1, dim);
 			ctx->stats->gbr_solved_lps++;
-			unbounded = GBR_lp_solve(lp);
-			isl_assert(ctx, !unbounded, goto error);
+			if (GBR_lp_solve(lp) < 0)
+				goto error;
 			GBR_lp_get_obj_val(lp, &F_new);
 			fixed = GBR_lp_is_fixed(lp);
 			GBR_set_ui(alpha, 0);
@@ -166,8 +165,8 @@ struct isl_tab *isl_tab_compute_reduced_
 			row = GBR_lp_add_row(lp, B->row[1+i]+1, dim);
 			GBR_lp_set_obj(lp, B->row[1+i+1]+1, dim);
 			ctx->stats->gbr_solved_lps++;
-			unbounded = GBR_lp_solve(lp);
-			isl_assert(ctx, !unbounded, goto error);
+			if (GBR_lp_solve(lp) < 0)
+				goto error;
 			GBR_lp_get_obj_val(lp, &F_new);
 			fixed = GBR_lp_is_fixed(lp);
 
@@ -196,8 +195,8 @@ struct isl_tab *isl_tab_compute_reduced_
 						tmp, B->row[1+i]+1, dim);
 				GBR_lp_set_obj(lp, b_tmp->el, dim);
 				ctx->stats->gbr_solved_lps++;
-				unbounded = GBR_lp_solve(lp);
-				isl_assert(ctx, !unbounded, goto error);
+				if (GBR_lp_solve(lp) < 0)
+					goto error;
 				GBR_lp_get_obj_val(lp, &mu_F[j]);
 				mu_fixed[j] = GBR_lp_is_fixed(lp);
 				if (i > 0)

Modified: polly/trunk/lib/External/isl/codegen.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/codegen.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/codegen.c (original)
+++ polly/trunk/lib/External/isl/codegen.c Sat May  9 04:37:30 2015
@@ -24,6 +24,8 @@
 #include <isl/ast_build.h>
 #include <isl/options.h>
 #include <isl/set.h>
+#include <isl/union_set.h>
+#include <isl/union_map.h>
 #include <isl/stream.h>
 #include <isl/schedule_node.h>
 

Modified: polly/trunk/lib/External/isl/configure.ac
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/configure.ac?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/configure.ac (original)
+++ polly/trunk/lib/External/isl/configure.ac Sat May  9 04:37:30 2015
@@ -1,10 +1,10 @@
-AC_INIT([isl], [0.14], [isl-development at googlegroups.com])
+AC_INIT([isl], [0.14.1], [isl-development at googlegroups.com])
 AC_CONFIG_AUX_DIR([.])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign])
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 AC_SUBST(versioninfo)
-versioninfo=14:0:1
+versioninfo=14:1:1
 
 if test "x$prefix" != "xNONE"; then
 	prefix_wd=`cd $prefix && pwd`

Modified: polly/trunk/lib/External/isl/include/isl/aff.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/aff.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/aff.h (original)
+++ polly/trunk/lib/External/isl/include/isl/aff.h Sat May  9 04:37:30 2015
@@ -910,6 +910,4 @@ ISL_DECLARE_LIST_FN(union_pw_multi_aff)
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/constraint.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/constraint.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/constraint.h (original)
+++ polly/trunk/lib/External/isl/include/isl/constraint.h Sat May  9 04:37:30 2015
@@ -143,6 +143,4 @@ void isl_constraint_dump(__isl_keep isl_
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Removed: polly/trunk/lib/External/isl/include/isl/dim.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/dim.h?rev=236931&view=auto
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/dim.h (original)
+++ polly/trunk/lib/External/isl/include/isl/dim.h (removed)
@@ -1,174 +0,0 @@
-#ifndef ISL_DIM_H
-#define ISL_DIM_H
-
-#include <isl/space.h>
-#include <isl/local_space.h>
-#include <isl/aff_type.h>
-#include <isl/constraint.h>
-#include <isl/map_type.h>
-#include <isl/set_type.h>
-#include <isl/point.h>
-#include <isl/union_map.h>
-#include <isl/union_set.h>
-#include <isl/polynomial_type.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define isl_dim isl_space
-
-ISL_DEPRECATED
-isl_ctx *isl_dim_get_ctx(__isl_keep isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_alloc(isl_ctx *ctx,
-			unsigned nparam, unsigned n_in, unsigned n_out);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_set_alloc(isl_ctx *ctx,
-			unsigned nparam, unsigned dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_copy(__isl_keep isl_space *dim);
-ISL_DEPRECATED
-void isl_dim_free(__isl_take isl_space *dim);
-
-ISL_DEPRECATED
-unsigned isl_dim_size(__isl_keep isl_space *dim, enum isl_dim_type type);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_set_dim_id(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
-ISL_DEPRECATED
-int isl_dim_has_dim_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos);
-ISL_DEPRECATED
-__isl_give isl_id *isl_dim_get_dim_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos);
-
-ISL_DEPRECATED
-int isl_dim_find_dim_by_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, __isl_keep isl_id *id);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_set_tuple_id(__isl_take isl_space *dim,
-	enum isl_dim_type type, __isl_take isl_id *id);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_reset_tuple_id(__isl_take isl_space *dim,
-	enum isl_dim_type type);
-ISL_DEPRECATED
-int isl_dim_has_tuple_id(__isl_keep isl_space *dim, enum isl_dim_type type);
-ISL_DEPRECATED
-__isl_give isl_id *isl_dim_get_tuple_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_set_name(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, __isl_keep const char *name);
-ISL_DEPRECATED
-__isl_keep const char *isl_dim_get_name(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_set_tuple_name(__isl_take isl_space *dim,
-	enum isl_dim_type type, const char *s);
-ISL_DEPRECATED
-const char *isl_dim_get_tuple_name(__isl_keep isl_space *dim,
-				 enum isl_dim_type type);
-
-ISL_DEPRECATED
-int isl_dim_is_wrapping(__isl_keep isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_wrap(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_unwrap(__isl_take isl_space *dim);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_domain(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_from_domain(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_range(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_from_range(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_reverse(__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_join(__isl_take isl_space *left,
-	__isl_take isl_space *right);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_align_params(__isl_take isl_space *dim1,
-	__isl_take isl_space *dim2);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_insert(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, unsigned n);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_add(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned n);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_drop(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned first, unsigned n);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_move(__isl_take isl_space *dim,
-	enum isl_dim_type dst_type, unsigned dst_pos,
-	enum isl_dim_type src_type, unsigned src_pos, unsigned n);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_map_from_set(
-	__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_dim_zip(__isl_take isl_space *dim);
-
-ISL_DEPRECATED
-__isl_give isl_local_space *isl_local_space_from_dim(
-	__isl_take isl_space *dim);
-ISL_DEPRECATED
-__isl_give isl_space *isl_local_space_get_dim(
-	__isl_keep isl_local_space *ls);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_aff_get_dim(__isl_keep isl_aff *aff);
-ISL_DEPRECATED
-__isl_give isl_space *isl_pw_aff_get_dim(__isl_keep isl_pw_aff *pwaff);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_constraint_get_dim(
-	__isl_keep isl_constraint *constraint);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_basic_map_get_dim(__isl_keep isl_basic_map *bmap);
-ISL_DEPRECATED
-__isl_give isl_space *isl_map_get_dim(__isl_keep isl_map *map);
-ISL_DEPRECATED
-__isl_give isl_space *isl_union_map_get_dim(__isl_keep isl_union_map *umap);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_basic_set_get_dim(__isl_keep isl_basic_set *bset);
-ISL_DEPRECATED
-__isl_give isl_space *isl_set_get_dim(__isl_keep isl_set *set);
-ISL_DEPRECATED
-__isl_give isl_space *isl_union_set_get_dim(__isl_keep isl_union_set *uset);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_point_get_dim(__isl_keep isl_point *pnt);
-
-ISL_DEPRECATED
-__isl_give isl_space *isl_qpolynomial_get_dim(__isl_keep isl_qpolynomial *qp);
-ISL_DEPRECATED
-__isl_give isl_space *isl_pw_qpolynomial_get_dim(
-	__isl_keep isl_pw_qpolynomial *pwqp);
-ISL_DEPRECATED
-__isl_give isl_space *isl_qpolynomial_fold_get_dim(
-	__isl_keep isl_qpolynomial_fold *fold);
-ISL_DEPRECATED
-__isl_give isl_space *isl_pw_qpolynomial_fold_get_dim(
-	__isl_keep isl_pw_qpolynomial_fold *pwf);
-ISL_DEPRECATED
-__isl_give isl_space *isl_union_pw_qpolynomial_get_dim(
-	__isl_keep isl_union_pw_qpolynomial *upwqp);
-ISL_DEPRECATED
-__isl_give isl_space *isl_union_pw_qpolynomial_fold_get_dim(
-	__isl_keep isl_union_pw_qpolynomial_fold *upwf);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif

Modified: polly/trunk/lib/External/isl/include/isl/map.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/map.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/map.h (original)
+++ polly/trunk/lib/External/isl/include/isl/map.h Sat May  9 04:37:30 2015
@@ -697,6 +697,4 @@ ISL_DECLARE_LIST_FN(map)
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/point.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/point.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/point.h (original)
+++ polly/trunk/lib/External/isl/include/isl/point.h Sat May  9 04:37:30 2015
@@ -40,6 +40,4 @@ void isl_point_dump(__isl_keep isl_point
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/polynomial.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/polynomial.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/polynomial.h (original)
+++ polly/trunk/lib/External/isl/include/isl/polynomial.h Sat May  9 04:37:30 2015
@@ -662,6 +662,4 @@ __isl_give isl_union_pw_qpolynomial *isl
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/set.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/set.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/set.h (original)
+++ polly/trunk/lib/External/isl/include/isl/set.h Sat May  9 04:37:30 2015
@@ -531,6 +531,4 @@ __isl_give char *isl_set_to_str(__isl_ke
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/union_map.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/union_map.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/union_map.h (original)
+++ polly/trunk/lib/External/isl/include/isl/union_map.h Sat May  9 04:37:30 2015
@@ -2,6 +2,7 @@
 #define ISL_UNION_MAP_H
 
 #include <isl/space.h>
+#include <isl/aff_type.h>
 #include <isl/map_type.h>
 #include <isl/union_map_type.h>
 #include <isl/printer.h>
@@ -264,6 +265,4 @@ ISL_DECLARE_LIST_FN(union_map)
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/include/isl/union_set.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/union_set.h?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/union_set.h (original)
+++ polly/trunk/lib/External/isl/include/isl/union_set.h Sat May  9 04:37:30 2015
@@ -155,6 +155,4 @@ __isl_give isl_union_set *isl_union_set_
 }
 #endif
 
-#include <isl/dim.h>
-
 #endif

Modified: polly/trunk/lib/External/isl/isl_ast_build.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_ast_build.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_ast_build.c (original)
+++ polly/trunk/lib/External/isl/isl_ast_build.c Sat May  9 04:37:30 2015
@@ -12,7 +12,10 @@
 
 #include <isl/map.h>
 #include <isl/aff.h>
+#include <isl/constraint.h>
 #include <isl/map.h>
+#include <isl/union_set.h>
+#include <isl/union_map.h>
 #include <isl_ast_build_private.h>
 #include <isl_ast_private.h>
 

Modified: polly/trunk/lib/External/isl/isl_ast_build_expr.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_ast_build_expr.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_ast_build_expr.c (original)
+++ polly/trunk/lib/External/isl/isl_ast_build_expr.c Sat May  9 04:37:30 2015
@@ -10,6 +10,7 @@
  * B.P. 105 - 78153 Le Chesnay, France
  */
 
+#include <isl/constraint.h>
 #include <isl/ilp.h>
 #include <isl_ast_build_expr.h>
 #include <isl_ast_private.h>

Modified: polly/trunk/lib/External/isl/isl_ast_codegen.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_ast_codegen.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_ast_codegen.c (original)
+++ polly/trunk/lib/External/isl/isl_ast_codegen.c Sat May  9 04:37:30 2015
@@ -12,8 +12,10 @@
 
 #include <limits.h>
 #include <isl/aff.h>
+#include <isl/constraint.h>
 #include <isl/set.h>
 #include <isl/ilp.h>
+#include <isl/union_set.h>
 #include <isl/union_map.h>
 #include <isl/schedule_node.h>
 #include <isl_sort.h>

Modified: polly/trunk/lib/External/isl/isl_coalesce.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_coalesce.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_coalesce.c (original)
+++ polly/trunk/lib/External/isl/isl_coalesce.c Sat May  9 04:37:30 2015
@@ -484,6 +484,8 @@ static enum isl_change check_facets(int
 			if (info[j].ineq[l] != STATUS_CUT)
 				continue;
 			stat = status_in(info[j].bmap->ineq[l], info[i].tab);
+			if (stat < 0)
+				return isl_change_error;
 			if (stat != STATUS_VALID)
 				break;
 		}
@@ -519,9 +521,13 @@ static int contains(struct isl_coalesce_
 		isl_seq_neg(bmap->eq[k], bmap->eq[k], 1 + dim);
 		stat = status_in(bmap->eq[k], tab);
 		isl_seq_neg(bmap->eq[k], bmap->eq[k], 1 + dim);
+		if (stat < 0)
+			return -1;
 		if (stat != STATUS_VALID)
 			return 0;
 		stat = status_in(bmap->eq[k], tab);
+		if (stat < 0)
+			return -1;
 		if (stat != STATUS_VALID)
 			return 0;
 	}
@@ -531,6 +537,8 @@ static int contains(struct isl_coalesce_
 		if (info->ineq[k] == STATUS_REDUNDANT)
 			continue;
 		stat = status_in(bmap->ineq[k], tab);
+		if (stat < 0)
+			return -1;
 		if (stat != STATUS_VALID)
 			return 0;
 	}
@@ -582,6 +590,7 @@ static enum isl_change is_adj_ineq_exten
 	unsigned n_eq = info[i].bmap->n_eq;
 	unsigned total = isl_basic_map_total_dim(info[i].bmap);
 	int r;
+	int super;
 
 	if (isl_tab_extend_cons(info[i].tab, 1 + info[j].bmap->n_ineq) < 0)
 		return isl_change_error;
@@ -614,7 +623,10 @@ static enum isl_change is_adj_ineq_exten
 			return isl_change_error;
 	}
 
-	if (contains(&info[j], info[i].tab))
+	super = contains(&info[j], info[i].tab);
+	if (super < 0)
+		return isl_change_error;
+	if (super)
 		return fuse(i, j, info, NULL, 0, 0);
 
 	if (isl_tab_rollback(info[i].tab, snap) < 0)
@@ -725,6 +737,8 @@ static enum isl_change is_adj_eq_extensi
 	if (isl_tab_select_facet(info[i].tab, n_eq + k) < 0)
 		return isl_change_error;
 	super = contains(&info[j], info[i].tab);
+	if (super < 0)
+		return isl_change_error;
 	if (super) {
 		int l;
 		unsigned total;
@@ -2119,6 +2133,7 @@ static __isl_give isl_aff_list *set_up_s
 
 	return list;
 error:
+	isl_aff_free(aff_nan);
 	isl_local_space_free(ls);
 	isl_basic_set_free(wrap_hull);
 	isl_aff_list_free(list);
@@ -2354,7 +2369,7 @@ static enum isl_change check_coalesce_in
 
 	list = set_up_substitutions(info[i].bmap, info[j].bmap, hull_j);
 	if (!list)
-		goto error;
+		return isl_change_error;
 	if (isl_aff_list_n_aff(list) < n_div_i)
 		change = isl_change_none;
 	else

Removed: polly/trunk/lib/External/isl/isl_dim.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_dim.c?rev=236931&view=auto
==============================================================================
--- polly/trunk/lib/External/isl/isl_dim.c (original)
+++ polly/trunk/lib/External/isl/isl_dim.c (removed)
@@ -1,258 +0,0 @@
-#include <isl/dim.h>
-#include <isl/aff.h>
-#include <isl/map.h>
-#include <isl/set.h>
-#include <isl/polynomial.h>
-
-isl_ctx *isl_dim_get_ctx(__isl_keep isl_space *dim)
-{
-	return isl_space_get_ctx(dim);
-}
-
-__isl_give isl_space *isl_dim_alloc(isl_ctx *ctx,
-	unsigned nparam, unsigned n_in, unsigned n_out)
-{
-	return isl_space_alloc(ctx, nparam, n_in, n_out);
-}
-__isl_give isl_space *isl_dim_set_alloc(isl_ctx *ctx,
-	unsigned nparam, unsigned dim)
-{
-	return isl_space_set_alloc(ctx, nparam, dim);
-}
-__isl_give isl_space *isl_dim_copy(__isl_keep isl_space *dim)
-{
-	return isl_space_copy(dim);
-}
-void isl_dim_free(__isl_take isl_space *dim)
-{
-	isl_space_free(dim);
-}
-
-unsigned isl_dim_size(__isl_keep isl_space *dim, enum isl_dim_type type)
-{
-	return isl_space_dim(dim, type);
-}
-
-__isl_give isl_space *isl_dim_set_dim_id(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
-{
-	return isl_space_set_dim_id(dim, type, pos, id);
-}
-int isl_dim_has_dim_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos)
-{
-	return isl_space_has_dim_id(dim, type, pos);
-}
-__isl_give isl_id *isl_dim_get_dim_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos)
-{
-	return isl_space_get_dim_id(dim, type, pos);
-}
-
-int isl_dim_find_dim_by_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type, __isl_keep isl_id *id)
-{
-	return isl_space_find_dim_by_id(dim, type, id);
-}
-
-__isl_give isl_space *isl_dim_set_tuple_id(__isl_take isl_space *dim,
-	enum isl_dim_type type, __isl_take isl_id *id)
-{
-	return isl_space_set_tuple_id(dim, type, id);
-}
-__isl_give isl_space *isl_dim_reset_tuple_id(__isl_take isl_space *dim,
-	enum isl_dim_type type)
-{
-	return isl_space_reset_tuple_id(dim, type);
-}
-int isl_dim_has_tuple_id(__isl_keep isl_space *dim, enum isl_dim_type type)
-{
-	return isl_space_has_tuple_id(dim, type);
-}
-__isl_give isl_id *isl_dim_get_tuple_id(__isl_keep isl_space *dim,
-	enum isl_dim_type type)
-{
-	return isl_space_get_tuple_id(dim, type);
-}
-
-__isl_give isl_space *isl_dim_set_name(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, __isl_keep const char *name)
-{
-	return isl_space_set_dim_name(dim, type, pos, name);
-}
-__isl_keep const char *isl_dim_get_name(__isl_keep isl_space *dim,
-	enum isl_dim_type type, unsigned pos)
-{
-	return isl_space_get_dim_name(dim, type, pos);
-}
-
-__isl_give isl_space *isl_dim_set_tuple_name(__isl_take isl_space *dim,
-	enum isl_dim_type type, const char *s)
-{
-	return isl_space_set_tuple_name(dim, type, s);
-}
-const char *isl_dim_get_tuple_name(__isl_keep isl_space *dim,
-	enum isl_dim_type type)
-{
-	return isl_space_get_tuple_name(dim, type);
-}
-
-int isl_dim_is_wrapping(__isl_keep isl_space *dim)
-{
-	return isl_space_is_wrapping(dim);
-}
-__isl_give isl_space *isl_dim_wrap(__isl_take isl_space *dim)
-{
-	return isl_space_wrap(dim);
-}
-__isl_give isl_space *isl_dim_unwrap(__isl_take isl_space *dim)
-{
-	return isl_space_unwrap(dim);
-}
-
-__isl_give isl_space *isl_dim_domain(__isl_take isl_space *dim)
-{
-	return isl_space_domain(dim);
-}
-__isl_give isl_space *isl_dim_from_domain(__isl_take isl_space *dim)
-{
-	return isl_space_from_domain(dim);
-}
-__isl_give isl_space *isl_dim_range(__isl_take isl_space *dim)
-{
-	return isl_space_range(dim);
-}
-__isl_give isl_space *isl_dim_from_range(__isl_take isl_space *dim)
-{
-	return isl_space_from_range(dim);
-}
-__isl_give isl_space *isl_dim_reverse(__isl_take isl_space *dim)
-{
-	return isl_space_reverse(dim);
-}
-__isl_give isl_space *isl_dim_join(__isl_take isl_space *left,
-	__isl_take isl_space *right)
-{
-	return isl_space_join(left, right);
-}
-__isl_give isl_space *isl_dim_align_params(__isl_take isl_space *dim1,
-	__isl_take isl_space *dim2)
-{
-	return isl_space_align_params(dim1, dim2);
-}
-__isl_give isl_space *isl_dim_insert(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned pos, unsigned n)
-{
-	return isl_space_insert_dims(dim, type, pos, n);
-}
-__isl_give isl_space *isl_dim_add(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned n)
-{
-	return isl_space_add_dims(dim, type, n);
-}
-__isl_give isl_space *isl_dim_drop(__isl_take isl_space *dim,
-	enum isl_dim_type type, unsigned first, unsigned n)
-{
-	return isl_space_drop_dims(dim, type, first, n);
-}
-__isl_give isl_space *isl_dim_move(__isl_take isl_space *dim,
-	enum isl_dim_type dst_type, unsigned dst_pos,
-	enum isl_dim_type src_type, unsigned src_pos, unsigned n)
-{
-	return isl_space_move_dims(dim, dst_type, dst_pos, src_type, src_pos, n);
-}
-__isl_give isl_space *isl_dim_map_from_set(__isl_take isl_space *dim)
-{
-	return isl_space_map_from_set(dim);
-}
-__isl_give isl_space *isl_dim_zip(__isl_take isl_space *dim)
-{
-	return isl_space_zip(dim);
-}
-
-__isl_give isl_local_space *isl_local_space_from_dim(
-	__isl_take isl_space *dim)
-{
-	return isl_local_space_from_space(dim);
-}
-__isl_give isl_space *isl_local_space_get_dim(
-	__isl_keep isl_local_space *ls)
-{
-	return isl_local_space_get_space(ls);
-}
-
-__isl_give isl_space *isl_aff_get_dim(__isl_keep isl_aff *aff)
-{
-	return isl_aff_get_space(aff);
-}
-__isl_give isl_space *isl_pw_aff_get_dim(__isl_keep isl_pw_aff *pwaff)
-{
-	return isl_pw_aff_get_space(pwaff);
-}
-
-__isl_give isl_space *isl_constraint_get_dim(
-	__isl_keep isl_constraint *constraint)
-{
-	return isl_constraint_get_space(constraint);
-}
-
-__isl_give isl_space *isl_basic_map_get_dim(__isl_keep isl_basic_map *bmap)
-{
-	return isl_basic_map_get_space(bmap);
-}
-__isl_give isl_space *isl_map_get_dim(__isl_keep isl_map *map)
-{
-	return isl_map_get_space(map);
-}
-__isl_give isl_space *isl_union_map_get_dim(__isl_keep isl_union_map *umap)
-{
-	return isl_union_map_get_space(umap);
-}
-
-__isl_give isl_space *isl_basic_set_get_dim(__isl_keep isl_basic_set *bset)
-{
-	return isl_basic_set_get_space(bset);
-}
-__isl_give isl_space *isl_set_get_dim(__isl_keep isl_set *set)
-{
-	return isl_set_get_space(set);
-}
-__isl_give isl_space *isl_union_set_get_dim(__isl_keep isl_union_set *uset)
-{
-	return isl_union_set_get_space(uset);
-}
-
-__isl_give isl_space *isl_point_get_dim(__isl_keep isl_point *pnt)
-{
-	return isl_point_get_space(pnt);
-}
-
-__isl_give isl_space *isl_qpolynomial_get_dim(__isl_keep isl_qpolynomial *qp)
-{
-	return isl_qpolynomial_get_space(qp);
-}
-__isl_give isl_space *isl_pw_qpolynomial_get_dim(
-	__isl_keep isl_pw_qpolynomial *pwqp)
-{
-	return isl_pw_qpolynomial_get_space(pwqp);
-}
-__isl_give isl_space *isl_qpolynomial_fold_get_dim(
-	__isl_keep isl_qpolynomial_fold *fold)
-{
-	return isl_qpolynomial_fold_get_space(fold);
-}
-__isl_give isl_space *isl_pw_qpolynomial_fold_get_dim(
-	__isl_keep isl_pw_qpolynomial_fold *pwf)
-{
-	return isl_pw_qpolynomial_fold_get_space(pwf);
-}
-__isl_give isl_space *isl_union_pw_qpolynomial_get_dim(
-	__isl_keep isl_union_pw_qpolynomial *upwqp)
-{
-	return isl_union_pw_qpolynomial_get_space(upwqp);
-}
-__isl_give isl_space *isl_union_pw_qpolynomial_fold_get_dim(
-	__isl_keep isl_union_pw_qpolynomial_fold *upwf)
-{
-	return isl_union_pw_qpolynomial_fold_get_space(upwf);
-}

Modified: polly/trunk/lib/External/isl/isl_flow.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_flow.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_flow.c (original)
+++ polly/trunk/lib/External/isl/isl_flow.c Sat May  9 04:37:30 2015
@@ -18,6 +18,8 @@
 
 #include <isl/set.h>
 #include <isl/map.h>
+#include <isl/union_set.h>
+#include <isl/union_map.h>
 #include <isl/flow.h>
 #include <isl/schedule_node.h>
 #include <isl_sort.h>
@@ -1958,6 +1960,9 @@ static void isl_compute_flow_schedule_da
 {
 	int i;
 
+	if (!data->sink)
+		return;
+
 	for (i = 0; i < data->n_sink; ++i) {
 		isl_map_free(data->sink[i].access);
 		isl_schedule_node_free(data->sink[i].node);

Modified: polly/trunk/lib/External/isl/isl_fold.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_fold.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_fold.c (original)
+++ polly/trunk/lib/External/isl/isl_fold.c Sat May  9 04:37:30 2015
@@ -234,10 +234,23 @@ error:
 	return NULL;
 }
 
+/* Determine the sign of the constant quasipolynomial "qp".
+ *
+ * Return
+ *	-1 if qp <= 0
+ *	 1 if qp >= 0
+ *	 0 if unknown
+ *
+ * For qp == 0, we can return either -1 or 1.  In practice, we return 1.
+ * For qp == NaN, the sign is undefined, so we return 0.
+ */
 static int isl_qpolynomial_cst_sign(__isl_keep isl_qpolynomial *qp)
 {
 	struct isl_upoly_cst *cst;
 
+	if (isl_qpolynomial_is_nan(qp))
+		return 0;
+
 	cst = isl_upoly_as_cst(qp->upoly);
 	if (!cst)
 		return 0;
@@ -438,7 +451,13 @@ __isl_give isl_qpolynomial_fold *isl_qpo
 	for (i = 0; i < fold2->n; ++i) {
 		for (j = n1 - 1; j >= 0; --j) {
 			isl_qpolynomial *d;
-			int sgn;
+			int sgn, equal;
+			equal = isl_qpolynomial_plain_is_equal(res->qp[j],
+								fold2->qp[i]);
+			if (equal < 0)
+				goto error;
+			if (equal)
+				break;
 			d = isl_qpolynomial_sub(
 				isl_qpolynomial_copy(res->qp[j]),
 				isl_qpolynomial_copy(fold2->qp[i]));

Modified: polly/trunk/lib/External/isl/isl_input.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_input.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_input.c (original)
+++ polly/trunk/lib/External/isl/isl_input.c Sat May  9 04:37:30 2015
@@ -22,6 +22,7 @@
 #include <isl_stream_private.h>
 #include <isl/obj.h>
 #include "isl_polynomial_private.h"
+#include <isl/union_set.h>
 #include <isl/union_map.h>
 #include <isl_mat_private.h>
 #include <isl_aff_private.h>

Modified: polly/trunk/lib/External/isl/isl_map.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_map.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_map.c (original)
+++ polly/trunk/lib/External/isl/isl_map.c Sat May  9 04:37:30 2015
@@ -19,6 +19,7 @@
 #include <isl_ctx_private.h>
 #include <isl_map_private.h>
 #include <isl_blk.h>
+#include <isl/constraint.h>
 #include "isl_space_private.h"
 #include "isl_equalities.h"
 #include <isl_lp_private.h>
@@ -9066,6 +9067,9 @@ int isl_basic_map_plain_cmp(const __isl_
 	int i, cmp;
 	unsigned total;
 
+	if (!bmap1 || !bmap2)
+		return -1;
+
 	if (bmap1 == bmap2)
 		return 0;
 	if (ISL_F_ISSET(bmap1, ISL_BASIC_MAP_RATIONAL) !=

Modified: polly/trunk/lib/External/isl/isl_map_list.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_map_list.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_map_list.c (original)
+++ polly/trunk/lib/External/isl/isl_map_list.c Sat May  9 04:37:30 2015
@@ -1,4 +1,5 @@
 #include <isl/map.h>
+#include <isl/union_map.h>
 
 #undef EL
 #define EL isl_basic_map

Modified: polly/trunk/lib/External/isl/isl_map_simplify.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_map_simplify.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_map_simplify.c (original)
+++ polly/trunk/lib/External/isl/isl_map_simplify.c Sat May  9 04:37:30 2015
@@ -1758,8 +1758,8 @@ static struct isl_basic_set *remove_shif
 	int k, h, l;
 	isl_ctx *ctx;
 
-	if (!bset)
-		return NULL;
+	if (!bset || !context)
+		return bset;
 
 	size = round_up(4 * (context->n_ineq+1) / 3 - 1);
 	if (size == 0)
@@ -3404,7 +3404,7 @@ static __isl_give isl_vec *normalize_con
  * opposite inequalities that can be replaced by an equality.
  * We therefore call isl_basic_map_detect_inequality_pairs,
  * which checks for such pairs of inequalities as well as eliminate_divs_eq
- * if such a pair was found.
+ * and isl_basic_map_gauss if such a pair was found.
  */
 __isl_give isl_basic_map *isl_basic_map_reduce_coefficients(
 	__isl_take isl_basic_map *bmap)
@@ -3465,8 +3465,10 @@ __isl_give isl_basic_map *isl_basic_map_
 		int progress = 0;
 
 		bmap = isl_basic_map_detect_inequality_pairs(bmap, &progress);
-		if (progress)
+		if (progress) {
 			bmap = eliminate_divs_eq(bmap, &progress);
+			bmap = isl_basic_map_gauss(bmap, NULL);
+		}
 	}
 
 	return bmap;

Modified: polly/trunk/lib/External/isl/isl_map_subtract.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_map_subtract.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_map_subtract.c (original)
+++ polly/trunk/lib/External/isl/isl_map_subtract.c Sat May  9 04:37:30 2015
@@ -491,16 +491,32 @@ static __isl_give isl_map *basic_map_sub
 	return sdc.diff;
 }
 
+/* Return an empty map living in the same space as "map1" and "map2".
+ */
+static __isl_give isl_map *replace_pair_by_empty( __isl_take isl_map *map1,
+	__isl_take isl_map *map2)
+{
+	isl_space *space;
+
+	space = isl_map_get_space(map1);
+	isl_map_free(map1);
+	isl_map_free(map2);
+	return isl_map_empty(space);
+}
+
 /* Return the set difference between map1 and map2.
  * (U_i A_i) \ (U_j B_j) is computed as U_i (A_i \ (U_j B_j))
  *
+ * If "map1" and "map2" are obviously equal to each other,
+ * then return an empty map in the same space.
+ *
  * If "map1" and "map2" are disjoint, then simply return "map1".
  */
 static __isl_give isl_map *map_subtract( __isl_take isl_map *map1,
 	__isl_take isl_map *map2)
 {
 	int i;
-	int disjoint;
+	int equal, disjoint;
 	struct isl_map *diff;
 
 	if (!map1 || !map2)
@@ -508,6 +524,12 @@ static __isl_give isl_map *map_subtract(
 
 	isl_assert(map1->ctx, isl_space_is_equal(map1->dim, map2->dim), goto error);
 
+	equal = isl_map_plain_is_equal(map1, map2);
+	if (equal < 0)
+		goto error;
+	if (equal)
+		return replace_pair_by_empty(map1, map2);
+
 	disjoint = isl_map_is_disjoint(map1, map2);
 	if (disjoint < 0)
 		goto error;

Modified: polly/trunk/lib/External/isl/isl_obj.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_obj.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_obj.c (original)
+++ polly/trunk/lib/External/isl/isl_obj.c Sat May  9 04:37:30 2015
@@ -16,6 +16,8 @@
 #include <isl/aff.h>
 #include <isl/set.h>
 #include <isl/map.h>
+#include <isl/union_set.h>
+#include <isl/union_map.h>
 #include <isl/polynomial.h>
 #include <isl/schedule.h>
 #include <isl/obj.h>

Modified: polly/trunk/lib/External/isl/isl_scheduler.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_scheduler.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_scheduler.c (original)
+++ polly/trunk/lib/External/isl/isl_scheduler.c Sat May  9 04:37:30 2015
@@ -22,6 +22,7 @@
 #include <isl_mat_private.h>
 #include <isl_vec_private.h>
 #include <isl/set.h>
+#include <isl/union_set.h>
 #include <isl_seq.h>
 #include <isl_tab.h>
 #include <isl_dim_map.h>

Modified: polly/trunk/lib/External/isl/isl_set_list.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_set_list.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_set_list.c (original)
+++ polly/trunk/lib/External/isl/isl_set_list.c Sat May  9 04:37:30 2015
@@ -1,4 +1,5 @@
 #include <isl/set.h>
+#include <isl/union_set.h>
 
 #undef EL
 #define EL isl_basic_set

Modified: polly/trunk/lib/External/isl/isl_space.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_space.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_space.c (original)
+++ polly/trunk/lib/External/isl/isl_space.c Sat May  9 04:37:30 2015
@@ -911,9 +911,9 @@ error:
 __isl_give isl_space *isl_space_add_dims(__isl_take isl_space *dim,
 	enum isl_dim_type type, unsigned n)
 {
+	dim = isl_space_reset(dim, type);
 	if (!dim)
 		return NULL;
-	dim = isl_space_reset(dim, type);
 	switch (type) {
 	case isl_dim_param:
 		dim = isl_space_extend(dim,

Modified: polly/trunk/lib/External/isl/isl_tab_pip.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_tab_pip.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_tab_pip.c (original)
+++ polly/trunk/lib/External/isl/isl_tab_pip.c Sat May  9 04:37:30 2015
@@ -564,9 +564,8 @@ static void sol_map_free_wrap(struct isl
 static void sol_map_add_empty(struct isl_sol_map *sol,
 	struct isl_basic_set *bset)
 {
-	if (!bset)
+	if (!bset || !sol->empty)
 		goto error;
-	isl_assert(bset->ctx, sol->empty, goto error);
 
 	sol->empty = isl_set_grow(sol->empty, 1);
 	bset = isl_basic_set_simplify(bset);
@@ -2790,7 +2789,7 @@ static struct isl_vec *gbr_get_sample(st
 
 		sample = isl_tab_sample(cgbr->tab);
 
-		if (isl_tab_rollback(cgbr->tab, snap) < 0) {
+		if (!sample || isl_tab_rollback(cgbr->tab, snap) < 0) {
 			isl_vec_free(sample);
 			return NULL;
 		}
@@ -3266,10 +3265,8 @@ static void context_gbr_restore(struct i
 	struct isl_gbr_tab_undo *snap = (struct isl_gbr_tab_undo *)save;
 	if (!snap)
 		goto error;
-	if (isl_tab_rollback(cgbr->tab, snap->tab_snap) < 0) {
-		isl_tab_free(cgbr->tab);
-		cgbr->tab = NULL;
-	}
+	if (isl_tab_rollback(cgbr->tab, snap->tab_snap) < 0)
+		goto error;
 
 	if (snap->shifted_snap) {
 		if (isl_tab_rollback(cgbr->shifted, snap->shifted_snap) < 0)
@@ -5253,9 +5250,8 @@ static void sol_pma_free(struct isl_sol_
 static void sol_pma_add_empty(struct isl_sol_pma *sol,
 	__isl_take isl_basic_set *bset)
 {
-	if (!bset)
+	if (!bset || !sol->empty)
 		goto error;
-	isl_assert(bset->ctx, sol->empty, goto error);
 
 	sol->empty = isl_set_grow(sol->empty, 1);
 	bset = isl_basic_set_simplify(bset);

Modified: polly/trunk/lib/External/isl/isl_test.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_test.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_test.c (original)
+++ polly/trunk/lib/External/isl/isl_test.c Sat May  9 04:37:30 2015
@@ -25,6 +25,7 @@
 #include <isl/flow.h>
 #include <isl_constraint_private.h>
 #include <isl/polynomial.h>
+#include <isl/union_set.h>
 #include <isl/union_map.h>
 #include <isl_factorization.h>
 #include <isl/schedule.h>
@@ -275,12 +276,13 @@ int test_parse(struct isl_ctx *ctx)
 	return 0;
 }
 
-void test_read(struct isl_ctx *ctx)
+static int test_read(isl_ctx *ctx)
 {
 	char *filename;
 	FILE *input;
-	struct isl_basic_set *bset1, *bset2;
+	isl_basic_set *bset1, *bset2;
 	const char *str = "{[y]: Exists ( alpha : 2alpha = y)}";
+	int equal;
 
 	filename = get_filename(ctx, "set", "omega");
 	assert(filename);
@@ -290,44 +292,70 @@ void test_read(struct isl_ctx *ctx)
 	bset1 = isl_basic_set_read_from_file(ctx, input);
 	bset2 = isl_basic_set_read_from_str(ctx, str);
 
-	assert(isl_basic_set_is_equal(bset1, bset2) == 1);
+	equal = isl_basic_set_is_equal(bset1, bset2);
 
 	isl_basic_set_free(bset1);
 	isl_basic_set_free(bset2);
 	free(filename);
 
 	fclose(input);
+
+	if (equal < 0)
+		return -1;
+	if (!equal)
+		isl_die(ctx, isl_error_unknown,
+			"read sets not equal", return -1);
+
+	return 0;
 }
 
-void test_bounded(struct isl_ctx *ctx)
+static int test_bounded(isl_ctx *ctx)
 {
 	isl_set *set;
 	int bounded;
 
 	set = isl_set_read_from_str(ctx, "[n] -> {[i] : 0 <= i <= n }");
 	bounded = isl_set_is_bounded(set);
-	assert(bounded);
 	isl_set_free(set);
 
+	if (bounded < 0)
+		return -1;
+	if (!bounded)
+		isl_die(ctx, isl_error_unknown,
+			"set not considered bounded", return -1);
+
 	set = isl_set_read_from_str(ctx, "{[n, i] : 0 <= i <= n }");
 	bounded = isl_set_is_bounded(set);
 	assert(!bounded);
 	isl_set_free(set);
 
+	if (bounded < 0)
+		return -1;
+	if (bounded)
+		isl_die(ctx, isl_error_unknown,
+			"set considered bounded", return -1);
+
 	set = isl_set_read_from_str(ctx, "[n] -> {[i] : i <= n }");
 	bounded = isl_set_is_bounded(set);
-	assert(!bounded);
 	isl_set_free(set);
+
+	if (bounded < 0)
+		return -1;
+	if (bounded)
+		isl_die(ctx, isl_error_unknown,
+			"set considered bounded", return -1);
+
+	return 0;
 }
 
 /* Construct the basic set { [i] : 5 <= i <= N } */
-void test_construction(struct isl_ctx *ctx)
+static int test_construction(isl_ctx *ctx)
 {
 	isl_int v;
 	isl_space *dim;
 	isl_local_space *ls;
-	struct isl_basic_set *bset;
-	struct isl_constraint *c;
+	isl_basic_set *bset;
+	isl_constraint *c;
 
 	isl_int_init(v);
 
@@ -353,37 +381,54 @@ void test_construction(struct isl_ctx *c
 	isl_basic_set_free(bset);
 
 	isl_int_clear(v);
+
+	return 0;
 }
 
-void test_dim(struct isl_ctx *ctx)
+static int test_dim(isl_ctx *ctx)
 {
 	const char *str;
 	isl_map *map1, *map2;
+	int equal;
 
 	map1 = isl_map_read_from_str(ctx,
 	    "[n] -> { [i] -> [j] : exists (a = [i/10] : i - 10a <= n ) }");
 	map1 = isl_map_add_dims(map1, isl_dim_in, 1);
 	map2 = isl_map_read_from_str(ctx,
 	    "[n] -> { [i,k] -> [j] : exists (a = [i/10] : i - 10a <= n ) }");
-	assert(isl_map_is_equal(map1, map2));
+	equal = isl_map_is_equal(map1, map2);
 	isl_map_free(map2);
 
 	map1 = isl_map_project_out(map1, isl_dim_in, 0, 1);
 	map2 = isl_map_read_from_str(ctx, "[n] -> { [i] -> [j] : n >= 0 }");
-	assert(isl_map_is_equal(map1, map2));
+	if (equal >= 0 && equal)
+		equal = isl_map_is_equal(map1, map2);
 
 	isl_map_free(map1);
 	isl_map_free(map2);
 
+	if (equal < 0)
+		return -1;
+	if (!equal)
+		isl_die(ctx, isl_error_unknown,
+			"unexpected result", return -1);
+
 	str = "[n] -> { [i] -> [] : exists a : 0 <= i <= n and i = 2 a }";
 	map1 = isl_map_read_from_str(ctx, str);
 	str = "{ [i] -> [j] : exists a : 0 <= i <= j and i = 2 a }";
 	map2 = isl_map_read_from_str(ctx, str);
 	map1 = isl_map_move_dims(map1, isl_dim_out, 0, isl_dim_param, 0, 1);
-	assert(isl_map_is_equal(map1, map2));
-
+	equal = isl_map_is_equal(map1, map2);
 	isl_map_free(map1);
 	isl_map_free(map2);
+
+	if (equal < 0)
+		return -1;
+	if (!equal)
+		isl_die(ctx, isl_error_unknown,
+			"unexpected result", return -1);
+
+	return 0;
 }
 
 struct {
@@ -972,10 +1017,12 @@ void test_application_case(struct isl_ct
 	fclose(input);
 }
 
-void test_application(struct isl_ctx *ctx)
+static int test_application(isl_ctx *ctx)
 {
 	test_application_case(ctx, "application");
 	test_application_case(ctx, "application2");
+
+	return 0;
 }
 
 void test_affine_hull_case(struct isl_ctx *ctx, const char *name)
@@ -1104,7 +1151,7 @@ struct {
 	    "{ [x, y] : 1 = 0 }" },
 };
 
-void test_convex_hull_algo(struct isl_ctx *ctx, int convex)
+static int test_convex_hull_algo(isl_ctx *ctx, int convex)
 {
 	int i;
 	int orig_convex = ctx->opt->convex;
@@ -1129,22 +1176,34 @@ void test_convex_hull_algo(struct isl_ct
 
 	for (i = 0; i < ARRAY_SIZE(convex_hull_tests); ++i) {
 		isl_set *set1, *set2;
+		int equal;
 
 		set1 = isl_set_read_from_str(ctx, convex_hull_tests[i].set);
 		set2 = isl_set_read_from_str(ctx, convex_hull_tests[i].hull);
 		set1 = isl_set_from_basic_set(isl_set_convex_hull(set1));
-		assert(isl_set_is_equal(set1, set2));
+		equal = isl_set_is_equal(set1, set2);
 		isl_set_free(set1);
 		isl_set_free(set2);
+
+		if (equal < 0)
+			return -1;
+		if (!equal)
+			isl_die(ctx, isl_error_unknown,
+				"unexpected convex hull", return -1);
 	}
 
 	ctx->opt->convex = orig_convex;
+
+	return 0;
 }
 
-void test_convex_hull(struct isl_ctx *ctx)
+static int test_convex_hull(isl_ctx *ctx)
 {
-	test_convex_hull_algo(ctx, ISL_CONVEX_HULL_FM);
-	test_convex_hull_algo(ctx, ISL_CONVEX_HULL_WRAP);
+	if (test_convex_hull_algo(ctx, ISL_CONVEX_HULL_FM) < 0)
+		return -1;
+	if (test_convex_hull_algo(ctx, ISL_CONVEX_HULL_WRAP) < 0)
+		return -1;
+	return 0;
 }
 
 void test_gist_case(struct isl_ctx *ctx, const char *name)
@@ -1530,6 +1589,14 @@ struct {
 		"n <= 2147483647 and t0 <= 31 and t0 >= 0 and i0 >= 11 and "
 		"i0 >= 96 - 3t0 and i0 <= 95 + n - 3t0 and i0 <= 7 + n and "
 		"i8 >= -40 + i0 and i8 <= -10 + i0)) }" },
+	{ 0, "{ [i0, i1, i2] : "
+		"(exists (e0, e1 = floor((i0)/32), e2 = floor((i1)/32): "
+		"32e1 = i0 and 32e2 = i1 and i1 >= -31 + i0 and "
+		"i1 <= 31 + i0 and i2 >= -30 + i0 and i2 >= -30 + i1 and "
+		"32e0 >= -30 + i0 and 32e0 >= -30 + i1 and "
+		"32e0 >= -31 + i2 and 32e0 <= 30 + i2 and 32e0 <= 31 + i1 and "
+		"32e0 <= 31 + i0)) or "
+		"i0 >= 0 }" },
 };
 
 /* A specialized coalescing test case that would result
@@ -1594,7 +1661,7 @@ static int test_coalesce(struct isl_ctx
 	return 0;
 }
 
-void test_closure(struct isl_ctx *ctx)
+static int test_closure(isl_ctx *ctx)
 {
 	const char *str;
 	isl_set *dom;
@@ -1831,17 +1898,28 @@ void test_closure(struct isl_ctx *ctx)
 	map = isl_map_transitive_closure(map, NULL);
 	assert(map);
 	isl_map_free(map);
+
+	return 0;
 }
 
-void test_lex(struct isl_ctx *ctx)
+static int test_lex(struct isl_ctx *ctx)
 {
 	isl_space *dim;
 	isl_map *map;
+	int empty;
 
 	dim = isl_space_set_alloc(ctx, 0, 0);
 	map = isl_map_lex_le(dim);
-	assert(!isl_map_is_empty(map));
+	empty = isl_map_is_empty(map);
 	isl_map_free(map);
+
+	if (empty < 0)
+		return -1;
+	if (empty)
+		isl_die(ctx, isl_error_unknown,
+			"expecting non-empty result", return -1);
+
+	return 0;
 }
 
 static int test_lexmin(struct isl_ctx *ctx)
@@ -2046,7 +2124,7 @@ static int map_check_equal(__isl_keep is
 	return 0;
 }
 
-void test_dep(struct isl_ctx *ctx)
+static int test_dep(struct isl_ctx *ctx)
 {
 	const char *str;
 	isl_space *dim;
@@ -2232,6 +2310,8 @@ void test_dep(struct isl_ctx *ctx)
 	isl_map_free(mm.must);
 	isl_map_free(mm.may);
 	isl_flow_free(flow);
+
+	return 0;
 }
 
 /* Check that the dependence analysis proceeds without errors.
@@ -2299,33 +2379,46 @@ int test_sv(isl_ctx *ctx)
 	return 0;
 }
 
-void test_bijective_case(struct isl_ctx *ctx, const char *str, int bijective)
+struct {
+	const char *str;
+	int bijective;
+} bijective_tests[] = {
+	{ "[N,M]->{[i,j] -> [i]}", 0 },
+	{ "[N,M]->{[i,j] -> [i] : j=i}", 1 },
+	{ "[N,M]->{[i,j] -> [i] : j=0}", 1 },
+	{ "[N,M]->{[i,j] -> [i] : j=N}", 1 },
+	{ "[N,M]->{[i,j] -> [j,i]}", 1 },
+	{ "[N,M]->{[i,j] -> [i+j]}", 0 },
+	{ "[N,M]->{[i,j] -> []}", 0 },
+	{ "[N,M]->{[i,j] -> [i,j,N]}", 1 },
+	{ "[N,M]->{[i,j] -> [2i]}", 0 },
+	{ "[N,M]->{[i,j] -> [i,i]}", 0 },
+	{ "[N,M]->{[i,j] -> [2i,i]}", 0 },
+	{ "[N,M]->{[i,j] -> [2i,j]}", 1 },
+	{ "[N,M]->{[i,j] -> [x,y] : 2x=i & y =j}", 1 },
+};
+
+static int test_bijective(struct isl_ctx *ctx)
 {
 	isl_map *map;
+	int i;
+	int bijective;
 
-	map = isl_map_read_from_str(ctx, str);
-	if (bijective)
-		assert(isl_map_is_bijective(map));
-	else
-		assert(!isl_map_is_bijective(map));
-	isl_map_free(map);
-}
+	for (i = 0; i < ARRAY_SIZE(bijective_tests); ++i) {
+		map = isl_map_read_from_str(ctx, bijective_tests[i].str);
+		bijective = isl_map_is_bijective(map);
+		isl_map_free(map);
+		if (bijective < 0)
+			return -1;
+		if (bijective_tests[i].bijective && !bijective)
+			isl_die(ctx, isl_error_internal,
+				"map not detected as bijective", return -1);
+		if (!bijective_tests[i].bijective && bijective)
+			isl_die(ctx, isl_error_internal,
+				"map detected as bijective", return -1);
+	}
 
-void test_bijective(struct isl_ctx *ctx)
-{
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i]}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=i}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=0}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i] : j=N}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [j,i]}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i+j]}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> []}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i,j,N]}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i]}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [i,i]}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i,i]}", 0);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [2i,j]}", 1);
-	test_bijective_case(ctx, "[N,M]->{[i,j] -> [x,y] : 2x=i & y =j}", 1);
+	return 0;
 }
 
 /* Inputs for isl_pw_qpolynomial_gist tests.
@@ -2446,7 +2539,7 @@ static int test_pwqp(struct isl_ctx *ctx
 	return 0;
 }
 
-void test_split_periods(isl_ctx *ctx)
+static int test_split_periods(isl_ctx *ctx)
 {
 	const char *str;
 	isl_pw_qpolynomial *pwqp;
@@ -2457,16 +2550,21 @@ void test_split_periods(isl_ctx *ctx)
 	pwqp = isl_pw_qpolynomial_read_from_str(ctx, str);
 
 	pwqp = isl_pw_qpolynomial_split_periods(pwqp, 2);
-	assert(pwqp);
 
 	isl_pw_qpolynomial_free(pwqp);
+
+	if (!pwqp)
+		return -1;
+
+	return 0;
 }
 
-void test_union(isl_ctx *ctx)
+static int test_union(isl_ctx *ctx)
 {
 	const char *str;
 	isl_union_set *uset1, *uset2;
 	isl_union_map *umap1, *umap2;
+	int equal;
 
 	str = "{ [i] : 0 <= i <= 1 }";
 	uset1 = isl_union_set_read_from_str(ctx, str);
@@ -2474,11 +2572,17 @@ void test_union(isl_ctx *ctx)
 	umap1 = isl_union_map_read_from_str(ctx, str);
 
 	umap2 = isl_union_set_lex_gt_union_set(isl_union_set_copy(uset1), uset1);
-	assert(isl_union_map_is_equal(umap1, umap2));
+	equal = isl_union_map_is_equal(umap1, umap2);
 
 	isl_union_map_free(umap1);
 	isl_union_map_free(umap2);
 
+	if (equal < 0)
+		return -1;
+	if (!equal)
+		isl_die(ctx, isl_error_unknown, "union maps not equal",
+			return -1);
+
 	str = "{ A[i] -> B[i]; B[i] -> C[i]; A[0] -> C[1] }";
 	umap1 = isl_union_map_read_from_str(ctx, str);
 	str = "{ A[i]; B[i] }";
@@ -2486,32 +2590,85 @@ void test_union(isl_ctx *ctx)
 
 	uset2 = isl_union_map_domain(umap1);
 
-	assert(isl_union_set_is_equal(uset1, uset2));
+	equal = isl_union_set_is_equal(uset1, uset2);
 
 	isl_union_set_free(uset1);
 	isl_union_set_free(uset2);
+
+	if (equal < 0)
+		return -1;
+	if (!equal)
+		isl_die(ctx, isl_error_unknown, "union sets not equal",
+			return -1);
+
+	return 0;
+}
+
+/* Check that computing a bound of a non-zero polynomial over an unbounded
+ * domain does not produce a rational value.
+ * Ideally, we want the value to be infinity, but we accept NaN for now.
+ * We certainly do not want to obtain the value zero.
+ */
+static int test_bound_unbounded_domain(isl_ctx *ctx)
+{
+	const char *str;
+	isl_set *dom;
+	isl_point *pnt;
+	isl_pw_qpolynomial *pwqp;
+	isl_pw_qpolynomial_fold *pwf;
+	isl_val *v;
+	int is_rat;
+
+	str = "{ [m,n] -> -m * n }";
+	pwqp = isl_pw_qpolynomial_read_from_str(ctx, str);
+	pwf = isl_pw_qpolynomial_bound(pwqp, isl_fold_max, NULL);
+	dom = isl_pw_qpolynomial_fold_domain(isl_pw_qpolynomial_fold_copy(pwf));
+	pnt = isl_set_sample_point(dom);
+	v = isl_pw_qpolynomial_fold_eval(pwf, pnt);
+	is_rat = isl_val_is_rat(v);
+	isl_val_free(v);
+
+	if (is_rat < 0)
+		return -1;
+	if (is_rat)
+		isl_die(ctx, isl_error_unknown,
+			"unexpected rational value", return -1);
+
+	return 0;
 }
 
-void test_bound(isl_ctx *ctx)
+static int test_bound(isl_ctx *ctx)
 {
 	const char *str;
+	unsigned dim;
 	isl_pw_qpolynomial *pwqp;
 	isl_pw_qpolynomial_fold *pwf;
 
+	if (test_bound_unbounded_domain(ctx) < 0)
+		return -1;
+
 	str = "{ [[a, b, c, d] -> [e]] -> 0 }";
 	pwqp = isl_pw_qpolynomial_read_from_str(ctx, str);
 	pwf = isl_pw_qpolynomial_bound(pwqp, isl_fold_max, NULL);
-	assert(isl_pw_qpolynomial_fold_dim(pwf, isl_dim_in) == 4);
+	dim = isl_pw_qpolynomial_fold_dim(pwf, isl_dim_in);
 	isl_pw_qpolynomial_fold_free(pwf);
+	if (dim != 4)
+		isl_die(ctx, isl_error_unknown, "unexpected input dimension",
+			return -1);
 
 	str = "{ [[x]->[x]] -> 1 : exists a : x = 2 a }";
 	pwqp = isl_pw_qpolynomial_read_from_str(ctx, str);
 	pwf = isl_pw_qpolynomial_bound(pwqp, isl_fold_max, NULL);
-	assert(isl_pw_qpolynomial_fold_dim(pwf, isl_dim_in) == 1);
+	dim = isl_pw_qpolynomial_fold_dim(pwf, isl_dim_in);
 	isl_pw_qpolynomial_fold_free(pwf);
+	if (dim != 1)
+		isl_die(ctx, isl_error_unknown, "unexpected input dimension",
+			return -1);
+
+	return 0;
 }
 
-void test_lift(isl_ctx *ctx)
+static int test_lift(isl_ctx *ctx)
 {
 	const char *str;
 	isl_basic_map *bmap;
@@ -2523,6 +2680,8 @@ void test_lift(isl_ctx *ctx)
 	bmap = isl_basic_map_from_range(bset);
 	bset = isl_basic_map_domain(bmap);
 	isl_basic_set_free(bset);
+
+	return 0;
 }
 
 struct {
@@ -5657,6 +5816,20 @@ struct {
 	{ "min", &test_min },
 	{ "gist", &test_gist },
 	{ "piecewise quasi-polynomials", &test_pwqp },
+	{ "lift", &test_lift },
+	{ "bound", &test_bound },
+	{ "union", &test_union },
+	{ "split periods", &test_split_periods },
+	{ "lexicographic order", &test_lex },
+	{ "bijectivity", &test_bijective },
+	{ "dataflow analysis", &test_dep },
+	{ "reading", &test_read },
+	{ "bounded", &test_bounded },
+	{ "construction", &test_construction },
+	{ "dimension manipulation", &test_dim },
+	{ "map application", &test_application },
+	{ "convex hull", &test_convex_hull },
+	{ "transitive closure", &test_closure },
 };
 
 int main(int argc, char **argv)
@@ -5678,20 +5851,6 @@ int main(int argc, char **argv)
 		if (tests[i].fn(ctx) < 0)
 			goto error;
 	}
-	test_lift(ctx);
-	test_bound(ctx);
-	test_union(ctx);
-	test_split_periods(ctx);
-	test_lex(ctx);
-	test_bijective(ctx);
-	test_dep(ctx);
-	test_read(ctx);
-	test_bounded(ctx);
-	test_construction(ctx);
-	test_dim(ctx);
-	test_application(ctx);
-	test_convex_hull(ctx);
-	test_closure(ctx);
 	isl_ctx_free(ctx);
 	return 0;
 error:

Modified: polly/trunk/lib/External/isl/isl_transitive_closure.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_transitive_closure.c?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_transitive_closure.c (original)
+++ polly/trunk/lib/External/isl/isl_transitive_closure.c Sat May  9 04:37:30 2015
@@ -70,13 +70,15 @@ static __isl_give isl_map *set_path_leng
 	bmap = isl_basic_map_alloc_space(dim, 0, 1, 1);
 	if (exactly) {
 		k = isl_basic_map_alloc_equality(bmap);
+		if (k < 0)
+			goto error;
 		c = bmap->eq[k];
 	} else {
 		k = isl_basic_map_alloc_inequality(bmap);
+		if (k < 0)
+			goto error;
 		c = bmap->ineq[k];
 	}
-	if (k < 0)
-		goto error;
 	isl_seq_clr(c, 1 + isl_basic_map_total_dim(bmap));
 	isl_int_set_si(c[0], -length);
 	isl_int_set_si(c[1 + nparam + d - 1], -1);
@@ -474,13 +476,15 @@ static __isl_give isl_basic_map *add_del
 			continue;
 		if (eq && p != MIXED) {
 			k = isl_basic_map_alloc_equality(path);
+			if (k < 0)
+				goto error;
 			path_c = path->eq[k];
 		} else {
 			k = isl_basic_map_alloc_inequality(path);
+			if (k < 0)
+				goto error;
 			path_c = path->ineq[k];
 		}
-		if (k < 0)
-			goto error;
 		isl_seq_clr(path_c, 1 + isl_basic_map_total_dim(path));
 		if (p == PURE_VAR) {
 			isl_seq_cpy(path_c + off,
@@ -754,6 +758,9 @@ static __isl_give isl_map *construct_ext
 	unsigned d;
 	int i, j, n;
 
+	if (!map)
+		goto error;
+
 	d = isl_map_dim(map, isl_dim_in);
 
 	path = isl_map_identity(isl_space_copy(dim));
@@ -819,6 +826,9 @@ static int isl_set_overlaps(__isl_keep i
 	isl_set *i;
 	int no_overlap;
 
+	if (!set1 || !set2)
+		return -1;
+
 	if (!isl_space_tuple_is_equal(set1->dim, isl_dim_set,
 					set2->dim, isl_dim_set))
 		return 0;
@@ -856,16 +866,20 @@ static __isl_give isl_map *construct_com
 	struct isl_set *range = NULL;
 	struct isl_map *app = NULL;
 	struct isl_map *path = NULL;
+	int overlaps;
 
 	domain = isl_map_domain(isl_map_copy(map));
 	domain = isl_set_coalesce(domain);
 	range = isl_map_range(isl_map_copy(map));
 	range = isl_set_coalesce(range);
-	if (!isl_set_overlaps(domain, range)) {
+	overlaps = isl_set_overlaps(domain, range);
+	if (overlaps < 0 || !overlaps) {
 		isl_set_free(domain);
 		isl_set_free(range);
 		isl_space_free(dim);
 
+		if (overlaps < 0)
+			map = NULL;
 		map = isl_map_copy(map);
 		map = isl_map_add_dims(map, isl_dim_in, 1);
 		map = isl_map_add_dims(map, isl_dim_out, 1);

Modified: polly/trunk/lib/Makefile
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Makefile?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/lib/Makefile (original)
+++ polly/trunk/lib/Makefile Sat May  9 04:37:30 2015
@@ -48,7 +48,6 @@ ISL_FILES= External/isl/basis_reduction_
            External/isl/isl_convex_hull.c \
            External/isl/isl_ctx.c \
            External/isl/isl_deprecated.c \
-           External/isl/isl_dim.c \
            External/isl/isl_dim_map.c \
            External/isl/isl_equalities.c \
            External/isl/isl_factorization.c \

Modified: polly/trunk/test/DependenceInfo/sequential_loops.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/DependenceInfo/sequential_loops.ll?rev=236932&r1=236931&r2=236932&view=diff
==============================================================================
--- polly/trunk/test/DependenceInfo/sequential_loops.ll (original)
+++ polly/trunk/test/DependenceInfo/sequential_loops.ll Sat May  9 04:37:30 2015
@@ -50,7 +50,7 @@ exit.3:
   ret void
 }
 
-; VALUE: region: 'S1 => exit.3' in function 'sequential_writes':
+; VALUE-LABEL: region: 'S1 => exit.3' in function 'sequential_writes':
 ; VALUE:   RAW dependences:
 ; VALUE:     {  }
 ; VALUE:   WAR dependences:
@@ -62,7 +62,7 @@ exit.3:
 ; VALUE:       Stmt_S1[i0] -> Stmt_S3[i0] : i0 >= 10 and i0 <= 99
 ; VALUE:     }
 
-; MEMORY: region: 'S1 => exit.3' in function 'sequential_writes':
+; MEMORY-LABEL: region: 'S1 => exit.3' in function 'sequential_writes':
 ; MEMORY:   RAW dependences:
 ; MEMORY:     {  }
 ; MEMORY:   WAR dependences:
@@ -125,7 +125,7 @@ exit.3:
   ret void
 }
 
-; VALUE: region: 'S1 => exit.3' in function 'read_after_writes':
+; VALUE-LABEL: region: 'S1 => exit.3' in function 'read_after_writes':
 ; VALUE:   RAW dependences:
 ; VALUE:     {
 ; VALUE:       Stmt_S2[i0] -> Stmt_S3[i0] : i0 >= 0 and i0 <= 9;
@@ -135,10 +135,10 @@ exit.3:
 ; VALUE:     {  }
 ; VALUE:   WAW dependences:
 ; VALUE:     {
-; VALUE:       Stmt_S1[i0] -> Stmt_S2[i0] : i0 >= 0 and i0 <= 9
+; VALUE:       Stmt_S1[i0] -> Stmt_S2[i0] : i0 <= 9 and i0 >= 0
 ; VALUE:     }
 
-; MEMORY: region: 'S1 => exit.3' in function 'read_after_writes':
+; MEMORY-LABEL: region: 'S1 => exit.3' in function 'read_after_writes':
 ; MEMORY:   RAW dependences:
 ; MEMORY:     {
 ; MEMORY:       Stmt_S2[i0] -> Stmt_S3[i0] : i0 <= 9 and i0 >= 0;
@@ -202,7 +202,7 @@ exit.3:
   ret void
 }
 
-; VALUE: region: 'S1 => exit.3' in function 'write_after_read':
+; VALUE-LABEL: region: 'S1 => exit.3' in function 'write_after_read':
 ; VALUE:   RAW dependences:
 ; VALUE:     {
 ; VALUE:     }
@@ -213,10 +213,10 @@ exit.3:
 ; VALUE:     }
 ; VALUE:   WAW dependences:
 ; VALUE:     {
-; VALUE:       Stmt_S2[i0] -> Stmt_S3[i0] : i0 >= 0 and i0 <= 9
+; VALUE:       Stmt_S2[i0] -> Stmt_S3[i0] : i0 <= 9 and i0 >= 0
 ; VALUE:     }
 
-; MEMORY: region: 'S1 => exit.3' in function 'write_after_read':
+; MEMORY-LABEL: region: 'S1 => exit.3' in function 'write_after_read':
 ; MEMORY:   RAW dependences:
 ; MEMORY:     {
 ; MEMORY:     }





More information about the llvm-commits mailing list