diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-10-24 16:29:41 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-10-24 16:29:41 +0100 |
commit | 75c6a925dab5b7af9ab47c10906cb0e140261cc2 (patch) | |
tree | 7118ea8e1c16b8855187cdfe10af00f75cff4891 /gcc/ipa-inline-transform.c | |
parent | bf037872d3cd0928bea72335dc7a138a0b2fb43c (diff) | |
download | gcc-75c6a925dab5b7af9ab47c10906cb0e140261cc2.zip gcc-75c6a925dab5b7af9ab47c10906cb0e140261cc2.tar.gz gcc-75c6a925dab5b7af9ab47c10906cb0e140261cc2.tar.bz2 |
Revert ABI changes to std::allocator in C++20
The recent C++20 changes to remove the std::allocator<void> explicit
specialization and the destructor in the std::allocator primary template
change the result of some is_trivially_xxx type traits. To avoid those
changes, this patch restores the explicit specialization and the
destructor.
In order to meet the C++20 requirements the std::allocator<void>
explicit specialization must provide the same interface as the primary
template (except for the unusable allocate and deallocate member
functions) and the destructor in the primary template must be constexpr.
* include/bits/allocator.h (allocator<void>): Restore the explicit
specialization for C++20, but make its API consistent with the primary
template.
(allocator::~allocator()): Restore the destructor for C++20, but make
it constexpr.
* testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
* testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
* testsuite/20_util/allocator/void.cc: Check that constructors and
destructors are trivial. Check for converting constructor in C++20.
* testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
dejagnu target selector.
* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
From-SVN: r277410
Diffstat (limited to 'gcc/ipa-inline-transform.c')
0 files changed, 0 insertions, 0 deletions