Update isl to isl-0.18-9-gd4734f3

llvm-svn: 290389
This commit is contained in:
Tobias Grosser 2016-12-22 23:08:57 +00:00
parent 7e98468f1e
commit ccae1ee4df
22 changed files with 370 additions and 202 deletions

View File

@ -23,7 +23,7 @@ isl was written by
Domaine de Voluceau - Rocquencourt, B.P. 105
78153 Le Chesnay
France
2015 Polly Labs
2015-2016 Polly Labs
Contributions by
@ -38,6 +38,7 @@ Andreas Kloeckner
Michael Kruse
Sebastian Pop
Louis-Noel Pouchet
Benoit Pradelle
Uday Kumar Reddy
Andreas Simbuerger
Sven van Haastregt

View File

@ -1,3 +1,13 @@
version: 0.18
date: Sun Dec 18 11:01:58 CET 2016
changes:
- improve elimination of redundant existentially quantified variables
- improve coalescing
- improve parametric integer programming
- preserve isolate option in isl_schedule_node_band_split
- print AST nodes in YAML format
- minor improvements to Python bindings
---
version: 0.17.1
date: Fri May 6 12:02:48 CEST 2016
changes:

View File

@ -1 +1 @@
isl-0.17.1-314-g3106e8d
isl-0.18-9-gd4734f3

View File

@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2015 Free Software Foundation, Inc.
# Copyright 1992-2016 Free Software Foundation, Inc.
timestamp='2015-08-20'
timestamp='2016-04-02'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -27,7 +27,7 @@ timestamp='2015-08-20'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
# Please send patches to <config-patches@gnu.org>.
@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2015 Free Software Foundation, Inc.
Copyright 1992-2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -237,6 +237,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
exit ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
exit ;;
@ -268,42 +272,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE="alpha" ;;
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
UNAME_MACHINE="alpha" ;;
UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
UNAME_MACHINE="alpha" ;;
UNAME_MACHINE=alpha ;;
"EV5 (21164)")
UNAME_MACHINE="alphaev5" ;;
UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
UNAME_MACHINE="alphaev56" ;;
UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
UNAME_MACHINE="alphapca56" ;;
UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
UNAME_MACHINE="alphapca57" ;;
UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
UNAME_MACHINE="alphaev6" ;;
UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
UNAME_MACHINE="alphaev67" ;;
UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
UNAME_MACHINE="alphaev68" ;;
UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
UNAME_MACHINE="alphaev68" ;;
UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
UNAME_MACHINE="alphaev68" ;;
UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
UNAME_MACHINE="alphaev69" ;;
UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
UNAME_MACHINE="alphaev7" ;;
UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
UNAME_MACHINE="alphaev79" ;;
UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
@ -376,16 +380,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH="x86_64"
SUN_ARCH=x86_64
fi
fi
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@ -410,7 +414,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
@ -635,13 +639,13 @@ EOF
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
@ -680,11 +684,11 @@ EOF
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
(CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
if [ ${HP_ARCH} = hppa2.0w ]
then
eval $set_cc_for_build
@ -697,12 +701,12 @@ EOF
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
HP_ARCH="hppa2.0w"
HP_ARCH=hppa2.0w
else
HP_ARCH="hppa64"
HP_ARCH=hppa64
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@ -807,14 +811,14 @@ EOF
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@ -896,7 +900,7 @@ EOF
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
@ -919,7 +923,7 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
@ -965,6 +969,9 @@ EOF
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
k1om:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
@ -1120,7 +1127,7 @@ EOF
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
@ -1269,6 +1276,9 @@ EOF
SX-8R:SUPER-UX:*:*)
echo sx8r-nec-superux${UNAME_RELEASE}
exit ;;
SX-ACE:SUPER-UX:*:*)
echo sxace-nec-superux${UNAME_RELEASE}
exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
@ -1282,9 +1292,9 @@ EOF
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
@ -1306,7 +1316,7 @@ EOF
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
@ -1337,7 +1347,7 @@ EOF
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
if test "$cputype" = "386"; then
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
@ -1379,7 +1389,7 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
exit ;;
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
@ -1390,6 +1400,9 @@ EOF
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
esac
cat >&2 <<EOF
@ -1399,9 +1412,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
If the version you run ($0) is already up to date, please
send the following data and any information you think might be

View File

