llvm15/llvm-better-detect-64bit-atomics-support.patch
Richard Biener 43f9d469ce Accepting request 1002539 from home:aaronpuchert:llvm-next
- Update to version 15.0.0.
  * For details, see the release notes:
    - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html
    - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html
    - https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
    - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html
    - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html
  * New LLVM tools:
    - llvm-debuginfod: Provides debug info to remote hosts.
    - llvm-dwarfutil: Can copy and manipulate debug info.
    - llvm-remark-size-diff: Compute diff between remark files.
  * New Clang tools:
    - clang-offload-packager: Bundle multiple objects into single
      fat binaries including offload code.
    - clang-pseudo: Approximate heuristic parser for C++.
- Rebase patches:
  * check-no-llvm-exegesis.patch
  * link-clang-tools-extra-shared.patch
  * lld-default-sha1.patch
  * llvm-do-not-install-static-libraries.patch
  * lto-disable-cache.patch
- Drop patches that have landed upstream:
  * clang-repl-private-deps.patch
  * llvm-glibc-2-36.patch
  * llvm-scev-fix-isImpliedViaMerge.patch
- Drop llvm-lifetime-for-rust.patch: this is now solved via
  attributes and LLVM doesn't need a hardcoded list of allocation
  functions anymore.
- Add llvm-link-atomic.patch to fix build on ppc.
- Add libcxx-test-library-path.patch to fix libc++ tests failing
  without RUNPATH on libc++.so.
- Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l.
- Thanks to Andreas Schwab for most of the rebasing!

OBS-URL: https://build.opensuse.org/request/show/1002539
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/llvm15?expand=0&rev=1
2022-09-12 07:14:57 +00:00

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})