diff options
author | Tobias Grosser <tobias@grosser.es> | 2016-11-04 11:56:48 +0000 |
---|---|---|
committer | Tobias Grosser <tobias@grosser.es> | 2016-11-04 11:56:48 +0000 |
commit | 9321e208e8b40c813ed0a0e06e53c8123b3769af (patch) | |
tree | 853a3d206ff3836ef8a2b51c79a6f61ce04ed3a0 | |
parent | 2fd9a1e0d9ee0a2a4458d7b6d55494a2a9c60038 (diff) | |
download | bcm5719-llvm-9321e208e8b40c813ed0a0e06e53c8123b3769af.tar.gz bcm5719-llvm-9321e208e8b40c813ed0a0e06e53c8123b3769af.zip |
Update isl to isl-0.17.1-243-g24c0339
This introduces big-endian support in imath and resolves
http://llvm.org/PR24632.
llvm-svn: 285993
-rw-r--r-- | polly/lib/External/isl/GIT_HEAD_ID | 2 | ||||
-rwxr-xr-x | polly/lib/External/isl/config.guess | 111 | ||||
-rwxr-xr-x | polly/lib/External/isl/config.sub | 20 | ||||
-rwxr-xr-x | polly/lib/External/isl/configure | 1 | ||||
-rw-r--r-- | polly/lib/External/isl/doc/manual.pdf | bin | 475152 -> 475165 bytes | |||
-rw-r--r-- | polly/lib/External/isl/imath/gmp_compat.c | 142 | ||||
-rw-r--r-- | polly/lib/External/isl/isl_ast_build_expr.c | 2 | ||||
-rw-r--r-- | polly/lib/External/isl/isl_convex_hull.c | 1 | ||||
-rw-r--r-- | polly/lib/External/isl/isl_test.c | 15 | ||||
-rw-r--r-- | polly/lib/External/isl/isl_vertices.c | 45 | ||||
-rw-r--r-- | polly/lib/External/isl/isl_vertices_private.h | 2 | ||||
-rw-r--r-- | polly/lib/External/isl/ltmain.sh | 6 | ||||
-rw-r--r-- | polly/lib/External/isl/m4/libtool.m4 | 1 |
13 files changed, 193 insertions, 155 deletions
diff --git a/polly/lib/External/isl/GIT_HEAD_ID b/polly/lib/External/isl/GIT_HEAD_ID index 0f2cb7d0a6b..2776e100e5a 100644 --- a/polly/lib/External/isl/GIT_HEAD_ID +++ b/polly/lib/External/isl/GIT_HEAD_ID @@ -1 +1 @@ -isl-0.17.1-236-ga9c6cc7 +isl-0.17.1-243-g24c0339 diff --git a/polly/lib/External/isl/config.guess b/polly/lib/External/isl/config.guess index 16592509d49..0967f2afa92 100755 --- a/polly/lib/External/isl/config.guess +++ b/polly/lib/External/isl/config.guess @@ -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 diff --git a/polly/lib/External/isl/config.sub b/polly/lib/External/isl/config.sub index 1acc966a33b..8d39c4ba39f 100755 --- a/polly/lib/External/isl/config.sub +++ b/polly/lib/External/isl/config.sub @@ -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) ;; *) diff --git a/polly/lib/External/isl/configure b/polly/lib/External/isl/configure index c20c193eb15..e683f87d06a 100755 --- a/polly/lib/External/isl/configure +++ b/polly/lib/External/isl/configure @@ -21183,7 +21183,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. diff --git a/polly/lib/External/isl/doc/manual.pdf b/polly/lib/External/isl/doc/manual.pdf Binary files differindex 132ffb08cbd..6edabcfba4e 100644 --- a/polly/lib/External/isl/doc/manual.pdf +++ b/polly/lib/External/isl/doc/manual.pdf diff --git a/polly/lib/External/isl/imath/gmp_compat.c b/polly/lib/External/isl/imath/gmp_compat.c index 30b63e61ce7..2c45cbcbed9 100644 --- a/polly/lib/External/isl/imath/gmp_compat.c +++ b/polly/lib/External/isl/imath/gmp_compat.c @@ -28,6 +28,7 @@ #include <assert.h> #include <ctype.h> #include <string.h> +#include <stdio.h> #ifdef NDEBUG #define CHECK(res) (res) @@ -35,6 +36,12 @@ #define CHECK(res) assert(((res) == MP_OK) && "expected MP_OK") #endif +/* *(signed char *)&endian_test will thus either be: + * 0b00000001 = 1 on big-endian + * 0b11111111 = -1 on little-endian */ +static const uint16_t endian_test = 0x1FF; +#define HOST_ENDIAN (*(signed char *)&endian_test) + /************************************************************************* * * Functions with direct translations @@ -673,22 +680,19 @@ unsigned long GMPZAPI(fdiv_q_ui)(mp_int q, mp_int n, unsigned long d) { /* gmp: mpz_export */ void* GMPZAPI(export)(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, mp_int op) { - int i; + int i, j; int num_used_bytes; size_t num_words, num_missing_bytes; + ssize_t word_offset; unsigned char* dst; - unsigned char* src; + mp_digit* src; + int src_bits; /* We do not have a complete implementation. Assert to ensure our - * restrictions are in place, We do not support big endian output, but do not - * check that native endian is little endian. */ + * restrictions are in place. */ assert(nails == 0 && "Do not support non-full words"); - assert((endian == 0 || endian == -1) && "Do not support big endian"); - - /* The gmp API requires that order must be -1 or 1. - Not sure how gmp behaves when order is not 1 or -1, so force all non-one - values to -1 for now. */ - if (order != 1) order = -1; + assert(endian == 1 || endian == 0 || endian == -1); + assert(order == 1 || order == -1); /* Test for zero */ if (mp_int_compare_zero(op) == 0) { @@ -719,47 +723,32 @@ void* GMPZAPI(export)(void *rop, size_t *countp, int order, size_t size, int end rop = malloc(num_words * size); } - /* Initialize dst and src pointers */ - dst = (unsigned char *)rop; - src = (unsigned char *)MP_DIGITS(op); - - /* Most significant word first */ - if (order == 1) { - size_t words_written = 0; - src += (num_words-1) * size; - - /* Handle write of first word specially */ - for (i = 0; i < size - num_missing_bytes; i++) - dst[i] = src[i]; - for (; i < size; i++) - dst[i] = 0; - dst += size; - src -= size; - words_written++; - - for (; words_written < num_words; words_written++) { - for (i = 0; i < size; i++) - dst[i] = src[i]; - dst += size; - src -= size; - } + if (endian == 0) { + endian = HOST_ENDIAN; } - /* Least significant word first */ - else { - size_t words_written = 0; - for (; words_written < num_words - 1; words_written++) { - for (i = 0; i < size; i++) - dst[i] = src[i]; - dst += size; - src += size; - } - /* Handle write of last word specially */ - for (i = 0; i < size - num_missing_bytes; i++) - dst[i] = src[i]; + /* Initialize dst and src pointers */ + dst = (unsigned char *) rop + (order >= 0 ? (num_words-1) * size : 0) + (endian >= 0 ? size-1 : 0); + src = MP_DIGITS(op); + src_bits = MP_DIGIT_BIT; + + word_offset = (endian >= 0 ? size : -size) + (order < 0 ? size : -size); - for (; i < size; i++) - dst[i] = 0; + for (i = 0; i < num_words; i++) { + for (j = 0; j < size && i * size + j < num_used_bytes; j++) { + if (src_bits == 0) { + ++src; + src_bits = MP_DIGIT_BIT; + } + *dst = (*src >> (MP_DIGIT_BIT - src_bits)) & 0xFF; + src_bits -= 8; + dst -= endian; + } + for (; j < size; j++) { + *dst = 0; + dst -= endian; + } + dst += word_offset; } if (countp) @@ -773,17 +762,23 @@ void GMPZAPI(import)(mp_int rop, size_t count, int order, size_t size, int endia mp_int tmp = &tmpz; size_t total_size; size_t num_digits; - const char *src; - char *dst; - int i; + ssize_t word_offset; + const unsigned char *src; + mp_digit *dst; + int dst_bits; + int i, j; if (count == 0 || op == NULL) return; /* We do not have a complete implementation. Assert to ensure our - * restrictions are in place, We do not support big endian output, but do not - * check that native endian is little endian. */ + * restrictions are in place. */ assert(nails == 0 && "Do not support non-full words"); - assert((endian == 0 || endian == -1) && "Do not support big endian"); + assert(endian == 1 || endian == 0 || endian == -1); + assert(order == 1 || order == -1); + + if (endian == 0) { + endian = HOST_ENDIAN; + } /* Compute number of needed digits by ceil division */ total_size = count * size; @@ -795,30 +790,25 @@ void GMPZAPI(import)(mp_int rop, size_t count, int order, size_t size, int endia tmp->digits[i] = 0; /* Copy bytes */ - src = (const char *) op; - dst = (char *)MP_DIGITS(tmp); - - /* Most significant word is first */ - if (order == 1) { - size_t word; - dst += (count - 1) * size; - for (word = 0; word < count; word++) { - for (i = 0; i < size; i++) - dst[i] = src[i]; - dst -= size; - src += size; - } - } - /* Least significant word is first */ - else { - size_t word; - for (word = 0; word < count; word++) { - for (i = 0; i < size; i++) - dst[i] = src[i]; - dst += size; - src += size; + src = (const unsigned char *) op + (order >= 0 ? (count-1) * size : 0) + (endian >= 0 ? size-1 : 0); + dst = MP_DIGITS(tmp); + dst_bits = 0; + + word_offset = (endian >= 0 ? size : -size) + (order < 0 ? size : -size); + + for (i = 0; i < count; i++) { + for (j = 0; j < size; j++) { + if (dst_bits == MP_DIGIT_BIT) { + ++dst; + dst_bits = 0; + } + *dst |= ((mp_digit)*src) << dst_bits; + dst_bits += 8; + src -= endian; } + src += word_offset; } + MP_USED(tmp) = num_digits; /* Remove leading zeros from number */ diff --git a/polly/lib/External/isl/isl_ast_build_expr.c b/polly/lib/External/isl/isl_ast_build_expr.c index b2c6b248575..96b4e7aada5 100644 --- a/polly/lib/External/isl/isl_ast_build_expr.c +++ b/polly/lib/External/isl/isl_ast_build_expr.c @@ -540,7 +540,7 @@ static int extract_term_and_mod(struct isl_extract_mod_data *data, isl_dim_div, data->i, 0); if (s < 0) data->v = isl_val_neg(data->v); - term = isl_aff_scale_val(data->div, isl_val_copy(data->v)); + term = isl_aff_scale_val(term, isl_val_copy(data->v)); if (!data->add) data->add = term; diff --git a/polly/lib/External/isl/isl_convex_hull.c b/polly/lib/External/isl/isl_convex_hull.c index 1c732b39eac..590e3a9eeae 100644 --- a/polly/lib/External/isl/isl_convex_hull.c +++ b/polly/lib/External/isl/isl_convex_hull.c @@ -1531,6 +1531,7 @@ static struct isl_basic_set *uset_convex_hull_unbounded(struct isl_set *set) break; } if (t->n_eq < isl_basic_set_total_dim(t)) { + convex_hull = isl_basic_set_underlying_set(convex_hull); set = isl_set_add_basic_set(set, convex_hull); return modulo_lineality(set, t); } diff --git a/polly/lib/External/isl/isl_test.c b/polly/lib/External/isl/isl_test.c index 426469f10a7..2b7794ace7f 100644 --- a/polly/lib/External/isl/isl_test.c +++ b/polly/lib/External/isl/isl_test.c @@ -1263,6 +1263,9 @@ struct { "i2 <= 5 + i0 and i2 >= i0 }" }, { "{ [x, y] : 3y <= 2x and y >= -2 + 2x and 2y >= 2 - x }", "{ [x, y] : 1 = 0 }" }, + { "{ [x, y, z] : 0 <= x, y, z <= 10; [x, y, 0] : x >= 0 and y > 0; " + "[x, y, 0] : x >= 0 and y < 0 }", + "{ [x, y, z] : x >= 0 and 0 <= z <= 10 }" }, }; static int test_convex_hull_algo(isl_ctx *ctx, int convex) @@ -4854,12 +4857,22 @@ int test_fixed(isl_ctx *ctx) struct isl_vertices_test_data { const char *set; int n; - const char *vertex[2]; + const char *vertex[6]; } vertices_tests[] = { { "{ A[t, i] : t = 12 and i >= 4 and i <= 12 }", 2, { "{ A[12, 4] }", "{ A[12, 12] }" } }, { "{ A[t, i] : t = 14 and i = 1 }", 1, { "{ A[14, 1] }" } }, + { "[n, m] -> { [a, b, c] : b <= a and a <= n and b > 0 and c >= b and " + "c <= m and m <= n and m > 0 }", + 6, { + "[n, m] -> { [n, m, m] : 0 < m <= n }", + "[n, m] -> { [n, 1, m] : 0 < m <= n }", + "[n, m] -> { [n, 1, 1] : 0 < m <= n }", + "[n, m] -> { [m, m, m] : 0 < m <= n }", + "[n, m] -> { [1, 1, m] : 0 < m <= n }", + "[n, m] -> { [1, 1, 1] : 0 < m <= n }" + } }, }; /* Check that "vertex" corresponds to one of the vertices in data->vertex. diff --git a/polly/lib/External/isl/isl_vertices.c b/polly/lib/External/isl/isl_vertices.c index 6e74a4fa368..788a415ec3d 100644 --- a/polly/lib/External/isl/isl_vertices.c +++ b/polly/lib/External/isl/isl_vertices.c @@ -109,15 +109,20 @@ error: } /* Prepend a vertex to the linked list "list" based on the equalities in "tab". + * Return isl_bool_true if the vertex was actually added and + * isl_bool_false otherwise. + * In particular, vertices with a lower-dimensional activity domain are + * not added to the list because they would not be included in any chamber. + * Return isl_bool_error on error. */ -static int add_vertex(struct isl_vertex_list **list, +static isl_bool add_vertex(struct isl_vertex_list **list, __isl_keep isl_basic_set *bset, struct isl_tab *tab) { unsigned nvar; struct isl_vertex_list *v = NULL; if (isl_tab_detect_implicit_equalities(tab) < 0) - return -1; + return isl_bool_error; nvar = isl_basic_set_dim(bset, isl_dim_set); @@ -138,13 +143,18 @@ static int add_vertex(struct isl_vertex_list **list, if (!v->v.dom) goto error; + if (v->v.dom->n_eq > 0) { + free_vertex_list(v); + return isl_bool_false; + } + v->next = *list; *list = v; - return 0; + return isl_bool_true; error: free_vertex_list(v); - return -1; + return isl_bool_error; } /* Compute the parametric vertices and the chamber decomposition @@ -466,9 +476,11 @@ __isl_give isl_vertices *isl_basic_set_compute_vertices( } if (selected == nvar) { if (tab->n_dead == nvar) { - if (add_vertex(&list, bset, tab) < 0) + isl_bool added = add_vertex(&list, bset, tab); + if (added < 0) goto error; - n_vertices++; + if (added) + n_vertices++; } init = 0; continue; @@ -566,14 +578,21 @@ error: /* Can "tab" be intersected with "bset" without resulting in * a lower-dimensional set. + * "bset" itself is assumed to be full-dimensional. */ -static int can_intersect(struct isl_tab *tab, __isl_keep isl_basic_set *bset) +static isl_bool can_intersect(struct isl_tab *tab, + __isl_keep isl_basic_set *bset) { int i; struct isl_tab_undo *snap; + if (bset->n_eq > 0) + isl_die(isl_basic_set_get_ctx(bset), isl_error_internal, + "expecting full-dimensional input", + return isl_bool_error); + if (isl_tab_extend_cons(tab, bset->n_ineq) < 0) - return -1; + return isl_bool_error; snap = isl_tab_snap(tab); @@ -581,18 +600,18 @@ static int can_intersect(struct isl_tab *tab, __isl_keep isl_basic_set *bset) if (isl_tab_ineq_type(tab, bset->ineq[i]) == isl_ineq_redundant) continue; if (isl_tab_add_ineq(tab, bset->ineq[i]) < 0) - return -1; + return isl_bool_error; } if (isl_tab_detect_implicit_equalities(tab) < 0) - return -1; + return isl_bool_error; if (tab->n_dead) { if (isl_tab_rollback(tab, snap) < 0) - return -1; - return 0; + return isl_bool_error; + return isl_bool_false; } - return 1; + return isl_bool_true; } static int add_chamber(struct isl_chamber_list **list, diff --git a/polly/lib/External/isl/isl_vertices_private.h b/polly/lib/External/isl/isl_vertices_private.h index 7c707fd5492..b77286d9b36 100644 --- a/polly/lib/External/isl/isl_vertices_private.h +++ b/polly/lib/External/isl/isl_vertices_private.h @@ -11,6 +11,8 @@ struct isl_morph; * of the vertex as a singleton parametric set. "dom" is the projection * of "vertex" onto the parameter space, i.e., the activity domain * of the vertex. + * During the construction of vertices and chambers, the activity domain + * of every parametric vertex is full-dimensional. */ struct isl_vertex { isl_basic_set *dom; diff --git a/polly/lib/External/isl/ltmain.sh b/polly/lib/External/isl/ltmain.sh index 147d758abcb..2ad8be8483d 100644 --- a/polly/lib/External/isl/ltmain.sh +++ b/polly/lib/External/isl/ltmain.sh @@ -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` diff --git a/polly/lib/External/isl/m4/libtool.m4 b/polly/lib/External/isl/m4/libtool.m4 index 10ab2844c4e..ee80844b619 100644 --- a/polly/lib/External/isl/m4/libtool.m4 +++ b/polly/lib/External/isl/m4/libtool.m4 @@ -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. |