forked from pool/llvm14
a5973cd8b1
- Update to version 14.0.0. * For details, see the release notes: - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod-find: Tool to fetch debuginfod artifacts. - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker. * New Clang tools: - clang-linker-wrapper: A wrapper utility over the host linker. - clang-nvlink-wrapper: A wrapper tool over nvlink program. - Add clang-repl-private-deps.patch to make link dependencies of clang-repl private, otherwise CMake can't install. - Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to fix build on PowerPC (32-bit). - Drop llvm-exegesis-link-dylib.patch, instead we don't build llvm-exegesis anymore and add check-no-llvm-exegesis.patch to disable the corresponding tests. - Rebase patches: * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * lvm-normally-versioned-libllvm.patch - Drop patches that have landed upstream: * llvm-update-extract-section-script.patch OBS-URL: https://build.opensuse.org/request/show/966700 OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/llvm14?expand=0&rev=1
23 lines
795 B
Diff
23 lines
795 B
Diff
Better detect 64bit atomics support.
|
|
|
|
It appears that on i586 std::atomic<uint64_t>::load is compiled into
|
|
instruction, but std::atomic<double>::load uses __atomic_load_8. This must
|
|
be detected so the build system links it to libatomic.
|
|
Index: llvm-12.0.0.src/cmake/modules/CheckAtomic.cmake
|
|
===================================================================
|
|
--- llvm-12.0.0.src.orig/cmake/modules/CheckAtomic.cmake
|
|
+++ llvm-12.0.0.src/cmake/modules/CheckAtomic.cmake
|
|
@@ -30,9 +30,12 @@ function(check_working_cxx_atomics64 var
|
|
#include <atomic>
|
|
#include <cstdint>
|
|
std::atomic<uint64_t> x (0);
|
|
+std::atomic<double> y (0);
|
|
int main() {
|
|
uint64_t i = x.load(std::memory_order_relaxed);
|
|
+ double j = y.load(std::memory_order_relaxed);
|
|
(void)i;
|
|
+ (void)j;
|
|
return 0;
|
|
}
|
|
" ${varname})
|