PR libstdc++/87061 remove pmr type aliases for COW strings
The pmr aliases for basic_string and match_results are incompatible with the gcc4-compatible ABI because the Copy-On-Write basic_string class doesn't support C++11 allocators. PR libstdc++/87061 * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI] (experimental::pmr::match_results, experimental::pmr::cmatch) (experimental::pmr::smatch, experimental::pmr::wcmatch) (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI, because COW strings don't support C++11 allocator model. * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI] (experimental::pmr::basic_string, experimental::pmr::string) (experimental::pmr::u16string, experimental::pmr::u32string) (experimental::pmr::wstring): Likewise. * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results) (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise. * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string) (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise. * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require cxx11-abi. * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise. From-SVN: r263791
This commit is contained in:
parent
af55b3af33
commit
1bc7a28f94
|
@ -1,5 +1,23 @@
|
|||
2018-08-22 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/87061
|
||||
* include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
|
||||
(experimental::pmr::match_results, experimental::pmr::cmatch)
|
||||
(experimental::pmr::smatch, experimental::pmr::wcmatch)
|
||||
(experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
|
||||
because COW strings don't support C++11 allocator model.
|
||||
* include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
|
||||
(experimental::pmr::basic_string, experimental::pmr::string)
|
||||
(experimental::pmr::u16string, experimental::pmr::u32string)
|
||||
(experimental::pmr::wstring): Likewise.
|
||||
* include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
|
||||
(pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
|
||||
* include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
|
||||
(pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
|
||||
* testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
|
||||
cxx11-abi.
|
||||
* testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
|
||||
|
||||
PR libstdc++/78448
|
||||
* include/bits/deque.tcc (deque::_M_range_initialize): Use
|
||||
_S_check_init_len to check size.
|
||||
|
|
|
@ -44,6 +44,7 @@ namespace experimental
|
|||
{
|
||||
inline namespace fundamentals_v2
|
||||
{
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
namespace pmr
|
||||
{
|
||||
template<typename _BidirectionalIterator>
|
||||
|
@ -57,7 +58,7 @@ namespace pmr
|
|||
typedef match_results<wstring::const_iterator> wsmatch;
|
||||
|
||||
} // namespace pmr
|
||||
|
||||
#endif
|
||||
} // namespace fundamentals_v2
|
||||
} // namespace experimental
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
|
|
|
@ -62,6 +62,7 @@ inline namespace fundamentals_v2
|
|||
__cont.end());
|
||||
}
|
||||
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
namespace pmr
|
||||
{
|
||||
// basic_string using polymorphic allocator in namespace pmr
|
||||
|
@ -77,6 +78,7 @@ inline namespace fundamentals_v2
|
|||
typedef basic_string<wchar_t> wstring;
|
||||
|
||||
} // namespace pmr
|
||||
#endif
|
||||
} // namespace fundamentals_v2
|
||||
} // namespace experimental
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
#include <bits/regex.h>
|
||||
#include <bits/regex_executor.h>
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
|
||||
#include <memory_resource>
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
#include <bits/basic_string.h>
|
||||
#include <bits/basic_string.tcc>
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// { dg-options "-std=gnu++17" }
|
||||
// { dg-do compile { target c++17 } }
|
||||
// { dg-require-effective-target cxx11-abi }
|
||||
|
||||
#include <string>
|
||||
#include <memory_resource>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// { dg-options "-std=gnu++17" }
|
||||
// { dg-do compile { target c++17 } }
|
||||
// { dg-require-effective-target cxx11-abi }
|
||||
|
||||
#include <regex>
|
||||
#include <memory_resource>
|
||||
|
|
Loading…
Reference in New Issue