head 1.3; access; symbols pkgsrc-2020Q2:1.2.0.2 pkgsrc-2020Q2-base:1.2 pkgsrc-2020Q1:1.1.0.16 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.18 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.14 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.12 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.10 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.8 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.6 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.4 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.2 pkgsrc-2018Q1-base:1.1; locks; strict; comment @# @; 1.3 date 2020.09.20.09.37.17; author he; state dead; branches; next 1.2; commitid ILkQfMcBNjnJBLoC; 1.2 date 2020.04.18.07.50.18; author adam; state Exp; branches; next 1.1; commitid w9ShGcVpaOo67Q4C; 1.1 date 2018.03.31.15.13.28; author he; state Exp; branches; next ; commitid sg0N4L7M6zijECwA; desc @@ 1.3 log @Re-instate the cmake configure check for whether -latomic is required to gain access to 8-byte atomics. Add a hacks.mk file to pull in devel/libatomic on powerpc ports. The reason is that even though llvm itself doesn't need or use 8-byte atomics, other programs refer to this installed CheckAtomic cmake file and may indeed both need and use 8-byte atomics. Verified that llvm still builds on NetBSD/macppc 9.0. Bump PKGREVISION to 1. @ text @$NetBSD: patch-cmake_modules_CheckAtomic.cmake,v 1.2 2020/04/18 07:50:18 adam Exp $ Omit check for native 8-byte atomics, platform may not have them, and they are actually not required here. Makes powerpc build llvm. --- cmake/modules/CheckAtomic.cmake.orig 2020-03-19 09:19:04.000000000 +0000 +++ cmake/modules/CheckAtomic.cmake @@@@ -62,19 +62,6 @@@@ else() check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB) endif() -# If not, check if the library exists, and atomics work with it. -if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) - check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64) - if(HAVE_CXX_LIBATOMICS64) - list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") - check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB) - if (NOT HAVE_CXX_ATOMICS64_WITH_LIB) - message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!") - endif() - else() - message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.") - endif() -endif() ## TODO: This define is only used for the legacy atomic operations in ## llvm's Atomic.h, which should be replaced. Other code simply @ 1.2 log @llvm: updated to 10.0.0 Non-comprehensive list of changes in this release The ISD::FP_ROUND_INREG opcode and related code was removed from SelectionDAG. Enabled MemorySSA as a loop dependency. Since r370957 (D58311 [MemorySSA & LoopPassManager] Enable MemorySSA as loop dependency. Update tests.), the MemorySSA analysis is being preserved and used by a series of loop passes. The most significant use is in LICM, where the instruction hoisting and sinking relies on aliasing information provided by MemorySSA vs previously creating an AliasSetTracker. The LICM step of promoting variables to scalars still relies on the creation of an AliasSetTracker, but its use is reduced to only be enabled for loops with a small number of overall memory instructions. This choice was motivated by experimental results showing compile and run time benefits or replacing the AliasSetTracker usage with MemorySSA without any performance penalties. The fact that MemorySSA is now preserved by and available in a series of loop passes, also opens up opportunities for its use in those respective passes. The BasicBlockPass, BBPassManager and all their uses were deleted in this revision. The LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB CMake options are no longer available on Windows. As per LLVM Language Reference Manual, getelementptr inbounds can not change the null status of a pointer, meaning it can not produce non-null pointer given null base pointer, and likewise given non-null base pointer it can not produce null pointer; if it does, the result is a poison value. Since r369789 (D66608 [InstCombine] icmp eq/ne (gep inbounds P, Idx..), null -> icmp eq/ne P, null) LLVM uses that for transformations. If the original source violates these requirements this may result in code being miscompiled. If you are using Clang front-end, Undefined Behaviour Sanitizer -fsanitize=pointer-overflow check will now catch such cases. Windows Control Flow Guard: the -cfguard option now emits CFG checks on indirect function calls. The previous behavior is still available with the -cfguard-nochecks option. Note that this feature should always be used with optimizations enabled. Callbacks have been added to CommandLine Options. These can be used to validate or selectively enable other options. The function attributes no-frame-pointer-elim and no-frame-pointer-elim-non-leaf have been replaced by frame-pointer, which has 3 values: none, non-leaf, and all. The values mean what functions should retain frame pointers. The inter-procedural analysis and optimization capabilities in the Attributor framework and pass have been substantially advanced (initial commit D59918, LLVM-Dev talk). In this release, 19 different attributes are inferred, including 12 LLVM IR attributes and 7 “abstract” attributes, such as liveness. The Attributor is still under heavy development and disabled by default; to enable an early run pass -mllvm -attributor-disable=false to an invocation of clang. New matrix math intrinsics have been added to LLVM (see LLVM Language Reference Manual), together with the LowerMatrixIntrinsics pass. The pass lowers matrix intrinsics to a set of efficient vector instructions. The lowering pass is off by default and can be enabled by passing -mllvm -enable-matrix to an invocation of clang. @ text @d1 1 a1 1 $NetBSD: patch-cmake_modules_CheckAtomic.cmake,v 1.1 2018/03/31 15:13:28 he Exp $ @ 1.1 log @Omit check for native 8-byte atomics, platform may not have them, and they are actually not required here. Makes powerpc build llvm. OK'ed by joerg@@. Bump PKGREVISION. @ text @d1 1 a1 1 $NetBSD$ d6 1 a6 1 --- cmake/modules/CheckAtomic.cmake.orig 2016-06-23 06:39:35.000000000 +0000 d8 2 a9 1 @@@@ -62,18 +62,18 @@@@ else() d12 1 a12 1 # If not, check if the library exists, and atomics work with it. d19 1 a19 1 - message(FATAL_ERROR "Host compiler must support std::atomic!") d22 1 a22 1 - message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.") a24 12 +#if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) +# check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64) +# if(HAVE_CXX_LIBATOMICS64) +# list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") +# check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB) +# if (NOT HAVE_CXX_ATOMICS64_WITH_LIB) +# message(FATAL_ERROR "Host compiler must support std::atomic!") +# endif() +# else() +# message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.") +# endif() +#endif() @