[PATCH] Add initial version of C++17 <memory_resource> header

Jonathan Wakely jwakely@redhat.com
Wed Jul 25 23:38:00 GMT 2018


On 25/07/18 21:23 +0100, Jonathan Wakely wrote:
>On 25/07/18 12:01 +0100, Jonathan Wakely wrote:
>>On 24/07/18 22:12 +0100, Jonathan Wakely wrote:
>>>This is missing the synchronized_pool_resource and
>>>unsynchronized_pool_resource classes but is otherwise complete.
>>>
>>>This is a new implementation, not based on the existing code in
>>><experimental/memory_resource>, but memory_resource and
>>>polymorphic_allocator ended up looking almost the same anyway.
>>>
>>>The constant_init kluge in src/c++17/memory_resource.cc is apparently
>>>due to Richard Smith and ensures that the objects are constructed during
>>>constant initialiation phase and not destroyed (because the
>>>constant_init destructor doesn't destroy the union member and the
>>>storage is not reused).
>>>
>>>	* config/abi/pre/gnu.ver: Export new symbols.
>>>	* configure: Regenerate.
>>>	* include/Makefile.am: Add new <memory_resource> header.
>>>	* include/Makefile.in: Regenerate.
>>>	* include/precompiled/stdc++.h: Include <memory_resource> for C++17.
>>>	* include/std/memory_resource: New header.
>>>	(memory_resource, polymorphic_allocator, new_delete_resource)
>>>	(null_memory_resource, set_default_resource, get_default_resource)
>>>	(pool_options, monotonic_buffer_resource): Define.
>>>	* src/Makefile.am: Add c++17 directory.
>>>	* src/Makefile.in: Regenerate.
>>>	* src/c++11/Makefile.am: Fix comment.
>>>	* src/c++17/Makefile.am: Add makefile for new sub-directory.
>>>	* src/c++17/Makefile.in: Generate.
>>>	* src/c++17/memory_resource.cc: New.
>>>	(newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
>>>	(default_res, new_delete_resource, null_memory_resource)
>>>	(set_default_resource, get_default_resource): Define.
>>>	* testsuite/20_util/memory_resource/1.cc: New test.
>>>	* testsuite/20_util/memory_resource/2.cc: New test.
>>>	* testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
>>>	* testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
>>>	* testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
>>>	* testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
>>>	* testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
>>>	New test.
>>>	* testsuite/20_util/polymorphic_allocator/1.cc: New test.
>>>	* testsuite/20_util/polymorphic_allocator/resource.cc: New test.
>>>	* testsuite/20_util/polymorphic_allocator/select.cc: New test.
>>>	* testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
>>>	Define concrete memory resource for testing.
>>>	(__gnu_test::default_resource_mgr): Define RAII helper for changing
>>>	default resource.
>>>
>>>Tested powerpc64le-linux, committed to trunk.
>>
>>I missed a change to acinclude.m4 that should have gone with this
>>patch. Now also committed to trunk.
>
>One of the tests also needs this fix.

And another correction to the same test.

Tested powerpc-ibm-aix7.2.0.0, committed to trunk.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 995 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20180725/563cb9b7/attachment.bin>


More information about the Libstdc++ mailing list