diff --git a/.gitignore b/.gitignore index 94300c7..539ac41 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ /llvm-7.0.0rc3.src.tar.xz /llvm-7.0.0.src.tar.xz /llvm-7.0.1.src.tar.xz +/llvm-8.0.0rc1.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 deleted file mode 100644 index d2f7b14..0000000 --- a/0001-CMake-Add-LLVM_UTILS_INSTALL_DIR-option.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 974c288631ef8d05bf3a3f91b32bf38eae16e5c8 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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 deleted file mode 100644 index ddea299..0000000 --- a/0001-CMake-Don-t-prefer-python2.7.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 1e0f1c5481a96d760f7840d4dde103353a0131f8 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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 deleted file mode 100644 index abff62d..0000000 --- a/0001-CMake-Fix-docs-llvm-man-target-when-clang-llvm-is-in.patch +++ /dev/null @@ -1,42 +0,0 @@ -From af79e4116c4476153869e1fd4aa30c87d4c7c21e Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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-Ensure-that-variant-part-discriminator-is-read-by-Me.patch b/0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch deleted file mode 100644 index d6380eb..0000000 --- a/0001-Ensure-that-variant-part-discriminator-is-read-by-Me.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 2ad5ac11b17dac347d29191872b2b3d601bbcd1f Mon Sep 17 00:00:00 2001 -From: Jonas Devlieghere -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(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 deleted file mode 100644 index 31b819b..0000000 --- a/0001-Filter-out-cxxflags-not-supported-by-clang.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 5f7fd92155db77c7608e3a07e5dcfad1ec7bd4e4 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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-CMake-Split-static-library-exports-into-their-own-ex.patch b/0001-PATCH-Filter-out-cxxflags-not-supported-by-clang.patch similarity index 53% rename from 0001-CMake-Split-static-library-exports-into-their-own-ex.patch rename to 0001-PATCH-Filter-out-cxxflags-not-supported-by-clang.patch index 903821e..e706588 100644 --- a/0001-CMake-Split-static-library-exports-into-their-own-ex.patch +++ b/0001-PATCH-Filter-out-cxxflags-not-supported-by-clang.patch @@ -1,40 +1,20 @@ -From f9e66a883e1fb748e6ac826fde188efaae249361 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Sat, 29 Apr 2017 02:03:23 +0000 -Subject: [PATCH] CMake: Split static library exports into their own export - file +From 59c38a2216f4467b53970bb6b010bc4fe0b8d1d3 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Fri, 25 Jan 2019 17:32:54 +0000 +Subject: [PATCH 1/2] [PATCH] Filter out cxxflags not supported by clang -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(-) + tools/llvm-config/CMakeLists.txt | 4 ++++ + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake -index fd5627e..78f106f 100644 +index 4dbc0ddaf4f..c408377cd2e 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake -@@ -635,7 +635,11 @@ macro(add_llvm_library name) +@@ -664,7 +664,11 @@ macro(add_llvm_library name) if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR NOT LLVM_DISTRIBUTION_COMPONENTS) @@ -48,18 +28,18 @@ index fd5627e..78f106f 100644 endif() diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt -index 6074e83..e9fcb11 100644 +index f5cc0006fa0..6605dc729c2 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") +@@ -97,6 +97,7 @@ set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}") + set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_TOOLS_INSTALL_DIR}") 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) +@@ -113,6 +114,8 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) if(llvm_has_exports) install(EXPORT LLVMExports DESTINATION ${LLVM_INSTALL_PACKAGE_DIR} COMPONENT cmake-exports) @@ -69,10 +49,10 @@ index 6074e83..e9fcb11 100644 install(FILES diff --git a/cmake/modules/LLVMConfig.cmake.in b/cmake/modules/LLVMConfig.cmake.in -index 0772016..f471625 100644 +index 7ca06381d90..44d042c9b11 100644 --- a/cmake/modules/LLVMConfig.cmake.in +++ b/cmake/modules/LLVMConfig.cmake.in -@@ -78,6 +78,8 @@ if(NOT TARGET LLVMSupport) +@@ -84,6 +84,8 @@ if(NOT TARGET LLVMSupport) set(LLVM_EXPORTED_TARGETS "@LLVM_CONFIG_EXPORTS@") include("@LLVM_CONFIG_EXPORTS_FILE@") @llvm_config_include_buildtree_only_exports@ @@ -81,6 +61,22 @@ index 0772016..f471625 100644 endif() # By creating intrinsics_gen here, subprojects that depend on LLVM's +diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt +index a7db17386fb..8a796d03b5a 100644 +--- a/tools/llvm-config/CMakeLists.txt ++++ b/tools/llvm-config/CMakeLists.txt +@@ -42,7 +42,11 @@ set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) + set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR}) + set(LLVM_CPPFLAGS "${LLVM_DEFINITIONS}") + set(LLVM_CFLAGS "${LLVM_C_STD_FLAG} ${LLVM_DEFINITIONS}") ++STRING(REGEX REPLACE "-mcet" "" LLVM_CFLAGS ${LLVM_CFLAGS}) ++STRING(REGEX REPLACE "-fcf-protection" "" LLVM_CFLAGS ${LLVM_CFLAGS}) + set(LLVM_CXXFLAGS "${LLVM_CXX_STD_FLAG} ${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 +2.19.2 diff --git a/0001-PATCH-llvm-config.patch b/0001-PATCH-llvm-config.patch new file mode 100644 index 0000000..54dfbe6 --- /dev/null +++ b/0001-PATCH-llvm-config.patch @@ -0,0 +1,44 @@ +diff -ru llvm-8.0.0rc1.src.orig/cmake/modules/CMakeLists.txt llvm-8.0.0rc1.src/cmake/modules/CMakeLists.txt +--- llvm-8.0.0rc1.src.orig/cmake/modules/CMakeLists.txt 2019-02-12 11:32:02.370238762 +0000 ++++ llvm-8.0.0rc1.src/cmake/modules/CMakeLists.txt 2019-02-13 08:40:39.263265812 +0000 +@@ -94,7 +94,7 @@ + set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}") + set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}") + set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}") +-set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin") ++set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_TOOLS_INSTALL_DIR}") + set(LLVM_CONFIG_EXPORTS_FILE "\${LLVM_CMAKE_DIR}/LLVMExports.cmake") + set(LLVM_CONFIG_EXPORTS "${LLVM_EXPORTS}") + configure_file( +diff -ru llvm-8.0.0rc1.src.orig/tools/llvm-config/llvm-config.cpp llvm-8.0.0rc1.src/tools/llvm-config/llvm-config.cpp +--- llvm-8.0.0rc1.src.orig/tools/llvm-config/llvm-config.cpp 2019-02-12 11:32:00.617221180 +0000 ++++ llvm-8.0.0rc1.src/tools/llvm-config/llvm-config.cpp 2019-02-12 11:34:27.817599362 +0000 +@@ -269,7 +269,6 @@ + // tree. + bool IsInDevelopmentTree; + enum { CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout; +- llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0])); + std::string CurrentExecPrefix; + std::string ActiveObjRoot; + +@@ -280,11 +279,15 @@ + build_mode = CMAKE_CFG_INTDIR; + #endif + +- // Create an absolute path, and pop up one directory (we expect to be inside a +- // bin dir). +- sys::fs::make_absolute(CurrentPath); +- CurrentExecPrefix = +- sys::path::parent_path(sys::path::parent_path(CurrentPath)).str(); ++ // Create an absolute path, and pop up as much directory as in LLVM_TOOLS_INSTALL_DIR ++ { ++ llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0])); ++ sys::fs::make_absolute(CurrentPath); ++ for (auto iter = sys::path::begin(LLVM_TOOLS_INSTALL_DIR), end = sys::path::end(LLVM_TOOLS_INSTALL_DIR); iter != end; ++iter) { ++ CurrentPath = sys::path::parent_path(CurrentPath).str(); ++ } ++ CurrentExecPrefix = sys::path::parent_path(CurrentPath).str(); ++ } + + // Check to see if we are inside a development tree by comparing to possible + // locations (prefix style or CMake style). diff --git a/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch b/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch deleted file mode 100644 index 2fae157..0000000 --- a/0001-PowerPC-Don-t-use-xscvdpspn-on-the-P7.patch +++ /dev/null @@ -1,79 +0,0 @@ -From a481ab548d038c1dfd52ee211b997e2dd33ff5ae Mon Sep 17 00:00:00 2001 -From: Hal Finkel -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 deleted file mode 100644 index 828e703..0000000 --- a/0001-Revert-Revert-CMake-Move-sphinx-detection-into-AddSp.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 9c50cf0c6d8f0b11cd76a28cc4ef9bca6ef732e0 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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 deleted file mode 100644 index f614036..0000000 --- a/0001-unittests-Don-t-install-TestPlugin.so.patch +++ /dev/null @@ -1,62 +0,0 @@ -From cf1fb43186fd4d97ee2de0b222d44ecc500f82c7 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -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/0001-Don-t-set-rpath-when-installing.patch b/0002-PATCH-Don-t-set-rpath-when-installing.patch similarity index 52% rename from 0001-Don-t-set-rpath-when-installing.patch rename to 0002-PATCH-Don-t-set-rpath-when-installing.patch index d92a387..96ce53d 100644 --- a/0001-Don-t-set-rpath-when-installing.patch +++ b/0002-PATCH-Don-t-set-rpath-when-installing.patch @@ -1,17 +1,17 @@ -From e67ace2ecb42c24e124f1738dc67b22055a22500 Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Thu, 13 Sep 2018 10:10:08 -0700 -Subject: [PATCH] Don't set rpath when installing +From 05e48edb91ddcf0d85ba2de2672b252e3ec3cbc3 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Fri, 25 Jan 2019 17:39:04 +0000 +Subject: [PATCH 2/2] [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 +index c408377cd2e..56ab12c2365 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake -@@ -1621,6 +1621,7 @@ function(llvm_codesign name) +@@ -1662,6 +1662,7 @@ function(llvm_codesign name) endfunction() function(llvm_setup_rpath name) @@ -20,5 +20,5 @@ index ce2057f..de309b5 100644 return() endif() -- -1.8.3.1 +2.19.2 diff --git a/0002-test-Fix-Assembler-debug-info.ll.patch b/0002-test-Fix-Assembler-debug-info.ll.patch deleted file mode 100644 index d022d97..0000000 --- a/0002-test-Fix-Assembler-debug-info.ll.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9bfebd6e47cb8513dcd7f7203f29489bdec7bfe4 Mon Sep 17 00:00:00 2001 -From: Jonas Devlieghere -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/llvm.spec b/llvm.spec index 3f31501..28e2f32 100644 --- a/llvm.spec +++ b/llvm.spec @@ -9,11 +9,12 @@ %global compat_build 0 %global llvm_bindir %{_libdir}/%{name} +%global llvm_bin %{_lib}/%{name} %global build_llvm_bindir %{buildroot}%{llvm_bindir} -%global maj_ver 7 +%global maj_ver 8 %global min_ver 0 -%global patch_ver 1 -#%%global rc_ver 3 +%global patch_ver 0 +%global rc_ver 1 %ifarch s390x %global llvm_targets SystemZ;BPF @@ -55,7 +56,7 @@ Name: %{pkg_name} Version: %{maj_ver}.%{min_ver}.%{patch_ver} -Release: 2%{?rc_ver:.rc%{rc_ver}}%{?dist}.1 +Release: 1%{?rc_ver:.rc%{rc_ver}}%{?dist} Summary: The Low Level Virtual Machine License: NCSA @@ -63,18 +64,9 @@ 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 +Patch5: 0001-PATCH-llvm-config.patch +Patch7: 0001-PATCH-Filter-out-cxxflags-not-supported-by-clang.patch +Patch15: 0002-PATCH-Don-t-set-rpath-when-installing.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -84,6 +76,7 @@ BuildRequires: zlib-devel BuildRequires: libffi-devel BuildRequires: ncurses-devel BuildRequires: python3-sphinx +BuildRequires: python3-recommonmark BuildRequires: multilib-rpm-config BuildRequires: chrpath %if %{with gold} @@ -226,6 +219,7 @@ cd _build %else -DLLVM_INSTALL_UTILS:BOOL=ON \ -DLLVM_UTILS_INSTALL_DIR:PATH=%{build_llvm_bindir} \ + -DLLVM_TOOLS_INSTALL_DIR:PATH=%{llvm_bin}\ %endif \ -DLLVM_INCLUDE_DOCS:BOOL=ON \ @@ -247,26 +241,29 @@ cd _build ninja -v %install -cd _build -ninja -v install +ninja -C _build -v install + %if !0%{?compat_build} -# fix multi-lib -mv -v %{buildroot}%{_bindir}/llvm-config{,-%{__isa_bits}} +mkdir -p %{buildroot}/%{_bindir} +ln -s %{llvm_bindir}/llvm-config %{buildroot}/%{_bindir}/llvm-config-%{__isa_bits} + +# Install binaries needed for lit tests +%global test_binaries FileCheck count lli-child-target llvm-PerfectShuffle llvm-isel-fuzzer llvm-opt-fuzzer not yaml-bench + +for f in %{test_binaries} +do + install -m 0755 ./_build/bin/$f %{build_llvm_bindir} +done + %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 +%global build_libdir _build/lib64 %else -%global build_libdir lib +%global build_libdir _build/lib %endif install %{build_libdir}/libLLVMTestingSupport.a %{buildroot}%{_libdir} @@ -275,8 +272,6 @@ install %{build_libdir}/libLLVMTestingSupport.a %{buildroot}%{_libdir} %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/ @@ -311,9 +306,10 @@ find %{build_llvm_bindir} -ignore_readdir_race -iname 'cmake*' -exec rm -Rf '{}' # Add version suffix to binaries mkdir -p %{buildroot}/%{_bindir} -for f in `ls %{buildroot}/%{install_bindir}/*`; do +for f in %{build_llvm_bindir}/* +do filename=`basename $f` - ln -s %{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix} + ln -s %{_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix} done # Move header files @@ -322,7 +318,6 @@ 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}} %multilib_fix_c_header --file %{install_includedir}/llvm/Config/llvm-config.h # Create ld.so.conf.d entry @@ -343,6 +338,7 @@ rm -Rf %{build_install_prefix}/share/opt-viewer %endif + %check cd _build ninja check-all || : @@ -352,11 +348,11 @@ ninja check-all || : %if !0%{?compat_build} %post devel -%{_sbindir}/update-alternatives --install %{_bindir}/llvm-config llvm-config %{_bindir}/llvm-config-%{__isa_bits} %{__isa_bits} +%{_sbindir}/update-alternatives --install %{_bindir}/llvm-config llvm-config %{llvm_bindir}/llvm-config %{__isa_bits} %postun devel if [ $1 -eq 0 ]; then - %{_sbindir}/update-alternatives --remove llvm-config %{_bindir}/llvm-config-%{__isa_bits} + %{_sbindir}/update-alternatives --remove llvm-config %{llvm_bindir}/llvm-config fi %endif @@ -379,16 +375,12 @@ fi %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 -%{pkg_libdir}/BugpointPasses.so -%{pkg_libdir}/LLVMHello.so %if %{with gold} %{_libdir}/%{name}/lib/LLVMgold.so %endif @@ -396,6 +388,7 @@ fi %{pkg_libdir}/libLTO.so* %exclude %{pkg_libdir}/libLTO.so %endif +%{pkg_libdir}/libOptRemarks.so* %files devel %if !0%{?compat_build} @@ -449,6 +442,10 @@ fi %endif %changelog + +* Sat Feb 9 2019 sguelton@redhat.com - 8.0.0-1.rc1 +- 8.0.0 Release candidate 1 + * Fri Feb 01 2019 Fedora Release Engineering - 7.0.1-2.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/rust-lang-llvm-pr67.patch b/rust-lang-llvm-pr67.patch deleted file mode 100644 index 3edbde9..0000000 --- a/rust-lang-llvm-pr67.patch +++ /dev/null @@ -1,70 +0,0 @@ -From a6fa10c14649c18d299cddf3e823b032460cb6f5 Mon Sep 17 00:00:00 2001 -From: Pirama Arumuga Nainar -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 index a227558..e1ec7af 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (llvm-7.0.1.src.tar.xz) = ac43a3cb71a53deb55e3693653847cf20bf6f5d9056f224e6956c96d63bc59ebee9404f088eec9cabe65337b4607a905ef931354b373cf64e0004c6905a6b5df +SHA512 (llvm-8.0.0rc1.src.tar.xz) = b4d0c77a58fbe3bacc4cc4bc8efcaa1b46ed04031b983f764fba716c87e1e30706fd077cb5b2899632af0493d23ee8653f2ee3c3177492974c7c2bd2039f1828