2026-06-15  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/using_exceptions.xml: Switch link to
	www.opengroup.org to https.
	* doc/html/manual/using_exceptions.html: Regenerate.

2026-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (constant_wrapper): Bump to 202606L.
	* include/bits/version.h: Regenerate.
	* include/bits/funcref_impl.h (function_ref::function_ref): Rename
	template parameter from __cwfn to __fn and use it direclty.
	* include/bits/funcwrap.h (function_ref): Rename template parameter
	to __fn.
	(std::constant_wrapper): Use auto as non-type template parameter,
	and refeference it as value.
	* include/bits/utility.h (__CwFixedValue): Remove.
	* testsuite/20_util/constant_wrapper/generic.cc: Remove arrays
	and string literal tests. Add test for address of value.
	* testsuite/20_util/constant_wrapper/other_wrappers.cc:
	Remove test_array.
	* testsuite/20_util/constant_wrapper/type_param_neg.cc: New file.

2026-06-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/abi.xml: Spell command-line option with a dash.
	Simplify language.
	* doc/html/manual/abi.html: Regenerate.

2026-06-08  Haochen Jiang  <haochen.jiang@intel.com>

	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Pass
	-flto as the options to make it shown in test report.

2026-06-05  Yuao Ma  <c8ef@outlook.com>

	* include/std/generator (generator::yield_value): Change the
	second template parameter from range_value_t<R> to void.
	* testsuite/24_iterators/range_generators/lwg4119.cc: New test.

2026-06-04  Jonathan Wakely  <jwakely@redhat.com>

	* include/debug/safe_iterator.h: Remove trailing whitespace.

2026-06-03  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/version.def: Define macros for hardened
	preconditions.
	* include/bits/version.h: Regenerate.
	* include/std/array: Define "want" macro for hardened
	precondition macro.
	* include/std/bitset: Likewise.
	* include/std/deque: Likewise.
	* include/std/expected: Likewise.
	* include/std/forward_list: Likewise.
	* include/std/inplace_vector: Likewise.
	* include/std/iterator: Likewise.
	* include/std/list: Likewise.
	* include/std/memory: Likewise.
	* include/std/optional: Likewise.
	* include/std/ranges: Likewise.
	* include/std/span: Likewise.
	* include/std/stacktrace: Likewise.
	* include/std/string: Likewise.
	* include/std/string_view: Likewise.
	* include/std/valarray: Likewise.
	* include/std/vector: Likewise.
	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
	Adjust dg-error line numbers.

2026-06-03  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (hardened_mdspan): Define.
	* include/bits/version.h: Regenerate.
	* include/std/mdspan (__cpp_lib_hardened_mdspan): Define.
	(mdspan::operator[]): Replace __mdspan::__index_type_cast
	with cast to __index_int_t, and inline negative value checks.

2026-06-03  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/fs_path.h (path::string, path::generic_string):
	Add deprecated attribute in C++26 via _GLIBCXX26_DEPRECATED_SUGGEST.
	(path::display_string, path::native_encoded_string)
	(path::generic_display_string, path::generic_native_encoded_string)
	[__glibcxx_format_path >= 202506L]: Define.
	* include/bits/version.def (format_path): Bump to 202506.
	* include/bits/version.h: Regenerate.
	* testsuite/util/testsuite_fs.h (__gnu_test::compare_paths):
	Ignored deprecated declarations warning.
	* testsuite/27_io/filesystem/filesystem_error/cons.cc:
	Disable -Wdeprecated-declarations warning with pragmas.
	* testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
	* testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
	* testsuite/27_io/filesystem/path/concat/strings.cc: Likwise.
	* testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
	* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/generic/generic_string.cc:
	Likewise.
	* testsuite/27_io/print/1.cc: Likewise.
	* testsuite/27_io/print/2.cc: Likewise.
	* testsuite/27_io/print/3.cc: Likewise.
	* testsuite/27_io/filesystem/path/append/source.cc:
	Add dg-warning for deprecated functions use.
	* testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
	* testsuite/27_io/filesystem/path/native/string-char8_t.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/generic/display_native_string.cc:
	New test.
	* testsuite/27_io/filesystem/path/native/display_native_string.cc:
	New test.

2026-06-02  Yuao Ma  <c8ef@outlook.com>

	* include/bits/stl_queue.h: Add constexpr.
	* testsuite/23_containers/priority_queue/constexpr.cc: New test.

2026-06-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/random.h (__rand_uint128::operator bool):
	(__rand_uint128::operator-=(const type& __r))
	(__rand_uint128::operator-(type __l, const type& __r)):
	Implement.
	(__rand_uint128::operator/=(uint64_t __r))
	(__rand_uint128::operator/(type __l, uint64_t __r)):
	Define by converting to type.
	(__rand_uint128::operator*=(const type& __r)): Remove
	precondition and handle _M_hi != 0.

2026-06-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/version.tpl: Fix typo.

2026-06-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__format::__write_escaped_ascii): Mark as
	_GLIBCXX_CONSTEXPR_FORMAT and at compile time, reject strings
	containing characters other than printable ASCII and standard
	escapes.
	* testsuite/std/format/debug.cc: Test basic_escapes and \0
	at compile-time.
	* testsuite/std/format/debug_nonunicode_neg.cc: New test.

2026-06-02  Ivan Lazaric  <ivan.lazaric1@gmail.com>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (constexpr_exceptions): Move before
	format.
	(constexpr_format): Define.
	* include/bits/version.h: Regenerate.
	* include/std/format (_GLIBCXX_CONSTEXPR_FORMAT): Define and
	apply to all of functions except __write_escaped_ascii and
	__formatter_fp members.
	(_GLIBCXX_CONSTEXPR_FORMAT_ERROR): Replace with
	_GLIBCXX_CONSTEXPR_FORMAT.
	(basic_format_string::basic_format_string(const _Tp&)):
	Mark as noexcept.
	(__format::__toupper_numeric): Define.
	(__formatter_int::format): Use __format::__toupper_numeric
	and replace __builtin_memcpy with ranges::copy.
	(__formatter_fp::format): Use __format::__toupper_numeric.
	(__formatter_ptr::format): Avoid reinterpret_cast for
	null-pointer value to support std::nullptr_t formatting.
	(__format::__do_vformat_to): Replace __builtin_memcpy with
	ranges::copy.
	(basic_format_parse_context::__check_dynamic_spec):
	Skip checks if __args pointer is null.
	* testsuite/std/format/arguments/args_neg.cc: Diagnostics change.
	* testsuite/std/format/constexpr.cc: New test.
	* testsuite/std/format/debug.cc: Test at compile-time in C++26
	and update iteration limit for paddding tests.
	* testsuite/std/format/tuple.cc: Likewise.
	* testsuite/std/format/functions/format.cc: Test at compile-time
	in C++26.
	* testsuite/std/format/dynamic_format.cc: Likewise.
	* testsuite/std/format/functions/format_to.cc: Likewise.
	* testsuite/std/format/functions/size.cc: Likewise.
	* testsuite/std/format/ranges/format_kind.cc: Likewise.
	* testsuite/std/format/ranges/formatter.cc: Likewise.
	* testsuite/std/format/ranges/sequence.cc: Likewise.
	* testsuite/std/format/string.cc: Likewise.
	* testsuite/std/time/format/data_not_present_neg.cc: Diagnostics
	change.

2026-06-02  Ivan Lazaric  <ivan.lazaric1@gmail.com>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (constexpr_string): Bump to 202511.
	* include/bits/version.h: Regenerate.
	* include/bits/basic_string.h (std::to_string, std::to_wstring)
	[__glibcxx_constexpr_string >= 202511L]: Mark as constexpr.
	* testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc:
	New test.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc:
	New test.
	* testsuite/21_strings/basic_string/cons/char/constexpr.cc: Update
	__cpp_lib_constexpr_string check.
	* testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc: Likewise.
	* testsuite/21_strings/basic_string/version.cc: Add check for value of
	__cpp_lib_constexpr_string in C++26.

2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>

	* config/os/vxworks/os_defines.h: Fix typos.

2026-06-01  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/random.tcc
	(piecewise_constant_distribution:::param_type::param_type):
	Replace * with + in __fw argument.

2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>

	* include/bits/stl_algo.h: Reflow long line.

2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>

	* configure: Regenerate.
	* acinclude.m4: Fix typos.
	* configure.ac: Likewise.
	* doc/doxygen/doxygroups.cc: Likewise.
	* doc/doxygen/stdheader.cc (init_map): Likewise.
	* include/bits/basic_string.h: Likewise.
	* include/bits/chrono.h: Likewise.
	* include/bits/chrono_io.h: Likewise.
	* include/bits/cpyfunc_impl.h: Likewise.
	* include/bits/funcref_impl.h: Likewise.
	* include/bits/locale_conv.h: Likewise.
	* include/bits/mofunc_impl.h: Likewise.
	* include/bits/shared_ptr_base.h: Likewise.
	* include/bits/simd_details.h: Likewise.
	* include/bits/stl_algo.h: Likewise.
	* include/bits/stl_deque.h: Likewise.
	* include/bits/stl_iterator.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/stl_multimap.h: Likewise.
	* include/bits/stl_multiset.h: Likewise.
	* include/bits/stl_set.h: Likewise.
	* include/bits/unicode.h: Likewise.
	* include/bits/unique_ptr.h: Likewise.
	* include/bits/version.h: Likewise.
	* include/experimental/bits/simd.h: Likewise.
	* include/experimental/bits/simd_fixed_size.h: Likewise.
	* include/experimental/bits/simd_x86_conversions.h: Likewise.
	* include/ext/concurrence.h: Likewise.
	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Likewise.
	* include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp: Likewise.
	* include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp: Likewise.
	* include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp: Likewise.
	* include/ext/pb_ds/tree_policy.hpp: Likewise.
	* include/ext/pb_ds/trie_policy.hpp: Likewise.
	* include/parallel/multiway_merge.h: Likewise.
	* include/pstl/parallel_backend_tbb.h (__parallel_transform_reduce): Likewise.
	(class __merge_func): Likewise.
	(class __stable_sort_func): Likewise.
	(__parallel_stable_sort): Likewise.
	* include/tr1/shared_ptr.h: Likewise.
	* libsupc++/hash_bytes.cc: Likewise.
	* libsupc++/vmi_class_type_info.cc (__do_find_public_src): Likewise.
	* src/c++17/fast_float/fast_float.h (struct parse_options): Likewise.
	(rounds_to_nearest): Likewise.

2026-05-29  Patrick Palka  <ppalka@redhat.com>

	* include/std/flat_set (_Flat_set_impl::swap): Swap _M_cont
	first.

2026-05-29  Nathan Myers  <ncm@cantrip.org>

	* include/bits/new_allocator.h (allocate_at_least): Reduce
	allocation to match what is reported.
	* testsuite/20_util/allocator/allocate_at_least2.cc: Add tests.
	* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
	Fix, for -m32 and new allocation results.

2026-05-28  Patrick Palka  <ppalka@redhat.com>

	* testsuite/util/testsuite_allocator.h
	(uneq_allocator::allocate): Use __try/__catch instead.
	(uneq_allocator::allocate_at_least): Likewise.

2026-05-28  Patrick Palka  <ppalka@redhat.com>

	* include/std/flat_map (flat_map): Bring in operator= from
	_Flat_map_base.
	(flat_multimap): Likewise.
	* include/std/flat_set (flat_set): Bring in operator= from
	_Flat_set_base.
	(flat_multiset): Likewise.
	* testsuite/23_containers/flat_map/1.cc (test11): Simplify by
	using = {...}.
	(test12): New test.
	* testsuite/23_containers/flat_multimap/1.cc (test10): Simplify
	by using = {...}.
	(test11): New test.
	* testsuite/23_containers/flat_multiset/1.cc (test10): Simplify
	by using = {...}.
	(test11): New test.
	* testsuite/23_containers/flat_set/1.cc (test10): Simplify by
	using = {...}.
	(test11): New test.

2026-05-28  Patrick Palka  <ppalka@redhat.com>

	* include/bits/version.def (flat_map): Bump to 202511.
	(flat_set): Likewise.
	* include/bits/version.h: Regenerate.
	* include/std/flat_map (_Flat_map_impl): Remove
	is_nothrow_swappable_v assertions.
	(_Flat_map_impl::_Flat_map_impl): Explicitly default copy ctor.
	Define move ctor with corrected exception handling as per
	P3567R2.
	(_Flat_map_impl::operator=): Likewise.
	(_Flat_map_impl::insert_range): Define new __sorted_t overload
	as per P3567R2.
	(_Flat_map_impl::swap): Make conditionally noexcept as per
	P3567R2.
	* include/std/flat_set (_Flat_set_impl): Remove
	is_nothrow_swappable_v assertion.
	(_Flat_set_impl::_Flat_set_impl): Explicitly default copy ctor.
	Define move ctor with correct invariant preserving behavior as
	per P3567R2.
	(_Flat_set_impl::operator=): Likewise.
	(_Flat_set_impl::_M_insert_range): Factored out from
	insert_range.  Add bool parameter __is_sorted defaulted to
	false.
	(_Flat_set_impl::insert_range): Define new __sorted_t overload
	as per P3567R2.
	(_Flat_set_impl::swap): Make conditionally noexcept as per
	P3567R2.  Correct to use ranges::swap instead of ADL swap.
	* testsuite/23_containers/flat_map/1.cc (test11, test12):
	New tests.
	* testsuite/23_containers/flat_multimap/1.cc (test10, test11):
	New tests.
	* testsuite/23_containers/flat_multiset/1.cc (test10, test11):
	New tests.
	* testsuite/23_containers/flat_set/1.cc (test10, test11):
	New tests.

2026-05-28  Patrick Palka  <ppalka@redhat.com>

	* include/std/flat_map (_Flat_map_impl::_M_insert): New bool
	parameter __is_sorted defaulted to false.  Reimplement using
	views::zip and ranges::inplace_merge.
	(_Flat_map_impl::insert): In the __sorted_t overload, pass
	__is_sorted=true to _M_insert.

2026-05-28  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/random.h	(piecewise_constant_distribution::param_type)
	(piecewise_linear_distribution::param_type): Befriend operator<<.
	* include/bits/random.tcc
	(operator<<(basic_ostream&, piecewise_linear_distribution))
	(operator<<(basic_ostream&, piecewise_constant_distribution)):
	Use __x._M_param._M_int and __x._M_param._M_den instead of accessors.

2026-05-28  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc:
	New test.
	* testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc:
	New test.

2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/ranges (ref_view::size()): Only call ranges::size(*_M_r).
	(ref_view::empty): Only call ranges::empty(*_M_r).
	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
	Except no errors from ref_view uses.
	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
	Likewise.

2026-05-26  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/125450
	* include/std/optional (range_format): Do not define for
	freestanding.

2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/ranges_base.h (ranges::__static_size): Define.
	* include/std/ranges (ref_view::size()): For ranges with static
	size return ranges::__static_size<_Range>.
	(ref_view::empty): For ranges with static size, compare size
	against zero.
	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
	Expect errors from ref_view uses.
	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
	Expect errors from ref_view uses.

2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/inplace_vector (inplace_vector(std::from_range, __Rg&&)):
	Add static_asserts checking range size.
	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
	New test.
	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
	New test.

2026-05-26  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/atomic_base.h (memory_order::consume): Add
	deprecate attribute.
	(memory_order_consume): Likewise.
	(kill_dependency): Likewise.
	(atomic_flag::clear): Disable warning with pragmas.
	(__atomic_base::store, __atomic_base<T*>::store): Likewise.
	* include/c_compatibility/stdatomic.h (memory_order_consume):
	Likewise.
	* testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc:
	Ignore deprecation warnings.
	* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
	Likewise.
	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Add
	dg-warning directives.
	* testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
	Likewise.

2026-05-26  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/stl_deque.h: Add missing constraint on allocator
	type in deduction guide.
	* include/bits/stl_vector.h: Likewise.
	* include/debug/deque: Likewise.
	* include/debug/vector: Likewise.
	* testsuite/23_containers/deque/cons/deduction_c++23.cc: Check
	that deduction fails for a type which does not qualify as an
	allocator.
	* testsuite/23_containers/vector/cons/deduction_c++23.cc:
	Likewise.

