From: Jonathan Wakely Date: Tue, 10 Jun 2025 09:52:13 +0000 (+0100) Subject: libstdc++: Fix new tests for COW std::string ABI X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bec57be12d91be684dd7e60ff7446513e96d4481;p=thirdparty%2Fgcc.git libstdc++: Fix new 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 --- 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 27f65aa9437..f25b538b2fa 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 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 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 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 731e97e4aa2..6279c19e54c 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 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 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 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 7843269c48f..14278b3faf8 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 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 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 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 72085230442..1c9eceaa55c 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 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 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 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());