@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2015 Free Software Foundation, Inc.
# Copyright 1992-2016 Free Software Foundation, Inc.
timestamp='2015-08-20'
timestamp='2016-03-30'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -33,7 +33,7 @@ timestamp='2015-08-20'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@ -53,8 +53,7 @@ timestamp='2015-08-20'
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS
$0 [OPTION] ALIAS
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2015 Free Software Foundation, Inc.
Copyright 1992-2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -521,7 +520,7 @@ case $basic_machine in
basic_machine=i386-pc
os=-aros
;;
asmjs)
asmjs)
basic_machine=asmjs-unknown
;;
aux)
@ -1383,7 +1382,7 @@ case $os in
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
@ -1399,7 +1398,8 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
| -onefs* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@ -1531,6 +1531,8 @@ case $os in
;;
-nacl*)
;;
-ios)
;;
-none)
;;
*)

View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for isl 0.17.1.
# Generated by GNU Autoconf 2.69 for isl 0.18.
#
# Report bugs to <isl-development@googlegroups.com>.
#
@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='isl'
PACKAGE_TARNAME='isl'
PACKAGE_VERSION='0.17.1'
PACKAGE_STRING='isl 0.17.1'
PACKAGE_VERSION='0.18'
PACKAGE_STRING='isl 0.18'
PACKAGE_BUGREPORT='isl-development@googlegroups.com'
PACKAGE_URL=''
@ -1375,7 +1375,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures isl 0.17.1 to adapt to many kinds of systems.
\`configure' configures isl 0.18 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1446,7 +1446,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of isl 0.17.1:";;
short | recursive ) echo "Configuration of isl 0.18:";;
esac
cat <<\_ACEOF
@ -1576,7 +1576,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
isl configure 0.17.1
isl configure 0.18
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2471,7 +2471,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by isl $as_me 0.17.1, which was
It was created by isl $as_me 0.18, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -3335,7 +3335,7 @@ fi
# Define the identity of the package.
PACKAGE='isl'
VERSION='0.17.1'
VERSION='0.18'
cat >>confdefs.h <<_ACEOF
@ -3468,7 +3468,7 @@ fi
AM_BACKSLASH='\'
versioninfo=17:1:2
versioninfo=18:0:3
if test "x$prefix" != "xNONE"; then
prefix_wd=`cd $prefix && pwd`
@ -19855,7 +19855,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by isl $as_me 0.17.1, which was
This file was extended by isl $as_me 0.18, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -19921,7 +19921,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
isl config.status 0.17.1
isl config.status 0.18
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@ -21186,7 +21186,6 @@ $as_echo X"$file" |
cat <<_LT_EOF >> "$cfgfile"
#! $SHELL
# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
# Provide generalized library-building support services.

View File

@ -1,10 +1,10 @@
AC_INIT([isl], [0.17.1], [isl-development@googlegroups.com])
AC_INIT([isl], [0.18], [isl-development@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=17:1:2
versioninfo=18:0:3
if test "x$prefix" != "xNONE"; then
prefix_wd=`cd $prefix && pwd`

Binary file not shown.

View File

@ -94,22 +94,22 @@ __isl_give isl_ast_build *isl_ast_build_set_create_leaf(
__isl_give isl_ast_node *(*fn)(__isl_take isl_ast_build *build,
void *user), void *user);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_expr_from_set(
__isl_keep isl_ast_build *build, __isl_take isl_set *set);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_expr_from_pw_aff(
__isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_access_from_pw_multi_aff(
__isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_access_from_multi_pw_aff(
__isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_call_from_pw_multi_aff(
__isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma);
__isl_export
__isl_overload
__isl_give isl_ast_expr *isl_ast_build_call_from_multi_pw_aff(
__isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa);

View File

@ -628,7 +628,7 @@ __isl_give isl_basic_set *isl_basic_set_drop_constraints_involving_dims(
/* Drop constraints from "map" by applying "drop" to each basic map.
*/
__isl_give isl_map *drop_constraints(__isl_take isl_map *map,
static __isl_give isl_map *drop_constraints(__isl_take isl_map *map,
enum isl_dim_type type, unsigned first, unsigned n,
__isl_give isl_basic_map *(*drop)(__isl_take isl_basic_map *bmap,
enum isl_dim_type type, unsigned first, unsigned n))

View File

@ -3,7 +3,7 @@
* Copyright 2010 INRIA Saclay
* Copyright 2012-2013 Ecole Normale Superieure
* Copyright 2014 INRIA Rocquencourt
* Copyright 2016 Sven Verdoolaege
* Copyright 2016 INRIA Paris
*
* Use of this software is governed by the MIT license
*
@ -14,6 +14,8 @@
* and Ecole Normale Superieure, 45 rue dUlm, 75230 Paris, France
* and Inria Paris - Rocquencourt, Domaine de Voluceau - Rocquencourt,
* B.P. 105 - 78153 Le Chesnay, France
* and Centre de Recherche Inria de Paris, 2 rue Simone Iff - Voie DQ12,
* CS 42112, 75589 Paris Cedex 12, France
*/
#include <isl_ctx_private.h>
@ -2364,6 +2366,7 @@ static enum isl_change coalesce_with_expanded_divs(
init_status(info_i);
bmap = isl_basic_map_copy(bmap);
bmap = isl_basic_map_expand_divs(bmap, isl_mat_copy(div), exp);
bmap = isl_basic_map_mark_final(bmap);
if (!bmap)
goto error;

View File

@ -86,7 +86,12 @@ int isl_basic_set_constraint_is_redundant(struct isl_basic_set **bset,
* Since some constraints may be mutually redundant, sort the constraints
* first such that constraints that involve existentially quantified
* variables are considered for removal before those that do not.
* The sorting is also need for the use in map_simple_hull.
* The sorting is also needed for the use in map_simple_hull.
*
* Note that isl_tab_detect_implicit_equalities may also end up
* marking some constraints as redundant. Make sure the constraints
* are preserved and undo those marking such that isl_tab_detect_redundant
* can consider the constraints in the sorted order.
*
* Alternatively, we could have intersected the basic map with the
* corresponding equality and then checked if the dimension was that
@ -110,8 +115,14 @@ __isl_give isl_basic_map *isl_basic_map_remove_redundancies(
bmap = isl_basic_map_sort_constraints(bmap);
tab = isl_tab_from_basic_map(bmap, 0);
if (!tab)
goto error;
tab->preserve = 1;
if (isl_tab_detect_implicit_equalities(tab) < 0)
goto error;
if (isl_tab_restore_redundant(tab) < 0)
goto error;
tab->preserve = 0;
if (isl_tab_detect_redundant(tab) < 0)
goto error;
bmap = isl_basic_map_update_from_tab(bmap, tab);

View File

@ -689,7 +689,8 @@ static struct isl_basic_set *compress_variables(
isl_mat_free(*T2);
*T2 = NULL;
}
return isl_basic_set_set_to_empty(bset);
bset = isl_basic_set_set_to_empty(bset);
return return_with_identity(bset, T, T2);
}
bset = isl_basic_set_preimage(bset, T ? isl_mat_copy(TC) : TC);

View File

@ -3,6 +3,7 @@
* Copyright 2010 INRIA Saclay
* Copyright 2012-2014 Ecole Normale Superieure
* Copyright 2014 INRIA Rocquencourt
* Copyright 2016 INRIA Paris
* Copyright 2016 Sven Verdoolaege
*
* Use of this software is governed by the MIT license
@ -14,6 +15,8 @@
* and Ecole Normale Superieure, 45 rue dUlm, 75230 Paris, France
* and Inria Paris - Rocquencourt, Domaine de Voluceau - Rocquencourt,
* B.P. 105 - 78153 Le Chesnay, France
* and Centre de Recherche Inria de Paris, 2 rue Simone Iff - Voie DQ12,
* CS 42112, 75589 Paris Cedex 12, France
*/
#include <string.h>

View File

@ -28,6 +28,7 @@
#include <isl_local_space_private.h>
#include <isl_aff_private.h>
#include <isl_val_private.h>
#include <isl_constraint_private.h>
#include <isl/ast_build.h>
#include <isl_sort.h>
#include <isl_output_private.h>
@ -729,24 +730,52 @@ static __isl_give isl_printer *print_div_list(__isl_take isl_printer *p,
return p;
}
/* Does printing "bmap" require an "exists" clause?
/* Does printing an object with local variables described by "div"
* require an "exists" clause?
* That is, are there any local variables without an explicit representation?
* An exists clause is also needed in "dump" mode because
* explicit div representations are not printed inline in that case.
*/
static isl_bool need_exists(__isl_keep isl_printer *p,
__isl_keep isl_basic_map *bmap, __isl_keep isl_mat *div)
static isl_bool need_exists(__isl_keep isl_printer *p, __isl_keep isl_mat *div)
{
int i;
int i, n;
if (!p || !bmap)
if (!p || !div)
return isl_bool_error;
if (bmap->n_div == 0)
n = isl_mat_rows(div);
if (n == 0)
return isl_bool_false;
for (i = 0; i < bmap->n_div; ++i)
if (p->dump)
return isl_bool_true;
for (i = 0; i < n; ++i)
if (!can_print_div_expr(p, div, i))
return isl_bool_true;
return isl_bool_false;
}
/* Print the start of an exists clause, i.e.,
*
* (exists variables:
*
* In dump mode, local variables with an explicit definition are printed
* as well because they will not be printed inline.
*/
static __isl_give isl_printer *open_exists(__isl_take isl_printer *p,
__isl_keep isl_space *space, __isl_keep isl_mat *div, int latex)
{
int dump;
if (!p)
return NULL;
dump = p->dump;
p = isl_printer_print_str(p, s_open_exists[latex]);
p = print_div_list(p, space, div, latex, dump);
p = isl_printer_print_str(p, ": ");
return p;
}
/* Print the constraints of "bmap" to "p".
* The names of the variables are taken from "space".
* "latex" is set if the constraints should be printed in LaTeX format.
@ -763,15 +792,9 @@ static __isl_give isl_printer *print_disjunct(__isl_keep isl_basic_map *bmap,
return NULL;
dump = p->dump;
div = isl_basic_map_get_divs(bmap);
if (dump)
exists = bmap->n_div > 0;
else
exists = need_exists(p, bmap, div);
if (exists >= 0 && exists) {
p = isl_printer_print_str(p, s_open_exists[latex]);
p = print_div_list(p, space, div, latex, dump);
p = isl_printer_print_str(p, ": ");
}
exists = need_exists(p, div);
if (exists >= 0 && exists)
p = open_exists(p, space, div, latex);
if (dump)
div = isl_mat_free(div);
@ -851,6 +874,23 @@ static __isl_give isl_printer *isl_set_print_omega(__isl_keep isl_set *set,
return p;
}
/* Print the list of parameters in "space", followed by an arrow, to "p",
* if there are any parameters.
*/
static __isl_give isl_printer *print_param_tuple(__isl_take isl_printer *p,
__isl_keep isl_space *space, struct isl_print_space_data *data)
{
if (!p || !space)
return isl_printer_free(p);
if (isl_space_dim(space, isl_dim_param) == 0)
return p;
p = print_tuple(space, p, isl_dim_param, data);
p = isl_printer_print_str(p, s_to[data->latex]);
return p;
}
static __isl_give isl_printer *isl_basic_map_print_isl(
__isl_keep isl_basic_map *bmap, __isl_take isl_printer *p,
int latex)
@ -858,10 +898,7 @@ static __isl_give isl_printer *isl_basic_map_print_isl(
struct isl_print_space_data data = { .latex = latex };
int rational = ISL_F_ISSET(bmap, ISL_BASIC_MAP_RATIONAL);
if (isl_basic_map_dim(bmap, isl_dim_param) > 0) {
p = print_tuple(bmap->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, bmap->dim, &data);
p = isl_printer_print_str(p, "{ ");
p = isl_print_space(bmap->dim, p, rational, &data);
p = isl_printer_print_str(p, " : ");
@ -1224,10 +1261,7 @@ static __isl_give isl_printer *isl_map_print_isl(__isl_keep isl_map *map,
{
struct isl_print_space_data data = { 0 };
if (isl_map_dim(map, isl_dim_param) > 0) {
p = print_tuple(map->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, s_to[0]);
}
p = print_param_tuple(p, map->dim, &data);
p = isl_printer_print_str(p, s_open_set[0]);
p = isl_map_print_isl_body(map, p);
p = isl_printer_print_str(p, s_close_set[0]);
@ -1240,10 +1274,7 @@ static __isl_give isl_printer *print_latex_map(__isl_keep isl_map *map,
struct isl_print_space_data data = { 0 };
data.latex = 1;
if (isl_map_dim(map, isl_dim_param) > 0) {
p = print_tuple(map->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, s_to[1]);
}
p = print_param_tuple(p, map->dim, &data);
p = isl_printer_print_str(p, s_open_set[1]);
data.print_dim = &print_dim_eq;
data.user = aff;
@ -1383,14 +1414,11 @@ static __isl_give isl_printer *isl_union_map_print_isl(
{
struct isl_union_print_data data;
struct isl_print_space_data space_data = { 0 };
isl_space *dim;
isl_space *space;
dim = isl_union_map_get_space(umap);
if (isl_space_dim(dim, isl_dim_param) > 0) {
p = print_tuple(dim, p, isl_dim_param, &space_data);
p = isl_printer_print_str(p, s_to[0]);
}
isl_space_free(dim);
space = isl_union_map_get_space(umap);
p = print_param_tuple(p, space, &space_data);
isl_space_free(space);
p = isl_printer_print_str(p, s_open_set[0]);
data.p = p;
data.first = 1;
@ -1612,10 +1640,7 @@ static __isl_give isl_printer *print_qpolynomial_isl(__isl_take isl_printer *p,
if (!p || !qp)
goto error;
if (isl_space_dim(qp->dim, isl_dim_param) > 0) {
p = print_tuple(qp->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, qp->dim, &data);
p = isl_printer_print_str(p, "{ ");
if (!isl_space_is_params(qp->dim)) {
p = isl_print_space(qp->dim, p, 0, &data);
@ -1757,10 +1782,7 @@ static __isl_give isl_printer *print_pw_qpolynomial_isl(
if (!p || !pwqp)
goto error;
if (isl_space_dim(pwqp->dim, isl_dim_param) > 0) {
p = print_tuple(pwqp->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, pwqp->dim, &data);
p = isl_printer_print_str(p, "{ ");
if (pwqp->n == 0) {
if (!isl_space_is_set(pwqp->dim)) {
@ -1821,10 +1843,7 @@ static __isl_give isl_printer *print_pw_qpolynomial_fold_isl(
{
struct isl_print_space_data data = { 0 };
if (isl_space_dim(pwf->dim, isl_dim_param) > 0) {
p = print_tuple(pwf->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, pwf->dim, &data);
p = isl_printer_print_str(p, "{ ");
if (pwf->n == 0) {
if (!isl_space_is_set(pwf->dim)) {
@ -2063,14 +2082,11 @@ static __isl_give isl_printer *print_union_pw_qpolynomial_isl(
{
struct isl_union_print_data data;
struct isl_print_space_data space_data = { 0 };
isl_space *dim;
isl_space *space;
dim = isl_union_pw_qpolynomial_get_space(upwqp);
if (isl_space_dim(dim, isl_dim_param) > 0) {
p = print_tuple(dim, p, isl_dim_param, &space_data);
p = isl_printer_print_str(p, " -> ");
}
isl_space_free(dim);
space = isl_union_pw_qpolynomial_get_space(upwqp);
p = print_param_tuple(p, space, &space_data);
isl_space_free(space);
p = isl_printer_print_str(p, "{ ");
data.p = p;
data.first = 1;
@ -2208,14 +2224,11 @@ static __isl_give isl_printer *print_union_pw_qpolynomial_fold_isl(
{
struct isl_union_print_data data;
struct isl_print_space_data space_data = { 0 };
isl_space *dim;
isl_space *space;
dim = isl_union_pw_qpolynomial_fold_get_space(upwf);
if (isl_space_dim(dim, isl_dim_param) > 0) {
p = print_tuple(dim, p, isl_dim_param, &space_data);
p = isl_printer_print_str(p, " -> ");
}
isl_space_free(dim);
space = isl_union_pw_qpolynomial_fold_get_space(upwf);
p = print_param_tuple(p, space, &space_data);
isl_space_free(space);
p = isl_printer_print_str(p, "{ ");
data.p = p;
data.first = 1;
@ -2243,17 +2256,43 @@ error:
return NULL;
}
/* Print the isl_constraint "c" to "p".
*/
__isl_give isl_printer *isl_printer_print_constraint(__isl_take isl_printer *p,
__isl_keep isl_constraint *c)
{
isl_basic_map *bmap;
struct isl_print_space_data data = { 0 };
isl_local_space *ls;
isl_space *space;
isl_bool exists;
if (!p || !c)
goto error;
bmap = isl_basic_map_from_constraint(isl_constraint_copy(c));
p = isl_printer_print_basic_map(p, bmap);
isl_basic_map_free(bmap);
ls = isl_constraint_get_local_space(c);
if (!ls)
return isl_printer_free(p);
space = isl_local_space_get_space(ls);
p = print_param_tuple(p, space, &data);
p = isl_printer_print_str(p, "{ ");
p = isl_print_space(space, p, 0, &data);
p = isl_printer_print_str(p, " : ");
exists = need_exists(p, ls->div);
if (exists < 0)
p = isl_printer_free(p);
if (exists >= 0 && exists)
p = open_exists(p, space, ls->div, 0);
p = print_affine_of_len(space, ls->div, p, c->v->el, c->v->size);
if (isl_constraint_is_equality(c))
p = isl_printer_print_str(p, " = 0");
else
p = isl_printer_print_str(p, " >= 0");
if (exists >= 0 && exists)
p = isl_printer_print_str(p, s_close_exists[0]);
p = isl_printer_print_str(p, " }");
isl_space_free(space);
isl_local_space_free(ls);
return p;
error:
isl_printer_free(p);
@ -2268,10 +2307,7 @@ static __isl_give isl_printer *isl_printer_print_space_isl(
if (!space)
goto error;
if (isl_space_dim(space, isl_dim_param) > 0) {
p = print_tuple(space, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, space, &data);
p = isl_printer_print_str(p, "{ ");
if (isl_space_is_params(space))
@ -2310,10 +2346,7 @@ __isl_give isl_printer *isl_printer_print_local_space(__isl_take isl_printer *p,
if (!ls)
goto error;
if (isl_local_space_dim(ls, isl_dim_param) > 0) {
p = print_tuple(ls->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, ls->dim, &data);
p = isl_printer_print_str(p, "{ ");
p = isl_print_space(ls->dim, p, 0, &data);
n_div = isl_local_space_dim(ls, isl_dim_div);
@ -2379,10 +2412,7 @@ static __isl_give isl_printer *print_aff_isl(__isl_take isl_printer *p,
if (!aff)
goto error;
if (isl_local_space_dim(aff->ls, isl_dim_param) > 0) {
p = print_tuple(aff->ls->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, aff->ls->dim, &data);
p = isl_printer_print_str(p, "{ ");
p = print_aff(p, aff);
p = isl_printer_print_str(p, " }");
@ -2425,10 +2455,7 @@ static __isl_give isl_printer *print_pw_aff_isl(__isl_take isl_printer *p,
if (!pwaff)
goto error;
if (isl_space_dim(pwaff->dim, isl_dim_param) > 0) {
p = print_tuple(pwaff->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, pwaff->dim, &data);
p = isl_printer_print_str(p, "{ ");
p = print_pw_aff_body(p, pwaff);
p = isl_printer_print_str(p, " }");
@ -2648,10 +2675,7 @@ static __isl_give isl_printer *print_union_pw_aff_isl(
isl_space *space;
space = isl_union_pw_aff_get_space(upa);
if (isl_space_dim(space, isl_dim_param) > 0) {
p = print_tuple(space, p, isl_dim_param, &data);
p = isl_printer_print_str(p, s_to[0]);
}
p = print_param_tuple(p, space, &data);
isl_space_free(space);
p = print_union_pw_aff_body(p, upa);
return p;
@ -2711,10 +2735,7 @@ static __isl_give isl_printer *print_multi_aff_isl(__isl_take isl_printer *p,
if (!maff)
goto error;
if (isl_space_dim(maff->space, isl_dim_param) > 0) {
p = print_tuple(maff->space, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, maff->space, &data);
p = isl_printer_print_str(p, "{ ");
p = print_multi_aff(p, maff);
p = isl_printer_print_str(p, " }");
@ -2771,10 +2792,7 @@ static __isl_give isl_printer *print_pw_multi_aff_isl(__isl_take isl_printer *p,
if (!pma)
goto error;
if (isl_space_dim(pma->dim, isl_dim_param) > 0) {
p = print_tuple(pma->dim, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, pma->dim, &data);
p = isl_printer_print_str(p, "{ ");
p = print_pw_multi_aff_body(p, pma);
p = isl_printer_print_str(p, " }");
@ -2873,10 +2891,7 @@ static __isl_give isl_printer *print_union_pw_multi_aff_isl(
isl_space *space;
space = isl_union_pw_multi_aff_get_space(upma);
if (isl_space_dim(space, isl_dim_param) > 0) {
p = print_tuple(space, p, isl_dim_param, &space_data);
p = isl_printer_print_str(p, s_to[0]);
}
p = print_param_tuple(p, space, &space_data);
isl_space_free(space);
p = isl_printer_print_str(p, s_open_set[0]);
data.p = p;
@ -2955,10 +2970,7 @@ static __isl_give isl_printer *print_multi_pw_aff_isl(__isl_take isl_printer *p,
if (!mpa)
return isl_printer_free(p);
if (isl_space_dim(mpa->space, isl_dim_param) > 0) {
p = print_tuple(mpa->space, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, mpa->space, &data);
p = isl_printer_print_str(p, "{ ");
data.print_dim = &print_dim_mpa;
data.user = mpa;
@ -3007,10 +3019,7 @@ static __isl_give isl_printer *print_multi_val_isl(__isl_take isl_printer *p,
if (!mv)
return isl_printer_free(p);
if (isl_space_dim(mv->space, isl_dim_param) > 0) {
p = print_tuple(mv->space, p, isl_dim_param, &data);
p = isl_printer_print_str(p, " -> ");
}
p = print_param_tuple(p, mv->space, &data);
p = isl_printer_print_str(p, "{ ");
data.print_dim = &print_dim_mv;
data.user = mv;
@ -3065,11 +3074,7 @@ static __isl_give isl_printer *print_multi_union_pw_aff_isl(
isl_space *space;
space = isl_multi_union_pw_aff_get_space(mupa);
if (isl_space_dim(space, isl_dim_param) > 0) {
struct isl_print_space_data space_data = { 0 };
p = print_tuple(space, p, isl_dim_param, &space_data);
p = isl_printer_print_str(p, s_to[0]);
}
p = print_param_tuple(p, space, &data);
data.print_dim = &print_union_pw_aff_dim;
data.user = mupa;

View File

@ -1,6 +1,7 @@
/*
* Copyright 2013-2014 Ecole Normale Superieure
* Copyright 2014 INRIA Rocquencourt
* Copyright 2016 INRIA Paris
*
* Use of this software is governed by the MIT license
*
@ -8,6 +9,8 @@
* Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
* and Inria Paris - Rocquencourt, Domaine de Voluceau - Rocquencourt,
* B.P. 105 - 78153 Le Chesnay, France
* and Centre de Recherche Inria de Paris, 2 rue Simone Iff - Voie DQ12,
* CS 42112, 75589 Paris Cedex 12, France
*/
#include <isl/map.h>

View File

@ -2,6 +2,7 @@
* Copyright 2011 INRIA Saclay
* Copyright 2012-2014 Ecole Normale Superieure
* Copyright 2015-2016 Sven Verdoolaege
* Copyright 2016 INRIA Paris
*
* Use of this software is governed by the MIT license
*
@ -9,6 +10,8 @@
* Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
* 91893 Orsay, France
* and Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
* and Centre de Recherche Inria de Paris, 2 rue Simone Iff - Voie DQ12,
* CS 42112, 75589 Paris Cedex 12, France
*/
#include <isl_ctx_private.h>

View File

@ -3378,6 +3378,29 @@ static int ununrestrict(struct isl_tab *tab, struct isl_tab_var *var)
return 0;
}
/* Unmark the last redundant row in "tab" as being redundant.
* This undoes part of the modifications performed by isl_tab_mark_redundant.
* In particular, remove the redundant mark and make
* sure the sample value respects the constraint again.
* A variable that is marked non-negative by isl_tab_mark_redundant
* is covered by a separate undo record.
*/
static isl_stat restore_last_redundant(struct isl_tab *tab)
{
struct isl_tab_var *var;
if (tab->n_redundant < 1)
isl_die(isl_tab_get_ctx(tab), isl_error_internal,
"no redundant rows", return isl_stat_error);
var = isl_tab_var_from_row(tab, tab->n_redundant - 1);
var->is_redundant = 0;
tab->n_redundant--;
restore_row(tab, var);
return isl_stat_ok;
}
static int perform_undo_var(struct isl_tab *tab, struct isl_tab_undo *undo) WARN_UNUSED;
static int perform_undo_var(struct isl_tab *tab, struct isl_tab_undo *undo)
{
@ -3387,10 +3410,10 @@ static int perform_undo_var(struct isl_tab *tab, struct isl_tab_undo *undo)
var->is_nonneg = 0;
break;
case isl_tab_undo_redundant:
var->is_redundant = 0;
tab->n_redundant--;
restore_row(tab, isl_tab_var_from_row(tab, tab->n_redundant));
break;
if (!var->is_row || var->index != tab->n_redundant - 1)
isl_die(isl_tab_get_ctx(tab), isl_error_internal,
"not undoing last redundant row", return -1);
return restore_last_redundant(tab);
case isl_tab_undo_freeze:
var->frozen = 0;
break;
@ -3429,6 +3452,36 @@ static int perform_undo_var(struct isl_tab *tab, struct isl_tab_undo *undo)
return 0;
}
/* Restore all rows that have been marked redundant by isl_tab_mark_redundant
* and that have been preserved in the tableau.
* Note that isl_tab_mark_redundant may also have marked some variables
* as being non-negative before marking them redundant. These need
* to be removed as well as otherwise some constraints could end up
* getting marked redundant with respect to the variable.
*/
isl_stat isl_tab_restore_redundant(struct isl_tab *tab)
{
if (!tab)
return isl_stat_error;
if (tab->need_undo)
isl_die(isl_tab_get_ctx(tab), isl_error_invalid,
"manually restoring redundant constraints "
"interferes with undo history",
return isl_stat_error);
while (tab->n_redundant > 0) {
if (tab->row_var[tab->n_redundant - 1] >= 0) {
struct isl_tab_var *var;
var = isl_tab_var_from_row(tab, tab->n_redundant - 1);
var->is_nonneg = 0;
}
restore_last_redundant(tab);
}
return isl_stat_ok;
}
/* Undo the addition of an integer division to the basic map representation
* of "tab" in position "pos".
*/

View File

@ -201,6 +201,7 @@ int isl_tab_detect_implicit_equalities(struct isl_tab *tab) WARN_UNUSED;
__isl_give isl_basic_map *isl_tab_make_equalities_explicit(struct isl_tab *tab,
__isl_take isl_basic_map *bmap);
int isl_tab_detect_redundant(struct isl_tab *tab) WARN_UNUSED;
isl_stat isl_tab_restore_redundant(struct isl_tab *tab);
#define ISL_TAB_SAVE_DUAL (1 << 0)
enum isl_lp_result isl_tab_min(struct isl_tab *tab,
isl_int *f, isl_int denom, isl_int *opt, isl_int *opt_denom,

View File

@ -2430,6 +2430,33 @@ static int test_min_special(isl_ctx *ctx)
return 0;
}
/* A specialized isl_set_min_val test case that would return an error
* in earlier versions of isl.
*/
static int test_min_special2(isl_ctx *ctx)
{
const char *str;
isl_basic_set *bset;
isl_aff *obj;
isl_val *res;
str = "{ [i, j, k] : 2j = i and 2k = i + 1 and i >= 2 }";
bset = isl_basic_set_read_from_str(ctx, str);
obj = isl_aff_read_from_str(ctx, "{ [i, j, k] -> [i] }");
res = isl_basic_set_max_val(bset, obj);
isl_basic_set_free(bset);
isl_aff_free(obj);
isl_val_free(res);
if (!res)
return -1;
return 0;
}
struct {
const char *set;
const char *obj;
@ -2476,6 +2503,8 @@ static int test_min(struct isl_ctx *ctx)
if (test_min_special(ctx) < 0)
return -1;
if (test_min_special2(ctx) < 0)
return -1;
return 0;
}
@ -4550,6 +4579,35 @@ int test_aff(isl_ctx *ctx)
return 0;
}
/* Check that the computation below results in a single expression.
* One or two expressions may result depending on which constraint
* ends up being considered as redundant with respect to the other
* constraints after the projection that is performed internally
* by isl_set_dim_min.
*/
static int test_dim_max_1(isl_ctx *ctx)
{
const char *str;
isl_set *set;
isl_pw_aff *pa;
int n;
str = "[n] -> { [a, b] : n >= 0 and 4a >= -4 + n and b >= 0 and "
"-4a <= b <= 3 and b < n - 4a }";
set = isl_set_read_from_str(ctx, str);
pa = isl_set_dim_min(set, 0);
n = isl_pw_aff_n_piece(pa);
isl_pw_aff_free(pa);
if (!pa)
return -1;
if (n != 1)
isl_die(ctx, isl_error_unknown, "expecting single expression",
return -1);
return 0;
}
int test_dim_max(isl_ctx *ctx)
{
int equal;
@ -4559,6 +4617,9 @@ int test_dim_max(isl_ctx *ctx)
isl_map *map;
isl_pw_aff *pwaff;
if (test_dim_max_1(ctx) < 0)
return -1;
str = "[N] -> { [i] : 0 <= i <= min(N,10) }";
set = isl_set_read_from_str(ctx, str);
pwaff = isl_set_dim_max(set, 0);

View File

@ -31,7 +31,7 @@
PROGRAM=libtool
PACKAGE=libtool
VERSION="2.4.6 Debian-2.4.6-0.1"
VERSION="2.4.6 Debian-2.4.6-1"
package_revision=2.4.6
@ -1977,7 +1977,7 @@ func_version ()
# End:
# Set a version string.
scriptversion='(GNU libtool) 2.4.6'
scriptversion='(GNU libtool) 2.4.6 Debian-2.4.6-1'
# func_echo ARG...
@ -2068,7 +2068,7 @@ include the following information:
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
version: $progname (GNU libtool) 2.4.6
version: $progname $scriptversion
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`

View File

@ -728,7 +728,6 @@ _LT_CONFIG_SAVE_COMMANDS([
cat <<_LT_EOF >> "$cfgfile"
#! $SHELL
# Generated automatically by $as_me ($PACKAGE) $VERSION
# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
# Provide generalized library-building support services.