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=b5061d4b00....
Change:
+%ifarch s390 %{arm} %ix86
Thanks.
Full change:
============
commit b5061d4b001344f68a24f7feacee3f2b7d8e7e73
Author: Tomas Hrcka <thrcka(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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(a)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://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz
+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(a)gmail.com> - 7.0.1-5
+- Install *-7 symlink to *-7.0 binaries, rhbz#1733421
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng(a)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(a)fedoraproject.org> -
7.0.1-4.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Tue Feb 26 2019 sguelton(a)redhat.com - 7.0.1-4
+- Install ld.so.config file with -lib package
+
+* Mon Feb 18 2019 sguelton(a)redhat.com - 7.0.1-3
+- Sync specfile with llvm7.0 package
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
7.0.1-2.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Jan 21 2019 Josh Stone <jistone(a)redhat.com> - 7.0.1-2
+- Fix discriminators in metadata, rhbz#1668033
+
+* Mon Dec 17 2018 sguelton(a)redhat.com - 7.0.1-1
+- 7.0.1 release
+
+* Tue Dec 04 2018 sguelton(a)redhat.com - 7.0.0-5
+- Ensure rpmlint passes on specfile
+
+* Sat Nov 17 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-4
+- Install testing libraries for unittests
+
+* Sat Oct 27 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-3
+- Fix running unittests as not-root user
+
+* Thu Sep 27 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 7.0.0-1
+- 7.0.0 Release
+
+* Thu Sep 13 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.15.rc3
+- Disable rpath on install LLVM and related sub-projects
+
+* Wed Sep 12 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.14.rc3
+- Remove rpath from executables and libraries
+
+* Tue Sep 11 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.13.rc3
+- Re-enable arm and aarch64 targets on x86_64
+
+* Mon Sep 10 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.12.rc3
+- 7.0.0-rc3 Release
+
+* Fri Sep 07 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.11.rc2
+- Use python3 shebang for opt-viewewr scripts
+
+* Thu Aug 30 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.10.rc2
+- Drop all uses of python2 from lit tests
+
+* Thu Aug 30 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.9.rc2
+- Build the gold plugin on all supported architectures
+
+* Wed Aug 29 2018 Kevin Fenzi <kevin(a)scrye.com> - 7.0.0-0.8.rc2
+- Re-enable debuginfo to avoid 25x size increase.
+
+* Tue Aug 28 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.7.rc2
+- 7.0.0-rc2 Release
+
+* Tue Aug 28 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.6.rc1
+- Guard valgrind usage with valgrind_arches macro
+
+* Thu Aug 23 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.5.rc1
+- Package lit tests and googletest sources.
+
+* Mon Aug 20 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.4.rc1
+- Re-enable AMDGPU target on ARM rhbz#1618922
+
+* Mon Aug 13 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.3.rc1
+- Drop references to TestPlugin.so from cmake files
+
+* Fri Aug 10 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.2.rc1
+- Fixes for lit tests
+
+* Fri Aug 10 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.1-6
+- Backport some fixes needed by mesa and rust
+
+* Thu Jul 26 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-5
+- Move libLLVM-6.0.so to llvm6.0-libs.
+
+* Mon Jul 23 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-4
+- Rebuild because debuginfo stripping failed with the previous build
+
+* Fri Jul 13 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-3
+- Sync specfile with llvm6.0 package
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Mon Jun 25 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-1
+- 6.0.1 Release
+
+* Thu Jun 07 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-0.4.rc2
+- 6.0.1-rc2
+
+* Wed Jun 06 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-0.3.rc1
+- Re-enable all targets to avoid breaking the ABI.
+
+* Mon Jun 04 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.1-0.1.rc1
+- 6.0.1 rc1
+
+* Tue Mar 27 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-11
+- Re-enable arm tests that used to hang
+
+* Thu Mar 22 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-10
+- Fix testcase in backported patch
+
+* Tue Mar 20 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-8
+- Backport r327651 from trunk rhbz#1554349
+
+* Fri Mar 16 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-6
+- Enable symbol versioning in libLLVM.so
+
+* Wed Mar 14 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-4
+- s/make check/ninja check/
+
+* Fri Mar 09 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-3
+- Backport fix for compile time regression on rust rhbz#1552915
+
+* Thu Mar 08 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-1
+- 6.0.0 Release
+
+* Thu Mar 08 2018 Tom Stellard <tstellar(a)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(a)redhat.com> - 6.0.0-0.4.rc2
+- 6.0.1 rc2
+
+* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 6.0.0-0.3.rc1
+- Escape macros in %%changelog
+
+* Thu Feb 08 2018 Fedora Release Engineering <releng(a)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(a)redhat.com> - 6.0.0-0.1.rc1
+- 6.0.1 rc1
+
+* Tue Dec 19 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.1-1
+- 5.0.1 Release
+
+* Mon Nov 20 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.0-5
+- Backport debuginfo fix for rust
+
+* Fri Nov 03 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.0-4
+- Reduce debuginfo size for ARM
+
+* Tue Oct 10 2017 Tom Stellard <tstellar(a)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(a)redhat.com> - 5.0.0-1
+- 5.0.0 Release
+
+* Mon Sep 18 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-6
+- Add Requires: libedit-devel for llvm-devel
+
+* Fri Sep 08 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-5
+- Enable libedit backend for LineEditor API
+
+* Fri Aug 25 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-4
+- Enable extra functionality when run the LLVM JIT under valgrind.
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng(a)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(a)fedoraproject.org> - 4.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Wed Jun 21 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-1
+- 4.0.1 Release
+
+* Thu Jun 15 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-6
+- Install llvm utils
+
+* Thu Jun 08 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-5
+- Fix docs-llvm-man target
+
+* Mon May 01 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-4
+- Make cmake files no longer depend on static libs (rhbz 1388200)
+
+* Tue Apr 18 2017 Josh Stone <jistone(a)redhat.com> - 4.0.0-3
+- Fix computeKnownBits for ARMISD::CMOV (rust-lang/llvm#67)
+
+* Mon Apr 03 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-2
+- Simplify spec with rpm macros.
+
+* Thu Mar 23 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-1
+- LLVM 4.0.0 Final Release
+
+* Wed Mar 22 2017 tstellar(a)redhat.com - 3.9.1-6
+- Fix %%postun sep for -devel package.
+
+* Mon Mar 13 2017 Tom Stellard <tstellar(a)redhat.com> - 3.9.1-5
+- Disable failing tests on ARM.
+
+* Sun Mar 12 2017 Peter Robinson <pbrobinson(a)fedoraproject.org> 3.9.1-4
+- Fix missing mask on relocation for aarch64 (rhbz 1429050)
+
+* Wed Mar 01 2017 Dave Airlie <airlied(a)redhat.com> - 3.9.1-3
+- revert upstream radeonsi breaking change.
+
+* Thu Feb 23 2017 Josh Stone <jistone(a)redhat.com> - 3.9.1-2
+- disable sphinx warnings-as-errors
+
+* Fri Feb 10 2017 Orion Poplawski <orion(a)cora.nwra.com> - 3.9.1-1
+- llvm 3.9.1
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.9.0-8
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Tue Nov 29 2016 Josh Stone <jistone(a)redhat.com> - 3.9.0-7
+- Apply backports from rust-lang/llvm#55, #57
+
+* Tue Nov 01 2016 Dave Airlie <airlied(a)gmail.com - 3.9.0-6
+- rebuild for new arches
+
+* Wed Oct 26 2016 Dave Airlie <airlied(a)redhat.com> - 3.9.0-5
+- apply the patch from -4
+
+* Wed Oct 26 2016 Dave Airlie <airlied(a)redhat.com> - 3.9.0-4
+- add fix for lldb out-of-tree build
+
+* Mon Oct 17 2016 Josh Stone <jistone(a)redhat.com> - 3.9.0-3
+- Apply backports from rust-lang/llvm#47, #48, #53, #54
+
+* Sat Oct 15 2016 Josh Stone <jistone(a)redhat.com> - 3.9.0-2
+- Apply an InstCombine backport via rust-lang/llvm#51
+
+* Wed Sep 07 2016 Dave Airlie <airlied(a)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(a)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(a)fedoraproject.org> - 3.8.0-2
+- fix color support detection on terminal
+
+* Thu Mar 10 2016 Dave Airlie <airlied(a)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(a)redhat.com> 3.8.0-0.2
+- llvm 3.8.0 rc3 release
+
+* Fri Feb 19 2016 Dave Airlie <airlied(a)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(a)redhat.com> 3.7.1-6
+- export C++ API for mesa.
+
+* Sat Feb 13 2016 Dave Airlie <airlied(a)redhat.com> 3.7.1-5
+- reintroduce llvm-static, clang needs it currently.
+
+* Fri Feb 12 2016 Dave Airlie <airlied(a)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(a)redhat.com> 3.7.1-3
+- add missing obsoletes (#1303497)
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.7.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Jan 07 2016 Jan Vcelak <jvcelak(a)fedoraproject.org> 3.7.1-1
+- new upstream release
+- enable gold linker
+
+* Wed Nov 04 2015 Jan Vcelak <jvcelak(a)fedoraproject.org> 3.7.0-100
+- fix Requires for subpackages on the main package
+
+* Tue Oct 06 2015 Jan Vcelak <jvcelak(a)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(a)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