aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-10-29 22:47:22 +0000
committerJonathan Wakely <jwakely@redhat.com>2020-10-29 22:47:22 +0000
commit52ddf0d458f063f6c9e07e726f9b46206f71e4c4 (patch)
tree620a0e36d6b7320aac388d5a9021122b58fa6632
parent13feb0234b136fbdc1dbfba3a9663fb4e1043f75 (diff)
downloadgcc-52ddf0d458f063f6c9e07e726f9b46206f71e4c4.zip
gcc-52ddf0d458f063f6c9e07e726f9b46206f71e4c4.tar.gz
gcc-52ddf0d458f063f6c9e07e726f9b46206f71e4c4.tar.bz2
libstdc++: Prevent deprecation warnings from <tr1/shared_ptr>
libstdc++-v3/ChangeLog: * include/tr1/shared_ptr.h (__shared_count, __shared_ptr) (shared_ptr): Add diagnostic pragmas around uses of auto_ptr. * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Adust dg-error line numbers.
-rw-r--r--libstdc++-v3/include/tr1/shared_ptr.h18
-rw-r--r--libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc4
2 files changed, 19 insertions, 3 deletions
diff --git a/libstdc++-v3/include/tr1/shared_ptr.h b/libstdc++-v3/include/tr1/shared_ptr.h
index 4c9372d..4d018df 100644
--- a/libstdc++-v3/include/tr1/shared_ptr.h
+++ b/libstdc++-v3/include/tr1/shared_ptr.h
@@ -321,6 +321,9 @@ namespace tr1
}
}
+#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
// Special case for auto_ptr<_Tp> to provide the strong guarantee.
template<typename _Tp>
explicit
@@ -328,6 +331,8 @@ namespace tr1
: _M_pi(new _Sp_counted_base_impl<_Tp*,
_Sp_deleter<_Tp>, _Lp >(__r.get(), _Sp_deleter<_Tp>()))
{ __r.release(); }
+#pragma GCC diagnostic pop
+#endif
// Throw bad_weak_ptr when __r._M_get_use_count() == 0.
explicit
@@ -583,6 +588,8 @@ namespace tr1
}
#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
// Postcondition: use_count() == 1 and __r.get() == 0
template<typename _Tp1>
explicit
@@ -595,7 +602,7 @@ namespace tr1
_M_refcount = __shared_count<_Lp>(__r);
__enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
}
-
+#pragma GCC diagnostic pop
#endif
template<typename _Tp1>
@@ -629,6 +636,8 @@ namespace tr1
}
#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
template<typename _Tp1>
__shared_ptr&
operator=(std::auto_ptr<_Tp1>& __r)
@@ -636,6 +645,7 @@ namespace tr1
__shared_ptr(__r).swap(*this);
return *this;
}
+#pragma GCC diagnostic pop
#endif
void
@@ -1006,10 +1016,13 @@ namespace tr1
: __shared_ptr<_Tp>(__r) { }
#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
template<typename _Tp1>
explicit
shared_ptr(std::auto_ptr<_Tp1>& __r)
: __shared_ptr<_Tp>(__r) { }
+#pragma GCC diagnostic pop
#endif
template<typename _Tp1>
@@ -1033,6 +1046,8 @@ namespace tr1
}
#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
template<typename _Tp1>
shared_ptr&
operator=(std::auto_ptr<_Tp1>& __r)
@@ -1040,6 +1055,7 @@ namespace tr1
this->__shared_ptr<_Tp>::operator=(__r);
return *this;
}
+#pragma GCC diagnostic pop
#endif
};
diff --git a/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
index c1c5030..6310be7 100644
--- a/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
+++ b/libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
@@ -32,10 +32,10 @@ void test01()
{
X* px = 0;
std::tr1::shared_ptr<X> p1(px); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 554 }
+ // { dg-error "incomplete" "" { target *-*-* } 559 }
std::tr1::shared_ptr<X> p9(ap()); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 593 }
+ // { dg-error "incomplete" "" { target *-*-* } 600 }
}
// Ignore additional diagnostic given with -Wsystem-headers: