[polly] r253794 - isl: Update to isl-0.15-136-g4d5654a
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 21 12:48:40 PST 2015
Author: grosser
Date: Sat Nov 21 14:48:39 2015
New Revision: 253794
URL: http://llvm.org/viewvc/llvm-project?rev=253794&view=rev
Log:
isl: Update to isl-0.15-136-g4d5654a
The most interesting change for Polly in this isl update is 4d5654af which
in certain cases can speed up the construction of run-time checks from an isl
set consisting of several disjuncts significantly.
Modified:
polly/trunk/lib/External/isl/GIT_HEAD_ID
polly/trunk/lib/External/isl/configure
polly/trunk/lib/External/isl/configure.ac
polly/trunk/lib/External/isl/doc/manual.pdf
polly/trunk/lib/External/isl/doc/user.pod
polly/trunk/lib/External/isl/include/isl/map.h
polly/trunk/lib/External/isl/isl_ast_build_expr.c
polly/trunk/lib/External/isl/isl_map.c
polly/trunk/lib/External/isl/isl_test.c
Modified: polly/trunk/lib/External/isl/GIT_HEAD_ID
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/GIT_HEAD_ID?rev=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/GIT_HEAD_ID (original)
+++ polly/trunk/lib/External/isl/GIT_HEAD_ID Sat Nov 21 14:48:39 2015
@@ -1 +1 @@
-isl-0.15-129-gb086c90
+isl-0.15-136-g4d5654a
Modified: polly/trunk/lib/External/isl/configure
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/configure?rev=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/configure (original)
+++ polly/trunk/lib/External/isl/configure Sat Nov 21 14:48:39 2015
@@ -17776,6 +17776,75 @@ $as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
llvm_config="llvm-config"
# Extract the first word of ""$llvm_config"", so it can be a program name with args.
set dummy "$llvm_config"; ac_word=$2
@@ -17823,7 +17892,8 @@ fi
if test "$llvm_config_found" != yes; then
as_fn_error $? "llvm-config not found" "$LINENO" 5
fi
- CLANG_CXXFLAGS=`$llvm_config --cxxflags`
+ CLANG_CXXFLAGS=`$llvm_config --cxxflags | \
+ $SED -e 's/-Wcovered-switch-default//'`
CLANG_LDFLAGS=`$llvm_config --ldflags`
targets=`$llvm_config --targets-built`
components="$targets asmparser bitreader support mc"
Modified: polly/trunk/lib/External/isl/configure.ac
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/configure.ac?rev=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/configure.ac (original)
+++ polly/trunk/lib/External/isl/configure.ac Sat Nov 21 14:48:39 2015
@@ -102,6 +102,7 @@ AX_SUBMODULE(clang,system|no,no)
case "$with_clang" in
system)
AC_PROG_GREP
+ AC_PROG_SED
llvm_config="llvm-config"
AC_CHECK_PROG([llvm_config_found], ["$llvm_config"], [yes])
if test "x$with_clang_prefix" != "x"; then
@@ -113,7 +114,8 @@ system)
if test "$llvm_config_found" != yes; then
AC_MSG_ERROR([llvm-config not found])
fi
- CLANG_CXXFLAGS=`$llvm_config --cxxflags`
+ CLANG_CXXFLAGS=`$llvm_config --cxxflags | \
+ $SED -e 's/-Wcovered-switch-default//'`
CLANG_LDFLAGS=`$llvm_config --ldflags`
targets=`$llvm_config --targets-built`
components="$targets asmparser bitreader support mc"
Modified: polly/trunk/lib/External/isl/doc/manual.pdf
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/doc/manual.pdf?rev=253794&r1=253793&r2=253794&view=diff
==============================================================================
Binary files polly/trunk/lib/External/isl/doc/manual.pdf (original) and polly/trunk/lib/External/isl/doc/manual.pdf Sat Nov 21 14:48:39 2015 differ
Modified: polly/trunk/lib/External/isl/doc/user.pod
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/doc/user.pod?rev=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/doc/user.pod (original)
+++ polly/trunk/lib/External/isl/doc/user.pod Sat Nov 21 14:48:39 2015
@@ -5211,7 +5211,21 @@ All parameters need to be named.
__isl_take isl_qpolynomial *qp,
__isl_take isl_space *model);
-=item * Unary Arithmethic Operations
+=item * Unary Arithmetic Operations
+
+ #include <isl/set.h>
+ __isl_give isl_set *isl_set_neg(
+ __isl_take isl_set *set);
+ #include <isl/map.h>
+ __isl_give isl_map *isl_map_neg(
+ __isl_take isl_map *map);
+
+C<isl_set_neg> constructs a set containing the opposites of
+the elements in its argument.
+The domain of the result of C<isl_map_neg> is the same
+as the domain of its argument. The corresponding range
+elements are the opposites of the corresponding range
+elements in the argument.
#include <isl/val.h>
__isl_give isl_multi_val *isl_multi_val_neg(
@@ -6550,7 +6564,24 @@ to simplify the expression associated to
__isl_take isl_union_pw_qpolynomial_fold *upwf,
__isl_take isl_set *context);
-=item * Binary Arithmethic Operations
+=item * Binary Arithmetic Operations
+
+ #include <isl/set.h>
+ __isl_give isl_set *isl_set_sum(
+ __isl_take isl_set *set1,
+ __isl_take isl_set *set2);
+ #include <isl/map.h>
+ __isl_give isl_map *isl_map_sum(
+ __isl_take isl_map *map1,
+ __isl_take isl_map *map2);
+
+C<isl_set_sum> computes the Minkowski sum of its two arguments,
+i.e., the set containing the sums of pairs of elements from
+C<set1> and C<set2>.
+The domain of the result of C<isl_map_sum> is the intersection
+of the domains of its two arguments. The corresponding range
+elements are the sums of the corresponding range elements
+in the two arguments.
#include <isl/val.h>
__isl_give isl_multi_val *isl_multi_val_add(
@@ -7392,6 +7423,8 @@ assigns a different value to two domain
schedule dimensions in the same band assign them the same value,
then the two domain elements are ordered according to these two
different values.
+Each expression is required to be total in the domain elements
+that reach the band node.
=item C<isl_schedule_node_expansion>
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=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/map.h (original)
+++ polly/trunk/lib/External/isl/include/isl/map.h Sat Nov 21 14:48:39 2015
@@ -222,8 +222,9 @@ struct isl_basic_map *isl_basic_map_sum(
struct isl_basic_map *bmap1, struct isl_basic_map *bmap2);
struct isl_basic_map *isl_basic_map_neg(struct isl_basic_map *bmap);
-struct isl_map *isl_map_sum(struct isl_map *map1, struct isl_map *map2);
-struct isl_map *isl_map_neg(struct isl_map *map);
+__isl_give isl_map *isl_map_sum(__isl_take isl_map *map1,
+ __isl_take isl_map *map2);
+__isl_give isl_map *isl_map_neg(__isl_take isl_map *map);
__isl_give isl_map *isl_map_floordiv_val(__isl_take isl_map *map,
__isl_take isl_val *d);
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=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_ast_build_expr.c (original)
+++ polly/trunk/lib/External/isl/isl_ast_build_expr.c Sat Nov 21 14:48:39 2015
@@ -1492,6 +1492,14 @@ __isl_give isl_ast_expr *isl_ast_build_e
* the previous disjuncts have been removed from build->domain.
* In particular, constraints that ensure that there is no overlap
* with these previous disjuncts, can be removed.
+ * This is mostly useful for disjuncts that are only defined by
+ * a single constraint (relative to the build domain) as the opposite
+ * of that single constraint can then be removed from the other disjuncts.
+ * In order not to increase the number of disjuncts in the build domain
+ * after subtracting the previous disjuncts of "set", the simple hull
+ * is computed after taking the difference with each of these disjuncts.
+ * This means that constraints that prevent overlap with a union
+ * of multiple previous disjuncts are not removed.
*
* "set" lives in the internal schedule space.
*/
@@ -1524,8 +1532,11 @@ __isl_give isl_ast_expr *isl_ast_build_e
for (i = 1; i < n; ++i) {
isl_ast_expr *expr;
+ isl_set *rest;
- domain = isl_set_subtract(domain, set);
+ rest = isl_set_subtract(isl_set_copy(domain), set);
+ rest = isl_set_from_basic_set(isl_set_simple_hull(rest));
+ domain = isl_set_intersect(domain, rest);
bset = isl_basic_set_list_get_basic_set(list, i);
set = isl_set_from_basic_set(isl_basic_set_copy(bset));
bset = isl_basic_set_gist(bset,
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=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_map.c (original)
+++ polly/trunk/lib/External/isl/isl_map.c Sat Nov 21 14:48:39 2015
@@ -2857,6 +2857,15 @@ struct isl_basic_map *isl_basic_map_inte
isl_assert(bmap1->ctx,
isl_space_is_equal(bmap1->dim, bmap2->dim), goto error);
+ if (isl_basic_map_plain_is_empty(bmap1)) {
+ isl_basic_map_free(bmap2);
+ return bmap1;
+ }
+ if (isl_basic_map_plain_is_empty(bmap2)) {
+ isl_basic_map_free(bmap1);
+ return bmap2;
+ }
+
if (bmap1->sample &&
isl_basic_map_contains(bmap1, bmap1->sample) > 0 &&
isl_basic_map_contains(bmap2, bmap1->sample) > 0)
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=253794&r1=253793&r2=253794&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_test.c (original)
+++ polly/trunk/lib/External/isl/isl_test.c Sat Nov 21 14:48:39 2015
@@ -2858,6 +2858,31 @@ static int test_subtract(isl_ctx *ctx)
return 0;
}
+/* Check that intersecting the empty basic set with another basic set
+ * does not increase the number of constraints. In particular,
+ * the empty basic set should maintain its canonical representation.
+ */
+static int test_intersect(isl_ctx *ctx)
+{
+ int n1, n2;
+ isl_basic_set *bset1, *bset2;
+
+ bset1 = isl_basic_set_read_from_str(ctx, "{ [a,b,c] : 1 = 0 }");
+ bset2 = isl_basic_set_read_from_str(ctx, "{ [1,2,3] }");
+ n1 = isl_basic_set_n_constraint(bset1);
+ bset1 = isl_basic_set_intersect(bset1, bset2);
+ n2 = isl_basic_set_n_constraint(bset1);
+ isl_basic_set_free(bset1);
+ if (!bset1)
+ return -1;
+ if (n1 != n2)
+ isl_die(ctx, isl_error_unknown,
+ "number of constraints of empty set changed",
+ return -1);
+
+ return 0;
+}
+
int test_factorize(isl_ctx *ctx)
{
const char *str;
@@ -6105,6 +6130,7 @@ struct {
{ "factorize", &test_factorize },
{ "subset", &test_subset },
{ "subtract", &test_subtract },
+ { "intersect", &test_intersect },
{ "lexmin", &test_lexmin },
{ "min", &test_min },
{ "gist", &test_gist },
More information about the llvm-commits
mailing list