From 0f60d91ef4ea2ba94d6bbecfe59364de4e7aa3b1 Mon Sep 17 00:00:00 2001 From: Michel Alexandre Salim Date: Nov 12 2011 13:21:52 +0000 Subject: Merge branch 'f15' into el6 --- diff --git a/llvm-2.8-disable-avx.patch b/llvm-2.8-disable-avx.patch new file mode 100644 index 0000000..4bdfb58 --- /dev/null +++ b/llvm-2.8-disable-avx.patch @@ -0,0 +1,67 @@ +diff -up llvm-2.8/lib/Target/X86/X86Subtarget.cpp.jx llvm-2.8/lib/Target/X86/X86Subtarget.cpp +--- llvm-2.8/lib/Target/X86/X86Subtarget.cpp.jx 2010-08-21 13:21:11.000000000 -0400 ++++ llvm-2.8/lib/Target/X86/X86Subtarget.cpp 2011-04-26 16:02:52.238855091 -0400 +@@ -262,7 +262,7 @@ void X86Subtarget::AutoDetectSubtargetFe + + HasCLMUL = IsIntel && ((ECX >> 1) & 0x1); + HasFMA3 = IsIntel && ((ECX >> 12) & 0x1); +- HasAVX = ((ECX >> 28) & 0x1); ++ HasAVX = 0; + HasAES = IsIntel && ((ECX >> 25) & 0x1); + + if (IsIntel || IsAMD) { +diff -up llvm-2.8/lib/Target/X86/X86Subtarget.h.jx llvm-2.8/lib/Target/X86/X86Subtarget.h +--- llvm-2.8/lib/Target/X86/X86Subtarget.h.jx 2010-09-02 19:03:46.000000000 -0400 ++++ llvm-2.8/lib/Target/X86/X86Subtarget.h 2011-04-26 16:01:23.336855019 -0400 +@@ -150,7 +150,7 @@ public: + bool hasSSE4A() const { return HasSSE4A; } + bool has3DNow() const { return X863DNowLevel >= ThreeDNow; } + bool has3DNowA() const { return X863DNowLevel >= ThreeDNowA; } +- bool hasAVX() const { return HasAVX; } ++ bool hasAVX() const { return false; } + bool hasAES() const { return HasAES; } + bool hasCLMUL() const { return HasCLMUL; } + bool hasFMA3() const { return HasFMA3; } +diff -up llvm-2.8/lib/Target/X86/X86.td.jx llvm-2.8/lib/Target/X86/X86.td +--- llvm-2.8/lib/Target/X86/X86.td.jx 2010-08-11 20:55:32.000000000 -0400 ++++ llvm-2.8/lib/Target/X86/X86.td 2011-04-26 16:02:21.127854790 -0400 +@@ -116,7 +116,8 @@ def : Proc<"westmere", [FeatureS + FeatureFastUAMem, FeatureAES]>; + // Sandy Bridge does not have FMA + // FIXME: Wikipedia says it does... it should have AES as well. +-def : Proc<"sandybridge", [FeatureSSE42, FeatureAVX, Feature64Bit]>; ++// FEDORA: AVX is broken in 2.8 ++def : Proc<"sandybridge", [FeatureSSE42, Feature64Bit]>; + + def : Proc<"k6", [FeatureMMX]>; + def : Proc<"k6-2", [FeatureMMX, Feature3DNow]>; +diff -up llvm-2.8/tools/clang/lib/Basic/Targets.cpp.jx llvm-2.8/tools/clang/lib/Basic/Targets.cpp +--- llvm-2.8/tools/clang/lib/Basic/Targets.cpp.jx 2010-08-31 12:44:54.000000000 -0400 ++++ llvm-2.8/tools/clang/lib/Basic/Targets.cpp 2011-04-26 16:03:40.768855658 -0400 +@@ -1048,8 +1048,6 @@ bool X86TargetInfo::setFeatureEnabled(ll + Features["3dnow"] = Features["3dnowa"] = true; + else if (Name == "aes") + Features["aes"] = true; +- else if (Name == "avx") +- Features["avx"] = true; + } else { + if (Name == "mmx") + Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] = +@@ -1101,7 +1099,6 @@ void X86TargetInfo::HandleTargetFeatures + // FIXME: Not sure yet how to treat AVX in regard to SSE levels. + // For now let it be enabled together with other SSE levels. + if (Features[i].substr(1) == "avx") { +- HasAVX = true; + continue; + } + +@@ -1146,9 +1143,6 @@ void X86TargetInfo::getTargetDefines(con + if (HasAES) + Builder.defineMacro("__AES__"); + +- if (HasAVX) +- Builder.defineMacro("__AVX__"); +- + // Target properties. + Builder.defineMacro("__LITTLE_ENDIAN__"); + diff --git a/llvm-Config-config.h b/llvm-Config-config.h new file mode 100644 index 0000000..c369b45 --- /dev/null +++ b/llvm-Config-config.h @@ -0,0 +1,9 @@ +#include + +#if __WORDSIZE == 32 +#include "config-32.h" +#elif __WORDSIZE == 64 +#include "config-64.h" +#else +#error "Unknown word size" +#endif diff --git a/llvm-Config-llvm-config.h b/llvm-Config-llvm-config.h new file mode 100644 index 0000000..2fa08c9 --- /dev/null +++ b/llvm-Config-llvm-config.h @@ -0,0 +1,9 @@ +#include + +#if __WORDSIZE == 32 +#include "llvm-config-32.h" +#elif __WORDSIZE == 64 +#include "llvm-config-64.h" +#else +#error "Unknown word size" +#endif diff --git a/llvm.spec b/llvm.spec index 27e4df4..f279884 100644 --- a/llvm.spec +++ b/llvm.spec @@ -12,7 +12,7 @@ Name: llvm Version: 2.8 -Release: 10%{?dist} +Release: 14%{?dist} Summary: The Low Level Virtual Machine Group: Development/Languages @@ -20,18 +20,27 @@ License: NCSA URL: http://llvm.org/ Source0: http://llvm.org/releases/%{version}/llvm-%{version}.tgz Source1: http://llvm.org/releases/%{version}/clang-%{version}.tgz +# multilib fixes +Source2: llvm-Config-config.h +Source3: llvm-Config-llvm-config.h + # Data files should be installed with timestamps preserved Patch0: llvm-2.6-timestamp.patch # rename alignof -> alignOf for C++0x support # http://llvm.org/bugs/show_bug.cgi?id=8423 Patch1: llvm-2.8-alignOf.patch Patch2: clang-2.8-alignOf.patch +# Disable broken AVX code generation +# http://llvm.org/bugs/show_bug.cgi?id=9508 +Patch3: llvm-2.8-disable-avx.patch + BuildRequires: bison BuildRequires: chrpath BuildRequires: flex BuildRequires: gcc-c++ >= 3.4 BuildRequires: groff +BuildRequires: libffi-devel BuildRequires: libtool-ltdl-devel %if %{with ocaml} BuildRequires: ocaml-ocamldoc @@ -60,9 +69,12 @@ functionality. Summary: Libraries and header files for LLVM Group: Development/Languages Requires: %{name} = %{version}-%{release} +Requires: libffi-devel Requires: libstdc++-devel >= 3.4 Provides: llvm-static = %{version}-%{release} +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives %description devel This package contains library and header files needed to develop new @@ -206,12 +218,19 @@ HTML documentation for LLVM's OCaml binding. %setup -q -n llvm-%{version} -a1 %{?_with_gcc:-a2} mv clang-%{version} tools/clang +# llvm patches %patch0 -p1 -b .timestamp %patch1 -p0 -b .alignOf +%patch3 -p1 -b .avx + +# clang patches pushd tools/clang %patch2 -p0 -b .alignOf popd +# Also disable AVX tests +rm test/CodeGen/X86/avx*.ll + # Encoding fix #(cd tools/clang/docs && \ # iconv -f ISO88591 -t UTF8 BlockImplementation.txt \ @@ -231,18 +250,21 @@ popd --disable-assertions \ --enable-debug-runtime \ --enable-jit \ + --enable-libffi \ --enable-shared \ --with-c-include-dirs=%{_includedir}:$(find %{_prefix}/lib/gcc/*/* \ -maxdepth 0 -type d)/include \ +%if %{__isa_bits} == 64 + --with-cxx-include-32bit-dir=32 \ +%endif --with-cxx-include-root=$(find %{_includedir}/c++/* -maxdepth 0 -type d) \ - --with-cxx-include-arch=%{_arch}-%{_vendor}-%{_os} \ - --with-cxx-include-32bit-dir=32 + --with-cxx-include-arch=%{_target_cpu}-%{_vendor}-%{_os} \ # FIXME file this # configure does not properly specify libdir sed -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/%{_lib}/%{name}|g' Makefile.config -make %{_smp_mflags} \ +make %{_smp_mflags} REQUIRES_RTTI=1 \ %ifarch ppc OPTIMIZE_OPTION="%{optflags} -fno-var-tracking-assignments" %else @@ -250,17 +272,21 @@ make %{_smp_mflags} \ %endif -%check -# no current unexpected failures. Use || true if they recur to force ignore -make check 2>&1 | tee llvm-testlog.txt -(cd tools/clang && make test 2>&1) | tee clang-testlog.txt - - %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} \ PROJ_docsdir=/moredocs +# multilib fixes +mv %{buildroot}%{_bindir}/llvm-config{,-%{__isa_bits}} + +pushd %{buildroot}%{_includedir}/llvm/Config +mv config.h config-%{__isa_bits}.h +cp -p %{SOURCE2} config.h +mv llvm-config.h llvm-config-%{__isa_bits}.h +cp -p %{SOURCE3} llvm-config.h +popd + # Create ld.so.conf.d entry mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/llvm-%{_arch}.conf << EOF @@ -310,7 +336,7 @@ rm %{buildroot}%{_libdir}/%{name}/*LLVMHello.* # FIXME file this bug sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/%{_lib}/%{name}",' \ - %{buildroot}%{_bindir}/llvm-config + %{buildroot}%{_bindir}/llvm-config-%{__isa_bits} chmod -x %{buildroot}%{_libdir}/%{name}/*.a @@ -319,6 +345,24 @@ chmod -x %{buildroot}%{_libdir}/%{name}/*.a find examples -name 'Makefile' | xargs -0r rm -f +%check +# the Koji build server does not seem to have enough RAM +# for the default 16 threads +make check LIT_ARGS="-s -v -j8" \ +%ifarch s390 s390x + || : +%else + %{nil} +%endif + +make -C tools/clang/test \ +%ifarch s390 s390x + || : +%else + %{nil} +%endif + + %post libs -p /sbin/ldconfig %post -n clang -p /sbin/ldconfig @@ -327,13 +371,32 @@ find examples -name 'Makefile' | xargs -0r rm -f %postun -n clang -p /sbin/ldconfig +%posttrans devel +# link llvm-config to the platform-specific file; +# use ISA bits as priority so that 64-bit is preferred +# over 32-bit if both are installed +alternatives \ + --install \ + %{_bindir}/llvm-config \ + llvm-config \ + %{_bindir}/llvm-config-%{__isa_bits} \ + %{__isa_bits} + +%postun devel +if [ $1 -eq 0 ]; then + alternatives --remove llvm-config \ + %{_bindir}/llvm-config-%{__isa_bits} +fi +exit 0 + + %files %defattr(-,root,root,-) %doc CREDITS.TXT LICENSE.TXT README.txt %{_bindir}/bugpoint %{_bindir}/llc %{_bindir}/lli -%exclude %{_bindir}/llvm-config +%exclude %{_bindir}/llvm-config-%{__isa_bits} %{_bindir}/llvm* %{_bindir}/opt %exclude %{_mandir}/man1/clang.1.* @@ -342,7 +405,7 @@ find examples -name 'Makefile' | xargs -0r rm -f %files devel %defattr(-,root,root,-) -%{_bindir}/llvm-config +%{_bindir}/llvm-config-%{__isa_bits} %{_includedir}/%{name} %{_includedir}/%{name}-c %{_libdir}/%{name}/*.a @@ -412,6 +475,21 @@ find examples -name 'Makefile' | xargs -0r rm -f %changelog +* Sat Nov 12 2011 Michel Salim - 2.8-14 +- Add runtime dependency of -devel on libffi-devel + +* Tue Oct 11 2011 Dan HorĂ¡k - 2.8-13 +- don't fail the build on failing tests on s390(x) + +* Tue Aug 2 2011 Michel Salim - 2.8-12 +- Depend on libffi to allow the LLVM interpreter to call external functions +- Build with RTTI enabled, needed by e.g. Rubinius (# 722714) +- Fix multilib installation (# 699416) +- Fix incorrect platform-specific include path on i686 + +* Tue Apr 26 2011 Adam Jackson 2.8-11 +- llvm-2.8-disable-avx.patch: Disable AVX code generation. (#699896) + * Thu Mar 17 2011 Michel Salim - 2.8-10 - Don't include test logs; breaks multilib (# 666195) - Split shared libraries into separate subpackage