[gcc r16-1411] libstdc++: Fix new <sstream> tests for COW std::string ABI
Jonathan Wakely
redi@gcc.gnu.org
Wed Jun 11 09:32:37 GMT 2025
https://gcc.gnu.org/g:bec57be12d91be684dd7e60ff7446513e96d4481
commit r16-1411-gbec57be12d91be684dd7e60ff7446513e96d4481
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Jun 10 10:52:13 2025 +0100
libstdc++: Fix new <sstream> tests for COW std::string ABI
The std::basic_stringbuf::get_allocator() member is only available for
the SSO std::string ABI.
libstdc++-v3/ChangeLog:
* testsuite/27_io/basic_istringstream/cons/char/string_view.cc:
Only check get_allocator() for new string ABI.
* testsuite/27_io/basic_ostringstream/cons/char/string_view.cc:
Likewise.
* testsuite/27_io/basic_stringbuf/cons/char/string_view.cc:
Likewise.
* testsuite/27_io/basic_stringstream/cons/char/string_view.cc:
Likewise.
Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
Diff:
---
.../testsuite/27_io/basic_istringstream/cons/char/string_view.cc | 6 ++++++
.../testsuite/27_io/basic_ostringstream/cons/char/string_view.cc | 6 ++++++
.../testsuite/27_io/basic_stringbuf/cons/char/string_view.cc | 6 ++++++
.../testsuite/27_io/basic_stringstream/cons/char/string_view.cc | 6 ++++++
4 files changed, 24 insertions(+)
diff --git a/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc b/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc
index 27f65aa94375..f25b538b2fa8 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc
@@ -151,20 +151,26 @@ void test03()
alloc_type a{1};
{
istringstream_with_alloc<alloc_type> istr(cstr, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( istr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{istr.str()} == cstr );
VERIFY( istr.get() == cstr.s[0] );
}
{
istringstream_with_alloc<alloc_type> istr(cstr, std::ios::in, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( istr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{istr.str()} == cstr );
VERIFY( istr.get() == cstr.s[0] );
VERIFY( istr.rdbuf()->sputc('X') != 'X' );
}
{
istringstream_with_alloc<alloc_type> istr(cstr, std::ios::out, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( istr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{istr.str()} == cstr );
VERIFY( istr.get() == cstr.s[0] );
VERIFY( istr.rdbuf()->sputc('X') == 'X' );
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc b/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc
index 731e97e4aa2c..6279c19e54c5 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc
@@ -149,21 +149,27 @@ void test03()
alloc_type a{1};
{
ostringstream_with_alloc<alloc_type> ostrstr(cstr, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{ostrstr.str()} == cstr );
VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
VERIFY( ostrstr.put('X').good() );
}
{
ostringstream_with_alloc<alloc_type> ostrstr(cstr, std::ios::in, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{ostrstr.str()} == cstr );
VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
VERIFY( ostrstr.put('X').good() );
}
{
ostringstream_with_alloc<alloc_type> ostrstr(cstr, std::ios::out, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{ostrstr.str()} == cstr );
VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc b/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc
index 7843269c48fd..14278b3faf83 100644
--- a/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc
@@ -161,20 +161,26 @@ void test03()
alloc_type a{1};
{
stringbuf_with_alloc<alloc_type> sbuf(cstr, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( sbuf.get_allocator() == a );
+#endif
VERIFY( string_view{sbuf.str()} == cstr );
VERIFY( sbuf.sgetc() == cstr.s[0] );
}
{
stringbuf_with_alloc<alloc_type> sbuf(cstr, std::ios::in, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( sbuf.get_allocator() == a );
+#endif
VERIFY( string_view{sbuf.str()} == cstr );
VERIFY( sbuf.sgetc() == cstr.s[0] );
VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
}
{
stringbuf_with_alloc<alloc_type> sbuf(cstr, std::ios::out, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( sbuf.get_allocator() == a );
+#endif
VERIFY( string_view{sbuf.str()} == cstr );
VERIFY( sbuf.sputc('X') == 'X' );
VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc b/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc
index 72085230442f..1c9eceaa55cf 100644
--- a/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc
@@ -160,20 +160,26 @@ void test03()
alloc_type a{1};
{
stringstream_with_alloc<alloc_type> strstr(cstr, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( strstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{strstr.str()} == cstr );
VERIFY( strstr.get() == cstr.s[0] );
}
{
stringstream_with_alloc<alloc_type> strstr(cstr, std::ios::in, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( strstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{strstr.str()} == cstr );
VERIFY( strstr.get() == cstr.s[0] );
VERIFY( strstr.put('X').rdstate() == strstr.badbit );
}
{
stringstream_with_alloc<alloc_type> strstr(cstr, std::ios::out, a);
+#if _GLIBCXX_USE_CXX11_ABI
VERIFY( strstr.rdbuf()->get_allocator() == a );
+#endif
VERIFY( string_view{strstr.str()} == cstr );
VERIFY( strstr.put('X').good() );
VERIFY( strstr.get() == stringstream::traits_type::eof());
More information about the Libstdc++-cvs
mailing list