2026-05-26  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/125371
	* config/io/basic_file_stdio.h: Include <bits/ios_base.h>
	instead of <ios>.
	* include/Makefile.am: Add new headers.
	* include/Makefile.in: Regenerate.
	* include/bits/fs_path.h: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/bits/locale_facets.h: Remove unused <iosfwd> and
	<streambuf> includes.
	* include/bits/localefwd.h: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/bits/ostream.h: Replace <ios> with its constituent
	parts, except for <iosfwd>.
	* include/bits/ostream_insert.h: Include <bits/iosfwd.h> instead
	of <iosfwd>.
	* include/bits/shared_ptr.h: Likewise.
	* include/bits/std_thread.h: Likewise.
	* include/bits/stream_iterator.h: Likewise.
	* include/std/fstream: Include <bits/iosfwd_file.h>.
	* include/std/iomanip: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/std/ios: Do not include <exception> or
	<bits/char_traits.h>.
	* include/std/iosfwd: Move declarations to new headers and
	include those new headers. Tweak Doxygen comment.
	* include/std/iostream: Include <ios>.
	* include/std/istream: Replace <ios> with its constituent
	parts, except for <iosfwd>.
	* include/std/random: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/std/spanstream: Include <bits/iosfwd_span.h>.
	* include/std/sstream: Include <bits/iosfwd_string.h>.
	* include/std/streambuf: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/std/string_view: Likewise.
	* include/std/syncstream: Include <bits/iosfwd_sync.h>.
	* include/std/system_error: Include <bits/iosfwd.h> instead of
	<iosfwd>.
	* include/bits/iosfwd.h: New file.
	* include/bits/iosfwd_file.h: New file.
	* include/bits/iosfwd_span.h: New file.
	* include/bits/iosfwd_string.h: New file.
	* include/bits/iosfwd_sync.h: New file.

2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/ranges_base.h (ranges::__static_sized_range):
	Define.
	* include/bits/simd_details.h (simd::__static_sized_range):
	Remove.
	(simd::__static_range_size): Use ranges::__static_sized_range.
	* include/bits/simd_loadstore.h (simd::unchecked_store)
	(simd::unchecked_load): Use ranges::__static_sized_range.
	* include/bits/simd_vec.h (basic_vec::basic_vec(_Rg&&, flags<_Flags>)):
	Replace __static_sized_range<_Rg, _S_size> with
	ranges::__static_sized_range<_Rg> and traing requires size
	for size value.
	* include/std/meta (__detail::__statically_sized): Remove.
	(std::define_static_array): Use ranges::__static_sized_range.
	* testsuite/std/simd/traits_impl.cc: Remove test for
	simd::__static_sized_range.

2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/20_util/is_constructible/value-2.cc:
	Adjust expected value for C++26 (__cpp_trivial_union >= 202502L).
	* testsuite/20_util/is_destructible/value.cc: Likewise.
	* testsuite/20_util/is_nothrow_destructible/value.cc: Likewise.

2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (valarray): Define.
	* include/bits/version.h: Regenerate.
	* include/std/valarray: (__cpp_lib_valarray): Define.
	(valarray::begin, valarray::end, valarray::iterator)
	(valarray::const_iterator) [__glibcxx_valarray >= 202511L]: Define.
	(std::begin(valarray<_Tp>&), std::begin(const valarray<_Tp>&))
	(std::end(valarray<_Tp>&), std::end(const valarray<_Tp>&)): Define
	only if __glibcxx_valarray < 202511L (i.e. not defined).
	* include/bits/range_access.h (std::valarray)
	(std::begin(valarray<_Tp>&), std::begin(const valarray<_Tp>&))
	(std::end(valarray<_Tp>&), std::end(const valarray<_Tp>&)): Forward
	declare only if __glibcxx_valarray < 202511L (i.e. not defined).
	* testsuite/26_numerics/valarray/range_access3.cc: New test.

2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (initializer_list): Define with value
	202511 for C++26.
	* include/bits/version.h: Regenerate.
	* libsupc++/initializer_list (initializer_list::data)
	(initializer_list::empty) [__glibcxx_initializer_list >= 202511L]:
	Define.
	(std::begin(initializer_list<_Tp>), std::end(initializer_list<_Tp>)):
	Define only if __glibcxx_initializer_list < 202511L (i.e. not defined).
	* include/bits/range_access.h (std::empty(initializer_list<_Tp>))
	(std::data(initializer_list<_Tp>)): Define only if
	__glibcxx_initializer_list < 202511L (i.e. not defined).
	* testsuite/18_support/initializer_list/range_access.cc: Move test for
	brace-init list to range_access_neg.c. Included <iterator> in C++26 or
	later mode.
	* testsuite/18_support/initializer_list/data_empty_mem.cc: New test.
	* testsuite/18_support/initializer_list/range_access14.cc: New test.
	* testsuite/18_support/initializer_list/range_access14_neg.cc: New test.
	* testsuite/18_support/initializer_list/range_access17.cc: New test.
	* testsuite/18_support/initializer_list/range_access17_neg.cc: New test.
	* testsuite/18_support/initializer_list/range_access_neg.cc: New test.

2026-05-22  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc:
	Ensure there is no unused capacity before inserting new element.
	* testsuite/23_containers/vector/modifiers/insert/self_insert.cc:
	Likewise.

2026-05-21  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Check
	for C++20 std::memory_order enum. Use feature test macro for
	char8_t.
	* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc:
	Add check for atomic_char8_t.
	* testsuite/29_atomics/headers/atomic/types_std_c++20.cc:
	Removed.
	* testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc:
	Removed.
	* testsuite/29_atomics/headers/atomic/types_std_c++2a.cc:
	Removed.

2026-05-21  Patrick Palka  <ppalka@redhat.com>

	* testsuite/23_containers/flat_map/1.cc (test_constexpr):
	If std::string isn't constexpr don't run test10.

2026-05-21  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/evolution.xml: Document deprecations.
	* doc/html/manual/api.html: Regenerate.
	* include/bits/max_size_type.h (numeric_limits::has_denorm):
	Mark as deprecated.
	(numeric_limits::has_denorm_loss): Likewise.
	* include/std/limits (float_denorm_style): Mark as deprecated.
	(numeric_limits::has_denorm, numeric_limits::has_denorm_loss):
	Mark as deprecated.
	* testsuite/18_support/numeric_limits/char16_32_t.cc: Add
	dg-warning for expected deprecation warnings.
	* testsuite/18_support/numeric_limits/char8_t.cc: Likewise.
	* testsuite/18_support/numeric_limits/denorm_min.cc: Likewise.
	* testsuite/18_support/numeric_limits/dr559.cc: Likewise.
	* testsuite/18_support/numeric_limits/requirements/constexpr_data.cc:
	Likewise.
	* testsuite/18_support/numeric_limits/specialization_default_values.cc:
	Likewise.
	* testsuite/std/ranges/iota/max_size_type.cc: Likewise.

