@@ -43,10 +43,15 @@
#if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
# define _GLIBCXX_LVAL_REF_QUAL &
+# define _GLIBCXX_SSTREAM_ALWAYS_INLINE
#else
# define _GLIBCXX_LVAL_REF_QUAL
+// For symbols that are not exported from libstdc++.so for the COW string ABI.
+# define _GLIBCXX_SSTREAM_ALWAYS_INLINE [[__gnu__::__always_inline__]]
#endif
+
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -251,7 +256,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
return __ret;
}
-#if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+#if __cplusplus > 201703L
+#if _GLIBCXX_USE_CXX11_ABI
#if __cpp_concepts
template<__allocator_like _SAlloc>
basic_string<_CharT, _Traits, _SAlloc>
@@ -275,7 +281,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
_M_sync(_M_string.data(), 0, 0);
return __str;
}
+#endif // cxx11 ABI
+ _GLIBCXX_SSTREAM_ALWAYS_INLINE
basic_string_view<char_type, traits_type>
view() const noexcept
{
@@ -698,7 +706,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
str() const _GLIBCXX_LVAL_REF_QUAL
{ return _M_stringbuf.str(); }
-#if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+#if __cplusplus > 201703L
+#if _GLIBCXX_USE_CXX11_ABI
#if __cpp_concepts
template<__allocator_like _SAlloc>
basic_string<_CharT, _Traits, _SAlloc>
@@ -709,11 +718,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
__string_type
str() &&
{ return std::move(_M_stringbuf).str(); }
+#endif // cxx11 ABI
+ _GLIBCXX_SSTREAM_ALWAYS_INLINE
basic_string_view<char_type, traits_type>
view() const noexcept
{ return _M_stringbuf.view(); }
-#endif
+#endif // C++20
/**
* @brief Setting a new buffer.
@@ -919,7 +930,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
str() const _GLIBCXX_LVAL_REF_QUAL
{ return _M_stringbuf.str(); }
-#if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+#if __cplusplus > 201703L
+#if _GLIBCXX_USE_CXX11_ABI
#if __cpp_concepts
template<__allocator_like _SAlloc>
basic_string<_CharT, _Traits, _SAlloc>
@@ -930,11 +942,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
__string_type
str() &&
{ return std::move(_M_stringbuf).str(); }
+#endif // cxx11 ABI
+ _GLIBCXX_SSTREAM_ALWAYS_INLINE
basic_string_view<char_type, traits_type>
view() const noexcept
{ return _M_stringbuf.view(); }
-#endif
+#endif // C++20
/**
* @brief Setting a new buffer.
@@ -1138,7 +1152,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
str() const _GLIBCXX_LVAL_REF_QUAL
{ return _M_stringbuf.str(); }
-#if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+#if __cplusplus > 201703L
+#if _GLIBCXX_USE_CXX11_ABI
#if __cpp_concepts
template<__allocator_like _SAlloc>
basic_string<_CharT, _Traits, _SAlloc>
@@ -1149,11 +1164,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
__string_type
str() &&
{ return std::move(_M_stringbuf).str(); }
+#endif // cxx11 ABI
+ _GLIBCXX_SSTREAM_ALWAYS_INLINE
basic_string_view<char_type, traits_type>
view() const noexcept
{ return _M_stringbuf.view(); }
-#endif
+#endif // C++20
/**
* @brief Setting a new buffer.
@@ -1215,6 +1232,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
+#undef _GLIBCXX_SSTREAM_ALWAYS_INLINE
#undef _GLIBCXX_LVAL_REF_QUAL
#include <bits/sstream.tcc>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>
@@ -19,7 +19,6 @@
// { dg-options "-std=gnu++2a" }
// { dg-do run { target c++2a } }
-// { dg-require-effective-target cxx11_abi }
#include <sstream>
#include <string_view>