Re: [patch] New std::string implementation

2015-01-06 Thread Rainer Orth
Jonathan Wakely jwak...@redhat.com writes: The powerpc64 ICE is fixed, so I'm committing the std::string ABI transition patch. This replaces our venerable Copy-on-Write std::string with a C++11-conforming* Small-String Optimized std::__cxx11::string. (* It's not quite 100% conforming, as

Re: [patch] New std::string implementation

2015-01-06 Thread Jonathan Wakely
On 06/01/15 10:52 +0100, Rainer Orth wrote: Unfortunately, this patch broke Solaris bootstrap with /bin/ld: libstdc++.so fails to link with ld: fatal: libstdc++-symbols.ver-sun: 5383: symbol 'std::locale::name[abi:cxx11]() const': symbol version conflict l.5383 has

Re: [patch] New std::string implementation

2015-01-06 Thread Rainer Orth
Jonathan Wakely jwak...@redhat.com writes: Drat, I even tried to avoid that conflict, but apparently I thought the letter that comes after 'n' is 'n'! Does this fix it? --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -118,7 +118,7 @@ GLIBCXX_3.4 { #

Re: [patch] New std::string implementation

2015-01-06 Thread Jonathan Wakely
On 06/01/15 13:29 +0100, Rainer Orth wrote: Jonathan Wakely jwak...@redhat.com writes: Drat, I even tried to avoid that conflict, but apparently I thought the letter that comes after 'n' is 'n'! Does this fix it? --- a/libstdc++-v3/config/abi/pre/gnu.ver +++

Re: [patch] New std::string implementation

2014-12-23 Thread Bernd Edlinger
Hello Jonathan, starting with around r218964, New std::string implementation. the following program does no longer link correctly: cat test1.cc #include string int main() {   std::string x;   x.erase(x.begin(), x.end()); } g++ test1.cc /tmp/ccgup1FU.o: In function `main':

Re: [patch] New std::string implementation

2014-12-19 Thread Jonathan Wakely
The powerpc64 ICE is fixed, so I'm committing the std::string ABI transition patch. This replaces our venerable Copy-on-Write std::string with a C++11-conforming* Small-String Optimized std::__cxx11::string. (* It's not quite 100% conforming, as it's missing some allocator features. Of course.

Re: [patch] New std::string implementation

2014-12-19 Thread François Dumont
Hello Great news. However we need the following to make debug/profile modes happy. Shouldn't we use _GLIBCXX_ABI_TAG_CXX11 to tag the __cxx11 namespace ? 2014-12-20 François Dumont fdum...@gcc.gnu.org * include/bits/c++config: inline __cxx11 namespace within namespace

Re: [patch] New std::string implementation

2014-12-19 Thread Jonathan Wakely
This fixes some duplicate symbols which break Darwin bootstrap. Tested x86_64-linux and powerpc64-linux, committed to trunk. commit fa3a5af2feee0f9873ba1a9bdb84148dd122506c Author: Jonathan Wakely jwak...@redhat.com Date: Fri Dec 19 23:44:01 2014 + Fix duplicate symbol errors in

Re: [patch] New std::string implementation

2014-12-19 Thread Jonathan Wakely
On 20/12/14 00:52 +0100, François Dumont wrote: Hello Great news. However we need the following to make debug/profile modes happy. Ah, thanks for checking it. Shouldn't we use _GLIBCXX_ABI_TAG_CXX11 to tag the __cxx11 namespace ? No, that is defined to

Re: [patch] New std::string implementation

2014-11-28 Thread Jonathan Wakely
Here's the next version of the std::string rework, this time with 57.1428% more locale facets! The problem is that there are several facet types that use std::string in their public interfaces and as the parameters (or worse, as return types) of virtual functions. It's not possible to overload

Re: [patch] New std::string implementation

2014-11-28 Thread Jonathan Wakely
On 28/11/14 15:24 +, Jonathan Wakely wrote: Tested x86_64-linux with: --target_board=unix\{-m32,\}\{,-D_GLIBCXX_USE_CXX11_ABI=0\} Also tested on powerpc64-linux (where this patch doesn't actually bootstrap due to PR 63573, there's a patch in the PR that's needed) and i686-linux. Oh how

Re: [patch] New std::string implementation

2014-11-18 Thread Richard Biener
On Mon, Nov 17, 2014 at 5:43 PM, Jonathan Wakely jwak...@redhat.com wrote: On 17/11/14 13:06 +0100, Markus Trippelsdorf wrote: On 2014.11.14 at 15:43 +, Jonathan Wakely wrote: Tested on x86_64-linux and powerpc64-linux, also with --disable-libstdcxx11-abi to verify all the incompatible

Re: [patch] New std::string implementation

2014-11-18 Thread Jonathan Wakely
On 18/11/14 10:45 +0100, Richard Biener wrote: Looking at all these issues that just pop up inside libstdc++ I wonder if this whole business will not blow up in our face once out in the wild... I'm trying to ensure that most of the the pain is dealt with inside libstdc++ and so users won't

Re: [patch] New std::string implementation

2014-11-17 Thread Jonathan Wakely
On 14/11/14 15:43 +, Jonathan Wakely wrote: This is the long-awaited ABI break for std::string, replacing our venerable Copy-On-Write implementation with a C++11-conforming Small-String-Optimization implementation (based on Paolo's vstring). This patch fixes move construction and

Re: [patch] New std::string implementation

2014-11-17 Thread Markus Trippelsdorf
On 2014.11.14 at 15:43 +, Jonathan Wakely wrote: Tested on x86_64-linux and powerpc64-linux, also with --disable-libstdcxx11-abi to verify all the incompatible changes can be disabled if needed. On ppc64 I get: FAIL: libstdc++-abi/abi_check FAIL: 27_io/basic_ios/copyfmt/char/1.cc

Re: [patch] New std::string implementation

2014-11-17 Thread Jonathan Wakely
On 17/11/14 13:06 +0100, Markus Trippelsdorf wrote: On 2014.11.14 at 15:43 +, Jonathan Wakely wrote: Tested on x86_64-linux and powerpc64-linux, also with --disable-libstdcxx11-abi to verify all the incompatible changes can be disabled if needed. On ppc64 I get: FAIL:

[patch] New std::string implementation

2014-11-14 Thread Jonathan Wakely
This is the long-awaited ABI break for std::string, replacing our venerable Copy-On-Write implementation with a C++11-conforming Small-String-Optimization implementation (based on Paolo's vstring). The gist of it is adding a second complete std::string implementation that is tagged with

Re: [patch] New std::string implementation

2014-11-14 Thread Christopher Jefferson
Some (very small) questions / cleanups 1) Do you plan on supporting CXX11 ABI on C++03? There is some #if __cplusplus 201103L inside the new basic_string. 2) Is there a need for the #if 0 _M_mutate? I tried bootstrapping on Mac OS X 10.10, and got lots of linking issues, the relevant part

Re: [patch] New std::string implementation

2014-11-14 Thread Jonathan Wakely
On 14/11/14 16:32 +, Christopher Jefferson wrote: Some (very small) questions / cleanups 1) Do you plan on supporting CXX11 ABI on C++03? There is some #if __cplusplus 201103L inside the new basic_string. Yes, the intention is that you get the same std::string implementation independent

Re: [patch] New std::string implementation

2014-11-14 Thread Jonathan Wakely
On 14/11/14 16:42 +, Jonathan Wakely wrote: On 14/11/14 16:32 +, Christopher Jefferson wrote: I tried bootstrapping on Mac OS X 10.10, and got lots of linking issues, the relevant part is:: I might be missing some of the new instantiations, I'll look into that. I am missing some

Re: [patch] New std::string implementation

2014-11-14 Thread Jonathan Wakely
On 14/11/14 16:51 +, Jonathan Wakely wrote: On 14/11/14 16:42 +, Jonathan Wakely wrote: On 14/11/14 16:32 +, Christopher Jefferson wrote: I tried bootstrapping on Mac OS X 10.10, and got lots of linking issues, the relevant part is:: I might be missing some of the new