On Sun, 13 Aug 2023 at 14:27, François Dumont via Libstdc++ <libstd...@gcc.gnu.org> wrote: > > Here is the fixed patch tested in all 3 modes: > > - _GLIBCXX_USE_DUAL_ABI > > - !_GLIBCXX_USE_DUAL_ABI && !_GLIBCXX_USE_CXX11_ABI > > - !_GLIBCXX_USE_DUAL_ABI && _GLIBCXX_USE_CXX11_ABI > > I don't know what you have in mind for the change below but I wanted to > let you know that I tried to put COW std::basic_string into a nested > __cow namespace when _GLIBCXX_USE_CXX11_ABI. But it had more impact on > string-inst.cc so I preferred the macro substitution approach.
I was thinking of implementing the necessary special members functions of __cow_string directly, so they are ABI compatible with the COW std::basic_string but don't actually reuse the code. That would mean we don't need to compile and instantiate the whole COW string just to use a few members from it. But that can be done later, the macro approach seems OK for now. > > There are some test failing when !_GLIBCXX_USE_CXX11_ABI that are > unrelated with my changes. I'll propose fixes in coming days. Which tests? I run the entire testsuite with -D_GLIBCXX_USE_CXX11_ABI=0 several times per day and I'm not seeing failures. I'll review the patch ASAP, thanks for working on it.