[libcxx-commits] [libcxx] [libc++] Fix name of is_always_lock_free test which was never being run (PR #106077)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Oct 1 09:07:31 PDT 2024
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/106077
>From 74dd036d3ea3e1aca81a54cf3decb78916f9ecf9 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Mon, 26 Aug 2024 11:54:51 -0400
Subject: [PATCH 1/2] [libc++] Fix name of is_always_lock_free test which was
never being run
---
...s_lock_free.cpp => is_always_lock_free.pass.cpp} | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
rename libcxx/test/std/atomics/atomics.lockfree/{is_always_lock_free.cpp => is_always_lock_free.pass.cpp} (94%)
diff --git a/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.cpp b/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
similarity index 94%
rename from libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.cpp
rename to libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
index db17221e515d3a..45db99f10776bb 100644
--- a/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.cpp
+++ b/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
@@ -5,8 +5,9 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
-//
+
// UNSUPPORTED: c++03, c++11, c++14
+// XFAIL: !has-1024-bit-atomics
// <atomic>
//
@@ -15,6 +16,10 @@
//
// static constexpr bool is_always_lock_free;
+// Ignore diagnostic about vector types changing the ABI on some targets, since
+// that is irrelevant for this test.
+// ADDITIONAL_COMPILE_FLAGS: -Wno-psabi
+
#include <atomic>
#include <cassert>
#include <concepts>
@@ -27,7 +32,8 @@ template <typename T>
void check_always_lock_free(std::atomic<T> const& a) {
using InfoT = LockFreeStatusInfo<T>;
- constexpr std::same_as<const bool> decltype(auto) is_always_lock_free = std::atomic<T>::is_always_lock_free;
+ constexpr auto is_always_lock_free = std::atomic<T>::is_always_lock_free;
+ ASSERT_SAME_TYPE(decltype(is_always_lock_free), bool const);
// If we know the status of T for sure, validate the exact result of the function.
if constexpr (InfoT::status_known) {
@@ -45,7 +51,8 @@ void check_always_lock_free(std::atomic<T> const& a) {
// In all cases, also sanity-check it based on the implication always-lock-free => lock-free.
if (is_always_lock_free) {
- std::same_as<bool> decltype(auto) is_lock_free = a.is_lock_free();
+ auto is_lock_free = a.is_lock_free();
+ ASSERT_SAME_TYPE(decltype(is_always_lock_free), bool const);
assert(is_lock_free);
}
ASSERT_NOEXCEPT(a.is_lock_free());
>From f68ba48c15b5d56591cbef5ae773a0ae2c2e4740 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 1 Oct 2024 12:07:19 -0400
Subject: [PATCH 2/2] FIXME for Picolibc
---
.../std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp b/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
index 45db99f10776bb..1ebe31375079b8 100644
--- a/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
+++ b/libcxx/test/std/atomics/atomics.lockfree/is_always_lock_free.pass.cpp
@@ -7,7 +7,7 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: !has-1024-bit-atomics
+// XFAIL: LIBCXX-PICOLIBC-FIXME
// <atomic>
//
More information about the libcxx-commits
mailing list