The package rpms/llvm7.0.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/llvm7.0.git/commit/?id=b5061d4b00134....
Change: +%ifarch s390 %{arm} %ix86
Thanks.
Full change: ============
commit b5061d4b001344f68a24f7feacee3f2b7d8e7e73 Author: Tomas Hrcka thrcka@redhat.com Date: Mon Jun 1 07:02:08 2020 +0200
Revert "Orphaned for 6+ weeks"
This reverts commit a1447bc9aa48becb61f6a09818cea894a434010b.
Unretirement request: https://pagure.io/releng/issue/9498
Signed-off-by: Tomas Hrcka thrcka@redhat.com
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30ba40d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/llvm-7.0.1.src.tar.xz diff --git a/0001-CMake-Add-LLVM_UTILS_INSTALL_DIR-option.patch b/0001-CMake-Add-LLVM_UTILS_INSTALL_DIR-option.patch new file mode 100644 index 0000000..d2f7b14 --- /dev/null +++ b/0001-CMake-Add-LLVM_UTILS_INSTALL_DIR-option.patch @@ -0,0 +1,44 @@ +From 974c288631ef8d05bf3a3f91b32bf38eae16e5c8 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Mon, 6 Mar 2017 13:55:55 +0000 +Subject: [PATCH] CMake: Add LLVM_UTILS_INSTALL_DIR option + +This is like the LLVM_TOOLS_INSTALL_DIR option, but for the utils +that are installed when the LLVM_INSTALL_UTILS. This option +defaults to 'bin' to remain consistent with the current behavior, but +distros may want to install these to libexec/llvm. +--- + CMakeLists.txt | 3 +++ + cmake/modules/AddLLVM.cmake | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 58ee3cf..f93405c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -281,6 +281,9 @@ set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name + set(LLVM_TOOLS_INSTALL_DIR "bin" CACHE STRING "Path for binary subdirectory (defaults to 'bin')") + mark_as_advanced(LLVM_TOOLS_INSTALL_DIR) + ++set(LLVM_UTILS_INSTALL_DIR "bin" CACHE STRING "Path to install LLVM utilities (enabled by LLVM_INSTALL_UTILS=ON) (defaults to 'bin')") ++mark_as_advanced(LLVM_TOOLS_INSTALL_DIR) ++ + # They are used as destination of target generators. + set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) + set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index 7f7608c..0da8162 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -864,7 +864,7 @@ macro(add_llvm_utility name) + set_target_properties(${name} PROPERTIES FOLDER "Utils") + if( LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS ) + install (TARGETS ${name} +- RUNTIME DESTINATION bin ++ RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR} + COMPONENT ${name}) + if (NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(install-${name} +-- +2.9.3 + diff --git a/0001-CMake-Don-t-prefer-python2.7.patch b/0001-CMake-Don-t-prefer-python2.7.patch new file mode 100644 index 0000000..ddea299 --- /dev/null +++ b/0001-CMake-Don-t-prefer-python2.7.patch @@ -0,0 +1,27 @@ +From 1e0f1c5481a96d760f7840d4dde103353a0131f8 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Thu, 30 Aug 2018 11:38:51 -0700 +Subject: [PATCH] CMake: Don't prefer python2.7 + +--- + CMakeLists.txt | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 31df640..2603f1c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -613,10 +613,6 @@ message(STATUS "LLVM default target triple: ${LLVM_DEFAULT_TARGET_TRIPLE}") + + include(HandleLLVMOptions) + +-# Verify that we can find a Python 2 interpreter. Python 3 is unsupported. +-# FIXME: We should support systems with only Python 3, but that requires work +-# on LLDB. +-set(Python_ADDITIONAL_VERSIONS 2.7) + include(FindPythonInterp) + if( NOT PYTHONINTERP_FOUND ) + message(FATAL_ERROR +-- +1.8.3.1 + diff --git a/0001-CMake-Fix-docs-llvm-man-target-when-clang-llvm-is-in.patch b/0001-CMake-Fix-docs-llvm-man-target-when-clang-llvm-is-in.patch new file mode 100644 index 0000000..abff62d --- /dev/null +++ b/0001-CMake-Fix-docs-llvm-man-target-when-clang-llvm-is-in.patch @@ -0,0 +1,42 @@ +From af79e4116c4476153869e1fd4aa30c87d4c7c21e Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Mon, 15 May 2017 09:34:23 +0000 +Subject: [PATCH] CMake: Fix docs-llvm-man target when clang+llvm is in the + same source tree + +Summary: +This was broken by r302499. Configuring with -DLLVM_BUILD_DOCS=ON would +cause the docs-llvm-man target not to be created. + +Reviewers: anemet, beanz + +Reviewed By: anemet + +Subscribers: llvm-commits, mgorny + +Differential Revision: https://reviews.llvm.org/D33146 + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303042 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + cmake/modules/AddSphinxTarget.cmake | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmake/modules/AddSphinxTarget.cmake b/cmake/modules/AddSphinxTarget.cmake +index c3a676d..4540c5c 100644 +--- a/cmake/modules/AddSphinxTarget.cmake ++++ b/cmake/modules/AddSphinxTarget.cmake +@@ -1,9 +1,9 @@ + + # Create sphinx target +-if (LLVM_ENABLE_SPHINX AND NOT TARGET sphinx) ++if (LLVM_ENABLE_SPHINX) + message(STATUS "Sphinx enabled.") + find_package(Sphinx REQUIRED) +- if (LLVM_BUILD_DOCS) ++ if (LLVM_BUILD_DOCS AND NOT TARGET sphinx) + add_custom_target(sphinx ALL) + endif() + else() +-- +1.8.3.1 + diff --git a/0001-CMake-Split-static-library-exports-into-their-own-ex.patch b/0001-CMake-Split-static-library-exports-into-their-own-ex.patch new file mode 100644 index 0000000..903821e --- /dev/null +++ b/0001-CMake-Split-static-library-exports-into-their-own-ex.patch @@ -0,0 +1,86 @@ +From f9e66a883e1fb748e6ac826fde188efaae249361 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Sat, 29 Apr 2017 02:03:23 +0000 +Subject: [PATCH] CMake: Split static library exports into their own export + file + +Summary: +This is to better support distros which split the static libraries into +their own package. + +The current problem is that any project the includes LLVMConfig.cmake +will fail to configure unless the static libraries are installed. This +is because LLVMConfig.cmake includes LLVMExports.cmake, which throws an +error if it can't find files linked to one of the exported targets. + +This patch resolves the problem by putting the static library targets +into their own export file, LLVMStaticExports.cmake. This file +is optionally included by LLVMConfig.cmake, so distros can put this +new file in their static library package to make LLVMConfig.cmake +no longer depend on these libraries when they are not installed. + +Reviewers: beanz, mgorny, chapuni + +Subscribers: llvm-commits + +Differential Revision: https://reviews.llvm.org/D32668 +--- + cmake/modules/AddLLVM.cmake | 6 +++++- + cmake/modules/CMakeLists.txt | 3 +++ + cmake/modules/LLVMConfig.cmake.in | 2 ++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index fd5627e..78f106f 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -635,7 +635,11 @@ macro(add_llvm_library name) + + if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR + NOT LLVM_DISTRIBUTION_COMPONENTS) +- set(export_to_llvmexports EXPORT LLVMExports) ++ if (ARG_SHARED) ++ set(export_to_llvmexports EXPORT LLVMExports) ++ else() ++ set(export_to_llvmexports EXPORT LLVMStaticExports) ++ endif() + set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) + endif() + +diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt +index 6074e83..e9fcb11 100644 +--- a/cmake/modules/CMakeLists.txt ++++ b/cmake/modules/CMakeLists.txt +@@ -91,6 +91,7 @@ set(LLVM_CONFIG_BINARY_DIR "${LLVM_INSTALL_PREFIX}") + set(LLVM_CONFIG_TOOLS_BINARY_DIR "${LLVM_INSTALL_PREFIX}/bin") + set(LLVM_CONFIG_EXPORTS_FILE "${LLVM_CMAKE_DIR}/LLVMExports.cmake") + set(LLVM_CONFIG_EXPORTS "${LLVM_EXPORTS}") ++set(LLVM_CONFIG_STATIC_EXPORTS_FILE "${LLVM_CMAKE_DIR}/LLVMStaticExports.cmake") + configure_file( + LLVMConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake +@@ -107,6 +108,8 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) + if(llvm_has_exports) + install(EXPORT LLVMExports DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} + COMPONENT cmake-exports) ++ install(EXPORT LLVMStaticExports DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} ++ COMPONENT cmake-exports) + endif() + + install(FILES +diff --git a/cmake/modules/LLVMConfig.cmake.in b/cmake/modules/LLVMConfig.cmake.in +index 0772016..f471625 100644 +--- a/cmake/modules/LLVMConfig.cmake.in ++++ b/cmake/modules/LLVMConfig.cmake.in +@@ -78,6 +78,8 @@ if(NOT TARGET LLVMSupport) + set(LLVM_EXPORTED_TARGETS "@LLVM_CONFIG_EXPORTS@") + include("@LLVM_CONFIG_EXPORTS_FILE@") + @llvm_config_include_buildtree_only_exports@ ++ ++ include("@LLVM_CONFIG_STATIC_EXPORTS_FILE@" OPTIONAL) + endif() + + # By creating intrinsics_gen here, subprojects that depend on LLVM's +-- +1.8.3.1 + diff --git a/0001-Don-t-set-rpath-when-installing.patch b/0001-Don-t-set-rpath-when-installing.patch new file mode 100644 index 0000000..d92a387 --- /dev/null +++ b/0001-Don-t-set-rpath-when-installing.patch @@ -0,0 +1,24 @@ +From e67ace2ecb42c24e124f1738dc67b22055a22500 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Thu, 13 Sep 2018 10:10:08 -0700 +Subject: [PATCH] Don't set rpath when installing + +--- + cmake/modules/AddLLVM.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index ce2057f..de309b5 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -1621,6 +1621,7 @@ function(llvm_codesign name) + endfunction() + + function(llvm_setup_rpath name) ++ return() + if(CMAKE_INSTALL_RPATH) + return() + endif() +-- +1.8.3.1 + diff --git a/0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch b/0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch new file mode 100644 index 0000000..d6380eb --- /dev/null +++ b/0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch @@ -0,0 +1,60 @@ +From 2ad5ac11b17dac347d29191872b2b3d601bbcd1f Mon Sep 17 00:00:00 2001 +From: Jonas Devlieghere jonas@devlieghere.com +Date: Fri, 21 Sep 2018 12:03:14 +0000 +Subject: [PATCH 1/2] Ensure that variant part discriminator is read by + MetadataLoader + +https://reviews.llvm.org/D42082 introduced variant parts to debug info +in LLVM. Subsequent work on the Rust compiler has found a bug in that +patch; namely, there is a path in MetadataLoader that fails to restore +the discriminator. + +This patch fixes the bug. + +Patch by: Tom Tromey + +Differential revision: https://reviews.llvm.org/D52340 + +llvm-svn: 342725 +--- + llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 2 +- + llvm/test/Assembler/debug-variant-discriminator.ll | 14 ++++++++++++++ + 2 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 llvm/test/Assembler/debug-variant-discriminator.ll + +diff --git a/lib/Bitcode/Reader/MetadataLoader.cpp b/lib/Bitcode/Reader/MetadataLoader.cpp +index 011c41e2cecd..a7b542efc19e 100644 +--- a/lib/Bitcode/Reader/MetadataLoader.cpp ++++ b/lib/Bitcode/Reader/MetadataLoader.cpp +@@ -1308,7 +1308,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( + (Context, Tag, Name, File, Line, Scope, BaseType, + SizeInBits, AlignInBits, OffsetInBits, Flags, + Elements, RuntimeLang, VTableHolder, TemplateParams, +- Identifier)); ++ Identifier, Discriminator)); + if (!IsNotUsedInTypeRef && Identifier) + MetadataList.addTypeRef(*Identifier, *cast<DICompositeType>(CT)); + +diff --git a/test/Assembler/debug-variant-discriminator.ll b/test/Assembler/debug-variant-discriminator.ll +new file mode 100644 +index 000000000000..5be001cad6be +--- /dev/null ++++ b/test/Assembler/debug-variant-discriminator.ll +@@ -0,0 +1,14 @@ ++; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s ++; RUN: verify-uselistorder %s ++ ++; CHECK: !named = !{!0, !1, !2} ++!named = !{!0, !1, !2} ++ ++; CHECK: !0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer") ++; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2) ++; CHECK-NEXT: !2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial) ++; CHECK-NEXT: !3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) ++!0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer") ++!1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2) ++!2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial) ++!3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) +-- +2.20.1 + diff --git a/0001-Filter-out-cxxflags-not-supported-by-clang.patch b/0001-Filter-out-cxxflags-not-supported-by-clang.patch new file mode 100644 index 0000000..31b819b --- /dev/null +++ b/0001-Filter-out-cxxflags-not-supported-by-clang.patch @@ -0,0 +1,28 @@ +From 5f7fd92155db77c7608e3a07e5dcfad1ec7bd4e4 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Fri, 16 Mar 2018 07:52:33 -0700 +Subject: [PATCH] Filter out cxxflags not supported by clang + +--- + tools/llvm-config/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt +index a0bd36c..4193b0e 100644 +--- a/tools/llvm-config/CMakeLists.txt ++++ b/tools/llvm-config/CMakeLists.txt +@@ -34,7 +34,11 @@ set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) + set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR}) + set(LLVM_CPPFLAGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}") + set(LLVM_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}") ++STRING(REGEX REPLACE "-mcet" "" LLVM_CFLAGS ${LLVM_CFLAGS}) ++STRING(REGEX REPLACE "-fcf-protection" "" LLVM_CFLAGS ${LLVM_CFLAGS}) + set(LLVM_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${COMPILE_FLAGS} ${LLVM_DEFINITIONS}") ++STRING(REGEX REPLACE "-mcet" "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) ++STRING(REGEX REPLACE "-fcf-protection" "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + set(LLVM_BUILD_SYSTEM cmake) + set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI}) + set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}") +-- +1.8.3.1 + diff --git a/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch b/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch new file mode 100644 index 0000000..2fae157 --- /dev/null +++ b/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch @@ -0,0 +1,79 @@ +From a481ab548d038c1dfd52ee211b997e2dd33ff5ae Mon Sep 17 00:00:00 2001 +From: Hal Finkel hfinkel@anl.gov +Date: Wed, 6 Sep 2017 03:08:26 +0000 +Subject: [PATCH] [PowerPC] Don't use xscvdpspn on the P7 + +xscvdpspn was not introduced until the P8, so don't use it on the P7. Fixes a +regression introduced in r288152. + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312612 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + lib/Target/PowerPC/PPCISelLowering.cpp | 9 ++++++--- + test/CodeGen/PowerPC/fp-splat.ll | 27 +++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+), 3 deletions(-) + create mode 100644 test/CodeGen/PowerPC/fp-splat.ll + +diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp +index 74dedaf..6295693 100644 +--- a/lib/Target/PowerPC/PPCISelLowering.cpp ++++ b/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -7463,9 +7463,11 @@ static SDValue BuildVSLDOI(SDValue LHS, SDValue RHS, unsigned Amt, EVT VT, + /// - The node is a "load-and-splat" + /// In all other cases, we will choose to keep the BUILD_VECTOR. + static bool haveEfficientBuildVectorPattern(BuildVectorSDNode *V, +- bool HasDirectMove) { ++ bool HasDirectMove, ++ bool HasP8Vector) { + EVT VecVT = V->getValueType(0); +- bool RightType = VecVT == MVT::v2f64 || VecVT == MVT::v4f32 || ++ bool RightType = VecVT == MVT::v2f64 || ++ (HasP8Vector && VecVT == MVT::v4f32) || + (HasDirectMove && (VecVT == MVT::v2i64 || VecVT == MVT::v4i32)); + if (!RightType) + return false; +@@ -7627,7 +7629,8 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op, + // lowered to VSX instructions under certain conditions. + // Without VSX, there is no pattern more efficient than expanding the node. + if (Subtarget.hasVSX() && +- haveEfficientBuildVectorPattern(BVN, Subtarget.hasDirectMove())) ++ haveEfficientBuildVectorPattern(BVN, Subtarget.hasDirectMove(), ++ Subtarget.hasP8Vector())) + return Op; + return SDValue(); + } +diff --git a/test/CodeGen/PowerPC/fp-splat.ll b/test/CodeGen/PowerPC/fp-splat.ll +new file mode 100644 +index 0000000..9b1ab21 +--- /dev/null ++++ b/test/CodeGen/PowerPC/fp-splat.ll +@@ -0,0 +1,27 @@ ++; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-P8 -check-prefix=CHECK ++; RUN: llc -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-P7 -check-prefix=CHECK ++ ++define <4 x float> @test1(float %a) { ++entry: ++; CHECK-LABEL: test1 ++ %vecins = insertelement <4 x float> undef, float %a, i32 0 ++ %vecins1 = insertelement <4 x float> %vecins, float %a, i32 1 ++ %vecins2 = insertelement <4 x float> %vecins1, float %a, i32 2 ++ %vecins3 = insertelement <4 x float> %vecins2, float %a, i32 3 ++ ret <4 x float> %vecins3 ++; CHECK-P8: xscvdpspn ++; CHECK-P7-NOT: xscvdpspn ++; CHECK: blr ++} ++ ++define <2 x double> @test2(double %a) { ++entry: ++; CHECK-LABEL: test2 ++ %vecins = insertelement <2 x double> undef, double %a, i32 0 ++ %vecins1 = insertelement <2 x double> %vecins, double %a, i32 1 ++ ret <2 x double> %vecins1 ++; CHECK-P8: xxspltd ++; CHECK-P7: xxspltd ++; CHECK: blr ++} ++ +-- +1.8.3.1 + diff --git a/0001-Revert-Revert-CMake-Move-sphinx-detection-into-AddSp.patch b/0001-Revert-Revert-CMake-Move-sphinx-detection-into-AddSp.patch new file mode 100644 index 0000000..828e703 --- /dev/null +++ b/0001-Revert-Revert-CMake-Move-sphinx-detection-into-AddSp.patch @@ -0,0 +1,76 @@ +From 9c50cf0c6d8f0b11cd76a28cc4ef9bca6ef732e0 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Tue, 9 May 2017 01:41:28 +0000 +Subject: [PATCH] Revert "Revert "CMake: Move sphinx detection into + AddSphinxTarget.cmake"" + +This reverts commit r302054. + +Re-commit now that I have fixes for clang/lld. + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302499 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + cmake/config-ix.cmake | 10 ---------- + cmake/modules/AddSphinxTarget.cmake | 13 +++++++++++++ + docs/CMakeLists.txt | 2 +- + 3 files changed, 14 insertions(+), 11 deletions(-) + +diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake +index 0331d0f..de8e9bf 100755 +--- a/cmake/config-ix.cmake ++++ b/cmake/config-ix.cmake +@@ -530,16 +530,6 @@ else() + message(STATUS "Doxygen disabled.") + endif() + +-if (LLVM_ENABLE_SPHINX) +- message(STATUS "Sphinx enabled.") +- find_package(Sphinx REQUIRED) +- if (LLVM_BUILD_DOCS) +- add_custom_target(sphinx ALL) +- endif() +-else() +- message(STATUS "Sphinx disabled.") +-endif() +- + set(LLVM_BINDINGS "") + if(WIN32) + message(STATUS "Go bindings disabled.") +diff --git a/cmake/modules/AddSphinxTarget.cmake b/cmake/modules/AddSphinxTarget.cmake +index cfc7f38..c3a676d 100644 +--- a/cmake/modules/AddSphinxTarget.cmake ++++ b/cmake/modules/AddSphinxTarget.cmake +@@ -1,3 +1,16 @@ ++ ++# Create sphinx target ++if (LLVM_ENABLE_SPHINX AND NOT TARGET sphinx) ++ message(STATUS "Sphinx enabled.") ++ find_package(Sphinx REQUIRED) ++ if (LLVM_BUILD_DOCS) ++ add_custom_target(sphinx ALL) ++ endif() ++else() ++ message(STATUS "Sphinx disabled.") ++endif() ++ ++ + # Handy function for creating the different Sphinx targets. + # + # ``builder`` should be one of the supported builders used by +diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt +index 6dff219..4437610 100644 +--- a/docs/CMakeLists.txt ++++ b/docs/CMakeLists.txt +@@ -103,8 +103,8 @@ endif() + endif() + + if (LLVM_ENABLE_SPHINX) ++ include(AddSphinxTarget) + if (SPHINX_FOUND) +- include(AddSphinxTarget) + if (${SPHINX_OUTPUT_HTML}) + add_sphinx_target(html llvm) + endif() +-- +1.8.3.1 + diff --git a/0001-unittests-Don-t-install-TestPlugin.so.patch b/0001-unittests-Don-t-install-TestPlugin.so.patch new file mode 100644 index 0000000..f614036 --- /dev/null +++ b/0001-unittests-Don-t-install-TestPlugin.so.patch @@ -0,0 +1,62 @@ +From cf1fb43186fd4d97ee2de0b222d44ecc500f82c7 Mon Sep 17 00:00:00 2001 +From: Tom Stellard tstellar@redhat.com +Date: Mon, 13 Aug 2018 12:22:28 -0700 +Subject: [PATCH] unittests: Don't install TestPlugin.so + +add_llvm_loadable_module adds an install target by default, but this +module is only used for a unit test, so we don't need to instal it. + +This patch adds a NO_INSTALL option to add_llvm_loadable_module that +can be used to disable installation of modules. +--- + cmake/modules/AddLLVM.cmake | 13 ++++++++----- + unittests/Passes/CMakeLists.txt | 2 +- + 2 files changed, 9 insertions(+), 6 deletions(-) + +diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake +index 24ef5e4..1637ba6 100644 +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -671,7 +671,8 @@ macro(add_llvm_library name) + endmacro(add_llvm_library name) + + macro(add_llvm_loadable_module name) +- llvm_add_library(${name} MODULE ${ARGN}) ++ cmake_parse_arguments(ARG "NO_INSTALL" "" "" ${ARGN}) ++ llvm_add_library(${name} MODULE ${ARG_UNPARSED_ARGUMENTS}) + if(NOT TARGET ${name}) + # Add empty "phony" target + add_custom_target(${name}) +@@ -693,10 +694,12 @@ macro(add_llvm_loadable_module name) + set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) + endif() + +- install(TARGETS ${name} +- ${export_to_llvmexports} +- LIBRARY DESTINATION ${dlldir} +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) ++ if (NOT ARG_NO_INSTALL) ++ install(TARGETS ${name} ++ ${export_to_llvmexports} ++ LIBRARY DESTINATION ${dlldir} ++ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) ++ endif() + endif() + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) + endif() +diff --git a/unittests/Passes/CMakeLists.txt b/unittests/Passes/CMakeLists.txt +index d90df20..99390e6 100644 +--- a/unittests/Passes/CMakeLists.txt ++++ b/unittests/Passes/CMakeLists.txt +@@ -14,7 +14,7 @@ add_llvm_unittest(PluginsTests + export_executable_symbols(PluginsTests) + + set(LLVM_LINK_COMPONENTS) +-add_llvm_loadable_module(TestPlugin ++add_llvm_loadable_module(TestPlugin NO_INSTALL + TestPlugin.cpp + ) + +-- +1.8.3.1 + diff --git a/0002-test-Fix-Assembler-debug-info.ll.patch b/0002-test-Fix-Assembler-debug-info.ll.patch new file mode 100644 index 0000000..d022d97 --- /dev/null +++ b/0002-test-Fix-Assembler-debug-info.ll.patch @@ -0,0 +1,28 @@ +From 9bfebd6e47cb8513dcd7f7203f29489bdec7bfe4 Mon Sep 17 00:00:00 2001 +From: Jonas Devlieghere jonas@devlieghere.com +Date: Fri, 21 Sep 2018 12:28:44 +0000 +Subject: [PATCH 2/2] [test] Fix Assembler/debug-info.ll + +Update Assembler/debug-info.ll to contain discriminator. + +llvm-svn: 342727 +--- + llvm/test/Assembler/debug-info.ll | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/Assembler/debug-info.ll b/test/Assembler/debug-info.ll +index 5dfb8cd93435..605afc3f1587 100644 +--- a/test/Assembler/debug-info.ll ++++ b/test/Assembler/debug-info.ll +@@ -83,7 +83,7 @@ + ; CHECK-NEXT: !32 = !DIFile(filename: "file", directory: "dir", checksumkind: CSK_MD5, checksum: "000102030405060708090a0b0c0d0e0f") + !35 = !DIFile(filename: "file", directory: "dir", checksumkind: CSK_MD5, checksum: "000102030405060708090a0b0c0d0e0f") + +-; CHECK-NEXT: !33 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !14, size: 64) ++; CHECK-NEXT: !33 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !14, size: 64, discriminator: !34) + ; CHECK-NEXT: !34 = !DIDerivedType(tag: DW_TAG_member, scope: !33, baseType: !35, size: 64, align: 64, flags: DIFlagArtificial) + ; CHECK-NEXT: !35 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) + !36 = !DICompositeType(tag: DW_TAG_variant_part, name: "A", scope: !16, size: 64, discriminator: !37) +-- +2.20.1 + diff --git a/dead.package b/dead.package deleted file mode 100644 index 5204a84..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned for 6+ weeks diff --git a/llvm.spec b/llvm.spec new file mode 100644 index 0000000..bd6a564 --- /dev/null +++ b/llvm.spec @@ -0,0 +1,773 @@ +# Components enabled if supported by target architecture: +%define gold_arches %{ix86} x86_64 %{arm} aarch64 %{power64} s390x +%ifarch %{gold_arches} + %bcond_without gold +%else + %bcond_with gold +%endif + +%global compat_build 1 + +%global llvm_bindir %{_libdir}/%{name} +%global build_llvm_bindir %{buildroot}%{llvm_bindir} +%global maj_ver 7 +%global min_ver 0 +%global patch_ver 1 +#%%global rc_ver 3 + +%ifarch s390x +%global llvm_targets SystemZ;BPF +%endif +%ifarch ppc64 ppc64le +%global llvm_targets PowerPC;AMDGPU;BPF +%endif +%ifarch %ix86 x86_64 +# ARM/AARCH64 enabled due to rhbz#1627500 +%global llvm_targets X86;AMDGPU;NVPTX;BPF;ARM;AArch64 +%endif +%ifarch aarch64 +%global llvm_targets AArch64;AMDGPU;BPF +%endif +%ifarch %{arm} +%global llvm_targets ARM;AMDGPU;BPF +%endif + +%if 0%{?compat_build} +%global pkg_name llvm%{maj_ver}.%{min_ver} +%global exec_suffix -%{maj_ver}.%{min_ver} +%global short_exec_suffix -%{maj_ver} +%global install_prefix %{_libdir}/%{name} +%global install_bindir %{install_prefix}/bin +%global install_includedir %{install_prefix}/include +%global install_libdir %{install_prefix}/lib + +%global pkg_bindir %{install_bindir} +%global pkg_includedir %{_includedir}/%{name} +%global pkg_libdir %{install_libdir} +%else +%global pkg_name llvm +%global install_prefix /usr +%global install_libdir %{_libdir} +%global pkg_libdir %{install_libdir} +%endif + +%global build_install_prefix %{buildroot}%{install_prefix} +%global build_pkgdocdir %{buildroot}%{_pkgdocdir} + +Name: %{pkg_name} +Version: %{maj_ver}.%{min_ver}.%{patch_ver} +Release: 5%{?rc_ver:.rc%{rc_ver}}%{?dist} +Summary: The Low Level Virtual Machine + +License: NCSA +URL: http://llvm.org +Source0: http://%%7B?rc_ver:pre%7Dreleases.llvm.org/%%7Bversion%7D/%%7B?rc_ver:rc%%7B... +Source1: run-lit-tests + +Patch3: 0001-CMake-Split-static-library-exports-into-their-own-ex.patch +Patch7: 0001-Filter-out-cxxflags-not-supported-by-clang.patch + +Patch12: 0001-unittests-Don-t-install-TestPlugin.so.patch +# If python2 is available on the system, llvm will try to use it. This patch +# removes the preferences for python2, so we can make sure we always use +# python3. +Patch14: 0001-CMake-Don-t-prefer-python2.7.patch +Patch15: 0001-Don-t-set-rpath-when-installing.patch + +Patch16: 0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch +Patch17: 0002-test-Fix-Assembler-debug-info.ll.patch + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: ninja-build +BuildRequires: zlib-devel +BuildRequires: libffi-devel +BuildRequires: ncurses-devel +BuildRequires: python3-sphinx +BuildRequires: multilib-rpm-config +BuildRequires: chrpath +%if %{with gold} +BuildRequires: binutils-devel +%endif +BuildRequires: libstdc++-static +%ifarch %{valgrind_arches} +# Enable extra functionality when run the LLVM JIT under valgrind. +BuildRequires: valgrind-devel +%endif +# LLVM's LineEditor library will use libedit if it is available. +BuildRequires: libedit-devel +# We need python3-devel for pathfix.py. +BuildRequires: python3-devel + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description +LLVM is a compiler infrastructure designed for compile-time, link-time, +runtime, and idle-time optimization of programs from arbitrary programming +languages. The compiler infrastructure includes mirror sets of programming +tools as well as libraries with equivalent functionality. + +%package devel +Summary: Libraries and header files for LLVM +Requires: %{name}%{?_isa} = %{version}-%{release} +# The installed LLVM cmake files will add -ledit to the linker flags for any +# app that requires the libLLVMLineEditor, so we need to make sure +# libedit-devel is available. +Requires: libedit-devel +Requires(post): %{_sbindir}/alternatives +Requires(postun): %{_sbindir}/alternatives + +%description devel +This package contains library and header files needed to develop new native +programs that use the LLVM infrastructure. + +%package doc +Summary: Documentation for LLVM +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description doc +Documentation for the LLVM compiler infrastructure. + +%package libs +Summary: LLVM shared libraries + +%description libs +Shared libraries for the LLVM compiler infrastructure. + +%package static +Summary: LLVM static libraries + +%description static +Static libraries for the LLVM compiler infrastructure. + +%if !0%{?compat_build} + +%package test +Summary: LLVM regression tests +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python3-lit +# The regression tests need gold. +Requires: binutils +# This is for llvm-config +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +# Bugpoint tests require gcc +Requires: gcc +Requires: findutils + +%description test +LLVM regression tests. + +%package googletest +Summary: LLVM's modified googletest sources + +%description googletest +LLVM's modified googletest sources. + +%endif + +%prep +%autosetup -n llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src -p1 + +pathfix.py -i %{__python3} -pn \ + test/BugPoint/compile-custom.ll.py \ + tools/opt-viewer/*.py + +sed -i 's~@TOOLS_DIR@~%{llvm_bindir}~' %{SOURCE1} + +%build +mkdir -p _build +cd _build + +%ifarch s390 %{arm} %ix86 +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +%endif + +# force off shared libs as cmake macros turns it on. +%cmake .. -G Ninja \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ +%ifarch s390 %{arm} %ix86 + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ +%endif +%if !0%{?compat_build} +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif +%endif + \ + -DLLVM_TARGETS_TO_BUILD="%{llvm_targets}" \ + -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ + -DLLVM_ENABLE_ZLIB:BOOL=ON \ + -DLLVM_ENABLE_FFI:BOOL=ON \ + -DLLVM_ENABLE_RTTI:BOOL=ON \ +%if %{with gold} + -DLLVM_BINUTILS_INCDIR=%{_includedir} \ +%endif + \ + -DLLVM_BUILD_RUNTIME:BOOL=ON \ + \ + -DLLVM_INCLUDE_TOOLS:BOOL=ON \ + -DLLVM_BUILD_TOOLS:BOOL=ON \ + \ + -DLLVM_INCLUDE_TESTS:BOOL=ON \ + -DLLVM_BUILD_TESTS:BOOL=ON \ + \ + -DLLVM_INCLUDE_EXAMPLES:BOOL=ON \ + -DLLVM_BUILD_EXAMPLES:BOOL=OFF \ + \ + -DLLVM_INCLUDE_UTILS:BOOL=ON \ +%if 0%{?compat_build} + -DLLVM_INSTALL_UTILS:BOOL=OFF \ +%else + -DLLVM_INSTALL_UTILS:BOOL=ON \ + -DLLVM_UTILS_INSTALL_DIR:PATH=%{build_llvm_bindir} \ +%endif + \ + -DLLVM_INCLUDE_DOCS:BOOL=ON \ + -DLLVM_BUILD_DOCS:BOOL=ON \ + -DLLVM_ENABLE_SPHINX:BOOL=ON \ + -DLLVM_ENABLE_DOXYGEN:BOOL=OFF \ + \ + -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ + -DLLVM_DYLIB_EXPORT_ALL:BOOL=ON \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \ + -DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \ + \ + -DSPHINX_WARNINGS_AS_ERRORS=OFF \ + -DCMAKE_INSTALL_PREFIX=%{build_install_prefix} \ + -DLLVM_INSTALL_SPHINX_HTML_DIR=%{build_pkgdocdir}/html \ + -DSPHINX_EXECUTABLE=%{_bindir}/sphinx-build-3 + +ninja -v + +%install +cd _build +ninja -v install + +%if !0%{?compat_build} +# fix multi-lib +mv -v %{buildroot}%{_bindir}/llvm-config{,-%{__isa_bits}} + +%multilib_fix_c_header --file %{_includedir}/llvm/Config/llvm-config.h + +# Install binaries needed for lit tests +%global test_binaries lli-child-target llvm-isel-fuzzer llvm-opt-fuzzer yaml-bench +for f in %{test_binaries}; do +install -m 0755 ./bin/$f %{build_llvm_bindir} +done + +# Install libraries needed for unittests +%if 0%{?__isa_bits} == 64 +%global build_libdir lib64 +%else +%global build_libdir lib +%endif + +install %{build_libdir}/libLLVMTestingSupport.a %{buildroot}%{_libdir} + +%global install_srcdir %{buildroot}%{_datadir}/llvm/src +%global lit_cfg test/lit.site.cfg.py +%global lit_unit_cfg test/Unit/lit.site.cfg.py + +cd .. + +# Install gtest sources so clang can use them for gtest +install -d %{install_srcdir} +install -d %{install_srcdir}/utils/ +cp -R utils/unittest %{install_srcdir}/utils/ + +# Generate lit config files. +cat _build/test/lit.site.cfg.py >> %{lit_cfg} + +# Unit tests write output to this directory, so it can't be in /usr. +sed -i 's~(config.llvm_obj_root = )"[^"]+"~\1"."~' %{lit_cfg} + +cat _build/test/Unit/lit.site.cfg.py >> %{lit_unit_cfg} +sed -i -e s~`pwd`/_build~%{_prefix}~g -e s~`pwd`~.~g %{lit_cfg} %{lit_cfg} %{lit_unit_cfg} + +# obj_root needs to be set to the directory containing the unit test binaries. +sed -i 's~(config.llvm_obj_root = )"[^"]+"~\1"%{llvm_bindir}"~' %{lit_unit_cfg} + +install -d %{buildroot}%{_libexecdir}/tests/llvm +install -m 0755 %{SOURCE1} %{buildroot}%{_libexecdir}/tests/llvm + +# Install lit tests. We need to put these in a tarball otherwise rpm will complain +# about some of the test inputs having the wrong object file format. +install -d %{buildroot}%{_datadir}/llvm/ +tar -czf %{install_srcdir}/test.tar.gz test/ + +# Install the unit test binaries +cp -R _build/unittests %{build_llvm_bindir}/ +# FIXME: Can't figure out how to make the find command succeed. +find %{build_llvm_bindir} -ignore_readdir_race -iname 'cmake*' -exec rm -Rf '{}' ';' || true + +%else + +# Add version suffix to binaries +mkdir -p %{buildroot}/%{_bindir} +for f in `ls %{buildroot}/%{install_bindir}/*`; do + filename=`basename $f` + ln -s %{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix} + ln -s $filename%{exec_suffix} %{buildroot}/%{_bindir}/$filename%{short_exec_suffix} +done + +# Move header files +mkdir -p %{buildroot}/%{pkg_includedir} +ln -s ../../../%{install_includedir}/llvm %{buildroot}/%{pkg_includedir}/llvm +ln -s ../../../%{install_includedir}/llvm-c %{buildroot}/%{pkg_includedir}/llvm-c + +# Fix multi-lib +mv %{buildroot}%{_bindir}/llvm-config{%{exec_suffix},%{exec_suffix}-%{__isa_bits}} +ln -s llvm-config%{exec_suffix}-%{__isa_bits} %{buildroot}%{_bindir}/llvm-config%{short_exec_suffix}-%{__isa_bits} +%multilib_fix_c_header --file %{install_includedir}/llvm/Config/llvm-config.h + +# Create ld.so.conf.d entry +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf << EOF +%{pkg_libdir} +EOF + +# Add version suffix to man pages and move them to mandir. +mkdir -p %{buildroot}/%{_mandir}/man1 +for f in `ls %{build_install_prefix}/share/man/man1/*`; do + filename=`basename $f | cut -f 1 -d '.'` + mv $f %{buildroot}%{_mandir}/man1/$filename%{exec_suffix}.1 + ln -s $filename%{exec_suffix}.1 %{buildroot}%{_mandir}/man1/$filename%{short_exec_suffix}.1 +done + +# Remove opt-viewer, since this is just a compatibility package. +rm -Rf %{build_install_prefix}/share/opt-viewer + +%endif + +%check +cd _build +ninja check-all || : + +%ldconfig_scriptlets libs + +%if !0%{?compat_build} + +%post devel +%{_sbindir}/update-alternatives --install %{_bindir}/llvm-config llvm-config %{_bindir}/llvm-config-%{__isa_bits} %{__isa_bits} + +%postun devel +if [ $1 -eq 0 ]; then + %{_sbindir}/update-alternatives --remove llvm-config %{_bindir}/llvm-config-%{__isa_bits} +fi + +%endif + +%files +%{_bindir}/* +%{_mandir}/man1/*.1.* +%if !0%{?compat_build} +%{llvm_bindir} +%exclude %{_bindir}/llvm-config-%{__isa_bits} +%exclude %{_mandir}/man1/llvm-config.1.* +%{_datadir}/opt-viewer +%exclude %{llvm_bindir}/unittests +%else +%exclude %{pkg_bindir}/llvm-config +%{pkg_bindir} +%endif + +%files libs +%{pkg_libdir}/libLLVM-%{maj_ver}.so +%if !0%{?compat_build} +%{_libdir}/BugpointPasses.so +%{_libdir}/LLVMHello.so +%if %{with gold} +%{_libdir}/LLVMgold.so +%endif +%{_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so +%{_libdir}/libLTO.so* +%else +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf +%{pkg_libdir}/BugpointPasses.so +%{pkg_libdir}/LLVMHello.so +%if %{with gold} +%{_libdir}/%{name}/lib/LLVMgold.so +%endif +%{pkg_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so +%{pkg_libdir}/libLTO.so* +%exclude %{pkg_libdir}/libLTO.so +%endif + +%files devel +%if !0%{?compat_build} +%{_bindir}/llvm-config-%{__isa_bits} +%{_mandir}/man1/llvm-config.1.* +%{_includedir}/llvm +%{_includedir}/llvm-c +%{_libdir}/libLLVM.so +%{_libdir}/cmake/llvm +%exclude %{_libdir}/cmake/llvm/LLVMStaticExports.cmake +%else +%{_bindir}/llvm-config%{exec_suffix}-%{__isa_bits} +%{_bindir}/llvm-config%{short_exec_suffix}-%{__isa_bits} +%{pkg_bindir}/llvm-config +%{_mandir}/man1/llvm-config%{exec_suffix}.1.gz +%{_mandir}/man1/llvm-config%{short_exec_suffix}.1.gz +%{install_includedir}/llvm +%{install_includedir}/llvm-c +%{pkg_includedir}/llvm +%{pkg_includedir}/llvm-c +%{pkg_libdir}/libLTO.so +%{pkg_libdir}/libLLVM.so +%{pkg_libdir}/cmake/llvm +%endif + +%files doc +%doc %{_pkgdocdir}/html + +%files static +%if !0%{?compat_build} +%{_libdir}/*.a +%exclude %{_libdir}/libLLVMTestingSupport.a +%{_libdir}/cmake/llvm/LLVMStaticExports.cmake +%else +%{_libdir}/%{name}/lib/*.a +%endif + +%if !0%{?compat_build} + +%files test +%{_libexecdir}/tests/llvm/ +%{llvm_bindir}/unittests/ +%{_datadir}/llvm/src/test.tar.gz +%{llvm_bindir}/yaml-bench +%{llvm_bindir}/lli-child-target +%{llvm_bindir}/llvm-isel-fuzzer +%{llvm_bindir}/llvm-opt-fuzzer + +%files googletest +%{_datadir}/llvm/src/utils +%{_libdir}/libLLVMTestingSupport.a + +%endif + +%changelog +* Sat Feb 15 2020 Elliott Sales de Andrade quantum.analyst@gmail.com - 7.0.1-5 +- Install *-7 symlink to *-7.0 binaries, rhbz#1733421 + +* Wed Jan 29 2020 Fedora Release Engineering releng@fedoraproject.org - 7.0.1-4.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering releng@fedoraproject.org - 7.0.1-4.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Feb 26 2019 sguelton@redhat.com - 7.0.1-4 +- Install ld.so.config file with -lib package + +* Mon Feb 18 2019 sguelton@redhat.com - 7.0.1-3 +- Sync specfile with llvm7.0 package + +* Fri Feb 01 2019 Fedora Release Engineering releng@fedoraproject.org - 7.0.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Josh Stone jistone@redhat.com - 7.0.1-2 +- Fix discriminators in metadata, rhbz#1668033 + +* Mon Dec 17 2018 sguelton@redhat.com - 7.0.1-1 +- 7.0.1 release + +* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-5 +- Ensure rpmlint passes on specfile + +* Sat Nov 17 2018 Tom Stellard tstellar@redhat.com - 7.0.0-4 +- Install testing libraries for unittests + +* Sat Oct 27 2018 Tom Stellard tstellar@redhat.com - 7.0.0-3 +- Fix running unittests as not-root user + +* Thu Sep 27 2018 Tom Stellard tstellar@redhat.com - 7.0.0-2 +- Fixes for llvm-test package: +- Add some missing Requires +- Add --threads option to run-lit-tests script +- Set PATH so lit can find tools like count, not, etc. +- Don't hardcode tools directory to /usr/lib64/llvm +- Fix typo in yaml-bench define +- Only print information about failing tests + +* Fri Sep 21 2018 Tom Stellard tstellar@redhat.com - 7.0.0-1 +- 7.0.0 Release + +* Thu Sep 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.15.rc3 +- Disable rpath on install LLVM and related sub-projects + +* Wed Sep 12 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.14.rc3 +- Remove rpath from executables and libraries + +* Tue Sep 11 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.13.rc3 +- Re-enable arm and aarch64 targets on x86_64 + +* Mon Sep 10 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.12.rc3 +- 7.0.0-rc3 Release + +* Fri Sep 07 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.11.rc2 +- Use python3 shebang for opt-viewewr scripts + +* Thu Aug 30 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.10.rc2 +- Drop all uses of python2 from lit tests + +* Thu Aug 30 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.9.rc2 +- Build the gold plugin on all supported architectures + +* Wed Aug 29 2018 Kevin Fenzi kevin@scrye.com - 7.0.0-0.8.rc2 +- Re-enable debuginfo to avoid 25x size increase. + +* Tue Aug 28 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.7.rc2 +- 7.0.0-rc2 Release + +* Tue Aug 28 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.6.rc1 +- Guard valgrind usage with valgrind_arches macro + +* Thu Aug 23 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.5.rc1 +- Package lit tests and googletest sources. + +* Mon Aug 20 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.4.rc1 +- Re-enable AMDGPU target on ARM rhbz#1618922 + +* Mon Aug 13 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.3.rc1 +- Drop references to TestPlugin.so from cmake files + +* Fri Aug 10 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.2.rc1 +- Fixes for lit tests + +* Fri Aug 10 2018 Tom Stellard tstellar@redhat.com - 7.0.0-0.1.rc1 +- 7.0.0-rc1 Release +- Reduce number of enabled targets on all arches. +- Drop s390 detection patch, LLVM does not support s390 codegen. + +* Mon Aug 06 2018 Tom Stellard tstellar@redhat.com - 6.0.1-6 +- Backport some fixes needed by mesa and rust + +* Thu Jul 26 2018 Tom Stellard tstellar@redhat.com - 6.0.1-5 +- Move libLLVM-6.0.so to llvm6.0-libs. + +* Mon Jul 23 2018 Tom Stellard tstellar@redhat.com - 6.0.1-4 +- Rebuild because debuginfo stripping failed with the previous build + +* Fri Jul 13 2018 Tom Stellard tstellar@redhat.com - 6.0.1-3 +- Sync specfile with llvm6.0 package + +* Fri Jul 13 2018 Fedora Release Engineering releng@fedoraproject.org - 6.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jun 25 2018 Tom Stellard tstellar@redhat.com - 6.0.1-1 +- 6.0.1 Release + +* Thu Jun 07 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.4.rc2 +- 6.0.1-rc2 + +* Wed Jun 06 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.3.rc1 +- Re-enable all targets to avoid breaking the ABI. + +* Mon Jun 04 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.2.rc1 +- Reduce the number of enabled targets based on the architecture + +* Thu May 10 2018 Tom Stellard tstellar@redhat.com - 6.0.1-0.1.rc1 +- 6.0.1 rc1 + +* Tue Mar 27 2018 Tom Stellard tstellar@redhat.com - 6.0.0-11 +- Re-enable arm tests that used to hang + +* Thu Mar 22 2018 Tom Stellard tstellar@redhat.com - 6.0.0-10 +- Fix testcase in backported patch + +* Tue Mar 20 2018 Tom Stellard tstellar@redhat.com - 6.0.0-9 +- Prevent external projects from linking against both static and shared + libraries. rhbz#1558657 + +* Mon Mar 19 2018 Tom Stellard tstellar@redhat.com - 6.0.0-8 +- Backport r327651 from trunk rhbz#1554349 + +* Fri Mar 16 2018 Tom Stellard tstellar@redhat.com - 6.0.0-7 +- Filter out cxxflags and cflags from llvm-config that aren't supported by clang +- rhbz#1556980 + +* Wed Mar 14 2018 Tom Stellard tstellar@redhat.com - 6.0.0-6 +- Enable symbol versioning in libLLVM.so + +* Wed Mar 14 2018 Tom Stellard tstellar@redhat.com - 6.0.0-5 +- Stop statically linking libstdc++. This is no longer required by Steam + client, but the steam installer still needs a work-around which should + be handled in the steam package. +* Wed Mar 14 2018 Tom Stellard tstellar@redhat.com - 6.0.0-4 +- s/make check/ninja check/ + +* Fri Mar 09 2018 Tom Stellard tstellar@redhat.com - 6.0.0-3 +- Backport fix for compile time regression on rust rhbz#1552915 + +* Thu Mar 08 2018 Tom Stellard tstellar@redhat.com - 6.0.0-2 +- Build with Ninja: This reduces RPM build time on a 6-core x86_64 builder + from 82 min to 52 min. + +* Thu Mar 08 2018 Tom Stellard tstellar@redhat.com - 6.0.0-1 +- 6.0.0 Release + +* Thu Mar 08 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.5.rc2 +- Reduce debuginfo size on i686 to avoid OOM errors during linking + +* Fri Feb 09 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.4.rc2 +- 6.0.1 rc2 + +* Fri Feb 09 2018 Igor Gnatenko ignatenkobrain@fedoraproject.org - 6.0.0-0.3.rc1 +- Escape macros in %%changelog + +* Thu Feb 08 2018 Fedora Release Engineering releng@fedoraproject.org - 6.0.0-0.2.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Jan 19 2018 Tom Stellard tstellar@redhat.com - 6.0.0-0.1.rc1 +- 6.0.1 rc1 + +* Tue Dec 19 2017 Tom Stellard tstellar@redhat.com - 5.0.1-1 +- 5.0.1 Release + +* Mon Nov 20 2017 Tom Stellard tstellar@redhat.com - 5.0.0-5 +- Backport debuginfo fix for rust + +* Fri Nov 03 2017 Tom Stellard tstellar@redhat.com - 5.0.0-4 +- Reduce debuginfo size for ARM + +* Tue Oct 10 2017 Tom Stellard tstellar@redhat.com - 5.0.0-2 +- Reduce memory usage on ARM by disabling debuginfo and some non-ARM targets. + +* Mon Sep 25 2017 Tom Stellard tstellar@redhat.com - 5.0.0-1 +- 5.0.0 Release + +* Mon Sep 18 2017 Tom Stellard tstellar@redhat.com - 4.0.1-6 +- Add Requires: libedit-devel for llvm-devel + +* Fri Sep 08 2017 Tom Stellard tstellar@redhat.com - 4.0.1-5 +- Enable libedit backend for LineEditor API + +* Fri Aug 25 2017 Tom Stellard tstellar@redhat.com - 4.0.1-4 +- Enable extra functionality when run the LLVM JIT under valgrind. + +* Thu Aug 03 2017 Fedora Release Engineering releng@fedoraproject.org - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering releng@fedoraproject.org - 4.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 21 2017 Tom Stellard tstellar@redhat.com - 4.0.1-1 +- 4.0.1 Release + +* Thu Jun 15 2017 Tom Stellard tstellar@redhat.com - 4.0.0-6 +- Install llvm utils + +* Thu Jun 08 2017 Tom Stellard tstellar@redhat.com - 4.0.0-5 +- Fix docs-llvm-man target + +* Mon May 01 2017 Tom Stellard tstellar@redhat.com - 4.0.0-4 +- Make cmake files no longer depend on static libs (rhbz 1388200) + +* Tue Apr 18 2017 Josh Stone jistone@redhat.com - 4.0.0-3 +- Fix computeKnownBits for ARMISD::CMOV (rust-lang/llvm#67) + +* Mon Apr 03 2017 Tom Stellard tstellar@redhat.com - 4.0.0-2 +- Simplify spec with rpm macros. + +* Thu Mar 23 2017 Tom Stellard tstellar@redhat.com - 4.0.0-1 +- LLVM 4.0.0 Final Release + +* Wed Mar 22 2017 tstellar@redhat.com - 3.9.1-6 +- Fix %%postun sep for -devel package. + +* Mon Mar 13 2017 Tom Stellard tstellar@redhat.com - 3.9.1-5 +- Disable failing tests on ARM. + +* Sun Mar 12 2017 Peter Robinson pbrobinson@fedoraproject.org 3.9.1-4 +- Fix missing mask on relocation for aarch64 (rhbz 1429050) + +* Wed Mar 01 2017 Dave Airlie airlied@redhat.com - 3.9.1-3 +- revert upstream radeonsi breaking change. + +* Thu Feb 23 2017 Josh Stone jistone@redhat.com - 3.9.1-2 +- disable sphinx warnings-as-errors + +* Fri Feb 10 2017 Orion Poplawski orion@cora.nwra.com - 3.9.1-1 +- llvm 3.9.1 + +* Fri Feb 10 2017 Fedora Release Engineering releng@fedoraproject.org - 3.9.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Nov 29 2016 Josh Stone jistone@redhat.com - 3.9.0-7 +- Apply backports from rust-lang/llvm#55, #57 + +* Tue Nov 01 2016 Dave Airlie <airlied@gmail.com - 3.9.0-6 +- rebuild for new arches + +* Wed Oct 26 2016 Dave Airlie airlied@redhat.com - 3.9.0-5 +- apply the patch from -4 + +* Wed Oct 26 2016 Dave Airlie airlied@redhat.com - 3.9.0-4 +- add fix for lldb out-of-tree build + +* Mon Oct 17 2016 Josh Stone jistone@redhat.com - 3.9.0-3 +- Apply backports from rust-lang/llvm#47, #48, #53, #54 + +* Sat Oct 15 2016 Josh Stone jistone@redhat.com - 3.9.0-2 +- Apply an InstCombine backport via rust-lang/llvm#51 + +* Wed Sep 07 2016 Dave Airlie airlied@redhat.com - 3.9.0-1 +- llvm 3.9.0 +- upstream moved where cmake files are packaged. +- upstream dropped CppBackend + +* Wed Jul 13 2016 Adam Jackson ajax@redhat.com - 3.8.1-1 +- llvm 3.8.1 +- Add mips target +- Fix some shared library mispackaging + +* Tue Jun 07 2016 Jan Vcelak jvcelak@fedoraproject.org - 3.8.0-2 +- fix color support detection on terminal + +* Thu Mar 10 2016 Dave Airlie airlied@redhat.com 3.8.0-1 +- llvm 3.8.0 release + +* Wed Mar 09 2016 Dan Hork <dan[at][danny.cz> 3.8.0-0.3 +- install back memory consumption workaround for s390 + +* Thu Mar 03 2016 Dave Airlie airlied@redhat.com 3.8.0-0.2 +- llvm 3.8.0 rc3 release + +* Fri Feb 19 2016 Dave Airlie airlied@redhat.com 3.8.0-0.1 +- llvm 3.8.0 rc2 release + +* Tue Feb 16 2016 Dan Hork <dan[at][danny.cz> 3.7.1-7 +- recognize s390 as SystemZ when configuring build + +* Sat Feb 13 2016 Dave Airlie airlied@redhat.com 3.7.1-6 +- export C++ API for mesa. + +* Sat Feb 13 2016 Dave Airlie airlied@redhat.com 3.7.1-5 +- reintroduce llvm-static, clang needs it currently. + +* Fri Feb 12 2016 Dave Airlie airlied@redhat.com 3.7.1-4 +- jump back to single llvm library, the split libs aren't working very well. + +* Fri Feb 05 2016 Dave Airlie airlied@redhat.com 3.7.1-3 +- add missing obsoletes (#1303497) + +* Thu Feb 04 2016 Fedora Release Engineering releng@fedoraproject.org - 3.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 07 2016 Jan Vcelak jvcelak@fedoraproject.org 3.7.1-1 +- new upstream release +- enable gold linker + +* Wed Nov 04 2015 Jan Vcelak jvcelak@fedoraproject.org 3.7.0-100 +- fix Requires for subpackages on the main package + +* Tue Oct 06 2015 Jan Vcelak jvcelak@fedoraproject.org 3.7.0-100 +- initial version using cmake build system diff --git a/run-lit-tests b/run-lit-tests new file mode 100755 index 0000000..a0a5d5b --- /dev/null +++ b/run-lit-tests @@ -0,0 +1,39 @@ +#!/bin/bash + +usage() { + echo "usage: `basename $0` [OPTIONS]" + echo " --threads NUM The number of threads to use for running tests." +} + +threads_arg='' + +while [ $# -gt 0 ]; do + case $1 in + --threads) + shift + threads_arg="--threads $1" + ;; + * ) + echo "unknown option: $1" + echo "" + usage + exit 1 + ;; + esac + shift +done + +set -xe + +TOOLS_DIR=@TOOLS_DIR@ +cd $(mktemp -d) +ln -s /usr/include include +tar -xzf /usr/share/llvm/src/test.tar.gz +PATH=$PATH:$TOOLS_DIR lit -v -s $threads_arg test \ + -DFileCheck=$TOOLS_DIR/FileCheck \ + -Dcount=$TOOLS_DIR/count \ + -Dnot=$TOOLS_DIR/not \ + -Dlli-child-target=$TOOLS_DIR/lli-child-target \ + -Dllvm-isel-fuzzer=$TOOLS_DIR/llvm-isel-fuzzer \ + -Dllvm-opt-fuzzer=$TOOLS_DIR/llvm-opt-fuzzer \ + -Dyaml-bench=$TOOLS_DIR/yaml-bench diff --git a/rust-lang-llvm-pr67.patch b/rust-lang-llvm-pr67.patch new file mode 100644 index 0000000..3edbde9 --- /dev/null +++ b/rust-lang-llvm-pr67.patch @@ -0,0 +1,70 @@ +From a6fa10c14649c18d299cddf3e823b032460cb6f5 Mon Sep 17 00:00:00 2001 +From: Pirama Arumuga Nainar pirama@google.com +Date: Thu, 23 Mar 2017 16:47:47 +0000 +Subject: [PATCH] Fix computeKnownBits for ARMISD::CMOV + +Summary: +The true and false operands for the CMOV are operands 0 and 1. +ARMISelLowering.cpp::computeKnownBits was looking at operands 1 and 2 +instead. This can cause CMOV instructions to be incorrectly folded into +BFI if value set by the CMOV is another CMOV, whose known bits are +computed incorrectly. + +This patch fixes the issue and adds a test case. + +Reviewers: kristof.beyls, jmolloy + +Subscribers: llvm-commits, aemerson, srhines, rengolin + +Differential Revision: https://reviews.llvm.org/D31265 + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298624 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + lib/Target/ARM/ARMISelLowering.cpp | 4 ++-- + test/CodeGen/ARM/no-cmov2bfi.ll | 19 +++++++++++++++++++ + 2 files changed, 21 insertions(+), 2 deletions(-) + create mode 100644 test/CodeGen/ARM/no-cmov2bfi.ll + +diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp +index 4a227a3cd7b1..cf98e60c0657 100644 +--- a/lib/Target/ARM/ARMISelLowering.cpp ++++ b/lib/Target/ARM/ARMISelLowering.cpp +@@ -10806,8 +10806,8 @@ static void computeKnownBits(SelectionDAG &DAG, SDValue Op, APInt &KnownZero, + if (Op.getOpcode() == ARMISD::CMOV) { + APInt KZ2(KnownZero.getBitWidth(), 0); + APInt KO2(KnownOne.getBitWidth(), 0); +- computeKnownBits(DAG, Op.getOperand(1), KnownZero, KnownOne); +- computeKnownBits(DAG, Op.getOperand(2), KZ2, KO2); ++ computeKnownBits(DAG, Op.getOperand(0), KnownZero, KnownOne); ++ computeKnownBits(DAG, Op.getOperand(1), KZ2, KO2); + + KnownZero &= KZ2; + KnownOne &= KO2; +diff --git a/test/CodeGen/ARM/no-cmov2bfi.ll b/test/CodeGen/ARM/no-cmov2bfi.ll +new file mode 100644 +index 000000000000..c8b512048905 +--- /dev/null ++++ b/test/CodeGen/ARM/no-cmov2bfi.ll +@@ -0,0 +1,19 @@ ++; RUN: llc < %s -mtriple=thumbv7 | FileCheck --check-prefix=CHECK-NOBFI %s ++ ++declare zeroext i1 @dummy() ++ ++define i8 @test(i8 %a1, i1 %c) { ++; CHECK-NOBFI-NOT: bfi ++; CHECK-NOBFI: bl dummy ++; CHECK-NOBFI: cmp r0, #0 ++; CHECK-NOBFI: it ne ++; CHECK-NOBFI: orrne [[REG:r[0-9]+]], [[REG]], #8 ++; CHECK-NOBFI: mov r0, [[REG]] ++ ++ %1 = and i8 %a1, -9 ++ %2 = select i1 %c, i8 %1, i8 %a1 ++ %3 = tail call zeroext i1 @dummy() ++ %4 = or i8 %2, 8 ++ %ret = select i1 %3, i8 %4, i8 %2 ++ ret i8 %ret ++} +-- +2.9.3 + diff --git a/sources b/sources new file mode 100644 index 0000000..a227558 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (llvm-7.0.1.src.tar.xz) = ac43a3cb71a53deb55e3693653847cf20bf6f5d9056f224e6956c96d63bc59ebee9404f088eec9cabe65337b4607a905ef931354b373cf64e0004c6905a6b5df
arch-excludes@lists.fedoraproject.org