mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-06-24 20:20:20 +00:00
Disable force-gcc-header-obj.diff as it is introducing some regressions in the search headers (Closes: #903709) Very similar to the previous packages except that libc++abi-7-test & libc++-7-test are no longer shipped Useless now and misleading Useless now and misleading
This commit is contained in:
commit
6992ef87ef
13
debian/changelog
vendored
13
debian/changelog
vendored
@ -11,9 +11,12 @@ llvm-toolchain-snapshot (1:8~svn336894-1~exp1) experimental; urgency=medium
|
|||||||
clang_Type_getObjCObjectBaseType
|
clang_Type_getObjCObjectBaseType
|
||||||
clang_Type_getObjCProtocolDecl
|
clang_Type_getObjCProtocolDecl
|
||||||
clang_Type_getObjCTypeArg
|
clang_Type_getObjCTypeArg
|
||||||
* python-recommonmark is a new build dep for the sphinx doc
|
* python-recommonmark is a new build dep for the sphinx doc
|
||||||
|
* Disable force-gcc-header-obj.diff as it is introducing
|
||||||
|
some regressions in the search headers
|
||||||
|
(Closes: #903709)
|
||||||
|
|
||||||
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 12 Aug 2018 13:19:15 +0200
|
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 15 Aug 2018 15:35:08 +0200
|
||||||
|
|
||||||
llvm-toolchain-7 (1:7~+rc1-1~exp1) experimental; urgency=medium
|
llvm-toolchain-7 (1:7~+rc1-1~exp1) experimental; urgency=medium
|
||||||
|
|
||||||
@ -27,6 +30,8 @@ llvm-toolchain-7 (1:7~+rc1-1~exp1) experimental; urgency=medium
|
|||||||
|
|
||||||
[ Reshabh Sharma ]
|
[ Reshabh Sharma ]
|
||||||
* Integrate libcxx and libcxxabi as part of the llvm-toolchain packages
|
* Integrate libcxx and libcxxabi as part of the llvm-toolchain packages
|
||||||
|
Very similar to the previous packages
|
||||||
|
except that libc++abi-7-test & libc++-7-test are no longer shipped
|
||||||
Outcome of the LLVM GSoC 2018
|
Outcome of the LLVM GSoC 2018
|
||||||
(Closes: #813673)
|
(Closes: #813673)
|
||||||
|
|
||||||
@ -1386,7 +1391,7 @@ llvm-toolchain-snapshot (1:3.5~svn195337-1) unstable; urgency=low
|
|||||||
|
|
||||||
* Switch from 3.4 to 3.5
|
* Switch from 3.4 to 3.5
|
||||||
* Remove patch 0046-Revert-Patch-to-set-is_stmt-a-little-better-for-prol.patch
|
* Remove patch 0046-Revert-Patch-to-set-is_stmt-a-little-better-for-prol.patch
|
||||||
Useless now and missleading
|
Useless now and misleading
|
||||||
* Standards-Version updated to 3.9.5
|
* Standards-Version updated to 3.9.5
|
||||||
* kfreebsd.diff remove (applied upstream)
|
* kfreebsd.diff remove (applied upstream)
|
||||||
|
|
||||||
@ -1533,7 +1538,7 @@ llvm-toolchain-3.4 (1:3.4~+rc1-1) unstable; urgency=low
|
|||||||
* New testing upstream release
|
* New testing upstream release
|
||||||
* kfreebsd.diff removed. Applied upstream
|
* kfreebsd.diff removed. Applied upstream
|
||||||
* Remove patch 0046-Revert-Patch-to-set-is_stmt-a-little-better-for-prol.patch
|
* Remove patch 0046-Revert-Patch-to-set-is_stmt-a-little-better-for-prol.patch
|
||||||
Useless now and missleading
|
Useless now and misleading
|
||||||
* Branch from llvm-toolchain-snapshot
|
* Branch from llvm-toolchain-snapshot
|
||||||
* Standards-Version updated to 3.9.5
|
* Standards-Version updated to 3.9.5
|
||||||
|
|
||||||
|
2
debian/clang++-libc++-X.Y.in
vendored
2
debian/clang++-libc++-X.Y.in
vendored
@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
clang++ -stdlib=libc++ "$@"
|
|
2
debian/clang++-libc++.in
vendored
Executable file
2
debian/clang++-libc++.in
vendored
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
clang++-@LLVM_VERSION@ -stdlib=libc++ "$@"
|
56
debian/control
vendored
56
debian/control
vendored
@ -445,7 +445,7 @@ Description: Next generation, high-performance debugger, library
|
|||||||
|
|
||||||
Package: python-lldb-8
|
Package: python-lldb-8
|
||||||
Section: python
|
Section: python
|
||||||
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 ppc64el s390 sparc hppa m68k sh4 x32 mips mipsel arm64
|
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
|
||||||
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
|
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, liblldb-8-dev, python, python-six
|
Depends: ${shlibs:Depends}, ${misc:Depends}, liblldb-8-dev, python, python-six
|
||||||
Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y
|
Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y
|
||||||
@ -462,7 +462,7 @@ Description: Next generation, high-performance debugger, python lib
|
|||||||
|
|
||||||
Package: liblldb-8-dev
|
Package: liblldb-8-dev
|
||||||
Section: libdevel
|
Section: libdevel
|
||||||
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 ppc64el s390 sparc hppa m68k sh4 x32 mips mipsel arm64
|
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
|
||||||
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
|
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-8 (= ${binary:Version})
|
Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-8 (= ${binary:Version})
|
||||||
Replaces: lldb-8-dev (<= 8~svn215195-2)
|
Replaces: lldb-8-dev (<= 8~svn215195-2)
|
||||||
@ -526,6 +526,9 @@ Multi-Arch: same
|
|||||||
Pre-Depends: ${misc:Pre-Depends}
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Suggests: clang
|
Suggests: clang
|
||||||
|
Replaces: libc++1
|
||||||
|
Breaks: libc++1
|
||||||
|
Provides: libc++1
|
||||||
Description: LLVM C++ Standard library
|
Description: LLVM C++ Standard library
|
||||||
libc++ is another implementation of the C++ standard library.
|
libc++ is another implementation of the C++ standard library.
|
||||||
.
|
.
|
||||||
@ -546,6 +549,7 @@ Multi-Arch: same
|
|||||||
Depends: libc++1-8 (= ${binary:Version}), ${misc:Depends}, libc++-helpers
|
Depends: libc++1-8 (= ${binary:Version}), ${misc:Depends}, libc++-helpers
|
||||||
Provides: libstdc++-dev, libc++-8-dev
|
Provides: libstdc++-dev, libc++-8-dev
|
||||||
Breaks: libc++-dev
|
Breaks: libc++-dev
|
||||||
|
Replaces: libc++-dev
|
||||||
Description: LLVM C++ Standard library (development files)
|
Description: LLVM C++ Standard library (development files)
|
||||||
libc++ is another implementation of the C++ standard library
|
libc++ is another implementation of the C++ standard library
|
||||||
.
|
.
|
||||||
@ -559,27 +563,6 @@ Description: LLVM C++ Standard library (development files)
|
|||||||
as exception objects, rtti and memory allocation.
|
as exception objects, rtti and memory allocation.
|
||||||
* Extensive unit tests.
|
* Extensive unit tests.
|
||||||
|
|
||||||
Package: libc++-8-test
|
|
||||||
Section: libs
|
|
||||||
Architecture: any
|
|
||||||
Depends: libc++1-8 (= ${binary:Version}), ${misc:Depends}
|
|
||||||
Breaks: libc++-test
|
|
||||||
Provides: libc++-test
|
|
||||||
Description: LLVM C++ Standard library (test cases)
|
|
||||||
libc++ is another implementation of the C++ standard library.
|
|
||||||
.
|
|
||||||
Features and Goals
|
|
||||||
.
|
|
||||||
* Correctness as defined by the standards.
|
|
||||||
* Fast execution.
|
|
||||||
* Minimal memory use.
|
|
||||||
* Fast compile times.
|
|
||||||
* ABI compatibility with gcc's libstdc++ for some low-level features such
|
|
||||||
as exception objects, rtti and memory allocation.
|
|
||||||
* Extensive unit tests.
|
|
||||||
.
|
|
||||||
This package contains the test cases of libc++ library.
|
|
||||||
|
|
||||||
# ------------- libcxxabi -------------
|
# ------------- libcxxabi -------------
|
||||||
|
|
||||||
Package: libc++abi1-8
|
Package: libc++abi1-8
|
||||||
@ -590,6 +573,7 @@ Pre-Depends: ${misc:Pre-Depends}
|
|||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Breaks: libc++abi1
|
Breaks: libc++abi1
|
||||||
Provides: libc++abi1
|
Provides: libc++abi1
|
||||||
|
Replaces: libc++abi1
|
||||||
Description: LLVM low level support for a standard C++ library
|
Description: LLVM low level support for a standard C++ library
|
||||||
libc++abi is another implementation of low level support for a standard C++
|
libc++abi is another implementation of low level support for a standard C++
|
||||||
library.
|
library.
|
||||||
@ -605,8 +589,9 @@ Section: libdevel
|
|||||||
Architecture: any
|
Architecture: any
|
||||||
Multi-Arch: same
|
Multi-Arch: same
|
||||||
Depends: libc++abi1-8 (= ${binary:Version}), ${misc:Depends}
|
Depends: libc++abi1-8 (= ${binary:Version}), ${misc:Depends}
|
||||||
Replaces: libc++-8-dev (<< 3.9.0-3)
|
Replaces: libc++-8-dev
|
||||||
Breaks: libc++-dev (<< 3.9.0-3), libc++-8-dev
|
Breaks: libc++-dev , libc++-8-dev, libc++abi-dev
|
||||||
|
Provides: libc++-dev , libc++-8-dev, libc++abi-dev
|
||||||
Description: LLVM low level support for a standard C++ library (development files)
|
Description: LLVM low level support for a standard C++ library (development files)
|
||||||
libc++abi is another implementation of low level support for a standard C++
|
libc++abi is another implementation of low level support for a standard C++
|
||||||
library.
|
library.
|
||||||
@ -617,30 +602,13 @@ Description: LLVM low level support for a standard C++ library (development file
|
|||||||
* Provide a portable sublayer to ease the porting of libc++
|
* Provide a portable sublayer to ease the porting of libc++
|
||||||
.
|
.
|
||||||
|
|
||||||
Package: libc++abi-8-test
|
|
||||||
Section: libs
|
|
||||||
Architecture: any
|
|
||||||
Depends: libc++abi1-8 (= ${binary:Version}), ${misc:Depends}
|
|
||||||
Breaks: libc++abi-test
|
|
||||||
Provides: libc++abi-test
|
|
||||||
Description: libc++abi test cases
|
|
||||||
libc++abi is another implementation of low level support for a standard C++
|
|
||||||
library.
|
|
||||||
.
|
|
||||||
Features and Goals
|
|
||||||
.
|
|
||||||
* Correctness as defined by the C++ standards.
|
|
||||||
* Provide a portable sublayer to ease the porting of libc++
|
|
||||||
.
|
|
||||||
Test cases of libc++abi library.
|
|
||||||
|
|
||||||
|
|
||||||
Package: libc++-8-helpers
|
Package: libc++-8-helpers
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Depends: ${misc:Depends}
|
Depends: ${misc:Depends}
|
||||||
Breaks: libc++-8-helpers
|
Breaks: libc++-helpers
|
||||||
Provides: libc++-helpers
|
Provides: libc++-helpers
|
||||||
|
Replaces: libc++-helpers
|
||||||
Description: LLVM C++ Standard library - build helpers
|
Description: LLVM C++ Standard library - build helpers
|
||||||
libc++ is another implementation of the C++ standard library
|
libc++ is another implementation of the C++ standard library
|
||||||
.
|
.
|
||||||
|
57
debian/copyright
vendored
57
debian/copyright
vendored
@ -361,6 +361,7 @@ Files: utils/unittest/googletest/*
|
|||||||
Copyright: 2006-2008, Google Inc.
|
Copyright: 2006-2008, Google Inc.
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
|
|
||||||
|
Files: libcxx/*
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
@ -378,6 +379,62 @@ License: BSD-3-Clause
|
|||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|
||||||
|
Files: libcxx*/*
|
||||||
|
Copyright: 2009-2012 by the contributors listed below
|
||||||
|
N: Howard Hinnant
|
||||||
|
E: hhinnant@apple.com
|
||||||
|
D: Architect and primary author of libc++
|
||||||
|
.
|
||||||
|
N: Marshall Clow
|
||||||
|
E: marshall@idio.com
|
||||||
|
E: mclow@qualcomm.com
|
||||||
|
D: Minor patches and bug fixes.
|
||||||
|
.
|
||||||
|
N: Bjorn Reese
|
||||||
|
E: breese@users.sourceforge.net
|
||||||
|
D: Initial regex prototype
|
||||||
|
.
|
||||||
|
N: David Chisnall
|
||||||
|
E: theraven at theravensnest dot org
|
||||||
|
D: FreeBSD and Solaris ports, libcxxrt support, some atomics work.
|
||||||
|
.
|
||||||
|
N: Ruben Van Boxem
|
||||||
|
E: vanboxem dot ruben at gmail dot com
|
||||||
|
D: Initial Windows patches.
|
||||||
|
.
|
||||||
|
N: Arvid Picciani
|
||||||
|
E: aep at exys dot org
|
||||||
|
D: Minor patches and musl port.
|
||||||
|
.
|
||||||
|
N: Craig Silverstein
|
||||||
|
E: csilvers@google.com
|
||||||
|
D: Implemented Cityhash as the string hash function on 64-bit machines
|
||||||
|
.
|
||||||
|
N: Google Inc.
|
||||||
|
D: Copyright owner and contributor of the CityHash algorithm
|
||||||
|
.
|
||||||
|
N: Jeffrey Yasskin
|
||||||
|
E: jyasskin@gmail.com
|
||||||
|
E: jyasskin@google.com
|
||||||
|
D: Linux fixes.
|
||||||
|
.
|
||||||
|
N: Jonathan Sauer
|
||||||
|
D: Minor patches, mostly related to constexpr
|
||||||
|
.
|
||||||
|
N: Richard Smith
|
||||||
|
D: Minor patches.
|
||||||
|
.
|
||||||
|
The list is sorted by surname and formatted to allow easy grepping and
|
||||||
|
beautification by scripts. The fields are: name (N), email (E), web-address
|
||||||
|
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
|
||||||
|
(S).
|
||||||
|
.
|
||||||
|
License: NCSA or MIT
|
||||||
|
|
||||||
|
Files: openmp/*
|
||||||
|
Copyright: 1997-2015 Intel Corporation
|
||||||
|
License: U-OF-I-BSD-LIKE
|
||||||
|
|
||||||
License: U-OF-I-BSD-LIKE
|
License: U-OF-I-BSD-LIKE
|
||||||
==============================================================================
|
==============================================================================
|
||||||
LLVM Release License
|
LLVM Release License
|
||||||
|
0
debian/g++-libc++-X.Y.in → debian/g++-libc++.in
vendored
Normal file → Executable file
0
debian/g++-libc++-X.Y.in → debian/g++-libc++.in
vendored
Normal file → Executable file
6
debian/libc++-X.Y-dev.install.in
vendored
6
debian/libc++-X.Y-dev.install.in
vendored
@ -1,3 +1,5 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so
|
||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++*.a
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.a
|
||||||
usr/lib/llvm-@LLVM_VERSION@/include/c++/* usr/lib/llvm-@LLVM_VERSION@/include/c++
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++fs.a
|
||||||
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++experimental.a
|
||||||
|
usr/lib/llvm-@LLVM_VERSION@/include/c++/* usr/lib/llvm-@LLVM_VERSION@/include/c++/v1
|
||||||
|
3
debian/libc++-X.Y-dev.lintian-overrides.in
vendored
Normal file
3
debian/libc++-X.Y-dev.lintian-overrides.in
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
libc++-@LLVM_VERSION@-dev: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++.a
|
||||||
|
libc++-@LLVM_VERSION@-dev: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++fs.a
|
||||||
|
libc++-@LLVM_VERSION@-dev: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++experimental.a
|
4
debian/libc++-X.Y-helpers.install.in
vendored
4
debian/libc++-X.Y-helpers.install.in
vendored
@ -1,2 +1,2 @@
|
|||||||
debian/clang++-libc++-@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/bin/
|
debian/clang++-libc++ usr/lib/llvm-@LLVM_VERSION@/bin/
|
||||||
debian/g++-libc++-@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/bin/
|
debian/g++-libc++ usr/lib/llvm-@LLVM_VERSION@/bin/
|
||||||
|
4
debian/libc++-X.Y-helpers.links.in
vendored
4
debian/libc++-X.Y-helpers.links.in
vendored
@ -1,2 +1,2 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/bin/clang++-libc++-@LLVM_VERSION@ usr/bin/clang++-libc++-@LLVM_VERSION@
|
usr/lib/llvm-@LLVM_VERSION@/bin/clang++-libc++-@LLVM_VERSION@ usr/bin/clang++-libc++
|
||||||
usr/lib/llvm-@LLVM_VERSION@/bin/g++-libc++-@LLVM_VERSION@ usr/bin/g++-libc++-@LLVM_VERSION@
|
usr/lib/llvm-@LLVM_VERSION@/bin/g++-libc++-@LLVM_VERSION@ usr/bin/g++-libc++
|
||||||
|
2
debian/libc++1-X.Y.install.in
vendored
2
debian/libc++1-X.Y.install.in
vendored
@ -1 +1 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so.*
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so*
|
||||||
|
3
debian/libc++1-X.Y.links.in
vendored
3
debian/libc++1-X.Y.links.in
vendored
@ -1 +1,2 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/libc++.so.1
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so.1.0 /usr/lib/@DEB_HOST_MULTIARCH@/libc++.so.1.0
|
||||||
|
/usr/lib/@DEB_HOST_MULTIARCH@/libc++.so.1.0 /usr/lib/@DEB_HOST_MULTIARCH@/libc++.so.1
|
||||||
|
1
debian/libc++1-X.Y.lintian-overrides.in
vendored
Normal file
1
debian/libc++1-X.Y.lintian-overrides.in
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
libc++1-@LLVM_VERSION@: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++.so.1.0
|
4
debian/libc++abi-X.Y-dev.install.in
vendored
4
debian/libc++abi-X.Y-dev.install.in
vendored
@ -1,3 +1,3 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi*so
|
||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.a
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.a
|
||||||
usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/*cxxabi*
|
libcxxabi/include/* usr/lib/llvm-@LLVM_VERSION@/include/
|
||||||
|
3
debian/libc++abi-X.Y-dev.links.in
vendored
3
debian/libc++abi-X.Y-dev.links.in
vendored
@ -1,4 +1 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.a /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.a
|
|
||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so
|
||||||
usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/cxxabi.h /usr/include/c++/v1/cxxabi.h
|
|
||||||
usr/lib/llvm-@LLVM_VERSION@/include/c++/v1/__cxxabi_config.h /usr/include/c++/v1/__cxxabi_config.h
|
|
||||||
|
1
debian/libc++abi-X.Y-dev.lintian-overrides.in
vendored
Normal file
1
debian/libc++abi-X.Y-dev.lintian-overrides.in
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
libc++abi-@LLVM_VERSION@-dev: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.a
|
2
debian/libc++abi1-X.Y.install.in
vendored
2
debian/libc++abi1-X.Y.install.in
vendored
@ -1 +1 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi*
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so*
|
||||||
|
3
debian/libc++abi1-X.Y.links.in
vendored
3
debian/libc++abi1-X.Y.links.in
vendored
@ -1 +1,2 @@
|
|||||||
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so.1
|
usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so.1.0 /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so.1.0
|
||||||
|
/usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so.1.0 /usr/lib/@DEB_HOST_MULTIARCH@/libc++abi.so.1
|
||||||
|
1
debian/libc++abi1-X.Y.lintian-overrides.in
vendored
Normal file
1
debian/libc++abi1-X.Y.lintian-overrides.in
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
libc++abi1-@LLVM_VERSION@: arch-dependent-file-not-in-arch-specific-directory usr/lib/llvm-@LLVM_VERSION@/lib/libc++abi.so.1.0
|
2148
debian/patches/D40146-JumpThreading-backport-1.diff
vendored
Normal file
2148
debian/patches/D40146-JumpThreading-backport-1.diff
vendored
Normal file
File diff suppressed because it is too large
Load Diff
267
debian/patches/D42717-JumpThreading-backport-2.diff
vendored
Normal file
267
debian/patches/D42717-JumpThreading-backport-2.diff
vendored
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
Index: llvm-toolchain-6.0-6.0.1/include/llvm/Analysis/LazyValueInfo.h
|
||||||
|
===================================================================
|
||||||
|
--- llvm-toolchain-6.0-6.0.1.orig/include/llvm/Analysis/LazyValueInfo.h
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/include/llvm/Analysis/LazyValueInfo.h
|
||||||
|
@@ -113,6 +113,13 @@ public:
|
||||||
|
/// in LVI, so we need to pass it here as an argument.
|
||||||
|
void printLVI(Function &F, DominatorTree &DTree, raw_ostream &OS);
|
||||||
|
|
||||||
|
+ /// Disables use of the DominatorTree within LVI.
|
||||||
|
+ void disableDT();
|
||||||
|
+
|
||||||
|
+ /// Enables use of the DominatorTree within LVI. Does nothing if the class
|
||||||
|
+ /// instance was initialized without a DT pointer.
|
||||||
|
+ void enableDT();
|
||||||
|
+
|
||||||
|
// For old PM pass. Delete once LazyValueInfoWrapperPass is gone.
|
||||||
|
void releaseMemory();
|
||||||
|
|
||||||
|
Index: llvm-toolchain-6.0-6.0.1/include/llvm/IR/Dominators.h
|
||||||
|
===================================================================
|
||||||
|
--- llvm-toolchain-6.0-6.0.1.orig/include/llvm/IR/Dominators.h
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/include/llvm/IR/Dominators.h
|
||||||
|
@@ -342,6 +342,9 @@ public:
|
||||||
|
/// \brief Returns true if DelBB is awaiting deletion at a flush() event.
|
||||||
|
bool pendingDeletedBB(BasicBlock *DelBB);
|
||||||
|
|
||||||
|
+ /// \brief Returns true if pending DT updates are queued for a flush() event.
|
||||||
|
+ bool pending();
|
||||||
|
+
|
||||||
|
/// \brief Flushes all pending updates and block deletions. Returns a
|
||||||
|
/// correct DominatorTree reference to be used by the caller for analysis.
|
||||||
|
DominatorTree &flush();
|
||||||
|
Index: llvm-toolchain-6.0-6.0.1/lib/Analysis/LazyValueInfo.cpp
|
||||||
|
===================================================================
|
||||||
|
--- llvm-toolchain-6.0-6.0.1.orig/lib/Analysis/LazyValueInfo.cpp
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/lib/Analysis/LazyValueInfo.cpp
|
||||||
|
@@ -401,6 +401,7 @@ namespace {
|
||||||
|
AssumptionCache *AC; ///< A pointer to the cache of @llvm.assume calls.
|
||||||
|
const DataLayout &DL; ///< A mandatory DataLayout
|
||||||
|
DominatorTree *DT; ///< An optional DT pointer.
|
||||||
|
+ DominatorTree *DisabledDT; ///< Stores DT if it's disabled.
|
||||||
|
|
||||||
|
ValueLatticeElement getBlockValue(Value *Val, BasicBlock *BB);
|
||||||
|
bool getEdgeValue(Value *V, BasicBlock *F, BasicBlock *T,
|
||||||
|
@@ -463,13 +464,30 @@ namespace {
|
||||||
|
TheCache.eraseBlock(BB);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /// Disables use of the DominatorTree within LVI.
|
||||||
|
+ void disableDT() {
|
||||||
|
+ if (DT) {
|
||||||
|
+ assert(!DisabledDT && "Both DT and DisabledDT are not nullptr!");
|
||||||
|
+ std::swap(DT, DisabledDT);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /// Enables use of the DominatorTree within LVI. Does nothing if the class
|
||||||
|
+ /// instance was initialized without a DT pointer.
|
||||||
|
+ void enableDT() {
|
||||||
|
+ if (DisabledDT) {
|
||||||
|
+ assert(!DT && "Both DT and DisabledDT are not nullptr!");
|
||||||
|
+ std::swap(DT, DisabledDT);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/// This is the update interface to inform the cache that an edge from
|
||||||
|
/// PredBB to OldSucc has been threaded to be from PredBB to NewSucc.
|
||||||
|
void threadEdge(BasicBlock *PredBB,BasicBlock *OldSucc,BasicBlock *NewSucc);
|
||||||
|
|
||||||
|
LazyValueInfoImpl(AssumptionCache *AC, const DataLayout &DL,
|
||||||
|
DominatorTree *DT = nullptr)
|
||||||
|
- : AC(AC), DL(DL), DT(DT) {}
|
||||||
|
+ : AC(AC), DL(DL), DT(DT), DisabledDT(nullptr) {}
|
||||||
|
};
|
||||||
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
@@ -1791,6 +1809,16 @@ void LazyValueInfo::printLVI(Function &F
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+void LazyValueInfo::disableDT() {
|
||||||
|
+ if (PImpl)
|
||||||
|
+ getImpl(PImpl, AC, DL, DT).disableDT();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void LazyValueInfo::enableDT() {
|
||||||
|
+ if (PImpl)
|
||||||
|
+ getImpl(PImpl, AC, DL, DT).enableDT();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Print the LVI for the function arguments at the start of each basic block.
|
||||||
|
void LazyValueInfoAnnotatedWriter::emitBasicBlockStartAnnot(
|
||||||
|
const BasicBlock *BB, formatted_raw_ostream &OS) {
|
||||||
|
Index: llvm-toolchain-6.0-6.0.1/lib/IR/Dominators.cpp
|
||||||
|
===================================================================
|
||||||
|
--- llvm-toolchain-6.0-6.0.1.orig/lib/IR/Dominators.cpp
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/lib/IR/Dominators.cpp
|
||||||
|
@@ -453,6 +453,9 @@ bool DeferredDominance::pendingDeletedBB
|
||||||
|
return DeletedBBs.count(DelBB) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/// \brief Returns true if pending DT updates are queued for a flush() event.
|
||||||
|
+bool DeferredDominance::pending() { return !PendUpdates.empty(); }
|
||||||
|
+
|
||||||
|
/// \brief Flushes all pending updates and block deletions. Returns a
|
||||||
|
/// correct DominatorTree reference to be used by the caller for analysis.
|
||||||
|
DominatorTree &DeferredDominance::flush() {
|
||||||
|
Index: llvm-toolchain-6.0-6.0.1/lib/Transforms/Scalar/JumpThreading.cpp
|
||||||
|
===================================================================
|
||||||
|
--- llvm-toolchain-6.0-6.0.1.orig/lib/Transforms/Scalar/JumpThreading.cpp
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/lib/Transforms/Scalar/JumpThreading.cpp
|
||||||
|
@@ -425,6 +425,7 @@ bool JumpThreadingPass::runImpl(Function
|
||||||
|
|
||||||
|
LoopHeaders.clear();
|
||||||
|
DDT->flush();
|
||||||
|
+ LVI->enableDT();
|
||||||
|
return EverChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -617,6 +618,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
// "X < 4" and "X < 3" is known true but "X < 4" itself is not available.
|
||||||
|
// Perhaps getConstantOnEdge should be smart enough to do this?
|
||||||
|
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
for (BasicBlock *P : predecessors(BB)) {
|
||||||
|
// If the value is known by LazyValueInfo to be a constant in a
|
||||||
|
// predecessor, use that information to try to thread this block.
|
||||||
|
@@ -630,6 +635,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
|
||||||
|
/// If I is a PHI node, then we know the incoming values for any constants.
|
||||||
|
if (PHINode *PN = dyn_cast<PHINode>(I)) {
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
|
||||||
|
Value *InVal = PN->getIncomingValue(i);
|
||||||
|
if (Constant *KC = getKnownConstant(InVal, Preference)) {
|
||||||
|
@@ -759,6 +768,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
const DataLayout &DL = PN->getModule()->getDataLayout();
|
||||||
|
// We can do this simplification if any comparisons fold to true or false.
|
||||||
|
// See if any do.
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
|
||||||
|
BasicBlock *PredBB = PN->getIncomingBlock(i);
|
||||||
|
Value *LHS = PN->getIncomingValue(i);
|
||||||
|
@@ -792,6 +805,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
|
||||||
|
if (!isa<Instruction>(CmpLHS) ||
|
||||||
|
cast<Instruction>(CmpLHS)->getParent() != BB) {
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
for (BasicBlock *P : predecessors(BB)) {
|
||||||
|
// If the value is known by LazyValueInfo to be a constant in a
|
||||||
|
// predecessor, use that information to try to thread this block.
|
||||||
|
@@ -820,6 +837,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
match(CmpLHS, m_Add(m_Value(AddLHS), m_ConstantInt(AddConst)))) {
|
||||||
|
if (!isa<Instruction>(AddLHS) ||
|
||||||
|
cast<Instruction>(AddLHS)->getParent() != BB) {
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
for (BasicBlock *P : predecessors(BB)) {
|
||||||
|
// If the value is known by LazyValueInfo to be a ConstantRange in
|
||||||
|
// a predecessor, use that information to try to thread this
|
||||||
|
@@ -901,6 +922,10 @@ bool JumpThreadingPass::ComputeValueKnow
|
||||||
|
}
|
||||||
|
|
||||||
|
// If all else fails, see if LVI can figure out a constant value for us.
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
Constant *CI = LVI->getConstant(V, BB, CxtI);
|
||||||
|
if (Constant *KC = getKnownConstant(CI, Preference)) {
|
||||||
|
for (BasicBlock *Pred : predecessors(BB))
|
||||||
|
@@ -1102,6 +1127,10 @@ bool JumpThreadingPass::ProcessBlock(Bas
|
||||||
|
// threading is concerned.
|
||||||
|
assert(CondBr->isConditional() && "Threading on unconditional terminator");
|
||||||
|
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
LazyValueInfo::Tristate Ret =
|
||||||
|
LVI->getPredicateAt(CondCmp->getPredicate(), CondCmp->getOperand(0),
|
||||||
|
CondConst, CondBr);
|
||||||
|
@@ -1914,6 +1943,10 @@ bool JumpThreadingPass::ThreadEdge(Basic
|
||||||
|
<< ", across block:\n "
|
||||||
|
<< *BB << "\n");
|
||||||
|
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
LVI->threadEdge(PredBB, BB, SuccBB);
|
||||||
|
|
||||||
|
// We are going to have to map operands from the original BB block to the new
|
||||||
|
@@ -2383,6 +2416,10 @@ bool JumpThreadingPass::TryToUnfoldSelec
|
||||||
|
// Now check if one of the select values would allow us to constant fold the
|
||||||
|
// terminator in BB. We don't do the transform if both sides fold, those
|
||||||
|
// cases will be threaded in any case.
|
||||||
|
+ if (DDT->pending())
|
||||||
|
+ LVI->disableDT();
|
||||||
|
+ else
|
||||||
|
+ LVI->enableDT();
|
||||||
|
LazyValueInfo::Tristate LHSFolds =
|
||||||
|
LVI->getPredicateOnEdge(CondCmp->getPredicate(), SI->getOperand(1),
|
||||||
|
CondRHS, Pred, BB, CondCmp);
|
||||||
|
Index: llvm-toolchain-6.0-6.0.1/test/Transforms/JumpThreading/pr36133.ll
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ llvm-toolchain-6.0-6.0.1/test/Transforms/JumpThreading/pr36133.ll
|
||||||
|
@@ -0,0 +1,44 @@
|
||||||
|
+; RUN: opt -jump-threading -S < %s | FileCheck %s
|
||||||
|
+@global = external global i8*, align 8
|
||||||
|
+
|
||||||
|
+define i32 @foo(i32 %arg) {
|
||||||
|
+; CHECK-LABEL: @foo
|
||||||
|
+; CHECK-LABEL: bb:
|
||||||
|
+; CHECK: icmp eq
|
||||||
|
+; CHECK-NEXT: br i1 %tmp1, label %bb7, label %bb7
|
||||||
|
+bb:
|
||||||
|
+ %tmp = load i8*, i8** @global, align 8
|
||||||
|
+ %tmp1 = icmp eq i8* %tmp, null
|
||||||
|
+ br i1 %tmp1, label %bb3, label %bb2
|
||||||
|
+
|
||||||
|
+; CHECK-NOT: bb2:
|
||||||
|
+bb2:
|
||||||
|
+ br label %bb3
|
||||||
|
+
|
||||||
|
+; CHECK-NOT: bb3:
|
||||||
|
+bb3:
|
||||||
|
+ %tmp4 = phi i8 [ 1, %bb2 ], [ 0, %bb ]
|
||||||
|
+ %tmp5 = icmp eq i8 %tmp4, 0
|
||||||
|
+ br i1 %tmp5, label %bb7, label %bb6
|
||||||
|
+
|
||||||
|
+; CHECK-NOT: bb6:
|
||||||
|
+bb6:
|
||||||
|
+ br label %bb7
|
||||||
|
+
|
||||||
|
+; CHECK-LABEL: bb7:
|
||||||
|
+bb7:
|
||||||
|
+ %tmp8 = icmp eq i32 %arg, -1
|
||||||
|
+ br i1 %tmp8, label %bb9, label %bb10
|
||||||
|
+
|
||||||
|
+; CHECK-LABEL: bb9:
|
||||||
|
+bb9:
|
||||||
|
+ ret i32 0
|
||||||
|
+
|
||||||
|
+; CHECK-LABEL: bb10:
|
||||||
|
+bb10:
|
||||||
|
+ %tmp11 = icmp sgt i32 %arg, -1
|
||||||
|
+ call void @llvm.assume(i1 %tmp11)
|
||||||
|
+ ret i32 1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+declare void @llvm.assume(i1)
|
2
debian/patches/lldb-soname.diff
vendored
2
debian/patches/lldb-soname.diff
vendored
@ -29,7 +29,7 @@ Index: llvm-toolchain-snapshot_8~svn339515/lldb/source/API/CMakeLists.txt
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
|
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||||
@@ -136,11 +141,6 @@ if ( CMAKE_SYSTEM_NAME MATCHES "Windows"
|
@@ -141,11 +141,6 @@ if ( CMAKE_SYSTEM_NAME MATCHES "Windows"
|
||||||
if (MSVC AND NOT LLDB_DISABLE_PYTHON)
|
if (MSVC AND NOT LLDB_DISABLE_PYTHON)
|
||||||
target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
|
target_link_libraries(liblldb PRIVATE ${PYTHON_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
187
debian/patches/llvm-D49832-SCEVPred.patch
vendored
Normal file
187
debian/patches/llvm-D49832-SCEVPred.patch
vendored
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
commit 98592fcc61307968f7df1362771534595a1e1c21
|
||||||
|
Author: Keno Fischer <keno@juliacomputing.com>
|
||||||
|
Date: Wed Jul 25 19:29:02 2018 -0400
|
||||||
|
|
||||||
|
[SCEV] Don't expand Wrap predicate using inttoptr in ni addrspaces
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
In non-integral address spaces, we're not allowed to introduce inttoptr/ptrtoint
|
||||||
|
intrinsics. Instead, we need to expand any pointer arithmetic as geps on the
|
||||||
|
base pointer. Luckily this is a common task for SCEV, so all we have to do here
|
||||||
|
is hook up the corresponding helper function and add test case.
|
||||||
|
|
||||||
|
Fixes PR38290
|
||||||
|
|
||||||
|
Reviewers: reames, sanjoy
|
||||||
|
|
||||||
|
Subscribers: javed.absar, llvm-commits
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D49832
|
||||||
|
|
||||||
|
diff --git a/lib/Analysis/ScalarEvolutionExpander.cpp b/lib/Analysis/ScalarEvolutionExpander.cpp
|
||||||
|
index 7f76f057216..f441a3647fb 100644
|
||||||
|
--- a/lib/Analysis/ScalarEvolutionExpander.cpp
|
||||||
|
+++ b/lib/Analysis/ScalarEvolutionExpander.cpp
|
||||||
|
@@ -2154,8 +2154,9 @@ Value *SCEVExpander::generateOverflowCheck(const SCEVAddRecExpr *AR,
|
||||||
|
const SCEV *Step = AR->getStepRecurrence(SE);
|
||||||
|
const SCEV *Start = AR->getStart();
|
||||||
|
|
||||||
|
+ Type *ARTy = AR->getType();
|
||||||
|
unsigned SrcBits = SE.getTypeSizeInBits(ExitCount->getType());
|
||||||
|
- unsigned DstBits = SE.getTypeSizeInBits(AR->getType());
|
||||||
|
+ unsigned DstBits = SE.getTypeSizeInBits(ARTy);
|
||||||
|
|
||||||
|
// The expression {Start,+,Step} has nusw/nssw if
|
||||||
|
// Step < 0, Start - |Step| * Backedge <= Start
|
||||||
|
@@ -2167,11 +2168,12 @@ Value *SCEVExpander::generateOverflowCheck(const SCEVAddRecExpr *AR,
|
||||||
|
Value *TripCountVal = expandCodeFor(ExitCount, CountTy, Loc);
|
||||||
|
|
||||||
|
IntegerType *Ty =
|
||||||
|
- IntegerType::get(Loc->getContext(), SE.getTypeSizeInBits(AR->getType()));
|
||||||
|
+ IntegerType::get(Loc->getContext(), SE.getTypeSizeInBits(ARTy));
|
||||||
|
+ Type *ARExpandTy = DL.isNonIntegralPointerType(ARTy) ? ARTy : Ty;
|
||||||
|
|
||||||
|
Value *StepValue = expandCodeFor(Step, Ty, Loc);
|
||||||
|
Value *NegStepValue = expandCodeFor(SE.getNegativeSCEV(Step), Ty, Loc);
|
||||||
|
- Value *StartValue = expandCodeFor(Start, Ty, Loc);
|
||||||
|
+ Value *StartValue = expandCodeFor(Start, ARExpandTy, Loc);
|
||||||
|
|
||||||
|
ConstantInt *Zero =
|
||||||
|
ConstantInt::get(Loc->getContext(), APInt::getNullValue(DstBits));
|
||||||
|
@@ -2194,8 +2196,21 @@ Value *SCEVExpander::generateOverflowCheck(const SCEVAddRecExpr *AR,
|
||||||
|
// Compute:
|
||||||
|
// Start + |Step| * Backedge < Start
|
||||||
|
// Start - |Step| * Backedge > Start
|
||||||
|
- Value *Add = Builder.CreateAdd(StartValue, MulV);
|
||||||
|
- Value *Sub = Builder.CreateSub(StartValue, MulV);
|
||||||
|
+ Value *Add = nullptr, *Sub = nullptr;
|
||||||
|
+ if (ARExpandTy->isPointerTy()) {
|
||||||
|
+ PointerType *ARPtrTy = cast<PointerType>(ARExpandTy);
|
||||||
|
+ const SCEV *MulS = SE.getSCEV(MulV);
|
||||||
|
+ const SCEV *const StepArray[2] = {MulS, SE.getNegativeSCEV(MulS)};
|
||||||
|
+ Add = Builder.CreateBitCast(
|
||||||
|
+ expandAddToGEP(&StepArray[0], &StepArray[1], ARPtrTy, Ty, StartValue),
|
||||||
|
+ ARPtrTy);
|
||||||
|
+ Sub = Builder.CreateBitCast(
|
||||||
|
+ expandAddToGEP(&StepArray[1], &StepArray[2], ARPtrTy, Ty, StartValue),
|
||||||
|
+ ARPtrTy);
|
||||||
|
+ } else {
|
||||||
|
+ Add = Builder.CreateAdd(StartValue, MulV);
|
||||||
|
+ Sub = Builder.CreateSub(StartValue, MulV);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
Value *EndCompareGT = Builder.CreateICmp(
|
||||||
|
Signed ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT, Sub, StartValue);
|
||||||
|
diff --git a/test/Analysis/LoopAccessAnalysis/wrapping-pointer-ni.ll b/test/Analysis/LoopAccessAnalysis/wrapping-pointer-ni.ll
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..ddcf5e1a195
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test/Analysis/LoopAccessAnalysis/wrapping-pointer-ni.ll
|
||||||
|
@@ -0,0 +1,73 @@
|
||||||
|
+; RUN: opt -loop-versioning -S < %s | FileCheck %s -check-prefix=LV
|
||||||
|
+
|
||||||
|
+; NB: addrspaces 10-13 are non-integral
|
||||||
|
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13"
|
||||||
|
+
|
||||||
|
+; This matches the test case from PR38290
|
||||||
|
+; Check that we expand the SCEV predicate check using GEP, rather
|
||||||
|
+; than ptrtoint.
|
||||||
|
+
|
||||||
|
+%jl_value_t = type opaque
|
||||||
|
+%jl_array_t = type { i8 addrspace(13)*, i64, i16, i16, i32 }
|
||||||
|
+
|
||||||
|
+declare i64 @julia_steprange_last_4949()
|
||||||
|
+
|
||||||
|
+define void @"japi1_align!_9477"(%jl_value_t addrspace(10)**) #0 {
|
||||||
|
+; LV-LAVEL: L26.lver.check
|
||||||
|
+; LV: [[OFMul:%[^ ]*]] = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 4, i64 [[Step:%[^ ]*]])
|
||||||
|
+; LV-NEXT: [[OFMulResult:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul]], 0
|
||||||
|
+; LV-NEXT: [[OFMulOverflow:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul]], 1
|
||||||
|
+; LV-NEXT: [[PosGEP:%[^ ]*]] = getelementptr i32, i32 addrspace(13)* [[Base:%[^ ]*]], i64 [[Step]]
|
||||||
|
+; LV-NEXT: [[NegGEP:%[^ ]*]] = getelementptr i32, i32 addrspace(13)* [[Base]], i64 [[NegStep:%[^ ]*]]
|
||||||
|
+; LV-NEXT: icmp ugt i32 addrspace(13)* [[NegGEP]], [[Base]]
|
||||||
|
+; LV-NEXT: icmp ult i32 addrspace(13)* [[PosGEP]], [[Base]]
|
||||||
|
+; LV-NOT: inttoptr
|
||||||
|
+; LV-NOT: ptrtoint
|
||||||
|
+top:
|
||||||
|
+ %1 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %0, align 8, !nonnull !1, !dereferenceable !2, !align !3
|
||||||
|
+ %2 = load i32, i32* inttoptr (i64 12 to i32*), align 4, !tbaa !4
|
||||||
|
+ %3 = sub i32 0, %2
|
||||||
|
+ %4 = call i64 @julia_steprange_last_4949()
|
||||||
|
+ %5 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
|
||||||
|
+ %6 = bitcast %jl_value_t addrspace(11)* %5 to %jl_value_t addrspace(10)* addrspace(11)*
|
||||||
|
+ %7 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %6, align 8, !tbaa !4, !nonnull !1, !dereferenceable !9, !align !2
|
||||||
|
+ %8 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)*
|
||||||
|
+ %9 = bitcast %jl_value_t addrspace(11)* %8 to i32 addrspace(13)* addrspace(11)*
|
||||||
|
+ %10 = load i32 addrspace(13)*, i32 addrspace(13)* addrspace(11)* %9, align 8, !tbaa !10, !nonnull !1
|
||||||
|
+ %11 = sext i32 %3 to i64
|
||||||
|
+ br label %L26
|
||||||
|
+
|
||||||
|
+L26: ; preds = %L26, %top
|
||||||
|
+ %value_phi3 = phi i64 [ 0, %top ], [ %12, %L26 ]
|
||||||
|
+ %12 = add i64 %value_phi3, -1
|
||||||
|
+ %13 = getelementptr inbounds i32, i32 addrspace(13)* %10, i64 %12
|
||||||
|
+ %14 = load i32, i32 addrspace(13)* %13, align 4, !tbaa !13
|
||||||
|
+ %15 = add i64 %12, %11
|
||||||
|
+ %16 = getelementptr inbounds i32, i32 addrspace(13)* %10, i64 %15
|
||||||
|
+ store i32 %14, i32 addrspace(13)* %16, align 4, !tbaa !13
|
||||||
|
+ %17 = icmp eq i64 %value_phi3, %4
|
||||||
|
+ br i1 %17, label %L45, label %L26
|
||||||
|
+
|
||||||
|
+L45: ; preds = %L26
|
||||||
|
+ ret void
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+attributes #0 = { "thunk" }
|
||||||
|
+
|
||||||
|
+!llvm.module.flags = !{!0}
|
||||||
|
+
|
||||||
|
+!0 = !{i32 1, !"Debug Info Version", i32 3}
|
||||||
|
+!1 = !{}
|
||||||
|
+!2 = !{i64 16}
|
||||||
|
+!3 = !{i64 8}
|
||||||
|
+!4 = !{!5, !5, i64 0}
|
||||||
|
+!5 = !{!"jtbaa_mutab", !6, i64 0}
|
||||||
|
+!6 = !{!"jtbaa_value", !7, i64 0}
|
||||||
|
+!7 = !{!"jtbaa_data", !8, i64 0}
|
||||||
|
+!8 = !{!"jtbaa"}
|
||||||
|
+!9 = !{i64 40}
|
||||||
|
+!10 = !{!11, !11, i64 0}
|
||||||
|
+!11 = !{!"jtbaa_arrayptr", !12, i64 0}
|
||||||
|
+!12 = !{!"jtbaa_array", !8, i64 0}
|
||||||
|
+!13 = !{!14, !14, i64 0}
|
||||||
|
+!14 = !{!"jtbaa_arraybuf", !7, i64 0}
|
||||||
|
diff --git a/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll b/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll
|
||||||
|
index a7e5bce7445..fa6fccecbf1 100644
|
||||||
|
--- a/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll
|
||||||
|
+++ b/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll
|
||||||
|
@@ -58,10 +58,10 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
|
; LV-NEXT: [[OFMul1:%[^ ]*]] = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 4, i64 [[BE]])
|
||||||
|
; LV-NEXT: [[OFMulResult1:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul1]], 0
|
||||||
|
; LV-NEXT: [[OFMulOverflow1:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul1]], 1
|
||||||
|
-; LV-NEXT: [[AddEnd1:%[^ ]*]] = add i64 %a2, [[OFMulResult1]]
|
||||||
|
-; LV-NEXT: [[SubEnd1:%[^ ]*]] = sub i64 %a2, [[OFMulResult1]]
|
||||||
|
-; LV-NEXT: [[CmpNeg1:%[^ ]*]] = icmp ugt i64 [[SubEnd1]], %a2
|
||||||
|
-; LV-NEXT: [[CmpPos1:%[^ ]*]] = icmp ult i64 [[AddEnd1]], %a2
|
||||||
|
+; LV-NEXT: [[AddEnd1:%[^ ]*]] = add i64 [[A0:%[^ ]*]], [[OFMulResult1]]
|
||||||
|
+; LV-NEXT: [[SubEnd1:%[^ ]*]] = sub i64 [[A0]], [[OFMulResult1]]
|
||||||
|
+; LV-NEXT: [[CmpNeg1:%[^ ]*]] = icmp ugt i64 [[SubEnd1]], [[A0]]
|
||||||
|
+; LV-NEXT: [[CmpPos1:%[^ ]*]] = icmp ult i64 [[AddEnd1]], [[A0]]
|
||||||
|
; LV-NEXT: [[Cmp:%[^ ]*]] = select i1 false, i1 [[CmpNeg1]], i1 [[CmpPos1]]
|
||||||
|
; LV-NEXT: [[PredCheck1:%[^ ]*]] = or i1 [[Cmp]], [[OFMulOverflow1]]
|
||||||
|
|
||||||
|
@@ -233,10 +233,10 @@ for.end: ; preds = %for.body
|
||||||
|
; LV: [[OFMul1:%[^ ]*]] = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 4, i64 [[BE:%[^ ]*]])
|
||||||
|
; LV-NEXT: [[OFMulResult1:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul1]], 0
|
||||||
|
; LV-NEXT: [[OFMulOverflow1:%[^ ]*]] = extractvalue { i64, i1 } [[OFMul1]], 1
|
||||||
|
-; LV-NEXT: [[AddEnd1:%[^ ]*]] = add i64 %a2, [[OFMulResult1]]
|
||||||
|
-; LV-NEXT: [[SubEnd1:%[^ ]*]] = sub i64 %a2, [[OFMulResult1]]
|
||||||
|
-; LV-NEXT: [[CmpNeg1:%[^ ]*]] = icmp ugt i64 [[SubEnd1]], %a2
|
||||||
|
-; LV-NEXT: [[CmpPos1:%[^ ]*]] = icmp ult i64 [[AddEnd1]], %a2
|
||||||
|
+; LV-NEXT: [[AddEnd1:%[^ ]*]] = add i64 [[A0:%[^ ]*]], [[OFMulResult1]]
|
||||||
|
+; LV-NEXT: [[SubEnd1:%[^ ]*]] = sub i64 [[A0]], [[OFMulResult1]]
|
||||||
|
+; LV-NEXT: [[CmpNeg1:%[^ ]*]] = icmp ugt i64 [[SubEnd1]], [[A0]]
|
||||||
|
+; LV-NEXT: [[CmpPos1:%[^ ]*]] = icmp ult i64 [[AddEnd1]], [[A0]]
|
||||||
|
; LV-NEXT: [[Cmp:%[^ ]*]] = select i1 false, i1 [[CmpNeg1]], i1 [[CmpPos1]]
|
||||||
|
; LV-NEXT: [[PredCheck1:%[^ ]*]] = or i1 [[Cmp]], [[OFMulOverflow1]]
|
||||||
|
|
45
debian/patches/llvm-rL323946-LSRTy.patch
vendored
Normal file
45
debian/patches/llvm-rL323946-LSRTy.patch
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
commit ab60b05a472e8651cbe53c19513b7e62b9ff32df
|
||||||
|
Author: Mikael Holmen <mikael.holmen@ericsson.com>
|
||||||
|
Date: Thu Feb 1 06:38:34 2018 +0000
|
||||||
|
|
||||||
|
[LSR] Don't force bases of foldable formulae to the final type.
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
Before emitting code for scaled registers, we prevent
|
||||||
|
SCEVExpander from hoisting any scaled addressing mode
|
||||||
|
by emitting all the bases first. However, these bases
|
||||||
|
are being forced to the final type, resulting in some
|
||||||
|
odd code.
|
||||||
|
|
||||||
|
For example, if the type of the base is an integer and
|
||||||
|
the final type is a pointer, we will emit an inttoptr
|
||||||
|
for the base, a ptrtoint for the scale, and then a
|
||||||
|
'reverse' GEP where the GEP pointer is actually the base
|
||||||
|
integer and the index is the pointer. It's more intuitive
|
||||||
|
to use the pointer as a pointer and the integer as index.
|
||||||
|
|
||||||
|
Patch by: Bevin Hansson
|
||||||
|
|
||||||
|
Reviewers: atrick, qcolombet, sanjoy
|
||||||
|
|
||||||
|
Reviewed By: qcolombet
|
||||||
|
|
||||||
|
Subscribers: llvm-commits
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D42103
|
||||||
|
|
||||||
|
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323946 91177308-0d34-0410-b5e6-96231b3b80d8
|
||||||
|
|
||||||
|
diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
|
||||||
|
index 332c074a1df..4b8e2286ed9 100644
|
||||||
|
--- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp
|
||||||
|
+++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp
|
||||||
|
@@ -4993,7 +4993,7 @@ Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF,
|
||||||
|
// Unless the addressing mode will not be folded.
|
||||||
|
if (!Ops.empty() && LU.Kind == LSRUse::Address &&
|
||||||
|
isAMCompletelyFolded(TTI, LU, F)) {
|
||||||
|
- Value *FullV = Rewriter.expandCodeFor(SE.getAddExpr(Ops), Ty);
|
||||||
|
+ Value *FullV = Rewriter.expandCodeFor(SE.getAddExpr(Ops), nullptr);
|
||||||
|
Ops.clear();
|
||||||
|
Ops.push_back(SE.getUnknown(FullV));
|
||||||
|
}
|
3
debian/patches/series
vendored
3
debian/patches/series
vendored
@ -12,7 +12,8 @@ silent-gold-test.diff
|
|||||||
atomic_library_1.diff
|
atomic_library_1.diff
|
||||||
python-clangpath.diff
|
python-clangpath.diff
|
||||||
fix-clang-path-and-build.diff
|
fix-clang-path-and-build.diff
|
||||||
force-gcc-header-obj.diff
|
# commented because of bug 903709
|
||||||
|
#force-gcc-header-obj.diff
|
||||||
do-not-fail-on-unexpected-pass.diff
|
do-not-fail-on-unexpected-pass.diff
|
||||||
silent-more-tests.diff
|
silent-more-tests.diff
|
||||||
disable-display-PASS-UNSUPPORTED-XFAIL.diff
|
disable-display-PASS-UNSUPPORTED-XFAIL.diff
|
||||||
|
16
debian/rules
vendored
16
debian/rules
vendored
@ -338,7 +338,6 @@ LIBCXX_CMAKE_OPTIONS := \
|
|||||||
-DCMAKE_C_COMPILER=$(CURDIR)/$(TARGET_BUILD)/bin/clang \
|
-DCMAKE_C_COMPILER=$(CURDIR)/$(TARGET_BUILD)/bin/clang \
|
||||||
-DLLVM_EXTERNAL_LIT=$(BASE_PATH)/utils/lit/lit.py
|
-DLLVM_EXTERNAL_LIT=$(BASE_PATH)/utils/lit/lit.py
|
||||||
|
|
||||||
|
|
||||||
override_dh_auto_build:
|
override_dh_auto_build:
|
||||||
$(PRE_PROCESS) $(MAKE) $(NJOBS) -C $(TARGET_BUILD) VERBOSE=1 CLANG_VENDOR=$(VENDOR) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1
|
$(PRE_PROCESS) $(MAKE) $(NJOBS) -C $(TARGET_BUILD) VERBOSE=1 CLANG_VENDOR=$(VENDOR) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1
|
||||||
ifeq (${LIBFUZZER_ENABLE},yes)
|
ifeq (${LIBFUZZER_ENABLE},yes)
|
||||||
@ -350,7 +349,7 @@ ifeq (${LIBFUZZER_ENABLE},yes)
|
|||||||
ar ruv libFuzzer.a Fuzzer*.o
|
ar ruv libFuzzer.a Fuzzer*.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Builds libcxx and libcxxabi
|
# Builds libcxx and libcxxabi
|
||||||
|
|
||||||
mkdir -p libcxxabi/build
|
mkdir -p libcxxabi/build
|
||||||
mkdir -p libcxx/build
|
mkdir -p libcxx/build
|
||||||
@ -360,8 +359,10 @@ endif
|
|||||||
$(LIBCXX_CMAKE_OPTIONS) \
|
$(LIBCXX_CMAKE_OPTIONS) \
|
||||||
-DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \
|
-DLIBCXXABI_LIBCXX_PATH=$(BASE_PATH)/libcxx \
|
||||||
-DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \
|
-DLIBCXXABI_LIBCXX_LIBRARY_PATH=$(BASE_PATH)/libcxx/build/lib \
|
||||||
|
-DLIBCXXABI_LIBCXX_INCLUDES=$(BASE_PATH)/libcxx/include \
|
||||||
-DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \
|
-DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \
|
||||||
-DLLVM_ENABLE_RTTI=ON
|
-DLLVM_ENABLE_RTTI=ON && \
|
||||||
|
$(MAKE) $(NJOBS) VERBOSE=1
|
||||||
|
|
||||||
cd libcxx/build && \
|
cd libcxx/build && \
|
||||||
cmake ../ \
|
cmake ../ \
|
||||||
@ -370,7 +371,8 @@ endif
|
|||||||
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \
|
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(BASE_PATH)/libcxxabi/include \
|
||||||
-DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \
|
-DLIBCXX_CXX_ABI_LIBRARY_PATH=$(BASE_PATH)/libcxxabi/build/lib \
|
||||||
-DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \
|
-DLIBCXX_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \
|
||||||
-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON
|
-DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON && \
|
||||||
|
$(MAKE) $(NJOBS) VERBOSE=1
|
||||||
|
|
||||||
override_dh_prep: build_doc
|
override_dh_prep: build_doc
|
||||||
dh_prep
|
dh_prep
|
||||||
@ -430,6 +432,8 @@ override_dh_auto_install:
|
|||||||
|
|
||||||
# Only run on executable, not script
|
# Only run on executable, not script
|
||||||
chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1`
|
chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1`
|
||||||
|
chrpath -d libcxxabi/build/lib/libc++abi.so.1.0
|
||||||
|
chrpath -d libcxx/build/lib/libc++.so.1.0
|
||||||
|
|
||||||
cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT) libclang-$(LLVM_VERSION).so; \
|
cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT) libclang-$(LLVM_VERSION).so; \
|
||||||
ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT)
|
ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT)
|
||||||
@ -440,7 +444,7 @@ override_dh_auto_install:
|
|||||||
mkdir -p debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp
|
mkdir -p debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp
|
||||||
cp openmp/runtime/exports/common.dia.50.ompt.optional/include/* debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp
|
cp openmp/runtime/exports/common.dia.50.ompt.optional/include/* debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/include/openmp
|
||||||
|
|
||||||
# Remove artefact (where compiler-rt is built)
|
# Remove artifact (where compiler-rt is built)
|
||||||
# if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \
|
# if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \
|
||||||
# cd $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux && rm -rf $$(find . -mindepth 2 -maxdepth 2 -type d) && rm -rf $$(find -empty) && rm -rf */.dir; \
|
# cd $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux && rm -rf $$(find . -mindepth 2 -maxdepth 2 -type d) && rm -rf $$(find -empty) && rm -rf */.dir; \
|
||||||
# fi
|
# fi
|
||||||
@ -559,7 +563,7 @@ endif
|
|||||||
|
|
||||||
# Delete the target build directory to save some space on the build systems
|
# Delete the target build directory to save some space on the build systems
|
||||||
# All the files have been installed in $(CURDIR)/debian/tmp/ already
|
# All the files have been installed in $(CURDIR)/debian/tmp/ already
|
||||||
# rm -rf $(TARGET_BUILD)
|
rm -rf $(TARGET_BUILD)
|
||||||
|
|
||||||
|
|
||||||
override_dh_makeshlibs:
|
override_dh_makeshlibs:
|
||||||
|
Loading…
Reference in New Issue
Block a user