On 14 November 2015 at 00:56, Jonathan Wakely wrote: > On 13 November 2015 at 23:53, David Edelsohn wrote: >> On Fri, Nov 13, 2015 at 1:40 PM, David Edelsohn 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. This makes it adapt to the short-string buffer size, rather than making an assumption about sizeof(wchar_t). Committed to trunk. I'll have a look at the other wchar_t failures on AIX.