From f8060adba7f5f55025384f4dfc0c410a6e35fe19 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Fri, 29 Mar 2024 18:20:59 +0200 Subject: [PATCH 1/9] [libc++] P2869R3: Remove Deprecated `shared_ptr` Atomic Access APIs from C++26 Implements https://wg21.link/P2869R3 --- libcxx/docs/ReleaseNotes/19.rst | 4 ++++ libcxx/include/__memory/shared_ptr.h | 4 ++++ libcxx/include/memory | 22 +++++++++---------- libcxx/modules/std/memory.inc | 6 +++++ .../atomic_compare_exchange_strong.pass.cpp | 5 +++-- ..._compare_exchange_strong_explicit.pass.cpp | 5 +++-- .../atomic_compare_exchange_weak.pass.cpp | 5 +++-- ...ic_compare_exchange_weak_explicit.pass.cpp | 5 +++-- .../atomic_exchange.pass.cpp | 5 +++-- .../atomic_exchange_explicit.pass.cpp | 5 +++-- .../atomic_is_lock_free.pass.cpp | 5 +++-- .../atomic_load.pass.cpp | 5 +++-- .../atomic_load_explicit.pass.cpp | 5 +++-- .../atomic_store.pass.cpp | 5 +++-- .../atomic_store_explicit.pass.cpp | 5 +++-- 15 files changed, 58 insertions(+), 33 deletions(-) diff --git a/libcxx/docs/ReleaseNotes/19.rst b/libcxx/docs/ReleaseNotes/19.rst index abf1570737df9..50dd28b2088de 100644 --- a/libcxx/docs/ReleaseNotes/19.rst +++ b/libcxx/docs/ReleaseNotes/19.rst @@ -43,6 +43,7 @@ Implemented Papers - P2819R2 - Add ``tuple`` protocol to ``complex`` - P2495R3 - Interfacing ``stringstream``\s with ``string_view`` - P2867R2 - Remove Deprecated ``strstream``\s From C++26 +- P2869R3 - Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26 - P2872R3 - Remove ``wstring_convert`` From C++26 - P2302R4 - ``std::ranges::contains`` - P1659R3 - ``std::ranges::starts_with`` and ``std::ranges::ends_with`` @@ -58,6 +59,9 @@ Improvements and New Features - The ``_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM`` macro has been added to make the declarations in ```` available. +- The ``_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS`` macro has been added to make the declarations in ```` + available. + - The ``_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT`` macro has been added to make the declarations in ```` available. diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h index a8ff189df2aa5..eb7afd778e004 100644 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -1580,6 +1580,8 @@ class _LIBCPP_EXPORTED_FROM_ABI __sp_mut { _LIBCPP_EXPORTED_FROM_ABI __sp_mut& __get_sp_mut(const void*); +# if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) + template inline _LIBCPP_HIDE_FROM_ABI bool atomic_is_lock_free(const shared_ptr<_Tp>*) { return false; @@ -1663,6 +1665,8 @@ inline _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_weak_explicit( return std::atomic_compare_exchange_weak(__p, __v, __w); } +# endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) + #endif // !defined(_LIBCPP_HAS_NO_THREADS) _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/include/memory b/libcxx/include/memory index a8c0264eb9eb7..d7f34b64080dc 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -830,34 +830,34 @@ public: }; template - bool atomic_is_lock_free(const shared_ptr* p); + bool atomic_is_lock_free(const shared_ptr* p); // Removed in C++26 template - shared_ptr atomic_load(const shared_ptr* p); + shared_ptr atomic_load(const shared_ptr* p); // Removed in C++26 template - shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); + shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); // Removed in C++26 template - void atomic_store(shared_ptr* p, shared_ptr r); + void atomic_store(shared_ptr* p, shared_ptr r); // Removed in C++26 template - void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); + void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Removed in C++26 template - shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); + shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); // Removed in C++26 template shared_ptr - atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); + atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Removed in C++26 template bool - atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); + atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); // Removed in C++26 template bool - atomic_compare_exchange_strong( shared_ptr* p, shared_ptr* v, shared_ptr w); + atomic_compare_exchange_strong( shared_ptr* p, shared_ptr* v, shared_ptr w); // Removed in C++26 template bool - atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, + atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, // Removed in C++26 shared_ptr w, memory_order success, memory_order failure); template bool - atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, + atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, // Removed in C++26 shared_ptr w, memory_order success, memory_order failure); // Hash support diff --git a/libcxx/modules/std/memory.inc b/libcxx/modules/std/memory.inc index 56c621c0cf17f..28afbab67bfc0 100644 --- a/libcxx/modules/std/memory.inc +++ b/libcxx/modules/std/memory.inc @@ -190,6 +190,9 @@ export namespace std { // using std::inout_ptr; #ifndef _LIBCPP_HAS_NO_THREADS + +# if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) + // [depr.util.smartptr.shared.atomic] using std::atomic_is_lock_free; @@ -206,5 +209,8 @@ export namespace std { using std::atomic_compare_exchange_strong_explicit; using std::atomic_compare_exchange_weak; using std::atomic_compare_exchange_weak_explicit; + +# endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) + #endif // _LIBCPP_HAS_NO_THREADS } // namespace std diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp index 37be6ceea3e09..0e565c1b0424d 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // bool // atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, -// shared_ptr w); +// shared_ptr w); // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp index 3965863b86ccf..1180c2cc2138a 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -16,7 +17,7 @@ // bool // atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, // shared_ptr w, memory_order success, -// memory_order failure); +// memory_order failure); // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp index 6dd04f924a105..6f80c86f6dc21 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // bool // atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, -// shared_ptr w); +// shared_ptr w); // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp index 4837fa9793a5e..f15fed4cc8f63 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -16,7 +17,7 @@ // bool // atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, // shared_ptr w, memory_order success, -// memory_order failure); +// memory_order failure); // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp index f488e0ed1d14e..abf98a364f2ef 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // shared_ptr -// atomic_exchange(shared_ptr* p, shared_ptr r) +// atomic_exchange(shared_ptr* p, shared_ptr r) // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp index 1945f7bba6dc0..e6d66878c303d 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // shared_ptr -// atomic_exchange_explicit(shared_ptr* p, shared_ptr r) +// atomic_exchange_explicit(shared_ptr* p, shared_ptr r) // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp index 37f7d12eda2c6..3390a64a1358a 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // bool -// atomic_is_lock_free(const shared_ptr* p); +// atomic_is_lock_free(const shared_ptr* p); // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp index 1b9a15ac92ac1..b298ffe840e28 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // shared_ptr -// atomic_load(const shared_ptr* p) +// atomic_load(const shared_ptr* p) // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp index 5c2970133328f..f924f090af297 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // shared_ptr -// atomic_load_explicit(const shared_ptr* p, memory_order mo) +// atomic_load_explicit(const shared_ptr* p, memory_order mo) // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp index 5b7bd5fad69c4..5f978fc5f16b3 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // void -// atomic_store(shared_ptr* p, shared_ptr r) +// atomic_store(shared_ptr* p, shared_ptr r) // Removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp index 5712190421308..62f75533da97b 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS // UNSUPPORTED: no-threads // @@ -14,7 +15,7 @@ // template // void -// atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo) +// atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo) // Removed in C++26 // UNSUPPORTED: c++03 From 8671e48756f4b5ffc818298d9d7319e19f7bfc33 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Fri, 29 Mar 2024 23:37:18 +0200 Subject: [PATCH 2/9] Try to fix CI --- libcxx/modules/std/memory.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcxx/modules/std/memory.inc b/libcxx/modules/std/memory.inc index 28afbab67bfc0..b23c27707afd6 100644 --- a/libcxx/modules/std/memory.inc +++ b/libcxx/modules/std/memory.inc @@ -209,7 +209,7 @@ export namespace std { using std::atomic_compare_exchange_strong_explicit; using std::atomic_compare_exchange_weak; using std::atomic_compare_exchange_weak_explicit; - + # endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) #endif // _LIBCPP_HAS_NO_THREADS From 303cb9a1a6ba48f1041b91fddd114f49ad7590c9 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 4 Apr 2024 23:12:42 +0300 Subject: [PATCH 3/9] Updated release notes and status pages --- libcxx/docs/ReleaseNotes/19.rst | 2 +- libcxx/docs/Status/Cxx2cPapers.csv | 2 +- libcxx/docs/UsingLibcxx.rst | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libcxx/docs/ReleaseNotes/19.rst b/libcxx/docs/ReleaseNotes/19.rst index 50dd28b2088de..d9c0cd7720df4 100644 --- a/libcxx/docs/ReleaseNotes/19.rst +++ b/libcxx/docs/ReleaseNotes/19.rst @@ -43,7 +43,7 @@ Implemented Papers - P2819R2 - Add ``tuple`` protocol to ``complex`` - P2495R3 - Interfacing ``stringstream``\s with ``string_view`` - P2867R2 - Remove Deprecated ``strstream``\s From C++26 -- P2869R3 - Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26 +- P2869R4 - Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26 - P2872R3 - Remove ``wstring_convert`` From C++26 - P2302R4 - ``std::ranges::contains`` - P1659R3 - ``std::ranges::starts_with`` and ``std::ranges::ends_with`` diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv index af270150fda0c..2f9533a74bd0a 100644 --- a/libcxx/docs/Status/Cxx2cPapers.csv +++ b/libcxx/docs/Status/Cxx2cPapers.csv @@ -48,7 +48,7 @@ "","","","","","","" "`P2875R4 `__","LWG","Undeprecate ``polymorphic_allocator::destroy`` for C++26","Tokyo March 2024","|Complete|","15.0","" "`P2867R2 `__","LWG","Remove Deprecated ``strstreams`` From C++26","Tokyo March 2024","|Complete|","19.0","" -"`P2869R4 `__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","","","" +"`P2869R4 `__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","|Complete|","19.0","" "`P2872R3 `__","LWG","Remove ``wstring_convert`` From C++26","Tokyo March 2024","|Complete|","19.0","" "`P3107R5 `__","LWG","Permit an efficient implementation of ``std::print``","Tokyo March 2024","","","|format| |DR|" "`P3142R0 `__","LWG","Printing Blank Lines with ``println``","Tokyo March 2024","","","|format|" diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst index bc7817d14d04d..024693495859e 100644 --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -277,6 +277,10 @@ C++26 Specific Configuration Macros **_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM**: This macro is used to re-enable all named declarations in ````. +**_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS**: + This macro is used to re-enable all ``shared_ptr`` atomic access APIs in ````. + + **_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT**: This macro is used to re-enable the ``wstring_convert`` and ``wbuffer_convert`` in ````. From 397324a930f999a2f97345fd158ec9322370e12a Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Fri, 5 Apr 2024 23:17:23 +0300 Subject: [PATCH 4/9] Minor tweaks --- libcxx/docs/UsingLibcxx.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst index 024693495859e..c0e85ad4d5e24 100644 --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -280,11 +280,11 @@ C++26 Specific Configuration Macros **_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS**: This macro is used to re-enable all ``shared_ptr`` atomic access APIs in ````. - **_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT**: This macro is used to re-enable the ``wstring_convert`` and ``wbuffer_convert`` in ````. + Libc++ Extensions ================= From bc923dcc196d7e583fcb84a1069eb7d1c1a69871 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 9 Apr 2024 23:30:48 +0300 Subject: [PATCH 5/9] Addressed review comments: Implements deprecations from https://wg21.link/P0718R2 --- libcxx/include/__memory/shared_ptr.h | 25 ++++++++------ libcxx/include/memory | 22 ++++++------ .../atomic_compare_exchange_strong.pass.cpp | 3 +- .../atomic_compare_exchange_strong.verify.cpp | 33 ++++++++++++++++++ ..._compare_exchange_strong_explicit.pass.cpp | 3 +- ...ompare_exchange_strong_explicit.verify.cpp | 34 +++++++++++++++++++ .../atomic_compare_exchange_weak.pass.cpp | 3 +- .../atomic_compare_exchange_weak.verify.cpp | 31 +++++++++++++++++ ...ic_compare_exchange_weak_explicit.pass.cpp | 3 +- ..._compare_exchange_weak_explicit.verify.cpp | 34 +++++++++++++++++++ .../atomic_exchange.pass.cpp | 3 +- .../atomic_exchange.verify.cpp | 29 ++++++++++++++++ .../atomic_exchange_explicit.pass.cpp | 3 +- .../atomic_exchange_explicit.verify.cpp | 30 ++++++++++++++++ .../atomic_is_lock_free.pass.cpp | 3 +- .../atomic_is_lock_free.verify.cpp | 28 +++++++++++++++ .../atomic_load.pass.cpp | 3 +- .../atomic_load.verify.cpp | 28 +++++++++++++++ .../atomic_load_explicit.pass.cpp | 3 +- .../atomic_load_explicit.verify.cpp | 29 ++++++++++++++++ .../atomic_store.pass.cpp | 3 +- .../atomic_store.verify.cpp | 28 +++++++++++++++ .../atomic_store_explicit.pass.cpp | 3 +- .../atomic_store_explicit.verify.cpp | 29 ++++++++++++++++ 24 files changed, 380 insertions(+), 33 deletions(-) create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp create mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h index eb7afd778e004..992b1ba43f100 100644 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -1583,12 +1583,12 @@ _LIBCPP_EXPORTED_FROM_ABI __sp_mut& __get_sp_mut(const void*); # if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS) template -inline _LIBCPP_HIDE_FROM_ABI bool atomic_is_lock_free(const shared_ptr<_Tp>*) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI bool atomic_is_lock_free(const shared_ptr<_Tp>*) { return false; } template -_LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) { __sp_mut& __m = std::__get_sp_mut(__p); __m.lock(); shared_ptr<_Tp> __q = *__p; @@ -1597,12 +1597,13 @@ _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) { } template -inline _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> +atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) { return std::atomic_load(__p); } template -_LIBCPP_HIDE_FROM_ABI void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { __sp_mut& __m = std::__get_sp_mut(__p); __m.lock(); __p->swap(__r); @@ -1610,12 +1611,14 @@ _LIBCPP_HIDE_FROM_ABI void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __ } template -inline _LIBCPP_HIDE_FROM_ABI void atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI void +atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) { std::atomic_store(__p, __r); } template -_LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> +atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { __sp_mut& __m = std::__get_sp_mut(__p); __m.lock(); __p->swap(__r); @@ -1624,13 +1627,13 @@ _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_exchange(shared_ptr<_Tp>* __p, shar } template -inline _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) { return std::atomic_exchange(__p, __r); } template -_LIBCPP_HIDE_FROM_ABI bool +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) { shared_ptr<_Tp> __temp; __sp_mut& __m = std::__get_sp_mut(__p); @@ -1648,19 +1651,19 @@ atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, share } template -inline _LIBCPP_HIDE_FROM_ABI bool +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) { return std::atomic_compare_exchange_strong(__p, __v, __w); } template -inline _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_strong_explicit( +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_strong_explicit( shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w, memory_order, memory_order) { return std::atomic_compare_exchange_strong(__p, __v, __w); } template -inline _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_weak_explicit( +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_weak_explicit( shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w, memory_order, memory_order) { return std::atomic_compare_exchange_weak(__p, __v, __w); } diff --git a/libcxx/include/memory b/libcxx/include/memory index d7f34b64080dc..30fadce760d75 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -830,34 +830,34 @@ public: }; template - bool atomic_is_lock_free(const shared_ptr* p); // Removed in C++26 + bool atomic_is_lock_free(const shared_ptr* p); // Deprecated in C++20, removed in C++26 template - shared_ptr atomic_load(const shared_ptr* p); // Removed in C++26 + shared_ptr atomic_load(const shared_ptr* p); // Deprecated in C++20, removed in C++26 template - shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); // Removed in C++26 + shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); // Deprecated in C++20, removed in C++26 template - void atomic_store(shared_ptr* p, shared_ptr r); // Removed in C++26 + void atomic_store(shared_ptr* p, shared_ptr r); // Deprecated in C++20, removed in C++26 template - void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Removed in C++26 + void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Deprecated in C++20, removed in C++26 template - shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); // Removed in C++26 + shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); // Deprecated in C++20, removed in C++26 template shared_ptr - atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Removed in C++26 + atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); // Deprecated in C++20, removed in C++26 template bool - atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); // Removed in C++26 + atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); // Deprecated in C++20, removed in C++26 template bool - atomic_compare_exchange_strong( shared_ptr* p, shared_ptr* v, shared_ptr w); // Removed in C++26 + atomic_compare_exchange_strong( shared_ptr* p, shared_ptr* v, shared_ptr w); // Deprecated in C++20, removed in C++26 template bool - atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, // Removed in C++26 + atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, // Deprecated in C++20, removed in C++26 shared_ptr w, memory_order success, memory_order failure); template bool - atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, // Removed in C++26 + atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, // Deprecated in C++20, removed in C++26 shared_ptr w, memory_order success, memory_order failure); // Hash support diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp index 0e565c1b0424d..ad9d2a9d9ccc0 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -16,7 +17,7 @@ // template // bool // atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, -// shared_ptr w); // Removed in C++26 +// shared_ptr w); // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp new file mode 100644 index 0000000000000..f70cbb0452ad8 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// bool +// atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, +// shared_ptr w); // Deprecated in C++20, removed in C++26 + + +#include +#include +#include + +void test() { + std::shared_ptr p(new int(4)); + std::shared_ptr v(new int(3)); + std::shared_ptr w(new int(2)); + // expected-warning@+1 {{'atomic_compare_exchange_strong' is deprecated}} + std::ignore = std::atomic_compare_exchange_strong(&p, &v, w); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp index 1180c2cc2138a..26496df96d472 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -17,7 +18,7 @@ // bool // atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, // shared_ptr w, memory_order success, -// memory_order failure); // Removed in C++26 +// memory_order failure); // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp new file mode 100644 index 0000000000000..93384772c8afc --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// bool +// atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, +// shared_ptr w, memory_order success, +// memory_order failure); // Deprecated in C++20, removed in C++26 + +#include +#include +#include + +void test() { + std::shared_ptr p(new int(4)); + std::shared_ptr v(new int(3)); + std::shared_ptr w(new int(2)); + // expected-warning@+2 {{'atomic_compare_exchange_strong_explicit' is deprecated}} + std::ignore = + std::atomic_compare_exchange_strong_explicit(&p, &v, w, std::memory_order_seq_cst, std::memory_order_seq_cst); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp index 6f80c86f6dc21..5cdc0ea3312ff 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -16,7 +17,7 @@ // template // bool // atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, -// shared_ptr w); // Removed in C++26 +// shared_ptr w); // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp new file mode 100644 index 0000000000000..30ca70523fb64 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// bool +// atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, +// shared_ptr w); // Deprecated in C++20, removed in C++26 + +#include +#include + +int main(int, char**) { + std::shared_ptr p(new int(4)); + std::shared_ptr v(new int(3)); + std::shared_ptr w(new int(2)); + // expected-warning@+1 {{'atomic_compare_exchange_weak' is deprecated}} + std::ignore = std::atomic_compare_exchange_weak(&p, &v, w); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp index f15fed4cc8f63..e4cc4cf77a64e 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -17,7 +18,7 @@ // bool // atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, // shared_ptr w, memory_order success, -// memory_order failure); // Removed in C++26 +// memory_order failure); // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp new file mode 100644 index 0000000000000..ae6e98d0692d2 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// bool +// atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, +// shared_ptr w, memory_order success, +// memory_order failure); // Deprecated in C++20, removed in C++26 + +#include +#include +#include + +void test() { + std::shared_ptr p(new int(4)); + std::shared_ptr v(new int(3)); + std::shared_ptr w(new int(2)); + // expected-warning@+2 {{'atomic_compare_exchange_weak_explicit' is deprecated}} + std::ignore = + std::atomic_compare_exchange_weak_explicit(&p, &v, w, std::memory_order_seq_cst, std::memory_order_seq_cst); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp index abf98a364f2ef..db02c9d9f75b4 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // shared_ptr -// atomic_exchange(shared_ptr* p, shared_ptr r) // Removed in C++26 +// atomic_exchange(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp new file mode 100644 index 0000000000000..0e4bc1bc50b18 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// shared_ptr +// atomic_exchange(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 + +#include +#include + +void test() { + std::shared_ptr p(new int(4)); + std::shared_ptr r(new int(3)); + // expected-warning@+1 {{'atomic_exchange' is deprecated}} + std::ignore = std::atomic_exchange(&p, r); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp index e6d66878c303d..704232e71fa4a 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // shared_ptr -// atomic_exchange_explicit(shared_ptr* p, shared_ptr r) // Removed in C++26 +// atomic_exchange_explicit(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp new file mode 100644 index 0000000000000..5a6a2bfe4c1e2 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// shared_ptr +// atomic_exchange_explicit(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 + +#include +#include +#include + +void test() { + std::shared_ptr p(new int(4)); + std::shared_ptr r(new int(3)); + // expected-warning@+1 {{'atomic_exchange_explicit' is deprecated}} + std::ignore = std::atomic_exchange_explicit(&p, r, std::memory_order_seq_cst); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp index 3390a64a1358a..8f3b5bbb51558 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // bool -// atomic_is_lock_free(const shared_ptr* p); // Removed in C++26 +// atomic_is_lock_free(const shared_ptr* p); // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp new file mode 100644 index 0000000000000..6799d31ce1fa9 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// bool +// atomic_is_lock_free(const shared_ptr* p); // Deprecated in C++20, removed in C++26 + +#include +#include + +void test() { + const std::shared_ptr p(new int(3)); + // expected-warning@+1 {{'atomic_is_lock_free' is deprecated}} + std::ignore = std::atomic_is_lock_free(&p); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp index b298ffe840e28..9d81e81b4392b 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // shared_ptr -// atomic_load(const shared_ptr* p) // Removed in C++26 +// atomic_load(const shared_ptr* p) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp new file mode 100644 index 0000000000000..768ad0ded983e --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// shared_ptr +// atomic_load(const shared_ptr* p) // Deprecated in C++20, removed in C++26 + +#include +#include + +void test() { + std::shared_ptr p(new int(3)); + // expected-warning@+1 {{'atomic_load' is deprecated}} + std::ignore = std::atomic_load(&p); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp index f924f090af297..f4875dce38a81 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // shared_ptr -// atomic_load_explicit(const shared_ptr* p, memory_order mo) // Removed in C++26 +// atomic_load_explicit(const shared_ptr* p, memory_order mo) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp new file mode 100644 index 0000000000000..dc56193324f04 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// shared_ptr +// atomic_load_explicit(const shared_ptr* p, memory_order mo) // Deprecated in C++20, removed in C++26 + +#include +#include +#include + +void test() { + const std::shared_ptr p(new int(3)); + // expected-warning@+1 {{'atomic_load_explicit' is deprecated}} + std::ignore = std::atomic_load_explicit(&p, std::memory_order_relaxed); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp index 5f978fc5f16b3..836dcb16ff32e 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // void -// atomic_store(shared_ptr* p, shared_ptr r) // Removed in C++26 +// atomic_store(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp new file mode 100644 index 0000000000000..38b8df6f24393 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// void +// atomic_store(shared_ptr* p, shared_ptr r) // Deprecated in C++20, removed in C++26 + +#include + +void test() { + std::shared_ptr p; + std::shared_ptr r(new int(3)); + // expected-warning@+1 {{'atomic_store' is deprecated}} + std::atomic_store(&p, r); +} diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp index 62f75533da97b..85b31c017d736 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS // UNSUPPORTED: no-threads // @@ -15,7 +16,7 @@ // template // void -// atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo) // Removed in C++26 +// atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo) // Deprecated in C++20, removed in C++26 // UNSUPPORTED: c++03 diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp new file mode 100644 index 0000000000000..18f59c4618699 --- /dev/null +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS +// UNSUPPORTED: no-threads +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// + +// shared_ptr + +// template +// void +// atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo) // Deprecated in C++20, removed in C++26 + +#include +#include + +void test() { + std::shared_ptr p; + std::shared_ptr r(new int(3)); + // expected-warning@+1 {{'atomic_store_explicit' is deprecated}} + std::atomic_store_explicit(&p, r, std::memory_order_seq_cst); +} From 535bcf888a2446a38b08eb5f309510ecfd1bdd12 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 9 Apr 2024 23:35:19 +0300 Subject: [PATCH 6/9] Fixed formatting --- .../atomic_compare_exchange_strong.verify.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp index f70cbb0452ad8..3ca01cad451a2 100644 --- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp +++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp @@ -19,7 +19,6 @@ // atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, // shared_ptr w); // Deprecated in C++20, removed in C++26 - #include #include #include From 21e2f3ad54914d009543d38c666be546065d2804 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Thu, 11 Apr 2024 10:00:17 +0300 Subject: [PATCH 7/9] Updated paper status --- libcxx/docs/Status/Cxx20.rst | 2 ++ libcxx/docs/Status/Cxx20Papers.csv | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libcxx/docs/Status/Cxx20.rst b/libcxx/docs/Status/Cxx20.rst index 2deb82547d631..23289dc6e5961 100644 --- a/libcxx/docs/Status/Cxx20.rst +++ b/libcxx/docs/Status/Cxx20.rst @@ -59,6 +59,8 @@ Paper Status * ``GPS clock`` not done * ``UTC clock`` not done + .. [#note-P0718] P0718: Implemented deprecation of ``shared_ptr`` atomic access APIs only. + .. _issues-status-cxx20: Library Working Group Issues Status diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv index 77078b11a7278..67637d0174705 100644 --- a/libcxx/docs/Status/Cxx20Papers.csv +++ b/libcxx/docs/Status/Cxx20Papers.csv @@ -12,7 +12,7 @@ "`P0600R1 `__","LWG","nodiscard in the Library","Albuquerque","|Complete|","16.0" "`P0616R0 `__","LWG","de-pessimize legacy algorithms with std::move","Albuquerque","|Complete|","12.0" "`P0653R2 `__","LWG","Utility to convert a pointer to a raw pointer","Albuquerque","|Complete|","6.0" -"`P0718R2 `__","LWG","Atomic shared_ptr","Albuquerque","","" +"`P0718R2 `__","LWG","Atomic shared_ptr","Albuquerque","|Partial|","19.0" "`P0767R1 `__","CWG","Deprecate POD","Albuquerque","|Complete|","7.0" "`P0768R1 `__","CWG","Library Support for the Spaceship (Comparison) Operator","Albuquerque","|Complete|","" "`P0777R1 `__","LWG","Treating Unnecessary ``decay``\ ","Albuquerque","|Complete|","7.0" From b93db508285a1fb2f36964fa5746ba71c165c4b9 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Sat, 13 Apr 2024 22:33:28 +0300 Subject: [PATCH 8/9] Addressed comments --- libcxx/docs/Status/Cxx20Papers.csv | 2 +- .../atomic_compare_exchange_strong.verify.cpp | 0 .../atomic_compare_exchange_strong_explicit.verify.cpp | 0 .../atomic_compare_exchange_weak.verify.cpp | 0 .../atomic_compare_exchange_weak_explicit.verify.cpp | 0 .../atomic_exchange.verify.cpp | 0 .../atomic_exchange_explicit.verify.cpp | 0 .../atomic_is_lock_free.verify.cpp | 0 .../depr.util.smartptr.shared.atomic}/atomic_load.verify.cpp | 0 .../atomic_load_explicit.verify.cpp | 0 .../depr.util.smartptr.shared.atomic}/atomic_store.verify.cpp | 0 .../atomic_store_explicit.verify.cpp | 0 12 files changed, 1 insertion(+), 1 deletion(-) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_compare_exchange_strong.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_compare_exchange_strong_explicit.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_compare_exchange_weak.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_compare_exchange_weak_explicit.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_exchange.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_exchange_explicit.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_is_lock_free.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_load.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_load_explicit.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_store.verify.cpp (100%) rename libcxx/test/{std/utilities/memory/util.smartptr/util.smartptr.shared.atomic => libcxx/depr/depr.util.smartptr.shared.atomic}/atomic_store_explicit.verify.cpp (100%) diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv index 67637d0174705..5ca89d750c40c 100644 --- a/libcxx/docs/Status/Cxx20Papers.csv +++ b/libcxx/docs/Status/Cxx20Papers.csv @@ -12,7 +12,7 @@ "`P0600R1 `__","LWG","nodiscard in the Library","Albuquerque","|Complete|","16.0" "`P0616R0 `__","LWG","de-pessimize legacy algorithms with std::move","Albuquerque","|Complete|","12.0" "`P0653R2 `__","LWG","Utility to convert a pointer to a raw pointer","Albuquerque","|Complete|","6.0" -"`P0718R2 `__","LWG","Atomic shared_ptr","Albuquerque","|Partial|","19.0" +"`P0718R2 `__","LWG","Atomic shared_ptr","Albuquerque","|Partial| [#note-P0718]_","" "`P0767R1 `__","CWG","Deprecate POD","Albuquerque","|Complete|","7.0" "`P0768R1 `__","CWG","Library Support for the Spaceship (Comparison) Operator","Albuquerque","|Complete|","" "`P0777R1 `__","LWG","Treating Unnecessary ``decay``\ ","Albuquerque","|Complete|","7.0" diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.verify.cpp diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp similarity index 100% rename from libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp From be4a5f68fc13f50b383d31a258f57147604f9d94 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Sat, 13 Apr 2024 22:41:12 +0300 Subject: [PATCH 9/9] Renamed deprecated tests --- ...p => atomic_compare_exchange_strong.depr_in_cxx20..verify.cpp} | 0 ...mic_compare_exchange_strong_explicit.depr_in_cxx20.verify.cpp} | 0 ...cpp => atomic_compare_exchange_weak.depr_in_cxx20..verify.cpp} | 0 ...omic_compare_exchange_weak_explicit.depr_in_cxx20..verify.cpp} | 0 ...hange.verify.cpp => atomic_exchange.depr_in_cxx20..verify.cpp} | 0 ...ify.cpp => atomic_exchange_explicit.verify.depr_in_cxx20..cpp} | 0 ...e.verify.cpp => atomic_is_lock_free.depr_in_cxx20..verify.cpp} | 0 ...omic_load.verify.cpp => atomic_load.depr_in_cxx20..verify.cpp} | 0 ....verify.cpp => atomic_load_explicit.depr_in_cxx20..verify.cpp} | 0 ...ic_store.verify.cpp => atomic_store.depr_in_cxx20..verify.cpp} | 0 ...verify.cpp => atomic_store_explicit.depr_in_cxx20..verify.cpp} | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_compare_exchange_strong.verify.cpp => atomic_compare_exchange_strong.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_compare_exchange_strong_explicit.verify.cpp => atomic_compare_exchange_strong_explicit.depr_in_cxx20.verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_compare_exchange_weak.verify.cpp => atomic_compare_exchange_weak.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_compare_exchange_weak_explicit.verify.cpp => atomic_compare_exchange_weak_explicit.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_exchange.verify.cpp => atomic_exchange.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_exchange_explicit.verify.cpp => atomic_exchange_explicit.verify.depr_in_cxx20..cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_is_lock_free.verify.cpp => atomic_is_lock_free.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_load.verify.cpp => atomic_load.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_load_explicit.verify.cpp => atomic_load_explicit.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_store.verify.cpp => atomic_store.depr_in_cxx20..verify.cpp} (100%) rename libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/{atomic_store_explicit.verify.cpp => atomic_store_explicit.depr_in_cxx20..verify.cpp} (100%) diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.depr_in_cxx20.verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.depr_in_cxx20.verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.depr_in_cxx20..cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_exchange_explicit.verify.depr_in_cxx20..cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_is_lock_free.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_load_explicit.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store.depr_in_cxx20..verify.cpp diff --git a/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp b/libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.depr_in_cxx20..verify.cpp similarity index 100% rename from libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.verify.cpp rename to libcxx/test/libcxx/depr/depr.util.smartptr.shared.atomic/atomic_store_explicit.depr_in_cxx20..verify.cpp