Domaine de Voluceau - Rocquencourt, B.P. 105
78153 Le Chesnay
France
-2015 Polly Labs
+2015-2016 Polly Labs
Contributions by
Michael Kruse
Sebastian Pop
Louis-Noel Pouchet
+Benoit Pradelle
Uday Kumar Reddy
Andreas Simbuerger
Sven van Haastregt
+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:
-isl-0.17.1-314-g3106e8d
+isl-0.18-9-gd4734f3
#! /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
# 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>.
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."
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 ;;
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
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/[^.]*//'`
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}
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
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
# $ 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}
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:*:*)
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
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:*:*)
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 ;;
# 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 ;;
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 ;;
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
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
# "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"
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
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
+ exit ;;
esac
cat >&2 <<EOF
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
#! /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
# 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
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.
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."
basic_machine=i386-pc
os=-aros
;;
- asmjs)
+ asmjs)
basic_machine=asmjs-unknown
;;
aux)
| -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* \
| -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*)
;;
-nacl*)
;;
+ -ios)
+ ;;
-none)
;;
*)
#! /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>.
#
# 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=''
# 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]...
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
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.
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 $@
# Define the identity of the package.
PACKAGE='isl'
- VERSION='0.17.1'
+ VERSION='0.18'
cat >>confdefs.h <<_ACEOF
AM_BACKSLASH='\'
-versioninfo=17:1:2
+versioninfo=18:0:3
if test "x$prefix" != "xNONE"; then
prefix_wd=`cd $prefix && pwd`
# 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
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\\"
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.
-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`
__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);
/* 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))
* 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
*
* and 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_ctx_private.h>
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;
* 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
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);
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);
* 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
* and 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 <string.h>
#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>
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.
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);
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)
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, " : ");
{
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]);
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;
{
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;
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);
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)) {
{
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)) {
{
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;
{
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;
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);
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))
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);
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, " }");
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, " }");
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;
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, " }");
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, " }");
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;
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;
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;
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;
/*
* Copyright 2013-2014 Ecole Normale Superieure
* Copyright 2014 INRIA Rocquencourt
+ * Copyright 2016 INRIA Paris
*
* Use of this software is governed by the MIT license
*
* 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>
* 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
*
* 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>
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)
{
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;
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".
*/
__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,
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;
if (test_min_special(ctx) < 0)
return -1;
+ if (test_min_special2(ctx) < 0)
+ return -1;
return 0;
}
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;
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);
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
# 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...
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`
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.