From 8a7f364afd86a4c4c2c747ae9cb4216fe992acc8 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 25 Aug 2021 12:36:42 -0400 Subject: [PATCH 01/17] basic_string::reserve(n) semantics are not available in DTS Various tests were added upstream 2020-08-06 as part of: "libstdc++: Implement P0966 std::string::reserve should not shrink" https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=140cf935cd118f7208b7c3826a8b9d50936242f0 std::string and std::wstring are instantiated in the system libstdc++.so via explicit instantiation definitions, so the new basic_string::reserve(n) semantics are not available in DTS. Update/disable the pertinent parts of the tests to reflect the behavior when run against the system libstdc++.so. --- .../testsuite/21_strings/basic_string/capacity/char/1.cc | 6 ------ .../21_strings/basic_string/capacity/char/18654.cc | 2 +- .../testsuite/21_strings/basic_string/capacity/wchar_t/1.cc | 6 ------ .../21_strings/basic_string/capacity/wchar_t/18654.cc | 2 +- 4 files changed, 2 insertions(+), 14 deletions(-) diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc index eea69771f..64187718d 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc @@ -41,12 +41,6 @@ void test01() sz01 = str01.capacity(); VERIFY( sz01 < sz02 ); - // P0966: reserve should not shrink - str01.reserve(100); - sz01 = str01.capacity(); - str01.reserve(sz01 - 1); - VERIFY( str01.capacity() == sz01 ); - sz01 = str01.size() + 5; str01.resize(sz01); sz02 = str01.size(); diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc index 02ce78ea6..3a7352123 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc @@ -51,7 +51,7 @@ void test01() VERIFY( cap >= 3 * i ); str.reserve(2 * i); - VERIFY( str.capacity() == cap ); + VERIFY( str.capacity() == 2 * i ); #if __cplusplus <= 201703L str.reserve(); diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc index f01a27e8c..70915a94d 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc @@ -41,12 +41,6 @@ void test01() sz01 = str01.capacity(); VERIFY( sz01 < sz02 ); - // P0966: reserve should not shrink - str01.reserve(100); - sz01 = str01.capacity(); - str01.reserve(sz01 - 1); - VERIFY( str01.capacity() == sz01 ); - sz01 = str01.size() + 5; str01.resize(sz01); sz02 = str01.size(); diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc index 267fd198b..c9711a294 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc @@ -51,7 +51,7 @@ void test01() VERIFY( cap >= 3 * i ); str.reserve(2 * i); - VERIFY( str.capacity() == cap ); + VERIFY( str.capacity() == 2 * i ); #if __cplusplus <= 201703L str.reserve(); -- 2.31.1