diff --git a/debian/changelog b/debian/changelog index a019f556..0141d40a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,25 @@ llvm-toolchain-6.0 (1:6.0.1-6) unstable; urgency=medium * Remove libtool flex, bison, dejagnu, tcl, expect, and perl from the build deps (testing) - -- Sylvestre Ledru Sun, 26 Aug 2018 13:58:40 +0200 + [ John Paul Adrian Glaubitz ] + * Don't build with ld.gold on powerpcspe + * Disable polly on powerpcspe + * Cherry-pick upstream patch to make rustc build on ppc + + [ Gianfranco Costamagna ] + * Team upload + * Upload to unstable + * Enable lld on ppc64el + * Add liblldb-6.0-dev to python-lldb runtime dependencies, needed to import it + + -- Sylvestre Ledru Sun, 26 Aug 2018 14:00:14 +0200 + +llvm-toolchain-6.0 (1:6.0.1-5exp1) experimental; urgency=medium + + * Enable lld on arm64, mips64el + * Enable lldb on mips64el + + -- Gianfranco Costamagna Fri, 17 Aug 2018 17:36:03 +0200 llvm-toolchain-6.0 (1:6.0.1-5) unstable; urgency=medium diff --git a/debian/control b/debian/control index 7ec752cf..89350a75 100644 --- a/debian/control +++ b/debian/control @@ -377,8 +377,8 @@ Description: Modular compiler and toolchain technologies, examples # ------------- lld ------------- Package: lld-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}), llvm-6.0-dev Pre-Depends: ${misc:Pre-Depends} Description: LLVM-based linker @@ -387,8 +387,8 @@ Description: LLVM-based linker Project. Package: liblld-6.0 -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -401,8 +401,8 @@ Description: LLVM-based linker, library Package: liblld-6.0-dev Section: libdevel -Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel -# ia64 mips mipsel hurd powerpc ppc64el have been removed +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 +# ia64 hurd powerpc have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lld-6.0 (= ${binary:Version}), liblld-6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} @@ -417,8 +417,8 @@ Description: LLVM-based linker, header files # ------------- lldb ------------- Package: lldb-6.0 -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 +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}), llvm-6.0-dev, python-lldb-6.0 Pre-Depends: ${misc:Pre-Depends} @@ -428,8 +428,8 @@ Description: Next generation, high-performance debugger Project, such as the Clang expression parser and LLVM disassembler. Package: liblldb-6.0 -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 +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm6.0 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Section: libs @@ -444,9 +444,9 @@ Description: Next generation, high-performance debugger, library Package: python-lldb-6.0 Section: python -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 -Depends: ${shlibs:Depends}, ${misc:Depends}, python, python-six +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed +Depends: ${shlibs:Depends}, ${misc:Depends}, liblldb-6.0-dev, python, python-six Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y Replaces: python-lldb-x.y Provides: python-lldb-x.y @@ -461,8 +461,8 @@ Description: Next generation, high-performance debugger, python lib Package: liblldb-6.0-dev Section: libdevel -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 +Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 +# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-6.0 (= ${binary:Version}) Replaces: lldb-6.0-dev (<= 1:6.0~svn215195-2) Breaks: lldb-6.0-dev (<< 1:6.0~svn215195-2) diff --git a/debian/patches/D51108.diff b/debian/patches/D51108.diff new file mode 100644 index 00000000..aa7f7196 --- /dev/null +++ b/debian/patches/D51108.diff @@ -0,0 +1,65 @@ +Index: llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp +=================================================================== +--- llvm-toolchain-6.0-6.0.1.orig/lib/Target/PowerPC/PPCISelLowering.cpp ++++ llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -3351,9 +3351,14 @@ + // Argument stored in memory. + assert(VA.isMemLoc()); + ++ // Get the extended size of the argument type in stack + unsigned ArgSize = VA.getLocVT().getStoreSize(); +- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(), +- isImmutable); ++ // Get the actual size of the argument type ++ unsigned ObjSize = VA.getValVT().getStoreSize(); ++ unsigned ArgOffset = VA.getLocMemOffset(); ++ // Stack objects in PPC32 are right justified. ++ ArgOffset += ArgSize - ObjSize; ++ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable); + + // Create load nodes to retrieve arguments from the stack. + SDValue FIN = DAG.getFrameIndex(FI, PtrVT); +@@ -5303,10 +5308,11 @@ + Arg = PtrOff; + } + +- if (VA.isRegLoc()) { +- if (Arg.getValueType() == MVT::i1) +- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg); ++ // Ensure callee will get either 0x00000001 or 0x00000000. ++ if (Arg.getValueType() == MVT::i1) ++ Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg); + ++ if (VA.isRegLoc()) { + seenFloatArg |= VA.getLocVT().isFloatingPoint(); + // Put argument in a physical register. + RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg)); +Index: llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +=================================================================== +--- /dev/null ++++ llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +@@ -0,0 +1,24 @@ ++; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s ++target triple = "powerpc-unknown-linux-gnu" ++ ++define zeroext i1 @check_callee( ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext %s1 ++) { ++ call void @check_caller( ++ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true, ++ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true, ++ i1 zeroext %s1) ++ ret i1 true ++} ++ ++; CHECK-LABEL: @check_callee ++; CHECK: lbz {{[0-9]+}}, 27(1) ++; CHECK: stw {{[0-9]+}}, 8(1) ++ ++declare void @check_caller( ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext, ++ i1 zeroext ++) diff --git a/debian/patches/series b/debian/patches/series index 66b6cc3b..c901e764 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -60,3 +60,4 @@ D42717-JumpThreading-backport-2.diff llvm-D49832-SCEVPred.patch llvm-rL323946-LSRTy.patch PowerPC-Make-AddrSpaceCast-noop.diff +D51108.diff diff --git a/debian/rules b/debian/rules index d711d9e5..c8b5fa80 100755 --- a/debian/rules +++ b/debian/rules @@ -84,7 +84,7 @@ else control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev' endif -BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 powerpcspe ppc64 ppc64el sparc sparc64 x32 s390x +BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el sparc sparc64 x32 s390x ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0) ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) # -fused-ld=gold enables the gold linker (but is not supported by all archs / distro) @@ -96,7 +96,7 @@ endif # Enable polly (or not) POLLY_ENABLE=yes -ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc s390x)) +ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc powerpcspe s390x)) POLLY_ENABLE=no endif @@ -145,7 +145,7 @@ else endif LLDB_ENABLE=yes -LLDB_DISABLE_ARCHS := hurd-i386 ia64 mips64el powerpc powerpcspe ppc64 s390x sparc64 +LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 s390x sparc64 # hurd has threading issues ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH))) # Disable LLDB for this arch.