On 13 November 2015 at 23:53, David Edelsohn <dje....@gmail.com> wrote: > On Fri, Nov 13, 2015 at 1:40 PM, David Edelsohn <dje....@gmail.com> wrote: >> http://www.cplusplus.com/reference/string/basic_string/reserve/ >> >> "Note that the resulting string capacity may be equal or greater than n." >> >> The current testcase verifies that the capacity is exactly equal to >> the length of the string or reserve value, but the standard allows the >> capacity to be larger. On AIX, the capacity is larger and the >> testcase incorrectly fails. >> >> Linux x86-64: >> i: 4 >> str.length: 4 >> str.capacity: 4 >> str.capacity: 12 >> str.capacity: 8 >> str.capacity: 4 >> >> AIX: >> i: 4 >> str.length: 4 >> str.capacity: 7 <-- i >> str.capacity: 14 <-- i*3 >> str.capacity: 8 <-- i*2 >> str.capacity: 7 <-- default >> >> * 21_strings/basic_string/capacity/wchar_t/18654.cc: Verify the > > Jonathan, > > AIX has 2-byte wchar_t in 32 bit mode, which seems to be the cause of > all of the libstdc++ testsuite wchar_t failures. If GCC libstdc++ is > suppose to shrink-to-fit, how should the testcases be fixed?
It's shrink-to-fit, but not below a minimum size, which depends on sizeof(wchar_t). Something like https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=63f5425911daddb9a328565cb0acc3b0f30144fa#patch81 would work for both old and new string ABIs, I'll prepare an equivalent patch for the wchar_t test case.