[libc++] Deprecated shared_ptr Atomic Access APIs as per P0718R2 & Implemented P2869R3: Remove Deprecated shared_ptr Atomic Access APIs from C++26 (#87111)
Implements https://wg21.link/P2869R4 Implements deprecations as per https://wg21.link/P0718R2
This commit is contained in:
@@ -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
|
||||
- P2869R4 - Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26
|
||||
- P2872R3 - Remove ``wstring_convert`` From C++26
|
||||
- P3142R0 - Printing Blank Lines with ``println`` (as DR against C++23)
|
||||
- P2302R4 - ``std::ranges::contains``
|
||||
@@ -63,6 +64,9 @@ Improvements and New Features
|
||||
|
||||
- The ``_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM`` macro has been added to make the declarations in ``<strstream>`` available.
|
||||
|
||||
- The ``_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS`` macro has been added to make the declarations in ``<memory>``
|
||||
available.
|
||||
|
||||
- The ``_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT`` macro has been added to make the declarations in ``<locale>``
|
||||
available.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"`P0600R1 <https://wg21.link/P0600R1>`__","LWG","nodiscard in the Library","Albuquerque","|Complete|","16.0"
|
||||
"`P0616R0 <https://wg21.link/P0616R0>`__","LWG","de-pessimize legacy <numeric> algorithms with std::move","Albuquerque","|Complete|","12.0"
|
||||
"`P0653R2 <https://wg21.link/P0653R2>`__","LWG","Utility to convert a pointer to a raw pointer","Albuquerque","|Complete|","6.0"
|
||||
"`P0718R2 <https://wg21.link/P0718R2>`__","LWG","Atomic shared_ptr","Albuquerque","",""
|
||||
"`P0718R2 <https://wg21.link/P0718R2>`__","LWG","Atomic shared_ptr","Albuquerque","|Partial| [#note-P0718]_",""
|
||||
"`P0767R1 <https://wg21.link/P0767R1>`__","CWG","Deprecate POD","Albuquerque","|Complete|","7.0"
|
||||
"`P0768R1 <https://wg21.link/P0768R1>`__","CWG","Library Support for the Spaceship (Comparison) Operator","Albuquerque","|Complete|",""
|
||||
"`P0777R1 <https://wg21.link/P0777R1>`__","LWG","Treating Unnecessary ``decay``\ ","Albuquerque","|Complete|","7.0"
|
||||
|
||||
|
@@ -48,7 +48,7 @@
|
||||
"","","","","","",""
|
||||
"`P2875R4 <https://wg21.link/P2875R4>`__","LWG","Undeprecate ``polymorphic_allocator::destroy`` for C++26","Tokyo March 2024","|Complete|","15.0",""
|
||||
"`P2867R2 <https://wg21.link/P2867R2>`__","LWG","Remove Deprecated ``strstreams`` From C++26","Tokyo March 2024","|Complete|","19.0",""
|
||||
"`P2869R4 <https://wg21.link/P2869R4>`__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","","",""
|
||||
"`P2869R4 <https://wg21.link/P2869R4>`__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","|Complete|","19.0",""
|
||||
"`P2872R3 <https://wg21.link/P2872R3>`__","LWG","Remove ``wstring_convert`` From C++26","Tokyo March 2024","|Complete|","19.0",""
|
||||
"`P3107R5 <https://wg21.link/P3107R5>`__","LWG","Permit an efficient implementation of ``std::print``","Tokyo March 2024","","","|format| |DR|"
|
||||
"`P3142R0 <https://wg21.link/P3142R0>`__","LWG","Printing Blank Lines with ``println``","Tokyo March 2024","|Complete|","19.0","|format|"
|
||||
|
||||
|
@@ -277,10 +277,14 @@ C++26 Specific Configuration Macros
|
||||
**_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM**:
|
||||
This macro is used to re-enable all named declarations in ``<strstream>``.
|
||||
|
||||
**_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS**:
|
||||
This macro is used to re-enable all ``shared_ptr`` atomic access APIs in ``<memory>``.
|
||||
|
||||
**_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT**:
|
||||
This macro is used to re-enable the ``wstring_convert`` and ``wbuffer_convert``
|
||||
in ``<locale>``.
|
||||
|
||||
|
||||
Libc++ Extensions
|
||||
=================
|
||||
|
||||
|
||||
@@ -1580,13 +1580,15 @@ private:
|
||||
|
||||
_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 <class _Tp>
|
||||
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 <class _Tp>
|
||||
_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;
|
||||
@@ -1595,12 +1597,13 @@ _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) {
|
||||
}
|
||||
|
||||
template <class _Tp>
|
||||
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 <class _Tp>
|
||||
_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);
|
||||
@@ -1608,12 +1611,14 @@ _LIBCPP_HIDE_FROM_ABI void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __
|
||||
}
|
||||
|
||||
template <class _Tp>
|
||||
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 <class _Tp>
|
||||
_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);
|
||||
@@ -1622,13 +1627,13 @@ _LIBCPP_HIDE_FROM_ABI shared_ptr<_Tp> atomic_exchange(shared_ptr<_Tp>* __p, shar
|
||||
}
|
||||
|
||||
template <class _Tp>
|
||||
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 <class _Tp>
|
||||
_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);
|
||||
@@ -1646,23 +1651,25 @@ atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, share
|
||||
}
|
||||
|
||||
template <class _Tp>
|
||||
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 <class _Tp>
|
||||
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 <class _Tp>
|
||||
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);
|
||||
}
|
||||
|
||||
# endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS)
|
||||
|
||||
#endif // !defined(_LIBCPP_HAS_NO_THREADS)
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
@@ -830,34 +830,34 @@ public:
|
||||
};
|
||||
|
||||
template<class T>
|
||||
bool atomic_is_lock_free(const shared_ptr<T>* p);
|
||||
bool atomic_is_lock_free(const shared_ptr<T>* p); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
shared_ptr<T> atomic_load(const shared_ptr<T>* p);
|
||||
shared_ptr<T> atomic_load(const shared_ptr<T>* p); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
shared_ptr<T> atomic_load_explicit(const shared_ptr<T>* p, memory_order mo);
|
||||
shared_ptr<T> atomic_load_explicit(const shared_ptr<T>* p, memory_order mo); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
void atomic_store(shared_ptr<T>* p, shared_ptr<T> r);
|
||||
void atomic_store(shared_ptr<T>* p, shared_ptr<T> r); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
void atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo);
|
||||
void atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
shared_ptr<T> atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r);
|
||||
shared_ptr<T> atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
shared_ptr<T>
|
||||
atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo);
|
||||
atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
bool
|
||||
atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w);
|
||||
atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
bool
|
||||
atomic_compare_exchange_strong( shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w);
|
||||
atomic_compare_exchange_strong( shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
template<class T>
|
||||
bool
|
||||
atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v, // Deprecated in C++20, removed in C++26
|
||||
shared_ptr<T> w, memory_order success,
|
||||
memory_order failure);
|
||||
template<class T>
|
||||
bool
|
||||
atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v, // Deprecated in C++20, removed in C++26
|
||||
shared_ptr<T> w, memory_order success,
|
||||
memory_order failure);
|
||||
// Hash support
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_strong(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> v(new int(3));
|
||||
std::shared_ptr<int> w(new int(2));
|
||||
// expected-warning@+1 {{'atomic_compare_exchange_strong<int>' is deprecated}}
|
||||
std::ignore = std::atomic_compare_exchange_strong(&p, &v, w);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w, memory_order success,
|
||||
// memory_order failure); // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> v(new int(3));
|
||||
std::shared_ptr<int> w(new int(2));
|
||||
// expected-warning@+2 {{'atomic_compare_exchange_strong_explicit<int>' is deprecated}}
|
||||
std::ignore =
|
||||
std::atomic_compare_exchange_strong_explicit(&p, &v, w, std::memory_order_seq_cst, std::memory_order_seq_cst);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
int main(int, char**) {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> v(new int(3));
|
||||
std::shared_ptr<int> w(new int(2));
|
||||
// expected-warning@+1 {{'atomic_compare_exchange_weak<int>' is deprecated}}
|
||||
std::ignore = std::atomic_compare_exchange_weak(&p, &v, w);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w, memory_order success,
|
||||
// memory_order failure); // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> v(new int(3));
|
||||
std::shared_ptr<int> w(new int(2));
|
||||
// expected-warning@+2 {{'atomic_compare_exchange_weak_explicit<int>' is deprecated}}
|
||||
std::ignore =
|
||||
std::atomic_compare_exchange_weak_explicit(&p, &v, w, std::memory_order_seq_cst, std::memory_order_seq_cst);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> r(new int(3));
|
||||
// expected-warning@+1 {{'atomic_exchange<int>' is deprecated}}
|
||||
std::ignore = std::atomic_exchange(&p, r);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(4));
|
||||
std::shared_ptr<int> r(new int(3));
|
||||
// expected-warning@+1 {{'atomic_exchange_explicit<int>' is deprecated}}
|
||||
std::ignore = std::atomic_exchange_explicit(&p, r, std::memory_order_seq_cst);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template<class T>
|
||||
// bool
|
||||
// atomic_is_lock_free(const shared_ptr<T>* p); // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
const std::shared_ptr<int> p(new int(3));
|
||||
// expected-warning@+1 {{'atomic_is_lock_free<int>' is deprecated}}
|
||||
std::ignore = std::atomic_is_lock_free(&p);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_load(const shared_ptr<T>* p) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p(new int(3));
|
||||
// expected-warning@+1 {{'atomic_load<int>' is deprecated}}
|
||||
std::ignore = std::atomic_load(&p);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_load_explicit(const shared_ptr<T>* p, memory_order mo) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <tuple>
|
||||
|
||||
void test() {
|
||||
const std::shared_ptr<int> p(new int(3));
|
||||
// expected-warning@+1 {{'atomic_load_explicit<int>' is deprecated}}
|
||||
std::ignore = std::atomic_load_explicit(&p, std::memory_order_relaxed);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// void
|
||||
// atomic_store(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <memory>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p;
|
||||
std::shared_ptr<int> r(new int(3));
|
||||
// expected-warning@+1 {{'atomic_store<int>' is deprecated}}
|
||||
std::atomic_store(&p, r);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
// <memory>
|
||||
|
||||
// shared_ptr
|
||||
|
||||
// template <class T>
|
||||
// void
|
||||
// atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo) // Deprecated in C++20, removed in C++26
|
||||
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
|
||||
void test() {
|
||||
std::shared_ptr<int> p;
|
||||
std::shared_ptr<int> r(new int(3));
|
||||
// expected-warning@+1 {{'atomic_store_explicit<int>' is deprecated}}
|
||||
std::atomic_store_explicit(&p, r, std::memory_order_seq_cst);
|
||||
}
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -15,7 +17,7 @@
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_strong(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w);
|
||||
// shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -16,7 +18,7 @@
|
||||
// bool
|
||||
// atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w, memory_order success,
|
||||
// memory_order failure);
|
||||
// memory_order failure); // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -15,7 +17,7 @@
|
||||
// template <class T>
|
||||
// bool
|
||||
// atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w);
|
||||
// shared_ptr<T> w); // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -16,7 +18,7 @@
|
||||
// bool
|
||||
// atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v,
|
||||
// shared_ptr<T> w, memory_order success,
|
||||
// memory_order failure);
|
||||
// memory_order failure); // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r)
|
||||
// atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r)
|
||||
// atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template<class T>
|
||||
// bool
|
||||
// atomic_is_lock_free(const shared_ptr<T>* p);
|
||||
// atomic_is_lock_free(const shared_ptr<T>* p); // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_load(const shared_ptr<T>* p)
|
||||
// atomic_load(const shared_ptr<T>* p) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// shared_ptr<T>
|
||||
// atomic_load_explicit(const shared_ptr<T>* p, memory_order mo)
|
||||
// atomic_load_explicit(const shared_ptr<T>* p, memory_order mo) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// void
|
||||
// atomic_store(shared_ptr<T>* p, shared_ptr<T> r)
|
||||
// atomic_store(shared_ptr<T>* p, shared_ptr<T> r) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX26_REMOVED_SHARED_PTR_ATOMICS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
// UNSUPPORTED: no-threads
|
||||
|
||||
// <memory>
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
// template <class T>
|
||||
// void
|
||||
// atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo)
|
||||
// atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo) // Deprecated in C++20, removed in C++26
|
||||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
|
||||
Reference in New Issue
Block a user