PR libstdc++/45093 avoid warnings for _M_destroy_node
authorJonathan Wakely <jwakely@redhat.com>
Mon, 13 Aug 2018 18:54:43 +0000 (19:54 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 13 Aug 2018 18:54:43 +0000 (19:54 +0100)
PR libstdc++/45093
* include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
Combine definitions to avoid --detect-odr-violations warning.

From-SVN: r263516

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_tree.h

index 5f4e8221ab3aabf4e7c791af62da9343456aae4c..312f39c41ba0093c2d3f2e85ff5d8edd42a97eca 100644 (file)
@@ -1,5 +1,9 @@
 2018-08-13  Jonathan Wakely  <jwakely@redhat.com>
 
+       PR libstdc++/45093
+       * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
+       Combine definitions to avoid --detect-odr-violations warning.
+
        * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
        __is_pow2 to check for valid alignment. Avoid branching when rounding
        size to multiple of alignment.
index 0544f99f9ab4d015a7619bf959a8d2fb4c5877d9..09e8d758873ab5d0b700a196e6d6fe3879f133b4 100644 (file)
@@ -626,10 +626,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _M_construct_node(__tmp, __x);
        return __tmp;
       }
-
-      void
-      _M_destroy_node(_Link_type __p)
-      { get_allocator().destroy(__p->_M_valptr()); }
 #else
       template<typename... _Args>
        void
@@ -658,14 +654,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          _M_construct_node(__tmp, std::forward<_Args>(__args)...);
          return __tmp;
        }
+#endif
 
       void
-      _M_destroy_node(_Link_type __p) noexcept
+      _M_destroy_node(_Link_type __p) _GLIBCXX_NOEXCEPT
       {
+#if __cplusplus < 201103L
+       get_allocator().destroy(__p->_M_valptr());
+#else
        _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr());
        __p->~_Rb_tree_node<_Val>();
-      }
 #endif
+      }
 
       void
       _M_drop_node(_Link_type __p) _GLIBCXX_NOEXCEPT