aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2019-05-22 21:29:39 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2019-05-22 21:29:39 +0100
commit52ea1caf28cdcdff8c9b2be844e3f1be6c369f16 (patch)
tree63547ce3ad83431014ab3c999d5b8385aee6ee2d /gcc
parent7d277e1796e2a54dd3bb0aea1793a2e0e5b45962 (diff)
downloadgcc-52ea1caf28cdcdff8c9b2be844e3f1be6c369f16.zip
gcc-52ea1caf28cdcdff8c9b2be844e3f1be6c369f16.tar.gz
gcc-52ea1caf28cdcdff8c9b2be844e3f1be6c369f16.tar.bz2
PR libstdc++/77691 fix resource_adaptor failures due to max_align_t bugs
Remove the hardcoded whitelist of allocators expected to return memory aligned to alignof(max_align_t), because that doesn't work when the platform's malloc() and GCC's max_align_t do not agree what the largest fundamental alignment is. It's also sub-optimal for user-defined allocators that return memory suitable for any fundamental alignment. Instead use a hardcoded list of alignments that are definitely supported by the platform malloc, and use a copy of the allocator rebound to a POD type with the requested alignment. Only allocate an oversized buffer to use with std::align for alignments larger than any of the hardcoded values. For 32-bit Solaris x86 do not include alignof(max_align_t) in the hardcoded values. PR libstdc++/77691 * include/experimental/memory_resource: Add system header pragma. (__resource_adaptor_common::__guaranteed_alignment): Remove. (__resource_adaptor_common::_Types) (__resource_adaptor_common::__new_list) (__resource_adaptor_common::_New_list) (__resource_adaptor_common::_Alignments) (__resource_adaptor_common::_Fund_align_types): New utilities for creating a list of types with fundamental alignments. (__resource_adaptor_imp::do_allocate): Call new _M_allocate function. (__resource_adaptor_imp::do_deallocate): Call new _M_deallocate function. (__resource_adaptor_imp::_M_allocate): New function that first tries to use an allocator rebound to a type with a fundamental alignment. (__resource_adaptor_imp::_M_deallocate): Likewise for deallocation. * testsuite/experimental/memory_resource/new_delete_resource.cc: Adjust expected allocation sizes. * testsuite/experimental/memory_resource/resource_adaptor.cc: Remove xfail. From-SVN: r271522
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions