https://bugs.gentoo.org/836951
Taken from https://github.com/fish-shell/fish-shell/pull/8851

From a3eb41ca882cc390b656515dd668a6816f745121 Mon Sep 17 00:00:00 2001
From: Raymond Wong <infiwang@pm.me>
Date: Mon, 4 Apr 2022 01:14:26 +0800
Subject: [PATCH 1/2] cmake: alter check for 64-bit atomic operation

Signed-off-by: Raymond Wong <infiwang@pm.me>
---
 cmake/ConfigureChecks.cmake | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
index bc190de054f..924aea1015a 100644
--- a/cmake/ConfigureChecks.cmake
+++ b/cmake/ConfigureChecks.cmake
@@ -255,10 +255,10 @@ int main () {
 check_cxx_source_compiles("
 #include <atomic>
 #include <cstdint>
-std::atomic<uint64_t> x (0);
+std::atomic<uint64_t> n64 (0);
 int main() {
-uint64_t i = x.load(std::memory_order_relaxed);
-return std::atomic_is_lock_free(&x);
+uint64_t i = n64.load(std::memory_order_relaxed);
+return std::atomic_is_lock_free(&n64);
 }"
 LIBATOMIC_NOT_NEEDED)
 IF (NOT LIBATOMIC_NOT_NEEDED)

From 2fe9bfe0a6c1a821dabbf52af35c8eb2cd6e029b Mon Sep 17 00:00:00 2001
From: Raymond Wong <infiwang@pm.me>
Date: Sun, 3 Apr 2022 14:01:15 +0800
Subject: [PATCH 2/2] cmake: check for 8-bit atomic operation

Fix building on RISC-V.
Closes #8850.

Signed-off-by: Raymond Wong <infiwang@pm.me>
---
 cmake/ConfigureChecks.cmake | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
index 924aea1015a..6562d324f45 100644
--- a/cmake/ConfigureChecks.cmake
+++ b/cmake/ConfigureChecks.cmake
@@ -255,10 +255,13 @@ int main () {
 check_cxx_source_compiles("
 #include <atomic>
 #include <cstdint>
+std::atomic<uint8_t> n8 (0);
 std::atomic<uint64_t> n64 (0);
 int main() {
-uint64_t i = n64.load(std::memory_order_relaxed);
-return std::atomic_is_lock_free(&n64);
+uint8_t i = n8.load(std::memory_order_relaxed);
+uint64_t j = n64.load(std::memory_order_relaxed);
+return std::atomic_is_lock_free(&n8)
+     & std::atomic_is_lock_free(&n64);
 }"
 LIBATOMIC_NOT_NEEDED)
 IF (NOT LIBATOMIC_NOT_NEEDED)
