diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2021-11-30 16:07:21 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2021-11-30 23:10:04 +0000 |
commit | be30fc4ce085ef786f104c6a407ccd44e554cd54 (patch) | |
tree | f58975af9d412e48c8c7c08dfa89669557e9ad32 | |
parent | 675afa21244d58640876da3287d303e376a3b59a (diff) | |
download | gcc-be30fc4ce085ef786f104c6a407ccd44e554cd54.zip gcc-be30fc4ce085ef786f104c6a407ccd44e554cd54.tar.gz gcc-be30fc4ce085ef786f104c6a407ccd44e554cd54.tar.bz2 |
libstdc++: Fix tests that fail with fully-dynamic-string
Fix some tests that assume that a moved-from string is empty, or that
default constructing a string doesn't allocate.
libstdc++-v3/ChangeLog:
* testsuite/21_strings/basic_string/cons/char/moveable.cc: Allow
moved-from string to be non-empty.
* testsuite/21_strings/basic_string/cons/char/moveable2.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
Likewise.
* testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
Construct empty string before setting oom flag.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
Likewise.
8 files changed, 20 insertions, 8 deletions
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc index 5de2a5f..3ba39ec 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc @@ -35,7 +35,9 @@ void test01() std::string c(std::move(b)); VERIFY( c.size() == 1 && c[0] == '1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc index fe91c5a..5804ccb 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc @@ -44,7 +44,9 @@ void test01() tstring c(std::move(b)); VERIFY( c.size() == 1 && c[0] == '1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc index 1caedcc..59d1d77 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc @@ -42,7 +42,9 @@ void test01() tstring c(std::move(b)); VERIFY( c.size() == 1 && c[0] == '1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc index d05afb7..67e25de 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc @@ -35,7 +35,9 @@ void test01() std::wstring c(std::move(b)); VERIFY( c.size() == 1 && c[0] == L'1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc index e301984..c72eb9b 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc @@ -44,7 +44,9 @@ void test01() twstring c(std::move(b)); VERIFY( c.size() == 1 && c[0] == L'1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc index d3e4744..6a2bc27 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc @@ -42,7 +42,9 @@ void test01() tstring c(std::move(b)); VERIFY( c.size() == 1 && c[0] == L'1' ); - VERIFY( b.size() == 0 ); +#if ! _GLIBCXX_FULLY_DYNAMIC_STRING + VERIFY( b.size() == 0 ); // not guaranteed by the standard +#endif } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc index 87d8c2f4..6a3ed55 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc @@ -71,8 +71,8 @@ int main() string s = "PR libstdc++/87749 a string that is longer than a short string"; const auto ptr = s.c_str(); - oom = true; string ss; + oom = true; ss = std::move(s); // allocators are equal, should not allocate new storage VERIFY( ss.c_str() == ptr ); } diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc index 4d744f8..536ca61 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc @@ -72,8 +72,8 @@ int main() string s = L"PR libstdc++/87749 a string that is longer than a short string"; const auto ptr = s.c_str(); - oom = true; string ss; + oom = true; ss = std::move(s); // allocators are equal, should not allocate new storage VERIFY( ss.c_str() == ptr ); } |