aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-phiopt.cc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-11-15 21:45:16 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2024-12-03 21:34:25 +0000
commit84b40a1c1b2c9e3feb546838fa988d653eed0755 (patch)
treef74e19a1a417b0e2ad1c49a2e5b12e9b01e6bdec /gcc/tree-ssa-phiopt.cc
parentf29d1b5836790ec795cb51bcfe25f7270b3e9f30 (diff)
downloadgcc-84b40a1c1b2c9e3feb546838fa988d653eed0755.zip
gcc-84b40a1c1b2c9e3feb546838fa988d653eed0755.tar.gz
gcc-84b40a1c1b2c9e3feb546838fa988d653eed0755.tar.bz2
libstdc++: Add fancy pointer support to std::forward_list [PR57272]
This takes a very similar approach to the changes for std::list. libstdc++-v3/ChangeLog: PR libstdc++/57272 * include/bits/forward_list.h (_GLIBCXX_USE_ALLOC_PTR_FOR_LIST): Define. (_Fwd_list_node_base::_M_base_ptr): New member functions. (_Fwd_list_node::_M_node_ptr): New member function. (_Fwd_list_iterator, _Fwd_list_const_iterator): Make internal member functions and data member private. Declare forward_list and _Fwd_list_base as friends. (__fwdlist::_Node_base, __fwdlist::_Node, __fwdlist::_Iterator): New class templates. (__fwdlist::_Node_traits): New class template. (_Fwd_list_base): Use _Node_traits to get types. Use _Base_ptr instad of _Fwd_list_node_base*. Use _M_base_ptr() instead of taking address of head node. (forward_list): Likewise. (_Fwd_list_base::_M_get_node): Do not define for versioned namespace. (_Fwd_list_base::_M_put_node): Only convert pointer if needed. (_Fwd_list_base::_M_create_node): Use __allocate_guarded_obj. (_Fwd_list_base::_M_destroy_node): New member function. * include/bits/forward_list.tcc (_Fwd_list_base::_M_insert_after) (forward_list::_M_splice_after, forward_list::insert_after): Use const_iterator::_M_const_cast() instead of casting pointers. (_Fwd_list_base::_M_erase_after): Use _M_destroy_node. (forward_list::remove, forward_list::remove_if): Only do downcasts when accessing the value. (forward_list::sort): Likewise. * testsuite/23_containers/forward_list/capacity/1.cc: Check max_size for new node type. * testsuite/23_containers/forward_list/capacity/node_sizes.cc: New test. * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr.cc: New test. * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr_ignored.cc: New test.
Diffstat (limited to 'gcc/tree-ssa-phiopt.cc')
0 files changed, 0 insertions, 0 deletions