2026-02-03 Marek Polacek * include/bits/new_allocator.h (__new_allocator::allocate, __new_allocator::deallocate): Add missing constexpr. 2026-02-03 Jakub Jelinek PR libstdc++/123921 * include/bits/version.def (define_static): New with the same values as reflection. * include/bits/version.h: Regenerate. * include/std/meta: Define also __glibcxx_want_define_static before including bits/version.h. 2026-02-02 Patrick Palka * include/bits/regex_executor.tcc (_ExecutorFrameBase): Zero-initialize _M_byte0. (_ExecutorFrameBase::_M_end): Rename to ... (_ExecutorFrameBase::_M_subexpr_end): ... this. (_Executor::_M_handle_subexpr_begin): Remove now redundant clearing of _M_subexpr_end. (_Executor::_M_handle_subexpr_end): Adjust after renaming. (_Executor::_M_dfs) : Likewise. 2026-01-31 Patrick Palka * include/bits/regex_executor.tcc (_ExecutorFrameBase): Add #pragma GCC diagnostic to suppress -Wpedantic warning about anonymous structs. 2026-01-30 Patrick Palka * include/bits/regex_executor.tcc (__detail::_Executor::_M_node) [__OPTIMIZE__]: Add [[gnu::always_inline]] attribute. Declare inline. 2026-01-30 Patrick Palka PR libstdc++/86164 * include/bits/regex_executor.tcc (__detail::_ExecutorFrameOpcode): Remove _S_fopcode_restore_current. (__detail::_Executor::_M_handle_repeat): Pass _M_current when pushing a fallback_next or fallback_rep_once_more frame. (__detail::_Executor::_M_handle_match): Don't push a restore_current frame. (__detail::_Executor::_M_handle_backref): Likewise and simplify accordingly. (__detail::_Executor::_M_handle_alternative): Pass _M_current when pushing a fallback_next or posix_alternative frame. (__detail::_Executor::_M_dfs) : Restore _M_current. : Likewise. : Likewise. : Remove. 2026-01-30 Patrick Palka PR libstdc++/86164 * include/bits/regex.h (__detail::_Executor): Use inline namespace _V2. * include/bits/regex_executor.h (__detail::_ExecutorFrame): Declare. (__detail::_Executor): Use inline namespace _V2. (__detail::_Executor::_M_node): Declare. (__detail::_Executor::_M_frames): New data member. * include/bits/regex_executor.tcc (__detail::_ExecutorFrameOpcode): New. (__detail::_ExecutorFrameBase): New. (__detail::_ExecutorFrame): New. (__detail::_Executor): Use inline namespace _V2. (__detail::_Executor::_M_rep_once_more): Replace recursive _M_dfs calls with an _S_opcode_next frame push, and any work after such calls with an appropriate frame push. (__detail::_M_handle_repeat): Likewise. (__detail::_M_handle_subexpr_begin): Likewise. (__detail::_M_handle_subexpr_end): Likewise. (__detail::_M_handle_line_begin_assertion): Likewise. (__detail::_M_handle_line_end_assertion): Likewise. (__detail::_M_handle_word_boundary): Likewise. (__detail::_M_handle_subexpr_lookahead): Likewise. (__detail::_M_handle_match): Likewise. (__detail::_M_handle_backref): Likewise. (__detail::_M_handle_accept): Likewise. (__detail::_M_handle_alternative): Likewise. (__detail::_M_node): Factored out from _M_dfs. (__detail::_M_dfs): Push an initial frame to _M_frames that visits the starting node and pass this stack each subroutine. Pop the latest _ExecutorFrame from _M_frames and handle appropriately according to its _ExecutorFrameOpcode. Loop until _M_frames is empty. 2026-01-29 Jonathan Wakely * include/std/expected (__expected::__trivially_replaceable) (__expected::__usable_for_assign) (__expected::__usable_for_trivial_assign) (__expected::__can_reassign_type): New concepts. (expected::operator=): Adjust constraints on existing overloads and add defaulted overload. (expected::operator=): Likewise. * testsuite/20_util/expected/requirements.cc: Check for trivial and nothrow properties of assignments. 2026-01-29 Jonathan Wakely * include/std/source_location: Check __glibcxx_contracts instead of __cpp_lib_contracts. * testsuite/18_support/contracts/includes.cc: New test. 2026-01-29 vspefs * src/c++23/std.cc.in (invoke_default_violation_handler): Change to invoke_default_contract_violation_handler. 2026-01-29 Jonathan Wakely * include/std/contracts: Replace non-ASCII characters. 2026-01-28 Jonathan Wakely * src/experimental/Makefile.am: Change AM_CXXFLAGS to use C++20 by default. 2026-01-28 Jonathan Wakely * src/experimental/contract26.cc: Use #error if built without contracts support enabled. * include/std/source_location: Remove stray whitespace. 2026-01-28 Jonathan Wakely PR tree-optimization/122197 * include/bits/shared_ptr_base.h (~_Sp_counted_deleter): Use diagnostic pragam to disable -Wfree-nonheap-object false positive. (~_Sp_counted_ptr_inplace): Likewise for -Warray-bounds false positive. 2026-01-28 Jonathan Wakely * config/locale/gnu/ctype_members.cc (use_table): New function. (ctype::do_narrow): Use use_table. 2026-01-28 Soumya AR * include/bits/atomic_base.h: Add fetch_min and fetch_max memberfunctions. * include/bits/version.def: Add __cpp_lib_atomic_min_max feature test macro. * include/bits/version.h (defined): Regenerate. * include/std/atomic: Extend for fetch_min/max non-member functions. * src/c++23/std.cc.in: Export atomic_fetch_min, atomic_fetch_max, atomic_fetch_min_explicit, atomic_fetch_max_explicit. * testsuite/29_atomics/atomic_integral/nonmembers_fetch_minmax.cc: New test. * testsuite/29_atomics/atomic_ref/integral_fetch_minmax.cc: New test. 2026-01-28 Nina Ranns Iain Sandoe Ville Voutilainen * include/Makefile.am: Add contract include. * include/Makefile.in: Regenerate. * include/bits/version.def: Add ftm for contracts. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Add contracts header. * include/std/source_location: Befriend the contract_violation class so that we can initialise a source_location from an existing __impl *. * src/c++23/std.cc.in: Add contracts support. * src/experimental/Makefile.am: Add new contract violation implementation, remove the old one. * src/experimental/Makefile.in: Regenerate. * include/experimental/contract: Removed. * src/experimental/contract.cc: Removed. * include/std/contracts: New file. * src/experimental/contract26.cc: New file. * testsuite/18_support/contracts/invoke_default_cvh.cc: New test. * testsuite/18_support/contracts/invoke_default_cvh2.cc: New test. 2026-01-23 Tomasz Kamiński PR libstdc++/123758 * include/bits/funcwrap.h (_Cpy_base(_Cpy_base const&)): Explicitly call _Mo_base() in initializer list. 2026-01-22 Frank Scheiner * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Regenerate. 2026-01-20 Jakub Jelinek * include/bits/version.def (reflection): Add cxx11abi = yes;. * include/bits/version.h: Regenerate. 2026-01-19 Tomasz Kamiński PR libstdc++/114153 * include/bits/ranges_cmp.h (__detail::__less_builtin_ptr_cmp): Add __not_overloaded_spaceship spaceship check. * include/bits/stl_function.h (greater::operator()) (less::operator(), greater_equal::operator()) (less_equal::operator()): Implement using if constexpr. (greater::__S_cmp, less::__S_cmp) (greater_equal::__ptr_comp, less_equal::S_cmp): Remove. (greater::__ptr_cmp, less::__ptr_cmp) (greater_equal::__ptr_comp, less_equal::ptr_cmp): Change tostatic constexpr variable. Define in terms of requires expressions and __not_overloaded_spaceship check. * include/std/concepts: (__detail::__not_overloaded_spaceship): Define. * libsupc++/compare: (__detail::__3way_builtin_ptr_cmp): Use __not_overloaded_spaceship concept. * testsuite/20_util/function_objects/comparisons_pointer_spaceship.cc: New test. 2026-01-19 Tomasz Kamiński * include/bits/erase_if.h (__detail::__erase_if): Pass mutable iterators to __cont.erase. 2026-01-19 François Dumont * include/bits/erase_if.h (__detail::__erase_if): New. * include/debug/deque (std::erase_if<>(__debug::deque<>&, _Pred)): Use latter. * include/debug/inplace_vector (std::erase_if<>(__debug::inplace_vector<>&, _Pred)): Likewise. * include/debug/vector (std::erase_if<>(__debug::vector<>&, _Pred)): Likewise. * include/std/deque: Include erase_if.h. (std::erase_if<>(std::vector<>&, _Pred)): Adapt to use __detail::__erase_if. * include/std/inplace_vector (std::erase_if<>(std::inplace_vector<>&, _Pred)): Likewise. * include/std/string (std::erase_if<>(std::basic_string<>&, _Pred)): Likewise. * include/std/vector (std::erase_if<>(std::vector<>&, _Pred)): Likewise. * include/debug/forward_list (std::erase_if<>(__debug::forward_list<>&, _Pred)): New. (std::erase<>(__debug::forward_list<>&, const _Up&)): New. * include/debug/list (std::erase_if<>(__debug::list<>&, _Pred)): New. (std::erase<>(__debug::list<>&, const _Up&)): New. * include/debug/map (std::erase_if<>(__debug::map<>&, _Pred)): New. (std::erase_if<>(__debug::multimap<>&, _Pred)): New. * include/debug/set (std::erase_if<>(__debug::set<>&, _Pred)): New. (std::erase_if<>(__debug::multiset<>&, _Pred)): New. * include/debug/string (std::erase_if<>(__gnu_debug::basic_string<>&, _Pred)): New. (std::erase<>(__gnu_debug::basic_string<>&, const _Up&)): New. * include/debug/unordered_map (std::erase_if<>(__debug::unordered_map<>&, _Pred)): New. (std::erase_if<>(__debug::unordered_multimap<>&, _Pred)): New. * include/debug/unordered_set (std::erase_if<>(__debug::unordered_set<>&, _Pred)): New. (std::erase_if<>(__debug::unordered_multiset<>&, _Pred)): New. * include/std/forward_list (std::erase_if<>(std::forward_list<>&, _Pred)): Adapt to work exclusively for normal implementation. (std::erase<>(std::forward_list<>&, const _Up&)): Likewise. * include/std/list (std::erase_if<>(std::list<>&, _Pred)): Likewise. (std::erase<>(std::list<>&, const _Up&)): Likewise. * include/std/map (std::erase_if<>(std::map<>&, _Pred)): Likewise. (std::erase_if<>(std::multimap<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/set (std::erase_if<>(std::set<>&, _Pred)): Likewise. (std::erase_if<>(std::multiset<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/unordered_map (std::erase_if<>(std::unordered_map<>&, _Pred)): Likewise. (std::erase_if<>(std::unordered_multimap<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/unordered_set (std::erase_if<>(std::unordered_set<>&, _Pred)): Likewise. (std::erase_if<>(std::unordered_multiset<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * testsuite/21_strings/basic_string/debug/erase.cc: New test case. * testsuite/23_containers/forward_list/debug/erase.cc: New test case. * testsuite/23_containers/forward_list/debug/invalidation/erase.cc: New test case. * testsuite/23_containers/list/debug/erase.cc: New test case. * testsuite/23_containers/list/debug/invalidation/erase.cc: New test case. * testsuite/23_containers/map/debug/erase_if.cc: New test case. * testsuite/23_containers/map/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/multimap/debug/erase_if.cc: New test case. * testsuite/23_containers/multimap/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/multiset/debug/erase_if.cc: New test case. * testsuite/23_containers/multiset/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/set/debug/erase_if.cc: New test case. * testsuite/23_containers/set/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_map/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_set/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalidation/erase_if.cc: New test case. 2026-01-15 Jakub Jelinek * include/std/type_traits (std::is_reflection, std::is_fundamental, std::is_reflection_v, std::is_consteval_only): Compare __cpp_impl_reflection >= 202506L instead of 202500L. * testsuite/20_util/variable_templates_for_traits.cc: Likewise. 2026-01-15 Marek Polacek Jakub Jelinek PR c++/120775 PR c++/123081 PR c++/122634 * include/Makefile.am (std_headers): Add ${std_srcdir}/meta. * include/Makefile.in: Regenerate. * include/bits/iterator_concepts.h (std::ranges::__access::__begin): Add constexpr. * include/bits/version.def (reflection): New. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Include for C++26. * include/std/meta: New file. * include/std/type_traits (std::is_reflection): New trait. (std::is_fundamental): Include is_reflection for C++26 -freflection. (std::is_reflection_v): New variable template. (std::is_consteval_only): New trait. (std::is_consteval_only_v): New variable template. * src/c++23/std.cc.in: Add exports. * testsuite/20_util/variable_templates_for_traits.cc: Add -freflection as dg-additional-options for C++26. Add std::is_reflection_v test in that case. * testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc: New test. * testsuite/20_util/is_consteval_only/requirements/typedefs.cc: New test. * testsuite/20_util/is_consteval_only/value.cc: New test. * testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc: New test. * testsuite/20_util/is_reflection/requirements/typedefs.cc: New test. * testsuite/20_util/is_reflection/value.cc: New test. 2026-01-14 Tomasz Kamiński * testsuite/util/testsuite_iterators.h: Modify comment. 2026-01-13 Tomasz Kamiński * include/bits/stl_heap.h (std::__is_heap_until, std::__push_heap) (std::__adjust_heap): Replace subscript with dereference of advanced iterator. * testsuite/util/testsuite_iterators.h (__gnu_test::subscript_proxy) (__gnu_test::proxy_random_access_iterator_wrapper): Define. * testsuite/25_algorithms/sort_heap/check_proxy_brackets.cc: New test. 2026-01-12 Jakub Jelinek * config/abi/pre/gnu.ver (CXXABI_1.3.14): Don't export _ZTI*DF16_ on s390x. (CXXABI_1.3.17): Export _ZTI*DF16_ on s390x. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Remove _ZTI{,P,K}DF16_. 2026-01-12 Jonathan Wakely * src/c++20/atomic.cc (__detail::__spin_impl): Do not use reserved names for variables. 2026-01-12 Jonathan Wakely * include/bits/atomic_wait.h (__wait_args): Improve comments. * src/c++20/atomic.cc (__wait_args::_M_setup_proxy_wait): Improve comment. 2026-01-12 Tomasz Kamiński * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc: Updated test. 2026-01-10 Stefan Schulze Frielinghaus * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Add names {,P,K}DF16. 2026-01-10 Wang Jinghao * src/c++11/system_error.cc (system_error_category) [_WIN32]: Use FormatMessageA function instead of FormatMessage macro. * testsuite/19_diagnostics/error_category/system_category.cc: Fix typo in __MINGW32__ macro name. Adjust behavior on the mingw32 target. 2026-01-10 Yuao Ma * include/bits/version.def: Add FTM. * include/bits/version.h: Regenerate. * include/std/flat_map: Add constexpr. * testsuite/23_containers/flat_map/1.cc: Add constexpr test. * testsuite/23_containers/flat_multimap/1.cc: Add constexpr test. 2026-01-09 Jonathan Wakely * src/c++20/atomic.cc (use_proxy_wait): Remove unused second parameter. (__wait_args::_M_setup_proxy_wait): Remove second argument. (__notify_impl): Likewise. 2026-01-09 Jonathan Wakely * include/bits/atomic_timed_wait.h (__atomic_wait_address_until): Use _M_on_wake instead of _M_setup_wait after waking. (__atomic_wait_address_for): Likewise. * include/bits/atomic_wait.h (__atomic_wait_address): Likewise. (__wait_args::_M_setup_wait): Remove third parameter and move code to update _M_old to ... (__wait_args::_M_on_wake): New member function to update _M_old after waking, only calling _M_setup_proxy_wait if needed. (__wait_args::_M_store): New member function to update _M_old from a value, for non-proxy waits. * src/c++20/atomic.cc (__wait_args::_M_setup_proxy_wait): If _M_obj is not addr, only load a new value and return true. 2026-01-09 Jonathan Wakely Tomasz Kamiński PR libstdc++/122878 * include/bits/semaphore_base.h (_M_try_acquire): Replace _M_try_acquire_for call with explicit loop and call to __atomic_wait_address_for. (_M_try_acquire_for): Replace loop with call to _M_try_acquire_until. 2026-01-09 Keith Packard * acinclude.m4 (GLIBCXX_CONFIGURE): Add --with-picolibc. * configure: Regenerate. * configure.ac: Add handling for with_picolibc=yes. * config/os/picolibc/ctype_base.h: New file. * config/os/picolibc/ctype_configure_char.cc: New file. * config/os/picolibc/ctype_inline.h: New file. * config/os/picolibc/os_defines.h: New file. 2026-01-08 Tomasz Kamiński * testsuite/20_util/variant/constinit.cc: Use scan-tree-dump for matching of constructor. * testsuite/20_util/variant/constinit_compat.cc: Likewise. * testsuite/lib/libstdc++.exp: Load scantree.exp and scandump.exp. 2026-01-07 Jonathan Wakely PR libstdc++/123100 * include/std/sstream (basic_stringbuf::str()&&): Handle the case where _M_string is not being used for the buffer. * testsuite/27_io/basic_stringbuf/str/char/123100.cc: New test. 2026-01-07 Jonathan Wakely * include/bits/atomic_wait.h (__wait_args::_M_setup_wait): Remove unreachable return statement. 2026-01-07 Jonathan Wakely PR libstdc++/123406 * acinclude.m4 (GLIBCXX_CHECK_STDIO_LOCKING): Override detection of flockfile for non-cygwin newlib targets. * configure: Regenerate. 2026-01-07 Jonathan Wakely PR libstdc++/123378 * include/std/barrier (~__tree_barrier_base): Define. 2026-01-07 Jakub Jelinek PR libstdc++/123183 PR libstdc++/123326 * libsupc++/exception (std::bad_exception::~bad_exception(), std::bad_exception::what()): Add inline keyword and [[__gnu__::__gnu_inline__]] attribute to the C++26 constexpr exceptions definitions. * libsupc++/exception.h (std::exception::~exception(), std::exception::what()): Likewise. * libsupc++/exception_ptr.h (std::exception_ptr::exception_ptr(void*)): Likewise. * libsupc++/nested_exception.h (std::nested_exception::~nested_exception()): Likewise. * libsupc++/typeinfo (std::bad_cast::~bad_cast(), std::bad_cast::what(), std::bad_typeid::~bad_typeid(), std::bad_typeid::what()): Likewise. * include/bits/new_except.h (std::bad_alloc::~bad_alloc(), std::bad_alloc::what(), std::bad_array_new_length::~bad_array_new_length(), std::bad_array_new_length::what()): Likewise. * include/bits/stdexcept_except.h (std::logic_error::logic_error(const string&), std::logic_error::logic_error(const char*), std::logic_error::~logic_error(), std::logic_error::what(), std::domain_error::domain_error(const string&), std::domain_error::domain_error(const char*), std::invalid_argument::invalid_argument(const string&), std::invalid_argument::invalid_argument(const char*), std::length_error::length_error(const string&), std::length_error::length_error(const char*), std::out_of_range::out_of_range(const string&), std::out_of_range::out_of_range(const char*), std::runtime_error::runtime_error(const string&), std::runtime_error::runtime_error(const char*), std::runtime_error::~runtime_error(), std::runtime_error::what(), std::overflow_error::overflow_error(const string&), std::overflow_error::overflow_error(const char*), std::overflow_error::~overflow_error(), std::underflow_error::underflow_error(const string&), std::underflow_error::underflow_error(const char*), std::underflow_error::~underflow_error()): Likewise. (std::domain_error::~domain_error(), std::invalid_argument::~invalid_argument(), std::length_error::~length_error(), std::out_of_range::~out_of_range()): Likewise. Also change _GLIBCXX_NOTHROW to noexcept on those definitions. Copyright (C) 2026 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.