2026-05-21  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/evolution.xml: Document constructor changes.
	* doc/html/*: Regenerate.
	* include/std/future (uses_allocator): Remove specializations
	for std::promise and std::packaged_task.
	(promise(allocator_arg_t, const Alloc&, promise&&)): Remove
	constructor proposed for LWG 2095 but not in P3503R3.
	(packaged_task(allocator_arg_t, const Alloc&)): Likewise.
	(packaged_task(allocator_arg_t, const Alloc&, packaged_task&&)):
	Likewise.
	(packaged_task(allocator_arg_t, const Alloc&, F&&)): Restore
	constructor for C++20 and later.
	* testsuite/30_threads/packaged_task/uses_allocator.cc: Adjust
	expected result for static_assert.
	* testsuite/30_threads/promise/uses_allocator.cc: Likewise.

2026-05-21  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/inplace_vector (inplace_vector::assign_range)
	(inplace_vector::append_range): Cast ranges::distance(__rg)
	to size_t.
	* testsuite/23_containers/inplace_vector/cons/from_range.cc: New
	test for ranges with integer-class size_type.
	* testsuite/23_containers/inplace_vector/modifiers/assign.cc:
	Likewise.
	* testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc:
	Likewise.

2026-05-20  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++20/Makefile.am [USE_STATIC_TZDATA]: Remove targets for
	tzdata.zi.h, tzdb.lo and tzdb.o.
	* src/c++20/Makefile.in: Regenerate.
	* src/c++20/tzdb.cc (tzdata_chars): Use #embed.
	(tzdata_stream::ispanbuf): Remove adjustment for extra newline
	inserted by the Makefile recipe for tzdata.zi.h.

2026-05-20  Nathan Myers  <ncm@cantrip.org>

	* config/abi/pre/gnu.ver: Remove recent symbol swept up in
	GLIBCXX_3.4.21.
	* include/bits/basic_string.tcc (reserve): Guard __limit decl
	under #if __cpp_exceptions to quiet warning.

2026-05-19  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++20/tzdata.zi: Import new file from 2026b release.

2026-05-19  Patrick Palka  <ppalka@redhat.com>

	PR libstdc++/125374
	* include/std/flat_map (_Flat_map_impl::_M_try_emplace): Forward
	instead of unconditionally moving __k when inserting it.
	* testsuite/23_containers/flat_map/1.cc (test10): New test.

2026-05-19  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/118030
	* config/abi/pre/gnu.ver: Expose string::_S_allocate_at_least,
	_M_create_plus symbols.
	* include/bits/alloc_traits.h:
	(allocate_at_least): Delegate in allocator_traits<allocator<_Tp>>
	specialization to allocator<_Tp>::allocate_at_least, unconditionally;
	annotate [[__gnu__::always_inline__]].
	(allocate_at_least): Declare "= delete;" in allocator<void>.
	* include/bits/allocator.h (allocate_at_least): Delegate to base
	allocate_at_least where defined, calling with explicit base-class
	qualification, picking up __new_allocator member.
	* include/bits/basic_string.h:
	(_Alloc_result): Define new type.
	(_S_allocate_at_least): Define, using it.
	(_S_allocate): Minimize for legacy ABI use only.
	(_M_create_plus): Declare.
	(_M_create_and_place): Define, abstracting common operations.
	(assign): Use _S_allocate_at_least.
	* include/bits/basic_string.tcc:
	(_M_create_plus): Define.
	(_M_replace, reserve): Use _S_allocate_at_least.
	(_M_construct, others (3x)): Use _M_create_and_place.
	(_M_construct, input iterators): Use _M_create_plus.
	(_M_create, _M_assign, reserve, _M_mutate): Same.
	* include/bits/memory_resource.h (allocate_at_least): Define,
	document.
	* include/bits/new_allocator.h (allocate_at_least): Define.
	(_S_check_allocation_limit) Define.
	(allocate): Use _S_check_allocation_limit.
	(_S_max_size): Change from _M_max_size.
	(deallocate): Refine "if constexpr" logic.
	* include/bits/stl_vector.h:
	(_S_max_size): Move to _Vector_base.
	(_Alloc_result): Define type.
	(_M_allocate_at_least): Define, using allocate_at_least where supported.
	(_M_allocate): Delegate to _M_allocate_at_least.
	(max_size, _S_check_init_len): Use _S_max_size as moved.
	(_M_create_storage, append_range, _M_allocate_and_copy,
	_M_replace_storage): Define, abstracting common operations.
	(_M_replace_with): Define, likewise.
	(_M_range_initialize_n): Use _M_allocate_at_least.
	(_M_check_len): Improve logic.
	* include/bits/vector.tcc:
	(reserve, _M_fill_append, _M_range_insert): Use _M_allocate_at_least
	and _M_replace_storage.
	(operator=, _M_assign_aux): Use _M_replace_with.
	(_M_realloc_insert, _M_realloc_append, _M_default_append, insert_range):
	Use _M_allocate_at_least.
	(_M_fill_insert): Use _M_replace_storage, normalize whitespace.
	* testsuite/util/testsuite_allocator.h:
	(allocate_at_least (3x)): Define.
	(allocate): Use allocate_at_least.
	* testsuite/20_util/allocator/allocate_at_least.cc: Add tests.
	* testsuite/21_strings/basic_string/capacity/char/18654.cc:
	Loosen capacity check.
	* testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc:
	Same.
	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc: Same.
	* testsuite/21_strings/basic_string/capacity/wchar_t/2.cc: Same.
	* testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc:
	Same.
	* testsuite/23_containers/vector/capacity/shrink_to_fit.cc: Same.
	* testsuite/23_containers/vector/capacity/shrink_to_fit2.cc: Same
	* testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc:
	Adapt to looser reserve behavior.

2026-05-19  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/125369
	* include/bits/chrono_io.h (__detail::_Parser::operator()):
	Check for errors when parsing digits for a %z format.
	* testsuite/std/time/parse/125369.cc: New test.

2026-05-18  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/23_containers/bitset/lwg4294.cc: Move to...
	* testsuite/20_util/bitset/cons/lwg4294.cc: ...here.

2026-05-18  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
	Reduce iterations for debug mode.

2026-05-18  Avi Kivity  <avi@scylladb.com>

	PR libstdc++/121789
	* include/bits/stl_uninitialized.h (uninitialized_copy):
	Unwrap move iterators
	* testsuite/20_util/specialized_algorithms/uninitialized_move/121789.cc:
	New test.
	* testsuite/util/testsuite_greedy_ops.h (greedy_ops): Comment
	out operator-(T, T).

2026-05-18  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/valarray [__cplusplus >= 201103L]: Include
	<bits/ranges_access.h>.
	* testsuite/26_numerics/valarray/range_access2.cc: Remove
	<iterator> include, and add test for std::size.

2026-05-18  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (layout_left_padded::is_exhaustive)
	(layout_righ_padded::is_exhaustive): Mark as const.
	* testsuite/23_containers/mdspan/layouts/mapping.cc: Test noexcept and
	const-invocability for is_exhaustive, is_strided, and is_unique.
	* testsuite/23_containers/mdspan/layouts/padded.cc: Test is_exhaustive on
	const mapping..
	* testsuite/23_containers/mdspan/layouts/stride.cc: Likewise.
	* testsuite/23_containers/mdspan/mdspan.cc: Checks const-invocability
	for is_exhaustive, is_strided, is_unique.

2026-05-18  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/124852
	* src/c++20/tzdb.cc (on_month_day::on_day_t, on_month_day::on_day):
	Remove.
	(operator>>(istream&, on_month_day::day_t&)): Inlined into...
	(operator>>(istream&, on_month_day)): Inlined on_month_day::on_day.
	Avoid modifying on.month if MONTH is not present. Report failure
	on failure to parse day for LessEq / GreaterEq.

2026-05-16  Dragon Archer  <dragon-archer@outlook.com>

	PR libstdc++/125228
	* src/c++11/debug.cc: Replace assert with __glibcxx_assert,
	and remove the include of <cassert>.
	* src/c++17/floating_to_chars.cc: Likewise, but redefine
	assert as __glibcxx_assert.

2026-05-16  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/125312
	* acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Copy header
	into cwd instead of including it via an absolute path.
	* configure: Regenerate.

2026-05-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libstdc++/107815
	* testsuite/20_util/to_chars/float128_c++23.cc (test): Remove
	Solaris workaround.

2026-05-15  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/optional [__cpp_lib_optional_range_support]:
	Replace <bits/stl_iterator.h> include with <bits/range_access.h>.
	* include/std/stacktrace: Likewise.

2026-05-15  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/std/format/debug_nonunicode.cc: Pass ISO-8859-1 as
	exec-charset and make sure that it is supported.
	* testsuite/std/format/fill_nonunicode.cc: Likewise.

2026-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/type_traits (__type_identity, __type_identity_t)
	[__cpp_lib_type_identity]: Define as alias to type_identity
	and its nested type respectively.

2026-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/113761
	* include/bits/random.h
	(piecewise_constant_distribution::param_type::_M_initialize)
	(piecewise_linear_distribution::param_type::_M_initialize): Remove.
	(piecewise_constant_distribution::param_type::_M_configure)
	(piecewise_linear_distribution::param_type::_M_configure): Define.
	(piecewise_constant_distribution::param_type::_M_initialize2)
	(piecewise_linear_distribution::param_type::_M_initialize2): Declare.
	* include/bits/random.tcc (__detail::__load_first2): Define.
	(piecewise_constant_distribution::param_type::_M_initialize)
	(piecewise_linear_distribution::param_type::_M_initialize):
	Rename to...
	(piecewise_constant_distribution::param_type::_M_configure)
	(piecewise_linear_distribution::param_type::_M_configure):
	Renamed implementation of _M_initialize, that removes checks for
	default values.
	(piecewise_constant_distribution::param_type::_M_initialize2)
	(piecewise_linear_distribution::param_type::_M_initialize2): Define.
	(piecewise_constant_distribution::param_type::param_type)
	(piecewise_linear_distribution::param_type::param_type):
	Exit early for less that two intervals. Use _M_initialize2 to handle
	two intervals case. Reserve _M_int for iterators case.
	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc:
	Test input and forward iterators, in addition to random_access ones.
	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc:
	Likewise.
	* testsuite/26_numerics/random/piecewise_constant_distribution/cons/fallback.cc:
	New test.
	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/fallback.cc:
	New test.

2026-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc:
	Removed preprocessor checks, add dg-require-effective-target.

2026-05-13  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/shared_ptr_atomic.h: Remove trailing whitespace.

2026-05-13  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/std/time/clock/local/io.cc: Call test_format.

2026-05-13  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/std/time/clock/utc/leap_second_info-2.cc: Fix sign
	compare warning. Tweak comment.

2026-05-13  Alexandre Oliva  <oliva@adacore.com>

	* configure: Rebuild.

2026-05-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/114400
	* include/std/string_view (operator<=>): Use type_identity_t
	instead of __type_identity_t.

2026-05-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/119739
	* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc:
	New test.

2026-05-13  Álvaro Begué  <alvaro.begue@gmail.com>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/124852
	* src/c++20/tzdb.cc (on_day): Rename to...
	(on_day_month): Rename from on_day.
	(on_day_month::on_day_t, on_day_month::on_day): Define.
	(operator>>(istream&, on_day_t&&)): Factored out of
	operator>>(istream&, on_day&).
	(operator>>(istream&, on_day&)): Use on_day_t parser.
	(operator>>(istream&, ZoneInfo&)): Replace the integer DAY
	parser with on_day_t for the UNTIL field.
	* testsuite/std/time/time_zone/until_day_on.cc: New test.

2026-05-13  Álvaro Begué  <alvaro.begue@gmail.com>

	PR libstdc++/124851
	* src/c++20/tzdb.cc (ZoneInfo::ZoneInfo(sys_info&&)): Store
	stdoff only in m_offset (subtract info.save).
	(ZoneInfo::ZoneInfo(const pair<sys_info, string_view>&)):
	Likewise.
	(ZoneInfo::offset()): Document new semantics.
	(ZoneInfo::to(sys_info&)): Add m_save back to offset() when
	populating sys_info::offset.
	* testsuite/std/time/time_zone/numeric_save.cc: New test.

2026-05-12  Jonathan Wakely  <jwakely@redhat.com>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/123165
	* acinclude.m4 (libtool_VERSION): Bump version.
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.36): Add new symbol
	version and export new symbol.
	* configure: Regenerate.
	* include/std/chrono (__detail::__recent_leap_second_info):
	Declare new function and make it a friend of varous classes.
	(leap_second): Make private constructor constexpr. Remove friend
	declaration for get_leap_second_info.
	(__detail::__get_leap_second_info): Use new function for times
	past the hardcoded expiry.
	* src/c++20/tzdb.cc (tzdb_list::_Node::fixed_leaps): Move array
	of leap seconds here from _S_read_leap_seconds.
	(fixed_expiry, num_leap_seconds): New globals.
	(__detail::__recent_leap_second_info): Define new function.
	(tzdb_list::_Node::_S_read_leap_seconds): Populate vector from
	_Node::fixed_leaps. Rename bool variable to clarify meaning.
	(tzdb_list::_Node::_S_replace_head): Update num_leap_seconds
	when updating the tzdb_list.
	* testsuite/util/testsuite_abi.cc: Update known_versions and
	latestp.
	* testsuite/std/time/clock/utc/leap_second_info-2.cc: New test.

2026-05-12  Alexandre Oliva  <oliva@adacore.com>

	* acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
	Enable monotonic and realtime clocks.
	* configure: Rebuilt.

2026-05-11  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__formatter_str::_M_format_range):
	Reorder constexpr checks, to reduce number of instantiations.

2026-05-07  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/78302
	PR libstdc++/71301
	* include/std/tuple [C++20] (tuple(tuple&&)): Add
	requires-clause.
	* testsuite/20_util/tuple/cons/78302.cc: New test.

2026-05-07  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/105580
	* include/bits/streambuf_iterator.h (istreambuf_iterator::_M_sbuf):
	Remove mutable and adjust whitespace.
	(istreambuf_iterator::_M_c): Adjust whitespace.
	(istreambuf_iterator::operator++()): Clear _M_sbuf if next character
	is EoF.
	(istreambuf_iterator::operator++(int)): Use _M_sbuf->sgetc() to
	load current character, and define in terms of ++*this.
	(istreambuf_iterator::_M_get()): Do not clear _M_sbuf in case of EoF.
	* include/std/streambuf (streambuf::gptr, streambuf::egptr)
	(streambuf::gbump): Remove surrounding pragma disabling -Wnull-dereference.
	* testsuite/24_iterators/istreambuf_iterator/2.cc: Test for using
	multiple iterators to same rdbuf.

2026-05-06  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/out_ptr.h (out_ptr_t::_Impl::~_Impl): Adjust
	access to shared_ptr internals.
	* include/bits/shared_ptr_base.h (_Sp_counted_deleter): Remove
	_Impl class and replace _M_impl with the data members it
	contained.
	(_Sp_counted_ptr_inplace): Likewise.

2026-05-06  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/shared_ptr_base.h (_Sp_ebo_helper): Simplify by
	using [[__no_unique_address__]] instead of EBO. Use the
	attribute unconditionally for the unstable ABI.
	(_Sp_counted_deleter::_Impl): Adjust uses of _Sp_ebo_helper.
	(_Sp_counted_ptr_inplace::_Impl): Likewise.
	* include/std/tuple (_Head_base): Remove implementation for
	compilers that don't support [[__no_unique_address__]]. Use the
	attribute unconditionally for the unstable ABI.

2026-05-06  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (range_formatter::format): Format all
	contiguous ranges as span<__format::__maybe_const<_Tp, _CharT>>.

2026-05-06  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/shared_ptr.h (_UnboundedArray, _BoundedArray)
	(_NotUnboundedArray): Remove fallback definition for C++20
	compilers that don't define __cpp_concepts.
	* include/bits/shared_ptr_base.h (_Sp_counted_ptr_inplace):
	Remove fallback declaration of _Sp_overwrite_tag partial
	specialization.

2026-05-06  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/119126
	* include/bits/funcwrap.h : (__polyfunc::__invoker_of):
	Updated to use _Invoker::_Signature and mark as constexpr.
	(__polyfunc::_base_of): Mark as constexpr.
	(__std:::__is_function_ref_v, __polyfunc::_Ref_base)
	(__polyfunc::__is_funcref_assignable): Define.
	* include/bits/funcref_impl.h (std::function_ref): Add base class
	of type__polyfunc::_Ref_base. Befriend __invoker_of, __base_of,
	__is_invoker_convertible, __is_invoker_convertible.
	(function_ref::_Base): Define.
	(function_ref::_M_init, function_ref::_M_ptrs): Move to base class.
	(function_ref::function_ref(_Fn&&), function_ref::operator=): Handle
	specializations of function_ref with compatible signatures.
	(function_ref::function_ref): Init base class before _M_invoke
	consistently, and remove setting of _M_nullptr.
	* include/bits/cpyfunc_impl.h (copyable_function): Udpdated friend
	declarations.
	(copyable_function::_Signature): Remove.
	* include/bits/mofunc_impl.h (move_only_function): Udpdated friend
	declarations.
	(move_only_function::_Signature): Remove.
	* include/bits/version.def (function_ref): Bump to 202604.
	* include/bits/version.h: Regnerate.
	* testsuite/20_util/function_ref/cons.cc: Updated checked FTM value.
	* testsuite/20_util/function_ref/conv.cc: Updated test to illustrate
	that double indirection is avoided.
	* testsuite/20_util/function_ref/dangling.cc: Test for initializing
	from function_ref with compatible signature.
	* testsuite/20_util/function_ref/dangling_neg.cc: Test for
	initializing from function_ref with incompatible signature.

2026-05-06  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++20/atomic.cc (__waitable_state::_S_align): Remove.
	(__waitable_state::_M_waiters, __waitable_state::_M_ver): Use
	std::hardware_destructive_interference_size for alignment.

2026-05-06  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/97001
	* include/bits/range_access.h: Improve Doxygen comments.

2026-05-05  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124657
	* include/experimental/bits/simd_x86.h (__is_x86_pd): Fix macro
	names and refactor to reduce instantiations.

2026-05-05  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/109965
	* doc/doxygen/mainpage.html: Link to topics.html instead of
	modules.html

2026-05-05  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/unique_ptr.h (unique_ptr::_Nothrow_deref): New
	helper for pre-C++20.
	(unique_ptr::operator*): Either constrain or use _Nothrow_deref.
	* testsuite/20_util/unique_ptr/lwg4324.cc: New test.

2026-05-05  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan: Replace eight spaces with tabs.
	(__mdspan::__is_constant_wrapper): Remove.
	(__mdspan::__acceptable_slice_type, __mdspan::__static_slice_extent)
	(__mdspan::__is_unit_stride_slice, __mdspan::__canonical_range_slice)
	(__mdspan::__check_inrange_index, __mdspan::__check_valid_index)
	(__mdspan::__check_valid_slice): Use std::__is_constant_wrapper_v.

2026-05-02  Alexandre Oliva  <oliva@adacore.com>

	* testsuite/30_threads/semaphore/try_acquire_until.cc
	(test01): Reorder calls.

2026-05-01  Jonathan Wakely  <jwakely@redhat.com>

	* doc/doxygen/user.cfg.in (PREDEFINED): Add BEGIN/END macros for
	the <experimental/simd> namespace.
	* include/experimental/bits/simd.h: Move BEGIN macro before
	Doxygen @{ group.

2026-05-01  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/locale_conv.h: Prevent namespace __detail from
	being documented as part of the Locales topic.

2026-05-01  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/stl_iterator.h: Prevent Doxygen from documenting
	namespace __detail as part of the Iterators topic.
	* include/bits/stl_iterator_base_funcs.h: Likewise. Also mark
	internal helpers as undocumented.
	(distance, advance): Improve Doxygen comments.
	* include/bits/stl_iterator_base_types.h (iterator): Use
	markdown in Doxygen comment. Add @deprecated.
	(iterator_traits): Improve wording of Doxygen comment.

2026-05-01  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/121919
	* include/bits/ranges_algo.h (__sample_fn, __shuffle_fn): Use
	decltype(__g()) instead of remove_reference_t<_G>::result_type.
	* include/bits/uniform_int_dist.h
	(uniform_int_distribution::operator()): Use decltype(__urng())
	instead of _UniformRandomBitGenerator::result_type
	(uniform_int_distribution::__generate_impl): Likewise.
	* testsuite/25_algorithms/sample/121919.cc: New test.
	* testsuite/25_algorithms/shuffle/121919.cc: New test.

2026-04-30  Felix Morgner  <felix.morgner@gmail.com>

	PR libstdc++/125112
	* include/Makefile.am: Move bits/binders.h from bits_headers to
	bits_freestanding.
	* include/Makefile.in:

2026-04-30  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
	Updated tests.

2026-04-29  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/29_atomics/headers/stdatomic.h/macros.cc:
	Copy of ../atomic/macros.cc with header include changed.

2026-04-29  Alexandre Oliva  <oliva@adacore.com>

	PR libstdc++/124657
	* include/experimental/bits/simd_x86.h
	(__is_x86_ps<_Tp>): New.  Replace is_same_v<_Tp, float> with it.
	(__is_x86_pd<_Tp>): New.  Replace is_same_v<_Tp, double> with it.

2026-04-29  Alexandre Oliva  <oliva@adacore.com>

	PR libstdc++/124657
	* include/experimental/bits/simd.h (__intrinsic_type::type):
	Map long double to double.

2026-04-29  Alexandre Oliva  <oliva@adacore.com>

	* include/std/limits (__glibcxx_integral_traps): Set to
	false.  Update comments.
	(numeric_limits<bool>::traps): Drop comments.
	* config/cpu/arm/cpu_defines.h: Remove.
	* config/cpu/powerpc/cpu_defines.h: Likewise.
	* configure.host (cpu_defines_dir): Adjust.

2026-04-28  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/status_cxx2023.xml: Update status table.
	* doc/html/manual/status.html: Regenerate.

2026-04-28  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/using.xml (Flags): Update description of
	default value for -std option.
	* doc/html/manual/using.html: Regenerate.

2026-04-28  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/ptr_traits.h (__ptr_traits_ptr_to::pointer_to):
	Define as constexpr since C++20.
	* testsuite/20_util/pointer_traits/pointer_to_constexpr.cc:
	New test for custom pointer-like type.

2026-04-28  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/18_support/comparisons/type_order/1.cc: Add tests
	for more type.

2026-04-27  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/125024
	* include/std/type_traits (std::is_scalar): For
	__cpp_impl_reflection >= 202506L handle is_reflection types as
	scalar.
	* testsuite/20_util/is_scalar/reflection.cc: New test.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/chrono.h: Add static_assert requiring cv-unqualified
	non-reference type.
	* testsuite/20_util/duration/io.cc: Remove const-qualifier in
	stream manipluators tests.
	* testsuite/20_util/duration/requirements/typedefs_neg4.cc:
	New test.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/ranges (__detail::__has_tuple_element): Check
	if std::get<_Nm>(__t) returns referenceable type also for C++23
	and later.
	* testsuite/std/ranges/adaptors/elements.cc: Add test covering
	vector of ranges::subrange with move-only iterator.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/ranges (_Iota::operator()(_Tp&&)): Replace
	auto return type and CTAD with iota_view<decay_t<_Tp>>.
	* testsuite/std/ranges/iota/iota_view.cc: Tests if
	views::iota(iota_view) is rejected.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/ranges (_AdjacentTransform::operator())
	(_Adjacent::operator()): Require forward_range for N == 0.
	* testsuite/std/ranges/adaptors/adjacent/1.cc: Test if input_ranges
	are rejected.
	* testsuite/std/ranges/adaptors/adjacent_transform/1.cc: Likewise.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/ranges: Add comment for LWG4083.

2026-04-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/stl_iterator.h (basic_const_iterator::iterator_type):
	Define.
	* testsuite/24_iterators/const_iterator/1.cc: Tests for
	iterator_type.

2026-04-24  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/chrono (chrono::__detail::__get_leap_second_info):
	Update expiry date for leap seconds list.
	* src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds):
	Likewise.
	* src/c++20/tzdata.zi: Import new file from 2026a release.

2026-04-23  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/indirect.h (indirect::operator==): Adjust
	noexcept specification.
	* testsuite/std/memory/indirect/relops.cc: New test for noexcept
	specification.

2026-04-23  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/simd_details.h (simd::__constexpr_wrapper_like):
	Move to...
	* include/std/concepts (std::__constexpr_wrapper_like): Moved
	from bits/simd_details.h.
	* include/std/span (std::__integral_constant_like): Define in
	terms of __constexpr_wrapper_like.
	* testsuite/std/simd/traits_impl.cc: Added using declaration
	for std::__constexpr_wrapper_like.

2026-04-22  Jakub Jelinek  <jakub@redhat.com>

	* include/bits/version.def (reflection): Bump 202506L to 202603L
	for both v and in extra_cond.
	* include/bits/version.h: Regenerate.
	* include/std/meta: Compare __glibcxx_reflection against
	202603L rather than 202506L.
	* src/c++23/std.cc.in: Likewise.

2026-04-22  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/align.h (is_sufficiently_aligned): Mandate
	that _Align is power of two.
	* testsuite/20_util/is_sufficiently_aligned/2_neg.cc: New test.

2026-04-22  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (mdspan): Remove reference from
	_AccessorType::data_handle_type parameteter of deduction
	guide.
	* testsuite/23_containers/mdspan/mdspan.cc: New test.

2026-04-22  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/chrono_io.h: Add comment for LWG3831.
	* include/bits/print.h: Add comment for LWG4549.
	* include/std/condition_variable: Add comment for LWG3504.
	* include/std/format: Add comments for LWG4522.
	* include/std/mdspan: Add comment for LWG4314.
	* include/std/optional: Add comment for LWG2746.

2026-04-21  Nathan Myers  <ncm@cantrip.org>

	* include/bits/alloc_traits.h (allocate_at_least):
	Take allocator argument by reference, per Standard.

2026-04-21  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++23/print.cc (__open_terminal): Fix comment.

2026-04-21  Marek Polacek  <polacek@redhat.com>

	PR c++/124950
	* include/std/meta (std::meta::data_member_options): Initialize
	alignment, bit_width, and annotations members.

2026-04-21  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/120527
	* include/bits/atomic_wait.h [__OpenBSD__ || __DragonFly]: Use
	unsigned int for __platform_wait_t.

2026-04-21  Jonathan Wakely  <jwakely@redhat.com>
	    Iain Sandoe  <iain@sandoe.co.uk>

	PR libstdc++/120527
	* include/bits/atomic_wait.h:
	* src/c++20/atomic.cc (__ulock_wait): Enable supported Darwin versions.
	(__ulock_wake): Likewise.
	(UL_COMPARE_AND_WAIT): New.
	(UL_COMPARE_AND_WAIT64): New.
	(ULF_WAKE_ALL): New.
	(_GLIBCXX_HAVE_PLATFORM_WAIT): Enable for suppported Darwin versions.

2026-04-21  Matthias Kretz  <m.kretz@gsi.de>

	* include/bits/simd_details.h (__value_preserving_cast): Remove.
	* include/bits/simd_mask.h (basic_mask): Replace plain 0 and 1
	literals with cw<0> and cw<1>. Replace explicit basic_vec
	construction from 0 and 1 with default init and broadcast from
	_Up(1).
	(_M_to_uint): Replace 1 with cw<1>.
	* include/bits/simd_vec.h (basic_vec): Remove consteval
	broadcast overload. Remove explicit broadcast from
	non-value-preserving types.
	* testsuite/std/simd/arithmetic.cc: Replace ill-formed integer
	literals with explicit cast to T or use cw.
	* testsuite/std/simd/mask.cc: Likewise.
	* testsuite/std/simd/simd_alg.cc: Likewise.
	* testsuite/std/simd/traits_common.cc: Adjust for resulting
	traits changes.
	* testsuite/std/simd/traits_math.cc: Likewise.

2026-04-21  Patrick Palka  <ppalka@redhat.com>

	PR c++/124910
	* include/std/optional (_Optional_payload_base::_M_destroy):
	Restrict r16-8748 workaround to Clang, and adjust comment.

2026-04-20  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/print.h: Fix spelling of macro.

2026-04-18  Patrick Palka  <ppalka@redhat.com>

	PR c++/124910
	* include/std/optional (_Optional_payload_base::_M_destroy)
	[__cpp_lib_optional >= 202106L]: During constant evaluation,
	after invoking destructor of _M_value, use construct_at to
	activate _M_empty.
	* testsuite/20_util/optional/constexpr/124910.cc: New test.

2026-04-17  Patrick Palka  <ppalka@redhat.com>

	PR libstdc++/124890
	PR libstdc++/119714
	PR libstdc++/112490
	* include/bits/indirect.h (indirect::operator==): Replace
	non-dependent std::indirect function parameter with a
	dependent one of type indirect<_Vp> where _Vp matches _Tp.
	* testsuite/std/memory/indirect/124890.cc: New test.

2026-04-17  Jakub Jelinek  <jakub@redhat.com>

	* config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Update.
	* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Update.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/print.h (_File_sink): Add comments.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124410
	* doc/html/*: Regenerate.
	* doc/xml/manual/using.xml (_GLIBCXX_NO_INLINE_PRINT): Document
	macro.
	* include/Makefile.am: Add bits/print.h and bits/ostream_print.h
	headers.
	* include/Makefile.in: Regenerate.
	* include/std/ostream (vprint_nonunicode, vprint_unicode): Move
	definitions to new bits/ostream_print.h header.
	* include/std/print (__format::_File_sink, vprint_nonunicode)
	(vprint_nonunicode_buffered, vprint_unicode)
	(vprint_unicode_buffered): Move definitions to new bits/print.h
	header.
	* src/c++23/print.cc: Include new headers to define symbols for
	inline print functions.
	* include/bits/ostream_print.h: New file.
	* include/bits/print.h: New file.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
	Likewise.
	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
	Likewise.

2026-04-17  Jakub Jelinek  <jakub@redhat.com>

	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/chrono: Improve Doxygen comments.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124268
	* config/abi/pre/gnu.ver: Export symbols.
	* src/Makefile.am: Add libmodulesconvenience.la to libstdc++
	link.
	* src/Makefile.in: Regenerate.
	* src/c++23/Makefile.am: Create libmodulesconvenience.la
	and populate it with std.o and std.compat.o interface units,
	with empty fallback objects if compiling the interface units
	fails. Add clean-local target.
	* src/c++23/Makefile.in: Regenerate.

2026-04-17  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124540
	* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
	Skip long double tests for IBM long double format.

2026-04-16  Tomasz Kamiński  <tkaminsk@redhat.com>

	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Exclude exports
	of std::basic_fo* (matching basic_format_context).
	(GLIBCXX_3.4.35): Export __format::__do_vformat_to
	specializations for _Sink_iter and char/wchar_t.
	* include/std/format: (__format::__do_vformat_to):
	Extract overload accepting _Sink_iter and provide extern
	explicit specialization for char/wchar_t in C++20 mode.
	* src/c++20/Makefile.am: Add format-inst.cc.
	* src/c++20/Makefile.in: Regenerate.
	* src/c++20/format-inst.cc: New file defining explicit
	instantiation.

2026-04-15  Elena Tyuleneva  <elena.tyuleneva@intel.com>

	* include/bits/random.tcc (philox_engine::_M_transtiion): Fix
	counter increment to propagate carry correctly.
	* testsuite/26_numerics/random/philox_engine/operators/counter_carry.cc:
	New test.

2026-04-15  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/random.tcc (philox_engine::_M_transition): Cast
	intermediate values to result_type for n=2 case.

2026-04-15  Matthias Kretz  <m.kretz@gsi.de>

	* include/bits/simd_vec.h (basic_vec deduction guide): Explicit
	cast to simd-size-type from range size type.

2026-04-15  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (define_static_object): Adjust for LWG4483 changes
	- handle unions and arrays differently.

2026-04-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (stdbit_h, stdckdint_h): Define.
	* include/bits/version.h: Regenerate.
	* include/c_compatibility/stdbit.h (__cpp_lib_stdbit_h): Define
	and use it in guards.
	* include/c_compatibility/stdckdint.h (__cpp_lib_stdckdint_h):
	Define and use it in guards.

2026-04-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/std/format/fill.cc: New test.
	* testsuite/std/format/fill_nonunicode.cc: New test.

2026-04-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/20_util/constant_wrapper/generic.cc: Replace
	std::std::invalid_argument with NegativeArgument and
	removed <stdexcept> include.

2026-04-14  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (constant_wrapped): Updated to 202603L.
	* include/bits/version.h: Regenerate.
	* include/bits/utility.h (_CwOperators::operator())
	(_CwOperators:operator[]): Delete, they are now provided by...
	(constant_wrapper::operator(), constant_wrapper::operator[]):
	Define.
	* testsuite/20_util/constant_wrapper/generic.cc: Add additional
	test cases for invoke and subscript.
	* testsuite/20_util/constant_wrapper/version.cc: Update tested
	value.

2026-04-14  Matthias Wippich  <mfwippich@gmail.com>
	    Ivan Lazaric  <ivan.lazaric1@gmail.com>

	* include/bits/utility.h (std::tuple_size, std::tuple_element):
	Add partial specializations for integer_sequence.
	(std::get(integer_sequence<_Tp, _Idx...>)): Define.
	* include/bits/version.def (integer_sequence): Bump to 202511L.
	* include/bits/version.h: Regenerate.
	* testsuite/20_util/integer_sequence/tuple_access.cc: New test.
	* testsuite/20_util/integer_sequence/tuple_access_neg.cc: New test.
	* testsuite/experimental/feat-cxx14.cc: Updated check for
	__cpp_lib_integer_sequence value.

2026-04-13  François Dumont  <frs.dumont@gmail.com>

	* include/bits/hashtable.h: Replace usages of std::__addressof with
	std::addressof.
	* include/bits/hashtable_policy.h: Likewise.

2026-04-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (replaceable_contract_violation_handler)
	[(__cplusplus > 202302L) && (__cpp_contracts >= 202502L)]:
	Define to 202603 for ELF targets, and 0 otherwise.
	* include/bits/version.h: Regenerate.
	* include/std/contracts: Define
	__cpp_lib_replaceable_contract_violation_handler.

2026-04-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Remove _ZNKSs11_[MS]_*
	and _ZNKSbIwSt11char_traitsIwESaIwEE11_[MS]_* patterns.

2026-04-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (function_ref): Bump to 202603L.
	* include/bits/version.h: Regenerate.
	* testsuite/20_util/function_ref/assign.cc: Remove repeated
	check for feature test macro.
	* testsuite/20_util/function_ref/cons.cc: Updated checked
	value.

2026-04-10  Patrick Palka  <ppalka@redhat.com>

	* include/std/ranges (lazy_split_view::begin): Add
	const _Pattern constraint on const overload as per LWG 3599.
	(lazy_split_view::end): Likewise.
	* testsuite/std/ranges/adaptors/lazy_split.cc (test14): New
	test.

2026-04-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (ranges_to_input): Rename to...
	(ranges_as_input): Rename from ranges_as_input.
	* include/bits/version.h: Regenerate.
	* include/std/ranges (ranges::to_input_view, views::to_input)
	(__detail::__can_to_input, views::_ToInput): Rename to...
	(ranges::as_input_view, views::as_input, __detail::__can_as_input)
	(views::_AsInput): Rename from above...
	* src/c++23/std.cc.in: Rename views::to_input and to_input_view
	export.
	* testsuite/25_algorithms/contains/1.cc: Replace views::to_input
	with views::as_input.
	* testsuite/std/ranges/adaptors/to_input/1.cc: Move to...
	* testsuite/std/ranges/adaptors/as_input/1.cc: ...here, and replace
	views::to_input with views::as_input.

2026-04-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (span_initializer_list): Remove.
	* include/bits/version.h: Regenerate.
	* include/std/span (span::span(initializer_list<value_type>)):
	Remove.
	* testsuite/23_containers/span/init_list_cons.cc: Removed.
	* testsuite/23_containers/span/init_list_cons_neg.cc: Removed.
	* testsuite/23_containers/inplace_vector/copy.cc: Replace span
	with initializer_list in eq helper.
	* testsuite/23_containers/inplace_vector/erasure.cc: Likewise.
	* testsuite/23_containers/inplace_vector/move.cc: Likewise.

2026-04-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/ranges_uninitialized.h
	(__uninitialized_fill_fn::operator())
	(__uninitialized_fill_fn_n::operator()): Add default argument
	for _Tp parameter.
	* include/bits/stl_uninitialized.h (std::unitialized_fill)
	(std::unitialized_fill_n): Likewise.
	* include/pstl/glue_memory_defs.h (std::unitialized_fill)
	(std::unitialized_fill_n): Likewise.
	* include/bits/version.def (algorithm_default_value_type):
	Bump to 202603.
	* include/bits/version.h: Regenerate.
	* testsuite/25_algorithms/default_template_value.cc:
	Test for new algorithms.

2026-04-08  Matthias Kretz  <m.kretz@gsi.de>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/funcref_impl.h (function_ref::function_ref):
	Change nontype_t parameter to constant_wrapper, and adjust
	accordingly. Add static_assert detecting ambigous semantics.
	(function_ref::operator=): Detect constant_wrapper rather than
	nontype_t.
	* include/bits/funcwrap.h (function_ref): Change nontype_t
	parameter to constant_wrapper in deduction guides.
	* include/bits/utility.h (std::nontype_t, std::nontype)
	(std::__is_nontype_v): Remove.
	(std::__is_constant_wrapper_v): Define.
	* src/c++23/std.cc.in (std::nontype_t, std::nontype):
	Remove exports.
	* testsuite/20_util/function_ref/cw_cons_neg.cc: New tests
	for ambiguity check.
	* testsuite/20_util/function_ref/assign.cc: Replace nontype_t
	with constant_wrapper and nontype with std::cw.
	* testsuite/20_util/function_ref/call.cc: Likewise.
	* testsuite/20_util/function_ref/cons.cc: Likewise.
	* testsuite/20_util/function_ref/cons_neg.cc: Likewise.
	* testsuite/20_util/function_ref/dangling.cc: Likewise.
	* testsuite/20_util/function_ref/deduction.cc: Likewise.
	* testsuite/20_util/function_ref/mutation.cc: Likewise.

2026-04-08  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/utility.h (std::_CwFixedValue, std::_ConstExprParam)
	(std::_CwOperators, std::constant_wrapper): Moved from...
	* include/std/type_traits (std::_CwFixedValue, std::_ConstExprParam)
	(std::_CwOperators, std::constant_wrapper): Moved to bits/utility.h.
	Disable __cpp_lib_constant_wrapper defintion.
	* include/std/utility: Define __cpp_lib_constant_wrapper.
	* testsuite/20_util/constant_wrapper/adl.cc: Updated header includes.
	* testsuite/20_util/constant_wrapper/ex.cc: Likewise.
	* testsuite/20_util/constant_wrapper/generic.cc: Likewise.
	* testsuite/20_util/constant_wrapper/instantiate.cc: Likewise.
	* testsuite/20_util/constant_wrapper/op_comma_neg.cc: Likewise.
	* testsuite/20_util/constant_wrapper/other_wrappers.cc: Likewise.
	* testsuite/20_util/constant_wrapper/version.cc: Likewise.

2026-04-08  Jakub Jelinek  <jakub@redhat.com>

	* include/std/type_traits (std::is_consteval_only,
	std::is_consteval_only_v): Remove.
	* include/std/meta (std::meta::is_consteval_only_type): Remove.
	* src/c++23/std.cc.in: Don't export std::is_consteval_only,
	std::is_consteval_only_v and std::meta::is_consteval_only_type.
	* testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc:
	Remove.
	* testsuite/20_util/is_consteval_only/requirements/typedefs.cc:
	Remove.
	* testsuite/20_util/is_consteval_only/value.cc: Remove.
	* testsuite/20_util/variable_templates_for_traits.cc: Remove
	is_consteval_only_v tests.

2026-04-07  Tomasz Kamiński  <tkaminsk@redhat.com>

	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Make string exports
	less greedy.
	(GLIBCXX_3.4.35): Export basic_string default constructor and
	starts_with and ends_with members.
	* include/bits/basic_string.h: Update __cpluplus checks for C++20.
	* include/bits/cow_string.h: Likewise.
	* include/bits/basic_string.tcc: Declare explicit instantiations
	for C++20 as well as earlier dialects.
	* src/c++20/Makefile.am: Add cow-string-inst.cc and
	string-inst.cc source files.
	* src/c++20/Makefile.in: Regenerate.
	* src/c++20/string-inst.cc: New file defining explicit
	instantiations for basic_string default constructor and starts_with,
	ends_with methods added in C++20
	* src/c++20/cow-string-inst.cc: Version of above for cow-stings.

2026-04-07  Matthias Kretz  <m.kretz@gsi.de>

	PR libstdc++/124722
	* testsuite/std/simd/traits_impl.cc (test): Make test() a
	function template and instantiate it.

2026-04-06  Matthias Kretz  <m.kretz@gsi.de>

	PR libstdc++/124722
	* include/bits/version.def: Check for __SSE2__ rather than x86.
	* include/bits/version.h: Regenerate.
	* testsuite/std/simd/arithmetic.cc: Build with -msse2.
	* testsuite/std/simd/arithmetic_expensive.cc: Likewise.
	* testsuite/std/simd/creation.cc: Likewise.
	* testsuite/std/simd/creation_expensive.cc: Likewise.
	* testsuite/std/simd/loads.cc: Likewise.
	* testsuite/std/simd/loads_expensive.cc: Likewise.
	* testsuite/std/simd/mask.cc: Likewise.
	* testsuite/std/simd/mask2.cc: Likewise.
	* testsuite/std/simd/mask2_expensive.cc: Likewise.
	* testsuite/std/simd/mask_expensive.cc: Likewise.
	* testsuite/std/simd/reductions.cc: Likewise.
	* testsuite/std/simd/reductions_expensive.cc: Likewise.
	* testsuite/std/simd/shift_left.cc: Likewise.
	* testsuite/std/simd/shift_left_expensive.cc: Likewise.
	* testsuite/std/simd/shift_right.cc: Likewise.
	* testsuite/std/simd/shift_right_expensive.cc: Likewise.
	* testsuite/std/simd/simd_alg.cc: Likewise.
	* testsuite/std/simd/simd_alg_expensive.cc: Likewise.
	* testsuite/std/simd/sse_intrin.cc: Likewise.
	* testsuite/std/simd/stores.cc: Likewise.
	* testsuite/std/simd/stores_expensive.cc: Likewise.
	* testsuite/std/simd/traits_common.cc: Likewise.
	* testsuite/std/simd/traits_math.cc: Likewise.

2026-04-04  Matthias Kretz  <m.kretz@gsi.de>

	PR libstdc++/124722
	* testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__
	and __STDCPP_BFLOAT16_T__ guards.

2026-04-04  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/20_util/optional/ref/access.cc: Provide
	definition for foo().

2026-04-03  Jakub Jelinek  <jakub@redhat.com>

	* include/bits/version.def (is_structural): New.
	* include/bits/version.h: Regenerate.
	* include/std/type_traits (__glibcxx_want_is_structural): Define.
	(std::is_structural): New type trait.
	(std::is_structural_v): New type trait variable template.
	* include/std/meta (std::meta::is_structural_type): New declaration.
	* src/c++23/std.cc.in: Export std::is_structural, std::is_structural_v
	and std::meta::is_structural_type.
	* testsuite/20_util/is_structural/requirements/explicit_instantiation.cc: New test.
	* testsuite/20_util/is_structural/requirements/typedefs.cc: New test.
	* testsuite/20_util/is_structural/value.cc: New test.
	* testsuite/20_util/variable_templates_for_traits.cc: Test
	is_structural_v.

2026-04-03  Jakub Jelinek  <jakub@redhat.com>

	* libsupc++/exception_ptr.h (std::make_exception_ptr): Use
	__builtin_current_exception() instead of current_exception() if
	the builtin exists.
	* libsupc++/nested_exception.h: Revert 2026-01-07 and 2025-07-10
	changes.
	* testsuite/18_support/exception_ptr/exception_ptr_cast.cc (test01):
	Use __builtin_current_exception instead of std::current_exception
	if __has_builtin(__builtin_current_exception).  Otherwise don't
	try to constant evaluate test01.

2026-04-02  Patrick Palka  <ppalka@redhat.com>

	* include/std/ranges (zip_view::size): Uglify 'sizes'
	parameter.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (inplace_vector): Bump to 202603.
	* include/bits/version.h: Regenerate.
	* include/std/inplace_vector (inplace_vector::try_emplace_back)
	(inplace_vector::try_push_back): Change return type to optional<_Tp&>
	and adjust implementation accordingly.
	(inplace_vector::try_append_range): Remove.
	* include/debug/inplace_vector (inplace_vector::try_emplace_back)
	(inplace_vector::try_push_back, inplace_vector::try_append_range):
	Likewise.
	* testsuite/23_containers/inplace_vector/modifiers/single_insert.cc:
	Updated check for the optional<T&> return. Added test for type
	convertible to optional<T&>
	* testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc:
	Use has_value() to check if engaged optional is returned.
	* testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc:
	Likewise.
	* testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc:
	Remove try_append_range tests.
	* testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc:
	Removed.
	* testsuite/23_containers/inplace_vector/version.cc: Updated expected
	feature test macro value.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/version: Add Doxygen documentation comment.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/regex_constants.h (format_default): Simplify
	description of $n in Doxygen comment.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/stl_pair.h (pair): Adjust Doxygen comment.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/chrono.h (floor, ceil, round): Fix Doxygen
	comments to use correct parameter name and describe return value
	more accurately.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/unordered_map.h (unordered_map::erase(K&&)):
	Change parameter name to __x.
	* include/bits/unordered_set.h (unordered_set::erase(K&&))
	(unordered_multiset::erase(K&&)): Likewise.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/ostream.h (operator<<): Do not include deleted
	overloads in @{ group.
	* include/bits/stl_queue.h (priority_queue): Add @{ group around
	constructors.
	* include/bits/unordered_map.h: Remove stray @{. Move #endif to
	encompass @} that is within the #if group.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/move.h (swap): Remove @return from Doxygen
	comment.
	* include/bits/stl_algo.h (inplace_merge, shuffle)
	(random_shuffle, partial_sort, nth_element, sort)
	(stable_sort): Likewise.
	* include/bits/stl_algobase.h (iter_swap, fill): Likewise.
	* include/bits/stl_deque.h (_Deque_base::_M_initialize_map)
	(deque::_M_range_initialize, deque::_M_fill_initialize):
	Likewise.
	* include/bits/stl_iterator_base_funcs.h (advance): Likewise.
	* include/bits/stl_numeric.h (iota): Likewise.
	* include/bits/stl_tempbuf.h (return_temporary_buffer):
	Likewise.
	* include/bits/stl_uninitialized.h (uninitialized_fill):
	Likewise.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:
	Add missing #endif.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* doc/doxygen/doxygroups.cc: Define variable_templates group.
	* include/bits/binders.h: Fix @file name.
	* include/bits/formatfwd.h: Add missing @cond
	* include/bits/forward_list.h: Add closing backtick in comment.
	* include/bits/out_ptr.h (out_ptr, inout_ptr): Fix names in
	@param comments.
	* include/bits/regex_constants.h: Escape backtick in comment.
	* include/bits/stl_map.h: Add missing @{.
	* include/bits/stl_set.h: Likewise.
	* include/bits/stl_pair.h: Move declaration of complex into #if
	group where it's used. Fix nesting of @cond and @endcond in #if
	groups.
	* include/std/functional: Move @cond inside #if group.
	* include/std/type_traits: Likewise.
	* libsupc++/exception: Fix typo'd backtick.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* doc/doxygen/user.cfg.in (INPUT): Add <debugging> header.
	(EXCLUDE_SYMBOLS): Exclude include guards and other internal
	macros from generated documentation.
	(PREDEFINED): Update __cplusplus to C++26 value. Remove
	unnecessary spaces in macro expansions. Add missing
	_GLIBCXX_ABI_TAG_CXX11 macro.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* doc/doxygen/user.cfg.in: Update Doxygen config.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/stl_map.h (map::try_emplace): Move #endif and use
	Doxygen's @{ to document all three overloads.
	(map::insert_or_assign): Use relevant feature test macro.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/version.def (submdspan): Update to 202603,
	and list all papers in comment.
	* include/bits/version.h: Regenerate.
	* include/std/mdspan: Replaced std::strided_stride to
	std::extent_slice, __is_strided_slice to __is_extent_slice,
	_SliceKind::__unit_strided_slice to __unit_stride_slice.
	* src/c++23/std.cc.in (std::extent_slice): Replaced
	std::strided_slice to std::extent_slice.
	* testsuite/23_containers/mdspan/submdspan/canonical_slices.cc:
	Replaced all occurences of strided_slice to extent_slice.
	* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc:
	Likewise.
	* testsuite/23_containers/mdspan/submdspan/strided_slice.cc: Move to...
	* testsuite/23_containers/mdspan/submdspan/extent_slice.cc: ...here
	and handle rename.
	* testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc: Move to...
	* testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc: ...here
	and handle rename.
	* testsuite/23_containers/mdspan/submdspan/selections/testcases.h:
	Replaced all occurences of strided_slice to extent_slice.
	* testsuite/23_containers/mdspan/submdspan/subextents.cc: Likewise.
	* testsuite/23_containers/mdspan/submdspan/subextents_neg.cc:
	Likewise.
	* testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc:
	Likewise.
	* testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc: Likewise.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (__mdspan::__static_slice_extent)
	(__mdspan::__dynamic_slice_extent): Return unmodified extent
	value for strided_slice.
	(__mdspan::__substrides_generic, __mdspan::__substrides_standardized):
	Multipliy stride, if more than one element is requested.
	(__mdspan::__canonical_range_slice): Define.
	(__mdspan::__slice_cast): Use __canonical_range_slice for range_slice
	and two elements tuples.
	(__mdspan::__check_inrange_index): Define.
	(__mdspan::__check_valid_slice): Validate if slice.offset +
	(slice.extent - 1) * slice.stride fits into extent of given
	dimension. Check stride if slice.extent > 1.
	* testsuite/23_containers/mdspan/submdspan/canonical_slices.cc:
	Add test for range_slice.
	* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc:
	Add tests validating new conditions.
	* testsuite/23_containers/mdspan/submdspan/selections/testcases.h:
	Adjusted for change of meaing of strided_slice::extent.
	* testsuite/23_containers/mdspan/submdspan/subextents.cc:
	Adjusted for change of meaing of strided_slice::extent. And expanded
	range_slice tests.
	* testsuite/23_containers/mdspan/submdspan/subextents_neg.cc:
	Adjusted for change of meaing of strided_slice::extent.
	* testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc:
	Adjust test for stride value.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* src/c++23/std.cc.in (range_slice): Export.
	* include/std/mdspan (range_slice, __mdspan::__is_range_slice):
	Define.
	(__mdspan::__slice_cast): Handle strided_slice.
	* testsuite/23_containers/mdspan/submdspan/subextents.cc:
	Sanity tests for range_slice.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* Makefile.am (new-abi-baseline): New target.
	* Makefile.in: Regenerate.

2026-04-02  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/format (dynamic_format): Check new value for
	feature test macro.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* src/c++23/std.cc.in (std::saturatint_cast): Fixed typo...
	(std::saturating_cast): ...by exporting this.

2026-04-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	* src/c++23/std.cc.in (std::runtime_format, std::add_sat)
	(std::sub_sat, std::mul_sat, std::div_sat, std::saturate_cast):
	Replace exports with...
	(std::dynamic_format, std::saturating_add, std::saturating_sub)
	(std::saturating_mul, std::saturating_div, std::saturating_cast):
	...exports of new names.

2026-04-01  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (std::meta::__detail::__statically_sized): New
	concept.
	(std::meta::define_static_array): Change return type to auto.  If
	__statically_sized<_Rg>, return span with ranges::size(__r) as
	second argument.

2026-04-01  François Dumont  <frs.dumont@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/cow_string.h
	(basic_string::replace(iterator, iterator, _InputIte, _InputIte)): Move
	__glibcxx_requires_valid_range to...
	(basic_string::_M_replace_dispatch(iterator, iterator, _InputIte,
	_InputIte, __fase_type)): ...here.
	* testsuite/21_strings/basic_string/debug/append_neg.cc: New test case.
	* testsuite/21_strings/basic_string/debug/assign_neg.cc: New test case.
	* testsuite/21_strings/basic_string/debug/construct_neg.cc: New test case.
	* testsuite/21_strings/basic_string/debug/insert_neg.cc: New test case.
	* testsuite/21_strings/basic_string/debug/replace_neg.cc: New test case.

2026-04-01  Patrick Palka  <ppalka@redhat.com>

	* include/std/ranges (iota_view::_Sentinel): Remove _M_equal and
	_M_distance_from.  Inline logic into friend operators.
	(basic_istream_view::_Iterator): Remove _M_at_end.  Inline logic
	into operator==.
	(transform_view::_Sentinel): Remove __distance_from and __equal.
	Inline logic into friend operators.
	(join_view::_Sentinel): Remove __equal.  Inline logic into operator==.
	(lazy_split_view::_OuterIter): Remove __at_end.  Inline logic into
	operator==.
	(split_view::_Sentinel): Remove _M_equal.  Inline logic into operator==.
	(elements_view::_Sentinel): Remove _M_equal and _M_distance_from.
	Inline logic into friend operators.

2026-04-01  Patrick Palka  <ppalka@redhat.com>

	* include/bits/version.def (ranges_filter): Define for C++20.
	* include/bits/version.h: Regenerate.
	* include/std/ranges: Provide __cpp_lib_ranges_filter.
	(filter_view::_Iterator): Add _Const template parameter.
	(filter_view::_Iterator::_S_iter_concept): Return
	input_iterator_tag if _Const.
	(filter_view::_Iterator::_Parent): New.
	(filter_view::_Iterator::_Base): New.
	(filter_view::_Iterator::_Vp_iter): Replace with ...
	(filter_view::_Iterator::_Base_iter): ... this.
	(filter_view::_Iterator::_M_current): Adjust to consider _Const.
	(filter_view::_Iterator::_M_parent): Likewise.
	(filter_view::_Iterator::value_type): Likewise.
	(filter_view::_Iterator::difference_type): Likewise.
	(filter_view::_Iterator::_Iterator): Likewise.  Add
	const-converting overload.
	(filter_view::_Iterator::base): Adjust to consider _Const.
	(filter_view::_Iterator::operator*): Likewise.
	(filter_view::_Iterator::operator->): Likewise.
	(filter_view::_Iterator::operator++): Likewise.
	(filter_view::_Iterator::operator--): Likewise.
	(filter_view::_Iterator::iter_move): Likewise.
	(filter_view::_Iterator::iter_swap): Likewise.
	(filter_view::_Sentinel): Add _Const template parameter.
	(filter_view::_Sentinel::_Parent): New.
	(filter_view::_Sentinel::_Base): New.
	(filter_view::_Sentinel::_M_end): Adjust to consider _Const.
	(filter_view::_Sentinel::_Sentinel): Likewise.  Add
	const-converting overload.
	(filter_view::_Sentinel::base): Adjust to consider _Const.
	(filter_view::_Sentinel::operator==): Likewise.  Inline the
	helper member function __equal.
	(filter_view::begin): Adjust return type of non-const overload.
	New const overload.
	(filter_view::end): Likewise.
	* testsuite/std/ranges/adaptors/filter.cc: Verify value of
	__cpp_lib_ranges_filter.
	(test08): New test.

2026-04-01  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/chrono_io.h (__formatter_chrono::_S_empty_fs)
	(__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_D_x)
	(__formatter_chrono::_M_F, __formatter_chrono::_M_subsecs)
	(__formatter_chrono_info::_M_format_to): Use
	_Dynamic_format_string instead of _Runtime_format_string.
	* include/bits/version.def (format): Bump value.
	* include/bits/version.h: Regenerate.
	* include/std/format (_Runtime_format_string): Rename to
	_Dynamic_format_string.
	(runtime_format): Rename to dynamic_format.
	* include/std/print (println): Adjust comment to refer to
	dynamic_format instead of runtime_format.
	* testsuite/std/format/runtime_format.cc: Move to...
	* testsuite/std/format/dynamic_format.cc: ...here.

2026-04-01  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/sat_arith.h (add_sat, sub_sat, mul_sat, div_sat)
	(saturate_cast): Rename to saturating_xxx as per P4052R0.
	* include/bits/version.def (saturation_arithmetic): Bump value.
	* include/bits/version.h: Regenerate.
	* testsuite/26_numerics/saturation/add.cc: Use new name.
	* testsuite/26_numerics/saturation/cast.cc: Likewise.
	* testsuite/26_numerics/saturation/div.cc: Likewise.
	* testsuite/26_numerics/saturation/extended.cc: Likewise.
	* testsuite/26_numerics/saturation/mul.cc: Likewise.
	* testsuite/26_numerics/saturation/sub.cc: Likewise.
	* testsuite/26_numerics/saturation/version.cc: Check for updated
	value.

2026-03-31  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (std::meta::data_member_options): Add annotations
	member.

2026-03-31  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (std::meta::current_function,
	std::meta::current_class, std::meta::current_namespace): New
	declarations.
	* src/c++23/std.cc.in: Export those 3.

2026-03-30  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/atomic_base.h (__atomic_ref_base::_Address_return_t):
	Define.
	(__atomic_ref_base::address): Change return type to _Address_return_t.
	* include/bits/version.def (atomic_ref): Bump to 202603.
	* include/bits/version.h: Regenerate.
	* testsuite/29_atomics/atomic_ref/address.cc: Update check for
	return type.

2026-03-30  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (has_ellipsis_parameter): Rename to ...
	(is_vararg_function): ... this.  New declaration.
	* src/c++23/std.cc.in: Remove std::meta::has_ellipsis_parameter
	export, add std::meta::is_vararg_function export.

2026-03-28  Alexandre Oliva  <oliva@adacore.com>

	* include/experimental/bits/simd.h (__intrinsic_type): Accept
	64-bit long doubles on x86 SSE.

2026-03-27  Nathan Myers  <ncm@cantrip.org>

	* include/bits/stl_tree.h: Delete comment.

2026-03-25  Alexandre Oliva  <oliva@adacore.com>

	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc
	(test_wait_until): Extend the timeout for a stop request.

2026-03-21  Matthias Kretz  <m.kretz@gsi.de>

	* include/Makefile.am: Add simd headers.
	* include/Makefile.in: Regenerate.
	* include/bits/version.def (simd): New.
	* include/bits/version.h: Regenerate.
	* include/bits/simd_alg.h: New file.
	* include/bits/simd_details.h: New file.
	* include/bits/simd_flags.h: New file.
	* include/bits/simd_iterator.h: New file.
	* include/bits/simd_loadstore.h: New file.
	* include/bits/simd_mask.h: New file.
	* include/bits/simd_mask_reductions.h: New file.
	* include/bits/simd_reductions.h: New file.
	* include/bits/simd_vec.h: New file.
	* include/bits/simd_x86.h: New file.
	* include/bits/vec_ops.h: New file.
	* include/std/simd: New file.
	* testsuite/std/simd/arithmetic.cc: New test.
	* testsuite/std/simd/arithmetic_expensive.cc: New test.
	* testsuite/std/simd/create_tests.h: New file.
	* testsuite/std/simd/creation.cc: New test.
	* testsuite/std/simd/creation_expensive.cc: New test.
	* testsuite/std/simd/loads.cc: New test.
	* testsuite/std/simd/loads_expensive.cc: New test.
	* testsuite/std/simd/mask2.cc: New test.
	* testsuite/std/simd/mask2_expensive.cc: New test.
	* testsuite/std/simd/mask.cc: New test.
	* testsuite/std/simd/mask_expensive.cc: New test.
	* testsuite/std/simd/reductions.cc: New test.
	* testsuite/std/simd/reductions_expensive.cc: New test.
	* testsuite/std/simd/shift_left.cc: New test.
	* testsuite/std/simd/shift_left_expensive.cc: New test.
	* testsuite/std/simd/shift_right.cc: New test.
	* testsuite/std/simd/shift_right_expensive.cc: New test.
	* testsuite/std/simd/simd_alg.cc: New test.
	* testsuite/std/simd/simd_alg_expensive.cc: New test.
	* testsuite/std/simd/sse_intrin.cc: New test.
	* testsuite/std/simd/stores.cc: New test.
	* testsuite/std/simd/stores_expensive.cc: New test.
	* testsuite/std/simd/test_setup.h: New file.
	* testsuite/std/simd/traits_common.cc: New test.
	* testsuite/std/simd/traits_impl.cc: New test.
	* testsuite/std/simd/traits_math.cc: New test.

2026-03-20  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/122567
	* src/c++20/tzdb.cc (tzdb::current_zone): Loop over all trailing
	components of /etc/localtime path. Use readlink instead of
	std::filesystem::read_symlink.

2026-03-20  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++20/tzdb.cc [_AIX]: Change #ifndef to #ifdef.

2026-03-20  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124568
	* testsuite/24_iterators/istreambuf_iterator/105580.cc: Add
	no_pch option.

2026-03-20  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++17/fs_path.cc (path::operator+=): Use pointer
	comparison to detect aliasing instead of a loop.

2026-03-20  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/generator (_Stateless_alloc): Swap order of
	constraints.

2026-03-19  François Dumont  <frs.dumont@gmail.com>

	* src/c++11/debug.cc (_Safe_sequence_base::_M_detach_single): Do not
	check if input iterator is equal to _M_iterators if already equals to
	_M_const_iterators.
	(_Safe_unordered_container_base::_M_detach_local_single): Do not check
	if input local iterator is equal to _M_local_iterators if already equals
	to _M_const_local_iterators.

2026-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/121790
	* src/c++23/std.cc.in: Add enable_nonlocking_formatter_optimization.

2026-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/118030
	* src/c++23/std.cc.in: Add allocation_result.

2026-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/120775
	* src/c++23/std.cc.in: Add is_reflection{,_v} and
	is_consteval_only{,_v}.

2026-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/119794
	* src/c++23/std.cc.in: Add philox_engine and philox4x{32,64}.

2026-03-19  Jakub Jelinek  <jakub@redhat.com>

	* src/c++23/std.cc.in: Export views::indices.

2026-03-19  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124513
	* src/c++20/tzdb.cc (operator>>(istream&, at_time::Indicator&)):
	Do not peek at the next character if eofbit is already set.
	(istream& operator>>(istream&, at_time&)): Skip whitespace
	before the first character. Handle EOF when parsing "-" as time.
	Do not peek for ":" or "." if eofbit already set.
	* testsuite/std/time/time_zone/116110.cc (test_apia): Remove
	offset of 24h now that the UNTIL time is parsed correctly.
	* testsuite/std/time/time_zone/124513.cc: New test.

2026-03-19  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/116110
	* src/c++20/tzdb.cc (operator>>(istream&, ZoneInfo&)): Adjust
	inf.m_until according to indicator suffix on AT time in UNTIL.
	* testsuite/std/time/time_zone/116110.cc (test_kiritimati):
	Remove FIXME now that the UNTIL time is adjusted for STDOFF.
	(test_apia): Adjust FIXME now that UNTIL time is adusted for
	STDOFF.
	* testsuite/std/time/time_zone/get_info_sys.cc: Adjust expected
	results to account for corrected logic.
	* testsuite/std/time/zoned_time/1.cc: Likewise.

2026-03-19  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/116110
	* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Update
	info.offset and info.save to values from the active rule.
	* testsuite/std/time/time_zone/116110.cc: New test.

2026-03-18  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/17_intro/names.cc (ext, max_iter, ret, subs, Rg, Rs):
	Define macros.
	[__cplusplus < 201103] (mutex): Define macro.

2026-03-18  Jonathan Wakely  <jwakely@redhat.com>

	* include/experimental/bits/fs_path.h (path::stem)
	(path::extension, path::has_stem, path::has_extension): Uglify
	ext variable name.

2026-03-18  Jakub Jelinek  <jakub@redhat.com>

	* include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
	variable name.

2026-03-18  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (__mdspan::__index_type_cast): Handle
	forwarding referene and use forward for class types.
	* testsuite/23_containers/mdspan/int_like.h (ConstLValueInt)
	(CustomIndexKind::ConstLValue): Define.
	(CustomIndexType): Handle CustomIndexKind::ConstLValue.
	* testsuite/23_containers/mdspan/at.cc: Test with ConstLValueInt.
	* testsuite/23_containers/mdspan/extents/custom_integer.cc: Likewise.
	* testsuite/23_containers/mdspan/mdspan.cc: Likewise.

2026-03-17  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/chrono_io.h (__formatter_duration::_S_subseconds):
	Uglify subs variable name.
	* include/bits/fs_path.h (path::stem, path::extension)
	(path::has_stem, path::has_extension): Uglify ext parameter
	name.
	* include/ext/concurrence.h (__cond::wait, __cond::wait_recursive):
	Uglify mutex parameter names.
	* include/pstl/glue_algorithm_defs.h (generate_n): Uglify count
	parameter name.
	* include/std/ranges (zip_transform_view): Uglify Rs template
	parameter name.
	(__cartesian_is_sized_sentinel): Uglify FirstSent template
	parameter name.
	* include/tr1/riemann_zeta.tcc: Uglify max_size variable name.

2026-03-17  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124463
	* include/bits/deque.tcc (__uninitialized_copy_a): Define
	overloads for input and output iterators being std::deque
	iterators, and for only the output iterator being a std::deque
	iterator.
	(__uninitialized_move_a): Overload for input and output
	iterators being std::deque iterators.
	* include/bits/stl_uninitialized.h (__uninitialized_copy_a)
	(__uninitialized_move_a): Declare overloads for std::deque
	iterators.

2026-03-17  Jonathan Wakely  <jwakely@redhat.com>

	Revert:
	2026-03-16  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124268
	* config/abi/pre/gnu.ver: Export symbols.
	* src/Makefile.am: Add libmodulesconvenience.la to libstdc++
	link.
	* src/Makefile.in: Regenerate.
	* src/c++23/Makefile.am: Create libmodulesconvenience.la
	and populate it with std.o and std.compat.o interface units.
	Add clean-local target.
	* src/c++23/Makefile.in: Regenerate.

2026-03-17  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/23_containers/mdspan/extents/ctor_ints.cc: Updated
	is_explicit, and added more test cases.

2026-03-16  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124268
	* config/abi/pre/gnu.ver: Export symbols.
	* src/Makefile.am: Add libmodulesconvenience.la to libstdc++
	link.
	* src/Makefile.in: Regenerate.
	* src/c++23/Makefile.am: Create libmodulesconvenience.la
	and populate it with std.o and std.compat.o interface units.
	Add clean-local target.
	* src/c++23/Makefile.in: Regenerate.

2026-03-16  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/ranges_base.h (distance(It&&, Sent)): Only decay
	arrays to pointers when the type is actually an array, as per
	LWG 4242.
	* testsuite/24_iterators/range_operations/distance.cc: Add test
	for LWG 4242.

2026-03-16  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/29_atomics/atomic/compare_exchange_padding.cc:
	Rewrite to be robust against spurious failures of weak compare
	exchange, and to check padding bits more directly.

2026-03-16  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/allocator.h (allocator::allocate): Use specific
	feature test macro for constexpr allocate and deallocate. Make
	consteval path a discarded statement if sizeof(T) is ill-formed.
	* include/bits/new_allocator.h (__new_allocator::allocate): Use
	requires-expression for static_cast. Make function body a
	discarded stament if sizeof(T) is ill-formed. Use if-constexpr
	for alignment checks.

2026-03-15  François Dumont  <frs.dumont@gmail.com>

	PR libstdc++/124444
	* include/debug/safe_sequence.h (_Safe_sequence::_M_invalidate_if_impl): New.
	(_Safe_sequence::_M_invalidate_if): Call later if not __is_constant_evaluated.
	* include/debug/safe_sequence.tcc: Rename _M_invalidate_if into
	_M_invalidate_if_impl and remove C++20 constexpr.

2026-03-14  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/text_encoding: Fix @since in Doxygen comment.

2026-03-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libstdc++/124290
	* testsuite/23_containers/mdspan/submdspan/selections/left_padded.cc:
	Use dg-timeout-factor 4.
	* testsuite/23_containers/mdspan/submdspan/selections/left.cc:
	* testsuite/23_containers/mdspan/submdspan/selections/right_padded.cc:
	* testsuite/23_containers/mdspan/submdspan/selections/right.cc:
	Likewise.
	* testsuite/23_containers/mdspan/submdspan/selections/stride.cc:
	Likewise.

2026-03-12  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/format (__format::_Ptr_sink::_M_finish): Rename
	__max variable to __m.
	* testsuite/17_intro/names.cc (__max): Define function-like
	macro.

2026-03-12  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/124443
	* include/std/meta (std::define_static_object): Use CTAD for span.

2026-03-11  Jakub Jelinek  <jakub@redhat.com>

	* include/std/meta (std::meta::exception::what()): Use
	__builtin_constexpr_diag instead of __asm__("") if supported.
	(std::meta::access_context::via(info)): Don't call is_class_type
	if __cls is not a type.  Use __builtin_constexpr_diag instead of
	__asm__("") if supported for -fno-exceptions.

2026-03-10  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/chrono (hh_mm_ss): Add comment about LWG 4274.

2026-03-10  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/ranges_algo.h (__replace_fn, __replace_if_fn):
	Change default template argument for type of new value, as per
	LWG 4444.
	* testsuite/25_algorithms/replace/lwg4444.cc: New test.
	* testsuite/25_algorithms/replace_if/lwg4444.cc: New test.

2026-03-10  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/span (as_bytes, as_writable_bytes): Add
	constraints to disallow volatile elements, as per LWG 4243.
	* testsuite/23_containers/span/lwg4243.cc: New test.

2026-03-10  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/118030
	* include/bits/alloc_traits.h (allocate_at_least (2x)): Define.
	* include/bits/allocator.h (allocate_at_least): Define.
	* include/std/memory (__glibcxx_want_allocate_at_least): Define.
	* include/bits/memoryfwd.h (allocation_result): Define, #include
	<bits/version.h> first so that will work.
	* include/bits/version.def (allocate_at_least): Add.
	* include/bits/version.h: Regenerate.
	* testsuite/20_util/allocator/allocate_at_least.cc: New test.
	* testsuite/20_util/allocator/allocate_at_least_neg.cc: New test.

2026-03-10  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/basic_string.h: Check __glibcxx_to_string instead
	of __cplusplus.

2026-03-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__format::_Ptr_sink, __format::__format_padded)
	(std::enable_nonlocking_formatter_optimization<pair<_Fp, _Sp>>):
	Replaced 8 spaces with tabs.

2026-03-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__format::_Ptr_sink): Reworked
	from _Iter_sink specialization below.
	(__format::_Iter_sink<_CharT, contiguous_iterator _OutIter>):
	Renamed and reworked to _Ptr_sink.
	(__format::__contiguous_char_iter, __format::__do_vformat_to_n):
	Define.
	(__format::__do_vformat_to): Use _Ptr_sink when appropriate,
	and delegate to _Sink_iter specialization.
	(std::format_to_n): Delegate to __do_vformat_to_n.
	(__format::_Counting_sink): Use _Ptr_sink as base class.

2026-03-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__formatter_int::format): Handle transcoding
	to _CharT before calling _M_format_int.
	(__formatter_int::_M_format_int): Accept basic_string_view<_CharT>
	and remove transcoding.
	(__formatter_ptr::__formatter_ptr): Configure _M_spec member.
	(__formatter_ptr::parse): Negate _M_alt for __spec and not _M_spec.
	(__formatter_ptr::format): Delegate to __formatter_int.

2026-03-10  François Dumont  <frs.dumont@gmail.com>

	* include/debug/string
	[__cplusplus >= 201103L](basic_string(_Ite, _Ite, const _Alloc&)): Add
	std::_RequireInputIter<_Ite> template parameter.

2026-03-09  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/meta (exception::what, access_context::via): Use
	__asm__ instead of asm keyword.

2026-03-09  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/120527
	* include/bits/atomic_wait.h [__FreeBSD__] (__platform_wait_t):
	Define typedef.
	[__FreeBSD__] (__platform_wait_uses_type): Define variable
	template.
	* src/c++20/atomic.cc (__platform_load): New function.
	[__FreeBSD__] (_GLIBCXX_HAVE_PLATFORM_WAIT, __platform_wait)
	(__platform_notify, __platform_wait_until): Define.
	(__detail::__spin_impl): Use __platform_load.

2026-03-07  François Dumont  <frs.dumont@gmail.com>

	* include/debug/functions.h [__cplusplus >= 201103L]
	(__foreign_iterator_aux): Remove.
	(__foreign_iterator): Adapt to use __foreign_iterator_aux2.
	* include/debug/helper_functions.h [__cplusplus >= 201103L]:
	Remove include bits/cpp_type_traits.h.
	(_Distance_traits<_Integral, std::__true_type>): Remove.
	(__valid_range_aux(_Integral, _Integral, std::__true_type)):
	Remove.
	(__valid_range_aux(_Iterator, _Iterator, std::__false_type)): Remove.
	(__valid_range_aux(_Integral, _Integral, _Distance_traits<_Integral>::__type&,
	std::__true_type)): Remove.
	(__valid_range_aux(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&,
	std::__false_type)): Remove.
	(__valid_range(_Iterator, _Iterator)): Adapt.
	(__valid_range(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&)): Adapt.

2026-03-06  Nathan Myers  <ncm@cantrip.org>

	* include/std/bitset (operator[]() const): Customize bounds
	check for C++11 case.
	* testsuite/20_util/bitset/access/subscript_const_neg.cc:
	Suppress UNRESOLVED complaint.

2026-03-06  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/fs_path.h (std::formatter<filesystem::path, _CharT>):
	Format _Utf_view directly via __formatter_str::_M_format_range.

2026-03-06  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/122300
	* src/c++17/fs_path.cc (path::_List::_Impl): Remove
	static_asserts.
	(path::_List::_Impl::required_alignment)
	(path::_List::_Impl::use_aligned_new): New static data members.
	(path::_List::_Impl::create_unchecked): Check use_aligned_new
	and use aligned new if needed.
	(path::_List::_Impl::alloc_size): New static member function.
	(path::_List::_Impl_deleter::operator): Check use_aligned_new
	and use aligned delete if needed.

2026-03-05  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/118341
	* include/std/bitset (operator[] (2x)): Add assertion.
	* testsuite/20_util/bitset/access/118341_neg1.cc: New test.
	* testsuite/20_util/bitset/access/118341_neg2.cc: Same.
	* testsuite/20_util/bitset/access/118341_smoke.cc: Same.
	* testsuite/20_util/bitset/access/subscript.cc: Same.
	* testsuite/20_util/bitset/access/subscript_const_neg.cc: Same.

2026-03-05  François Dumont  <frs.dumont@gmail.com>

	* include/debug/safe_unordered_container.h
	(_Safe_unordered_container::_UContInvalidatePred): Move outside class, at
	namespace scope. Declare friend.
	(_Safe_unordered_container::_UMContInvalidatePred): Likewise.
	(_Safe_unordered_container::_UContMergeGuard): Likewise.
	(_Safe_unordered_container::_M_invalidate_all): Make protected.
	(_Safe_unordered_container::_M_invalidate_all_if): Likewise.

2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/124124
	* testsuite/29_atomics/atomic/cons/zero_padding.cc: Limit size of
	test types to four bytes.

2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>
	    Ivan Lazaric  <ivan.lazaric1@gmail.com>

	* include/std/format (_Arg_value::_M_get): Rename to...
	(_Arg_value::_M_access): Modified to accept optional
	second parameter that is assigned to value.
	(_Arg_value::_M_get): Handle rename.
	(_Arg_value::_M_set): Use construct_at for basic_string_view,
	handle, and two-argument _S_access for other types.

2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/format (__Arg_value::handle): Define, extracted
	with modification from basic_format_arg::handle.
	(_Arg_value::_Handle_base): Remove.
	(_Arg_value::_M_handle): Change type to handle.
	(_Arg_value::_M_get, _Arg_value::_M_set): Check for handle
	type directly, and return result unmodified.
	(basic_format_arg::__formattable): Remove.
	(basic_format_arg::handle): Replace with alias to
	_Arg_value::handle.

2026-03-04  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124363
	* include/std/string_view: Adjust comment on #endif to match #if
	condition.

2026-03-04  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/117402
	* include/debug/map.h (try_emplace (2x), insert_or_assign (2x)):
	Define heterogeneous overloads, simplify existing overloads.
	* include/debug/unordered_map: Same.
	* include/debug/set.h (insert (2x)):
	Define heterogeneous overloads.
	* include/debug/unordered_set: Same.

2026-03-04  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/117402
	* include/bits/stl_map.h (operator[], at (2x), try_emplace (2x),
	insert_or_assign (2x)): Add overloads.
	* include/bits/unordered_map.h (operator[], at (2x),
	try_emplace (2x), insert_or_assign (2x), bucket (2x)): Add overloads.
	* include/bits/stl_set.h (insert (2x)): Add overloads.
	* include/bits/unordered_set.h (insert (2x), bucket (2x)): Add overloads.
	* include/bits/hashtable.h (_M_bucket_tr, _M_insert_tr): Define.
	* include/bits/hashtable_policy.h (_M_at_tr (2x)): Define.
	* include/bits/stl_tree.h (_M_emplace_here, _M_get_insert_unique_pos_tr,
	_M_get_insert_hint_unique_pos_tr): Define new heterogeneous insertion
	code path for set and map.
	* include/bits/version.def (associative_heterogeneous_insertion):
	Define.
	* include/bits/version.h: Regenerate.
	* include/std/map (__glibcxx_want_associative_heterogeneous_insertion):
	Define macro.
	* include/std/set: Same.
	* include/std/unordered_map: Same.
	* include/std/unordered_set: Same.
	* testsuite/23_containers/map/modifiers/hetero/insert.cc: New tests.
	* testsuite/23_containers/set/modifiers/hetero/insert.cc: Same.
	* testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc:
	Same.
	* testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc:
	Same.
	* testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc:
	Same.
	* testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc:
	Same.

2026-03-03  Adam Wood  <adam.wood@mines.sdsmt.edu>

	PR libstdc++/122217
	* testsuite/27_io/filesystem/operations/copy_symlink/1.cc: New
	test.
	* testsuite/27_io/filesystem/operations/copy_symlink/2.cc: New
	test.
	* testsuite/27_io/filesystem/operations/copy_symlink/3.cc: New
	test.
	* testsuite/27_io/filesystem/operations/copy_symlink/4.cc: New
	test.

2026-03-03  Arthur O'Dwyer  <arthur.j.odwyer@gmail.com>

	PR libstdc++/119197
	* include/std/expected (expected, expected<void, E>): Add
	[[nodiscard]] to class.
	* testsuite/20_util/expected/119197.cc: New test.

2026-03-03  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/atomic (atomic<T*>::wait, atomic<T*>::notify_one)
	(atomic<T*>::notify_all): Fix indentation.

2026-03-03  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/regex_compiler.h: Adjust comments so that
	standard references are specific to C++11.

2026-03-02  François Dumont  <frs.dumont@gmail.com>

	* include/debug/safe_unordered_container.h
	(_Safe_unordered_container::_M_invalidate_locals): Remove.
	(_Safe_unordered_container::_M_invalidate_all): Lock mutex while calling
	_M_invalidate_if and _M_invalidate_locals.
	(_Safe_unordered_container::_M_invalidate_all_if): New.
	(_Safe_unordered_container::_M_invalidate): New.
	(_Safe_unordered_container::_M_invalidate_if): Make private, add __scoped_lock
	argument.
	(_Safe_unordered_container::_M_invalidate_local_if): Likewise.
	* include/debug/safe_unordered_container.tcc
	(_Safe_unordered_container::_M_invalidate_if): Adapt and remove lock.
	(_Safe_unordered_container::_M_invalidate_local_if): Likewise.
	* include/debug/unordered_map
	(unordered_map::erase(const_iterator, const_iterator)): Lock before loop on
	iterators. Remove _M_check_rehashed call.
	(unordered_map::_M_self): New.
	(unordered_map::_M_invalidate): Remove.
	(unordered_map::_M_erase): Adapt and remove _M_check_rehashed call.
	(unordered_multimap::_M_erase(_Base_iterator, _Base_iterator)): New.
	(unordered_multimap::erase(_Kt&&)): Use latter.
	(unordered_multimap::erase(const key_type&)): Likewise.
	(unordered_multimap::erase(const_iterator, const_iterator)):
	Lock before loop on iterators. Remove _M_check_rehashed.
	(unordered_multimap::_M_self): New.
	(unordered_multimap::_M_invalidate): Remove.
	(unordered_multimap::_M_erase): Adapt. Remove _M_check_rehashed call.
	* include/debug/unordered_set
	(unordered_set::erase(const_iterator, const_iterator)): Add lock before loop
	for iterator invalidation. Remove _M_check_rehashed call.
	(unordered_set::_M_self): New.
	(unordered_set::_M_invalidate): Remove.
	(unordered_set::_M_erase): Adapt and remove _M_check_rehashed call.
	(unordered_multiset::_M_erase(_Base_iterator, _Base_iterator)): New.
	(unordered_multiset::erase(_Kt&&)): Use latter.
	(unordered_multiset::erase(const key_type&)): Likewise.
	(unordered_multiset::erase(const_iterator, const_iterator)):
	Lock before loop on iterators. Remove _M_check_rehashed.
	(unordered_multiset::_M_self): New.
	(unordered_multiset::_M_invalidate): Remove.
	(unordered_multiset::_M_erase): Adapt. Remove _M_check_rehashed call.

2026-03-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/105580
	* testsuite/24_iterators/istreambuf_iterator/105580.cc:
	Add dg-bogus check for warning.

2026-03-02  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/105580
	* include/std/streambuf (streambuf::gptr, streambuf::egptr)
	(streambuf::gbump): Surround with pragma disabling -Wnull-dereference.
	* testsuite/24_iterators/istreambuf_iterator/105580.cc: Remove check for
	warning being emitted.

2026-02-28  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/105580
	* testsuite/24_iterators/istreambuf_iterator/105580.cc: New test.

2026-02-26  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>

	* testsuite/29_atomics/atomic_ref/requirements_neg.cc: Add
	using std::size_t.

2026-02-26  Yuao Ma  <c8ef@outlook.com>

	* include/bits/atomic_base.h (__atomic_base<_PTp*>::fetch_min,
	__atomic_base<_PTp*>::fetch_max,
	__atomic_ref<_Pt, false, false, true>::fetch_min,
	__atomic_ref<_Pt, false, false, true>::fetch_max): Define new
	functions.
	* include/std/atomic (atomic<_Tp*>::fetch_min,
	atomic<_Tp*>::fetch_max): Likewise.
	(atomic_fetch_min_explicit, atomic_fetch_max_explicit,
	atomic_fetch_min, atomic_fetch_max): Change parameter from
	__atomic_base<_ITp>* to atomic<_Tp>*.
	* testsuite/29_atomics/atomic/pointer_fetch_minmax.cc: New test.
	* testsuite/29_atomics/atomic_ref/pointer_fetch_minmax.cc: New
	test.

2026-02-25  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/117404
	* include/debug/map.h (extract, erase): Define overloads.
	* include/debug/multimap.h: Same.
	* include/debug/multiset.h: Same.
	* include/debug/set.h: Same.
	* include/debug/unordered_map: Same (2x).
	* include/debug/unordered_set: Same (2x), rename some locals.

2026-02-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/23_containers/mdspan/at.cc: Updated guard.

2026-02-24  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/23_containers/mdspan/at.cc: Updated test.

2026-02-23  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (__mdspan::__is_multi_index): Removed,
	replaced with local lambda in mdspan::operator[].
	(__mdspan::operator[]): Implement in terms of single overload
	accepting index_type. Use __mdspan::__index_type_cast for type
	conversion.

2026-02-23  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (mdspan::at, mdspan::__index_int_t):
	Define.
	* testsuite/23_containers/mdspan/at.cc: New test.

2026-02-20  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/lib/libstdc++.exp (v3-minimum-std): Remove second
	and third args in favour of using globals.

2026-02-19  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/type_traits (_CWOperators::operator++)
	(_CWOperators::operator--, _CWOperators::operator+=)
	(_CWOperators::operator-=, _CWOperators::operator*=)
	(_CWOperators::operator/=, _CWOperators::operator%=)
	(_CWOperators::operator&=, _CWOperators::operator|=)
	(_CWOperators::operator^=, _CWOperators::operator<<=)
	(_CWOperators::operator>>=, constant_wrapper::operator=):
	Adjust definitions to apply operator on value.
	* testsuite/20_util/constant_wrapper/generic.cc:
	Remove test_pseudo_mutator.
	* testsuite/20_util/constant_wrapper/instantiate.cc:
	Test that operators are not provided if wrapped type
	do not support them, or provide mutable operators.

2026-02-19  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/lib/libstdc++.exp (v3_default_std, v3_max_std): New
	global variables.
	(v3-minimum-std): Use globals instead of arguments.
	(v3_modules_std): Define in terms of $v3_max_std.
	(v3-dg-runtest): Use globals instead of local variables. Adjust
	call to v3-min-std.

2026-02-19  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/lib/libstdc++.exp (v3-minimum-std): Remove special
	case for c++2a and TODO comment.
	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
	Replace c++2a effective target with c++20.
	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_pod/value.cc: Likewise.
	* testsuite/20_util/reference_wrapper/result_type.cc: Likewise.
	* testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
	* testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
	* testsuite/20_util/result_of/sfinae_friendly_1.cc: Likewise.
	* testsuite/20_util/tuple/78939.cc: Likewise.
	* testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
	* testsuite/20_util/variable_templates_for_traits.cc: Likewise.
	* testsuite/experimental/type_traits/value.cc: Likewise.
	* testsuite/ext/malloc_allocator/variadic_construct.cc:
	Likewise.
	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/chrono.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/cxx20.cc: Likewise.
	* testsuite/std/ranges/iota/size.cc: Likewise.
	* testsuite/tr1/3_function_objects/result_of.cc: Likewise.

2026-02-18  Patrick Palka  <ppalka@redhat.com>

	PR libstdc++/121402
	* include/std/ranges (repeat_view::_M_value): Add
	[[no_unique_address]].
	* testsuite/std/ranges/adaptors/sizeof.cc
	[__cpp_lib_ranges_repeat]: New test.

2026-02-17  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/124124
	* testsuite/29_atomics/atomic/cons/zero_padding.cc: Updated
	Ctor class and move test_floating to...
	* testsuite/29_atomics/atomic_float/zero_padding.cc: Extracted
	test_floating.

2026-02-17  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/124124
	* testsuite/29_atomics/atomic/cons/zero_padding.cc: Adjust
	dg-require.

2026-02-17  Jakub Jelinek  <jakub@redhat.com>

	* src/c++23/std.cc.in (std::submdspan_canonicalize_slices,
	std::submdspan_extents): Remove exports.
	(std::canonical_slices, std::subextents): New exports.

2026-02-16  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/119745
	* include/bits/basic_string.h (basic_string::_M_construct)
	[__cplusplus >= 202302L]: Declare.
	(basic_string::basic_string(basic_string&&, size_type, const _Alloc&))
	(basic_string(basic_string&&, size_type, size_type, const _Alloc&))
	(basic_string::substr(size_type, size_type) &&)
	(basic_string::substr(size_type) &&) [__cplusplus >= 202302L]: Define.
	* include/bits/basic_string.tcc (basic_string::_M_construct)
	[__cplusplus >= 202302L]: Define.
	* testsuite/21_strings/basic_string/operations/substr/rvalue.cc: New test.

2026-02-16  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/std/mdspan (std::submdspan_extents): Rename to...
	(std::subextents): Renamed from submdspan_extents.
	(std::submdspan_canonicalize_slices): Rename to...
	(std::canonical_slices): Renamed from submdspan_canonicalize_slices.
	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc:
	Move to...
	* testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: ...here.
	Updated calls to submdspan_canonicalize_slices.
	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc:
	Move to...
	* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: ...here.
	Updated calls to submdspan_canonicalize_slices.
	* testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc: Move to...
	* testsuite/23_containers/mdspan/submdspan/subextents.cc: ...here.
	Qualified and renamed calls to submdspan_extents.
	* testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc: Move to...
	* testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: ...here.
	Qualified and renamed calls to submdspan_extents.

2026-02-16  Ivan Lazaric  <ivan.lazaric1@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/fs_path.h: Include bits/formatfwd.h.
	(std::formatter<filesystem::path, _CharT>): Define.
	* include/bits/version.def (format_path): Define.
	* include/bits/version.h: Regenerate.
	* include/std/filesystem: Expose __cpp_lib_format_path.
	* testsuite/std/format/fs_path.cc: New test.

2026-02-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc
	(__gnu_test::uneq_allocator(int)): Declare as explicit.
	* testsuite/std/memory/indirect/ctor.cc: Construct uneq_allocator
	from int explicitly.
	* testsuite/std/memory/polymorphic/ctor.cc: Likewise.
	* testsuite/std/memory/polymorphic/ctor_poly.cc: Likewise.
	* testsuite/util/testsuite_allocator.h: Likewise.

2026-02-13  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/121771
	* include/std/tuple (tuple::tuple(const Elements&...)): Use
	type_identity_t to prevent constructor being used for CTAD.
	(tuple::tuple(allocator_arg_t, const A&, const Elements&...)):
	Likewise.
	* testsuite/20_util/tuple/cons/121771.cc: New test.

2026-02-12  Patrick Palka  <ppalka@redhat.com>

	* include/bits/regex_executor.tcc (_Executor::_M_rep_once_more):
	Make unnused _Match_mode parameter unnamed.
	(_Executor::_M_handle_repeat): Likewise.
	(_Executor::_M_handle_subexpr_begin): Likewise.
	(_Executor::_M_handle_subexpr_end): Likewise.
	(_Executor::_M_handle_line_begin_assertion): Likewise.
	(_Executor::_M_handle_line_end_assertion): Likewise.
	(_Executor::_M_handle_match): Likewise.
	(_Executor::_M_handle_backref): Likewise.
	(_Executor::_M_handle_alternative): Likewise.

2026-02-12  Xi Ruoyao  <xry111@xry111.site>
	    Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/17_intro/badnames.cc (__unused): Do not define.
	* testsuite/17_intro/names.cc [glibc == 2.43] (__unused): Undef.

2026-02-12  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/type_traits (is_function): Declare before first
	use.

2026-02-12  Patrick Palka  <ppalka@redhat.com>

	PR libstdc++/114865
	* include/std/atomic (atomic<_Tp>::atomic(_Tp)) [C++11]:
	Enable __builtin_clear_padding logic.
	* testsuite/29_atomics/atomic/compare_exchange_padding.cc: Enable
	this test in earlier modes, including C++11.
	* testsuite/29_atomics/atomic/cons/zero_padding.cc [C++11]:
	Enable tests verifying cleared padding bits for a non-static-init
	std::atomic object.

2026-02-11  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/funcref_impl.h (function_ref::function_ref(_Fn&&)):
	Use _S_static and _S_nttp invokers.
	* include/bits/funcwrap.h (_Base_invoker::_S_static):
	Define.
	* include/bits/stl_function.h (std::__is_std_op_template)
	(std::__is_std_op_wrapper) [__cplusplus > 201703L]:
	Moved from std/ranges.
	* include/std/ranges (__detail::__is_std_op_template)
	(__detail::__is_std_op_wrapper): Moved to bits/stl_function.h.
	* testsuite/20_util/function_ref/dangling.cc: New test.
	* testsuite/20_util/function_ref/dangling_neg.cc: New test.

2026-02-11  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/123875
	* testsuite/29_atomics/atomic/cons/static_zero_padding.cc: Move to...
	* testsuite/29_atomics/atomic/cons/zero_padding.cc: ...here and
	added heap tests. Also fixed trailing whitespaces.

2026-02-11  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/123908
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.35): Add exports for
	std::__get_once_callable and std::__get_once_call.

2026-02-11  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/regex.tcc (__detail::__lookup_collatename): New
	function.
	(regex_traits::lookup_collatename): Use new function. Elide
	redundant narrowing via ctype facet for regex_traits<char>.
	(regex_traits::lookup_classname): Replace lookup table with
	handwritten prefix match.

2026-02-11  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124015
	* include/bits/regex.tcc (regex_traits::lookup_classname): Fix
	handling of icase parameter.

2026-02-11  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124015
	* testsuite/28_regex/traits/char/lookup_classname.cc: Check for
	correct result for unrecognized classname. Check that lookup is
	case insensitive. Check that all required classnames are
	recognized. Check that icase flag only affects "lower" and
	"upper".
	* testsuite/28_regex/traits/wchar_t/lookup_classname.cc:
	Likewise.

2026-02-10  Tomasz Kamiński  <tkaminsk@redhat.com>

	PR libstdc++/123875
	* include/bits/atomic_base.h (__atomic_impl::__clear_padding):
	Use if constexpr unconditionally.
	(__atomic_float<_Fp>::__atomic_float(_Fp)): Skip __clear_padding
	call for constant evaluation.
	* include/std/atomic (atomic<_Tp>::atomic(_Tp)): Likewise.
	* testsuite/29_atomics/atomic/cons/static_zero_padding.cc: New test.

2026-02-10  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/123991
	* include/bits/basic_string.h (compare(size_type, size_type, T)):
	Remove noexcept-specifier.
	(compare(size_type, size_type, T, size_type, size_type)):
	Likewise.
	* include/bits/cow_string.h (compare(size_type, size_type, T)):
	Remove noexcept-specifier.
	(compare(size_type, size_type, T, size_type, size_type)):
	Likewise.
	* testsuite/21_strings/basic_string/operations/compare/char/123991.cc:
	New test.
	* testsuite/21_strings/basic_string/operations/compare/wchar_t/123991.cc:
	New test.

2026-02-10  Patrick Palka  <ppalka@redhat.com>

	* include/bits/regex.h (_Executor): Remove __dfs_mode template
	parameter and _V2 inline namespace.
	* include/bits/regex.tcc (__regex_algo_impl): Adjust after
	__dfs_mode template parameter removal.
	* include/bits/regex_executor.h (_Executor): Remove __dfs_mode
	parameter and _V2 inline namespace.
	* include/bits/regex_executor.tcc (_Executor): Likewise.

2026-02-10  Patrick Palka  <ppalka@redhat.com>

	* include/bits/regex.tcc (__regex_algo_impl): Pass __use_dfs
	parameter to _Executor's constructor.
	* include/bits/regex_executor.h (_Executor::_Search_mode): New.
	(_Executor::_Executor): Add __use_dfs parameter and initialize
	_M_search_mode.  Adjust after inlining _State_info members into
	_Executor.
	(_Executor::~_Executor): Free _M_visted_states.
	(_Executor::_M_main): Adjust after renaming _M_main_dispatch
	overloads to _M_main_dfs and _M_main_bfs.
	(_Executor::_State_info): Remove.
	(_Executor::_M_visited): Inlined from _State_info.
	(_Executor::_M_get_sol_pos): Likewise.
	(_Executor::_M_states): Remove.
	(_Executor::_M_start): Inlined from _State_info.
	(_Executor::_M_sol_pos): Likewise.
	(_Executor::_M_match_queue): Likewise.
	(_Executor::_M_search_mode): New.
	* include/bits/regex_executor.tcc (_Executor::_M_main_dispatch):
	Renamed to...
	(_Executor::_M_main_dfs, _Executor::_M_main_bfs): ... these.
	(_Executor::_M_*): Adjust after _M_states removal.
	(_Executor::_M_lookhead): Also adjust _Executor constructor
	call.

2026-02-09  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/124024
	* include/bits/out_ptr.h (out_ptr): Fix doxygen comment to refer
	to the right function.
	(inout_ptr): Improve markup in doxygen comment.

2026-02-06  Tomasz Kamiński  <tkaminsk@redhat.com>

	* include/bits/hashtable.h (std::__heterogeneous_hash_key)
	[__glibcxx_associative_heterogeneous_erasure]: Changed guard.
	* include/bits/stl_tree.h (std::__heterogeneous_tree_key)
	[__glibcxx_associative_heterogeneous_erasure]: Likewise.
	* include/bits/stl_function.h: Add comment with C++ version
	for __glibcxx_associative_heterogeneous_erasure guard.

2026-02-06  Nathan Myers  <ncm@cantrip.org>

	* include/bits/stl_function.h (concept __heterogeneous_key):
	Guard with __glibcxx_associative_heterogeneous_erasure

2026-02-06  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/120567
	* acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Include "__sync_" in
	grep command to check for extern calls to libatomic.
	* configure: Regenerate.

2026-02-06  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/Makefile.am (new-abi-baseline): Overwrite existing
	file instead of creating baseline_symbols.txt.new.
	* testsuite/Makefile.in: Regenerate.

2026-02-06  Nathan Myers  <ncm@cantrip.org>

	* include/bits/stl_function.h (__heterogeneous_key): Use
	C++17-defined remove_cvref<>::type instead.

2026-02-05  Caolán McNamara  <caolanm@gmail.com>

	* include/bits/regex.tcc (regex_traits::lookup_collatename):
	Make __collatenames array const.

2026-02-05  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/contracts (contract_violation::location): Use
	source_location default constructor and then set _M_impl.
	* include/std/source_location (source_location(const void*)):
	Remove constructor.
	* testsuite/18_support/contracts/includes.cc: Move to...
	* testsuite/18_support/contracts/srcloc.cc: ...here. Test for
	ambiguity caused by new constructor.

2026-02-05  Jonathan Wakely  <jwakely@redhat.com>

	* python/libstdcxx/v6/printers.py (SharedPointerPrinter): Only
	use gdb.Type.is_scalar if supported.
	* testsuite/libstdc++-prettyprinters/compat.cc: Test printer for
	old implementation of std::atomic<std::shared_ptr<T>>.

2026-02-05  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/28_regex/algorithms/regex_match/multiline.cc: Add
	string to static_assert.
	* testsuite/28_regex/sub_match/lwg3204.cc: Likewise.

2026-02-04  Nathan Myers  <ncm@cantrip.org>

	PR libstdc++/117404
	* include/bits/version.def (associative_heterogeneous_erasure):
	Define.
	* include/bits/version.h: Regenerate.
	* include/std/map: Request new feature from version.h.
	* include/std/set: Same.
	* include/std/unordered_map: Same.
	* include/std/unordered_set: Same.
	* include/bits/stl_map.h (extract, erase): Define overloads.
	* include/bits/stl_set.h: Same.
	* include/bits/stl_multimap.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/unordered_map.h: Same, 2x.
	* include/bits/unordered_set.h: Same, 2x.
	* include/bits/stl_function.h (concepts __not_container_iterator,
	__heterogeneous_key): Define.
	* include/bits/hashtable.h (_M_find_before_node, _M_locate, extract):
	Delegate to more-general _tr version.
	(_M_find_before_node_tr, _M_locate_tr, _M_extract_tr, _M_erase_tr):
	Add new members to support a heterogeneous key argument.
	(_M_erase_some): Add new helper function.
	(concept __heterogeneous_hash_key): Define.
	* include/bits/stl_tree.h (_M_lower_bound_tr, _M_upper_bound_tr,
	_M_erase_tr, _M_extract_tr): Add new members to support a
	heterogeneous key argument.
	(concept __heterogeneous_tree_key): Define.
	* testsuite/23_containers/map/modifiers/hetero/erase.cc: New test.
	* testsuite/23_containers/multimap/modifiers/hetero/erase.cc: Same.
	* testsuite/23_containers/multiset/modifiers/hetero/erase.cc: Same.
	* testsuite/23_containers/set/modifiers/hetero/erase.cc: Same.
	* testsuite/23_containers/unordered_map/modifiers/hetero/erase.cc: Same.
	* testsuite/23_containers/unordered_multimap/modifiers/hetero/erase.cc:
	Same.
	* testsuite/23_containers/unordered_multiset/modifiers/hetero/erase.cc:
	Same.
	* testsuite/23_containers/unordered_set/modifiers/hetero/erase.cc: Same.

2026-02-03  Marek Polacek  <polacek@redhat.com>

	* include/bits/new_allocator.h (__new_allocator::allocate,
	__new_allocator::deallocate): Add missing constexpr.

2026-02-03  Jakub Jelinek  <jakub@redhat.com>

	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  <ppalka@redhat.com>

	* 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) <case _S_fopcode_restore_cur_results>:
	Likewise.

2026-01-31  Patrick Palka  <ppalka@redhat.com>

	* include/bits/regex_executor.tcc (_ExecutorFrameBase): Add
	#pragma GCC diagnostic to suppress -Wpedantic warning about
	anonymous structs.

2026-01-30  Patrick Palka  <ppalka@redhat.com>

	* include/bits/regex_executor.tcc (__detail::_Executor::_M_node)
	[__OPTIMIZE__]: Add [[gnu::always_inline]] attribute.  Declare
	inline.

2026-01-30  Patrick Palka  <ppalka@redhat.com>

	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) <case _S_fopcode_fallback_next>:
	Restore _M_current.
	<case _S_fopcode_fallback_rep_once_more>: Likewise.
	<case _S_fopcode_posix_alternative>: Likewise.
	<case _S_fopcode_restore_current>: Remove.

2026-01-30  Patrick Palka  <ppalka@redhat.com>

	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  <jwakely@redhat.com>

	* 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<cv void, E>::operator=): Likewise.
	* testsuite/20_util/expected/requirements.cc: Check for trivial
	and nothrow properties of assignments.

2026-01-29  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/source_location: Check __glibcxx_contracts instead
	of __cpp_lib_contracts.
	* testsuite/18_support/contracts/includes.cc: New test.

2026-01-29  vspefs  <vspefs@protonmail.com>

	* src/c++23/std.cc.in (invoke_default_violation_handler): Change
	to invoke_default_contract_violation_handler.

2026-01-29  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/contracts: Replace non-ASCII characters.

2026-01-28  Jonathan Wakely  <jwakely@redhat.com>

	* src/experimental/Makefile.am: Change AM_CXXFLAGS to use C++20
	by default.

2026-01-28  Jonathan Wakely  <jwakely@redhat.com>

	* src/experimental/contract26.cc: Use #error if built without
	contracts support enabled.
	* include/std/source_location: Remove stray whitespace.

2026-01-28  Jonathan Wakely  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	* config/locale/gnu/ctype_members.cc (use_table): New function.
	(ctype<wchar_t>::do_narrow): Use use_table.

2026-01-28  Soumya AR  <soumyaa@nvidia.com>

	* 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  <dinka.ranns@gmail.com>
	    Iain Sandoe  <iain@sandoe.co.uk>
	    Ville Voutilainen  <ville.voutilainen@gmail.com>

	* 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  <tkaminsk@redhat.com>

	PR libstdc++/123758
	* include/bits/funcwrap.h (_Cpy_base(_Cpy_base const&)):
	Explicitly call _Mo_base() in initializer list.

2026-01-22  Frank Scheiner  <frank.scheiner@web.de>

	* config/abi/post/ia64-linux-gnu/baseline_symbols.txt:
	Regenerate.

2026-01-20  Jakub Jelinek  <jakub@redhat.com>

	* include/bits/version.def (reflection): Add cxx11abi = yes;.
	* include/bits/version.h: Regenerate.

2026-01-19  Tomasz Kamiński  <tkaminsk@redhat.com>

	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<void>::operator())
	(less<void>::operator(), greater_equal<void>::operator())
	(less_equal<void>::operator()): Implement using if constexpr.
	(greater<void>::__S_cmp, less<void>::__S_cmp)
	(greater_equal<void>::__ptr_comp, less_equal<void>::S_cmp):
	Remove.
	(greater<void>::__ptr_cmp, less<void>::__ptr_cmp)
	(greater_equal<void>::__ptr_comp, less_equal<void>::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  <tkaminsk@redhat.com>

	* include/bits/erase_if.h (__detail::__erase_if): Pass mutable
	iterators to __cont.erase.

2026-01-19  François Dumont  <frs.dumont@gmail.com>

	* 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  <jakub@redhat.com>

	* 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  <polacek@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	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 <meta> 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 <meta> 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  <tkaminsk@redhat.com>

	* testsuite/util/testsuite_iterators.h: Modify comment.

2026-01-13  Tomasz Kamiński  <tkaminsk@redhat.com>

	* 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  <jakub@redhat.com>

	* 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  <jwakely@redhat.com>

	* src/c++20/atomic.cc (__detail::__spin_impl): Do not use
	reserved names for variables.

2026-01-12  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <tkaminsk@redhat.com>

	* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
	Updated test.

2026-01-10  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>

	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Add
	names {,P,K}DF16.

2026-01-10  Wang Jinghao  <zheng.xianyuwang@gmail.com>

	* 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  <c8ef@outlook.com>

	* 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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>
	    Tomasz Kamiński  <tkaminsk@redhat.com>

	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  <keithp@keithp.com>

	* 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  <tkaminsk@redhat.com>

	* 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  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	* include/bits/atomic_wait.h (__wait_args::_M_setup_wait):
	Remove unreachable return statement.

2026-01-07  Jonathan Wakely  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	PR libstdc++/123378
	* include/std/barrier (~__tree_barrier_base): Define.

2026-01-07  Jakub Jelinek  <jakub@redhat.com>

	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.
