From gccadmin@gcc.gnu.org  Wed Apr  1 00:17:01 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  1 Apr 2026 00:17:01 +0000 (GMT)
Subject: [gcc r16-8374] Daily bump.
Message-ID: <20260401001701.67A814BAD157@sourceware.org>

https://gcc.gnu.org/g:6487521cc18830771e2ac17d9af0b60c9de088ab

commit r16-8374-g6487521cc18830771e2ac17d9af0b60c9de088ab
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 1 00:16:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  68 +++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |   7 +++
 gcc/cp/ChangeLog        |  56 ++++++++++++++++++++++
 gcc/d/ChangeLog         |   9 ++++
 gcc/fortran/ChangeLog   |  11 +++++
 gcc/po/ChangeLog        |   6 +++
 gcc/testsuite/ChangeLog | 121 ++++++++++++++++++++++++++++++++++++++++++++++++
 libphobos/ChangeLog     |  22 +++++++++
 libstdc++-v3/ChangeLog  |  12 +++++
 10 files changed, 313 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 04fdfa6ecbca..8365fbc4857f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,71 @@
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* tree-ssa-dse.cc (compute_trims): Bail out if ref->size is not
+	byte aligned either.
+
+2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+	    Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/121185
+	PR fortran/124661
+	* tree-inline.cc (debug_find_tree, debug_find_tree_1): Move
+	and rename functions...
+	* tree.cc (find_tree, find_tree_1): ... here.
+	* tree-inline.h (debug_find_tree): Move renamed declaration...
+	* tree.h (find_tree): ... here.
+
+2026-03-31  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124165
+	PR target/124684
+	* config/i386/i386.cc (ix86_symbolic_const_load_p_1): Renamed to
+	...
+	(ix86_need_alignment_p_1): This.
+	(ix86_symbolic_const_load_p): Renamed to ...
+	(ix86_need_alignment_p): This.
+	(ix86_find_max_used_stack_alignment): Call ix86_access_stack_p
+	only if the INSN needs alignment > stack alignment.
+
+2026-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/aarch64/aarch64-sys-regs.def: Copy from Binutils.
+
+2026-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* config/aarch64/aarch64-option-extensions.def (poe2):
+	New CLI extension option.
+	(tev): Likewise.
+	(tlbid): Likewise.
+	(gcie): Likewise.
+	(mpamv2): Likewise.
+	(lscp): Likewise.
+	(mops-go): Likewise.
+	(sve2p3): Likewise.
+	(sme2p3): Likewise.
+	(f16f32dot): Likewise.
+	(sve-b16mm): Likewise.
+	(mtetc): Likewise.
+	(f16f32mm): Likewise.
+	(f16mm): Likewise.
+	* doc/invoke.texi (poe2): Document option.
+	(tev): Likewise.
+	(tlbid): Likewise.
+	(gcie): Likewise.
+	(mpamv2): Likewise.
+	(lscp): Likewise.
+	(mops-go): Likewise.
+	(sve2p3): Likewise.
+	(sme2p3): Likewise.
+	(f16f32dot): Likewise.
+	(sve-b16mm): Likewise.
+	(mtetc): Likewise.
+	(f16f32mm): Likewise.
+	(f16mm): Likewise.
+
+2026-03-31  Wu Haotian  <rigoligo03@gmail.com>
+
+	* config.gcc: removed linux.h and t-linux for loongarch*-*-elf* targets
+
 2026-03-30  H.J. Lu  <hjl.tools@gmail.com>
 	    Richard Biener  <rguenther@suse.de>
 
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 18ed0453fc18..c077e78eada8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260331
+20260401
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 53557eeddccb..a06721652b38 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_attr.adb (Analyze_Attribute) <Attribute_Reduce>: Rewrite the
+	analysis of a non-overloaded reducer.  Moreover, when both actuals
+	are overloaded, compute the set of possible interpretations.
+	(Resolve_Attribute) <Attribute_Reduce>: Streamline the processing.
+
 2026-03-27  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* sem_ch12.adb (Analyze_Structural_Associations): Create a local
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4aef42d44da2..88ab81d98d40 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,59 @@
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (reflect_current_scope): Use decl_namespace_list->last ()
+	in preference to current_namespace.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (get_range_elts): If N is negative, just use the tree
+	as object to extract range from instead of finding Nth argument
+	of a call.
+	(eval_is_bit_field, eval_type_of, eval_size_of, eval_alignment_of,
+	eval_bit_size_of, eval_has_identifier, eval_identifier_of): Adjust
+	function comments from P3795R2.
+	(eval_display_string_of): Handle annotations in
+	REFLECT_DATA_MEMBER_SPEC.
+	(eval_annotations_of): Adjust function comments from P3795R2.
+	(eval_data_member_spec): Likewise.  Read and diagnose annotations.
+	(eval_define_aggregate): Adjust function comments from P3795R2.
+	Create annotations.
+	(compare_reflections): Compare REFLECT_DATA_MEMBER_SPEC annotations.
+	* mangle.cc (write_reflection): Mangle REFLECT_DATA_MEMBER_SPEC
+	annotations.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* metafns.gperf (enum metafn_code): Add METAFN_CURRENT_FUNCTION,
+	METAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.
+	(enum metafn_kind): Add METAFN_KIND_INFO_VOID.
+	(current_function, current_class, current_namespace): New
+	metafunctions.
+	* pt.cc (value_dependent_expression_p): Make current_function(),
+	current_class() and current_namespace() calls dependent if they
+	are inside of template.
+	* reflect.cc (reflect_current_scope, eval_current_function,
+	eval_current_class, eval_current_namespace): New functions.
+	(eval_access_context_current): Use reflect_current_scope.
+	(process_metafunction): Handle METAFN_CURRENT_FUNCTION,
+	METAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.
+	* metafns.h: Regenerate.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (eval_data_member_spec): Add anonymous enums for
+	fields in std::meta::data_member_options and
+	std::meta::data_member_options::_Name and use them instead of
+	hardcoded constants.
+
+2026-03-31  Marek Polacek  <polacek@redhat.com>
+
+	* reflect.cc (eval_offset_of): Update comment.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (eval_data_member_spec): Fix up check for diagnostics
+	when reverse conversion fails.
+
 2026-03-30  Jakub Jelinek  <jakub@redhat.com>
 
 	* metafns.gperf (enum metafn_code): Remove
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index dc3092fdd407..25847868c87e 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,12 @@
+2026-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* dmd/MERGE: Merge upstream dmd e7c34c13de.
+	* d-codegen.cc (build_vthis): Update for new front-end interface.
+	(get_frameinfo): Likewise.
+	* d-lang.cc (d_post_options): Disable null pointer checks.
+	* decl.cc (DeclVisitor::visit (VarDeclaration *)): Ignore ref noreturn
+	variables.
+
 2026-02-08  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* d-tree.h (build_libcall): New declaration.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f7e3fcfd0d8d..9d65da3f5895 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,14 @@
+2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+	    Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/121185
+	PR fortran/124661
+	* trans-array.cc (maybe_save_ref): New wrapper function around
+	save ref.
+	(set_factored_descriptor_value): Use the new wrapper function.
+	Add argument PRELIMINARY_CODE.
+	(gfc_conv_ss_descriptor): Update caller.
+
 2026-03-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/124666
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index dc016d0a66f7..84bc9a0b2908 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,9 @@
+2026-03-31  Joseph Myers  <josmyers@redhat.com>
+
+	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
+	ja.po, ka.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po,
+	zh_CN.po, zh_TW.po: Update.
+
 2026-03-26  Joseph Myers  <josmyers@redhat.com>
 
 	* gcc.pot: Regenerate.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7ff87ea4d380..9f6f7f7c8d16 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,124 @@
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/access_context1.C: Add new tests.
+	* g++.dg/reflect/current_function1.C: Likewise.
+	* g++.dg/reflect/current_class1.C: Likewise.
+	* g++.dg/reflect/current_class2.C: Likewise.
+	* g++.dg/reflect/current_namespace1.C: Likewise.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/data_member_spec5.C: New test.
+	* g++.dg/reflect/data_member_spec6.C: New test.
+	* g++.dg/reflect/display_string_of1.C: Expect extra ", {}" before
+	closing paren for empty annotations, otherwise a list of annotations.
+	* g++.dg/reflect/u8display_string_of1.C: Likewise.
+	* g++.dg/reflect/define_aggregate9.C: New test.
+	* g++.dg/reflect/mangle1.C: Test mangling of REFLECT_DATA_MEMBER_SPEC
+	annotations.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/current_function1.C: New test.
+	* g++.dg/reflect/current_function2.C: New test.
+	* g++.dg/reflect/current_class1.C: New test.
+	* g++.dg/reflect/current_class2.C: New test.
+	* g++.dg/reflect/current_namespace1.C: New test.
+
+2026-03-31  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* gcc.dg/torture/pr124041.c: Require effective target
+	fstack_protector.
+
+2026-03-31  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* gcc.dg/pr122925.c: Require int32plus effective target.
+
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/opt107.adb: New test.
+	* gnat.dg/opt107_pkg.ads: New helper.
+
+2026-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/annotations16.C: New test.
+
+2026-03-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* gcc.dg/analyzer/null-deref-pr123981-1.c: Restrict to 64-bit x86.
+
+2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+	    Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/121185
+	PR fortran/124661
+	* gfortran.dg/bounds_check_28.f90: New test.
+
+2026-03-31  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR target/124712
+	* gcc.dg/vect/vect-fmax-2.c: Changed effective target vect_float
+	to vect_double.
+	* gcc.dg/vect/vect-fmax-3.c: Likewise.
+	* gcc.dg/vect/vect-fmin-2.c: Likewise.
+	* gcc.dg/vect/vect-fmin-3.c: Likewise.
+
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/reduce6.adb: New test.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* g++.dg/alias-checks.C: Rename to...
+	* g++.dg/vect/vect-alias-checks.C: ... this.  Don't override
+	vector options.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/i386/pr82142b.c: Add -fomit-frame-pointer.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/i386/pr115397.c: Require fpic.
+	* gcc.target/i386/pr118497.c: Likewise.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/i386/part-vect-absnegbf.c: Require sse2_runtime.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/tree-ssa/pr83403-1.c: Bump
+	max-completely-peeled-insns on x86.
+	* gcc.dg/tree-ssa/pr83403-2.c: Likewise.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/tree-ssa/pr32964.c: Select the SSE FPU on x86.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/pr117888-2.c: Enable sse2.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/fstack-protector-strong.c (foo2): Prevent loop
+	optimizations.  Expect stack protection again.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/i386/pr115863-1.c: Include stdint.h.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/i386/lea-4.c: Require fpic.
+	* gcc.target/i386/pr116587.c: Likewise.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* c-c++-common/analyzer/deref-before-check-2.c (test_1):
+	Drop stderr.
+
 2026-03-30  H.J. Lu  <hjl.tools@gmail.com>
 	    Richard Biener  <rguenther@suse.de>
 
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 27909b288dd8..3d8695639f41 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,25 @@
+2026-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* libdruntime/MERGE: Merge upstream druntime e7c34c13de.
+	* src/MERGE: Merge upstream phobos 0c5c9e984.
+	* testsuite/libphobos.phobos/std_algorithm_comparison.d: Regenerate.
+	* testsuite/libphobos.phobos/std_algorithm_iteration.d: Regenerate.
+	* testsuite/libphobos.phobos/std_algorithm_searching.d: Regenerate.
+	* testsuite/libphobos.phobos/std_array.d: Regenerate.
+	* testsuite/libphobos.phobos/std_concurrency.d: Regenerate.
+	* testsuite/libphobos.phobos/std_conv.d: Regenerate.
+	* testsuite/libphobos.phobos/std_datetime_date.d: Regenerate.
+	* testsuite/libphobos.phobos/std_datetime_systime.d: Regenerate.
+	* testsuite/libphobos.phobos/std_math_algebraic.d: Regenerate.
+	* testsuite/libphobos.phobos/std_meta.d: Regenerate.
+	* testsuite/libphobos.phobos/std_range_package.d: Regenerate.
+	* testsuite/libphobos.phobos/std_sumtype.d: Regenerate.
+	* testsuite/libphobos.phobos/std_traits.d: Regenerate.
+	* testsuite/libphobos.phobos/std_typecons.d: Regenerate.
+	* testsuite/libphobos.phobos/std_uuid.d: Regenerate.
+	* testsuite/libphobos.phobos/std_internal_entropy.d: New test.
+	* testsuite/libphobos.phobos/std_mathspecial.d: New test.
+
 2026-03-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	PR d/123202
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 777214a8c1f5..88ca086a3a34 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+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):

From gccadmin@gcc.gnu.org  Wed Apr  1 00:20:00 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  1 Apr 2026 00:20:00 +0000 (GMT)
Subject: [gcc r15-11028] Daily bump.
Message-ID: <20260401002000.A8C7A4BAD157@sourceware.org>

https://gcc.gnu.org/g:f495ebba36784a13057fd8a2005dd314fe3ca47d

commit r15-11028-gf495ebba36784a13057fd8a2005dd314fe3ca47d
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 1 00:19:32 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  5 +++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 44 +++++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 16 ++++++++++++++++
 5 files changed, 116 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f4727bf7a00f..b46e71cb1cef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* tree-ssa-dse.cc (compute_trims): Bail out if ref->size is not
+	byte aligned either.
+
 2026-03-30  Tamar Christina  <tamar.christina@arm.com>
 
 	PR target/123017
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 18ed0453fc18..c077e78eada8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260331
+20260401
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 902c31f6f15b..c6055401aad8 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,47 @@
+2026-03-31  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-03-25  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/124567
+	* interface.cc (gfc_check_dummy_characteristics): Split shape check
+	into a separate check for rank and a check for shape, taking into
+	account a corner case where the ambiguity between deferred shape
+	and assumed shape has not been fully resolved at the time of
+	checking.
+
+2026-03-31  Mikael Morin  <morin-mikael@orange.fr>
+
+	Backported from master:
+	2025-07-31  Mikael Morin  <morin-mikael@orange.fr>
+
+	PR fortran/121342
+	* trans-expr.cc (gfc_conv_subref_array_arg): Remove offset
+	update.
+	(gfc_conv_procedure_call): For polymorphic functions, move the
+	scalarizer descriptor information...
+	* trans-array.cc (gfc_add_loop_ss_code): ... here, and evaluate
+	the bounds to fresh variables.
+	(get_class_info_from_ss): Remove offset update.
+	(gfc_conv_ss_startstride): Don't set a zero value for function
+	result upper bounds.
+	(late_set_loop_bounds): New.
+	(gfc_conv_loop_setup): If the bounds of a function result have
+	been set, and no other array provided loop bounds for a
+	dimension, use the function result bounds as loop bounds for
+	that dimension.
+	(gfc_set_delta): Don't skip delta setting for polymorphic
+	function results.
+
+2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+
+	Backported from master:
+	2025-06-19  Mikael Morin  <mikael@gcc.gnu.org>
+
+	PR fortran/120713
+	* trans-array.cc (gfc_trans_deferred_array): Statically
+	initialize deferred length variable for SAVEd character arrays.
+
 2026-03-30  Harald Anlauf  <anlauf@gmx.de>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8b253835b6cf..8ac710a5d7a7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,53 @@
+2026-03-31  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-03-25  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/124567
+	* gfortran.dg/pr124567.f90: New test.
+	* gfortran.dg/proc_decl_30.f90: Likewise.
+
+2026-03-31  Mikael Morin  <morin-mikael@orange.fr>
+
+	Backported from master:
+	2025-07-31  Mikael Morin  <morin-mikael@orange.fr>
+
+	PR fortran/121342
+	* gfortran.dg/class_elemental_1.f90: New test.
+
+2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/opt107.adb: New test.
+	* gnat.dg/opt107_pkg.ads: New helper.
+
+2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+
+	Backported from master:
+	2025-06-19  Mikael Morin  <mikael@gcc.gnu.org>
+
+	PR fortran/120713
+	* gfortran.dg/save_alloc_character_1.f90: New test.
+
+2026-03-31  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	Backported from master:
+	2026-03-31  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR target/124712
+	* gcc.dg/vect/vect-fmax-2.c: Changed effective target vect_float
+	to vect_double.
+	* gcc.dg/vect/vect-fmax-3.c: Likewise.
+	* gcc.dg/vect/vect-fmin-2.c: Likewise.
+	* gcc.dg/vect/vect-fmin-3.c: Likewise.
+
+2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	Backported from master:
+	2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/fstack-protector-strong.c (foo2): Prevent loop
+	optimizations.  Expect stack protection again.
+
 2026-03-30  Tamar Christina  <tamar.christina@arm.com>
 
 	PR target/123017
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index caf3c841e809..93200b16024f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,19 @@
+2026-03-31  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-20  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From redi@gcc.gnu.org  Wed Apr  1 12:32:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  1 Apr 2026 12:32:43 +0000 (GMT)
Subject: [gcc r16-8385] libstdc++: Rename saturation arithmetic for C++26
 (P4052R0)
Message-ID: <20260401123243.DDB764BA2E2B@sourceware.org>

https://gcc.gnu.org/g:c9525a790291bb924ac5d9887dd1f57e76a66a03

commit r16-8385-gc9525a790291bb924ac5d9887dd1f57e76a66a03
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Mar 30 12:13:39 2026 +0100

    libstdc++: Rename saturation arithmetic for C++26 (P4052R0)
    
    Last week in Croydon we approved P4052R0 to rename std::add_sat etc. for
    C++26
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/sat_arith.h              |  10 +-
 libstdc++-v3/include/bits/version.def              |   2 +-
 libstdc++-v3/include/bits/version.h                |   4 +-
 .../testsuite/26_numerics/saturation/add.cc        |  82 ++++++++--------
 .../testsuite/26_numerics/saturation/cast.cc       |  30 +++---
 .../testsuite/26_numerics/saturation/div.cc        |  40 ++++----
 .../testsuite/26_numerics/saturation/extended.cc   |  32 +++---
 .../testsuite/26_numerics/saturation/mul.cc        |  38 ++++----
 .../testsuite/26_numerics/saturation/sub.cc        | 108 ++++++++++-----------
 .../testsuite/26_numerics/saturation/version.cc    |   4 +-
 10 files changed, 175 insertions(+), 175 deletions(-)

diff --git a/libstdc++-v3/include/bits/sat_arith.h b/libstdc++-v3/include/bits/sat_arith.h
index bce86d919919..7f0149de0ecf 100644
--- a/libstdc++-v3/include/bits/sat_arith.h
+++ b/libstdc++-v3/include/bits/sat_arith.h
@@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Add two integers, with saturation in case of overflow.
   template<typename _Tp> requires __is_signed_or_unsigned_integer<_Tp>::value
     constexpr _Tp
-    add_sat(_Tp __x, _Tp __y) noexcept
+    saturating_add(_Tp __x, _Tp __y) noexcept
     {
       _Tp __z;
       if (!__builtin_add_overflow(__x, __y, &__z))
@@ -64,7 +64,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Subtract one integer from another, with saturation in case of overflow.
   template<typename _Tp> requires __is_signed_or_unsigned_integer<_Tp>::value
     constexpr _Tp
-    sub_sat(_Tp __x, _Tp __y) noexcept
+    saturating_sub(_Tp __x, _Tp __y) noexcept
     {
       _Tp __z;
       if (!__builtin_sub_overflow(__x, __y, &__z))
@@ -80,7 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Multiply two integers, with saturation in case of overflow.
   template<typename _Tp> requires __is_signed_or_unsigned_integer<_Tp>::value
     constexpr _Tp
-    mul_sat(_Tp __x, _Tp __y) noexcept
+    saturating_mul(_Tp __x, _Tp __y) noexcept
     {
       _Tp __z;
       if (!__builtin_mul_overflow(__x, __y, &__z))
@@ -96,7 +96,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Divide one integer by another, with saturation in case of overflow.
   template<typename _Tp> requires __is_signed_or_unsigned_integer<_Tp>::value
     constexpr _Tp
-    div_sat(_Tp __x, _Tp __y) noexcept
+    saturating_div(_Tp __x, _Tp __y) noexcept
     {
       __glibcxx_assert(__y != 0);
       if constexpr (is_signed_v<_Tp>)
@@ -110,7 +110,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     requires __is_signed_or_unsigned_integer<_Res>::value
       && __is_signed_or_unsigned_integer<_Tp>::value
     constexpr _Res
-    saturate_cast(_Tp __x) noexcept
+    saturating_cast(_Tp __x) noexcept
     {
       constexpr int __digits_R = __gnu_cxx::__int_traits<_Res>::__digits;
       constexpr int __digits_T = __gnu_cxx::__int_traits<_Tp>::__digits;
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index bb513e391d76..8c9ec854d3b2 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2157,7 +2157,7 @@ ftms = {
 ftms = {
   name = saturation_arithmetic;
   values = {
-    v = 202311;
+    v = 202603;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index e469944208a7..836aae02d773 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2418,9 +2418,9 @@
 
 #if !defined(__cpp_lib_saturation_arithmetic)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_saturation_arithmetic 202311L
+#  define __glibcxx_saturation_arithmetic 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_saturation_arithmetic)
-#   define __cpp_lib_saturation_arithmetic 202311L
+#   define __cpp_lib_saturation_arithmetic 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_saturation_arithmetic) */
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/add.cc b/libstdc++-v3/testsuite/26_numerics/saturation/add.cc
index 3eee6abca9a1..2695f7296112 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/add.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/add.cc
@@ -7,67 +7,67 @@
 
 template<typename T, typename U>
 concept can_add_sat
-  = requires(T t, U u) { { std::add_sat(t, u) } -> std::same_as<T>; };
+  = requires(T t, U u) { { std::saturating_add(t, u) } -> std::same_as<T>; };
 
 static_assert( can_add_sat<int, int> );
 static_assert( not can_add_sat<int, short> );
 static_assert( not can_add_sat<unsigned, int> );
-static_assert( noexcept(std::add_sat(0, 0)) );
+static_assert( noexcept(std::saturating_add(0, 0)) );
 
-using std::add_sat;
+using std::saturating_add;
 
 // Signed type
-static_assert(add_sat(0, 0) == 0);
-static_assert(add_sat(1, 1) == 2);
-static_assert(add_sat(-1, -1) == -2);
-static_assert(add_sat(-1, 1) == 0);
+static_assert(saturating_add(0, 0) == 0);
+static_assert(saturating_add(1, 1) == 2);
+static_assert(saturating_add(-1, -1) == -2);
+static_assert(saturating_add(-1, 1) == 0);
 constexpr auto max = std::numeric_limits<int>::max();
 constexpr auto min = std::numeric_limits<int>::min();
-static_assert(add_sat(max, 1) == max);
-static_assert(add_sat(1, max) == max);
-static_assert(add_sat(max, max) == max);
-static_assert(add_sat(min, -1) == min);
-static_assert(add_sat(-1, min) == min);
-static_assert(add_sat(min, min) == min);
-static_assert(add_sat(max, min) == -1);
-static_assert(add_sat(min, max) == -1);
+static_assert(saturating_add(max, 1) == max);
+static_assert(saturating_add(1, max) == max);
+static_assert(saturating_add(max, max) == max);
+static_assert(saturating_add(min, -1) == min);
+static_assert(saturating_add(-1, min) == min);
+static_assert(saturating_add(min, min) == min);
+static_assert(saturating_add(max, min) == -1);
+static_assert(saturating_add(min, max) == -1);
 
 // Wider signed type than the args
-static_assert(add_sat<long long>(max, max) == (long long)max * 2);
-static_assert(add_sat<long long>(min, min) == (long long)min * 2);
+static_assert(saturating_add<long long>(max, max) == (long long)max * 2);
+static_assert(saturating_add<long long>(min, min) == (long long)min * 2);
 
 // Signed type that undergoes integer promotion
 constexpr auto shrt_max = std::numeric_limits<short>::max();
 constexpr auto shrt_min = std::numeric_limits<short>::min();
-static_assert(add_sat<short>(0, 0) == 0);
-static_assert(add_sat<short>(1, 1) == 2);
-static_assert(add_sat<short>(shrt_max, shrt_max) == shrt_max);
-static_assert(add_sat<short>(shrt_max, 1) == shrt_max);
-static_assert(add_sat<short>(1, shrt_max) == shrt_max);
-static_assert(add_sat<short>(shrt_min, (short)-1) == shrt_min);
-static_assert(add_sat<short>((short)-1, shrt_min) == shrt_min);
-static_assert(add_sat<short>(shrt_min, (short)1) == -shrt_max);
-static_assert(add_sat<short>((short)1, shrt_min) == -shrt_max);
+static_assert(saturating_add<short>(0, 0) == 0);
+static_assert(saturating_add<short>(1, 1) == 2);
+static_assert(saturating_add<short>(shrt_max, shrt_max) == shrt_max);
+static_assert(saturating_add<short>(shrt_max, 1) == shrt_max);
+static_assert(saturating_add<short>(1, shrt_max) == shrt_max);
+static_assert(saturating_add<short>(shrt_min, (short)-1) == shrt_min);
+static_assert(saturating_add<short>((short)-1, shrt_min) == shrt_min);
+static_assert(saturating_add<short>(shrt_min, (short)1) == -shrt_max);
+static_assert(saturating_add<short>((short)1, shrt_min) == -shrt_max);
 
 // Unsigned type
-static_assert(add_sat(0u, 0u) == 0u);
-static_assert(add_sat(1u, 1u) == 2u);
+static_assert(saturating_add(0u, 0u) == 0u);
+static_assert(saturating_add(1u, 1u) == 2u);
 constexpr auto umax = std::numeric_limits<unsigned>::max();
-static_assert(add_sat(umax, 1u) == umax);
-static_assert(add_sat(1u, umax) == umax);
-static_assert(add_sat(umax, umax) == umax);
-static_assert(add_sat(0u, umax) == umax);
-static_assert(add_sat(umax, 0u) == umax);
-static_assert(add_sat(0u, 1u) == 1u);
-static_assert(add_sat(1u, 0u) == 1u);
+static_assert(saturating_add(umax, 1u) == umax);
+static_assert(saturating_add(1u, umax) == umax);
+static_assert(saturating_add(umax, umax) == umax);
+static_assert(saturating_add(0u, umax) == umax);
+static_assert(saturating_add(umax, 0u) == umax);
+static_assert(saturating_add(0u, 1u) == 1u);
+static_assert(saturating_add(1u, 0u) == 1u);
 
 // Wider unsigned type than the args
-static_assert(add_sat<unsigned long long>(umax, umax) == (long long)umax * 2);
+static_assert(saturating_add<unsigned long long>(umax, umax) == (long long)umax * 2);
 
 // Unsigned type that undergoes integer promotion
 constexpr auto ushrt_max = std::numeric_limits<unsigned short>::max();
-static_assert(add_sat<unsigned short>(0, 0) == 0);
-static_assert(add_sat<unsigned short>(1, 1) == 2);
-static_assert(add_sat<unsigned short>(ushrt_max, ushrt_max) == ushrt_max);
-static_assert(add_sat<unsigned short>(ushrt_max, 1) == ushrt_max);
-static_assert(add_sat<unsigned short>(1, ushrt_max) == ushrt_max);
+static_assert(saturating_add<unsigned short>(0, 0) == 0);
+static_assert(saturating_add<unsigned short>(1, 1) == 2);
+static_assert(saturating_add<unsigned short>(ushrt_max, ushrt_max) == ushrt_max);
+static_assert(saturating_add<unsigned short>(ushrt_max, 1) == ushrt_max);
+static_assert(saturating_add<unsigned short>(1, ushrt_max) == ushrt_max);
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/cast.cc b/libstdc++-v3/testsuite/26_numerics/saturation/cast.cc
index 672e9c46be1c..e23d727bdb68 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/cast.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/cast.cc
@@ -6,19 +6,19 @@
 #include <climits>
 
 #if CHAR_BIT == 8
-static_assert(std::saturate_cast<unsigned char>(999) == 255);
-static_assert(std::saturate_cast<signed char>(999) == 127);
+static_assert(std::saturating_cast<unsigned char>(999) == 255);
+static_assert(std::saturating_cast<signed char>(999) == 127);
 #endif
-static_assert(std::saturate_cast<unsigned short>(999) == 999);
-static_assert(std::saturate_cast<signed short>(999) == 999);
-static_assert(std::saturate_cast<short>(INT_MAX) == SHRT_MAX);
-static_assert(std::saturate_cast<short>(UINT_MAX) == SHRT_MAX);
-static_assert(std::saturate_cast<short>(UINT_MAX) == SHRT_MAX);
-static_assert(std::saturate_cast<unsigned short>(UINT_MAX) == USHRT_MAX);
-static_assert(std::saturate_cast<int>(UINT_MAX) == INT_MAX);
-static_assert(std::saturate_cast<int>(INT_MAX) == INT_MAX);
-static_assert(std::saturate_cast<unsigned>(-1) == 0);
-static_assert(std::saturate_cast<unsigned>(INT_MIN) == 0);
-static_assert(std::saturate_cast<unsigned>(UINT_MAX) == UINT_MAX);
-static_assert(std::saturate_cast<unsigned>(LLONG_MAX) == UINT_MAX);
-static_assert(std::saturate_cast<unsigned>(ULLONG_MAX) == UINT_MAX);
+static_assert(std::saturating_cast<unsigned short>(999) == 999);
+static_assert(std::saturating_cast<signed short>(999) == 999);
+static_assert(std::saturating_cast<short>(INT_MAX) == SHRT_MAX);
+static_assert(std::saturating_cast<short>(UINT_MAX) == SHRT_MAX);
+static_assert(std::saturating_cast<short>(UINT_MAX) == SHRT_MAX);
+static_assert(std::saturating_cast<unsigned short>(UINT_MAX) == USHRT_MAX);
+static_assert(std::saturating_cast<int>(UINT_MAX) == INT_MAX);
+static_assert(std::saturating_cast<int>(INT_MAX) == INT_MAX);
+static_assert(std::saturating_cast<unsigned>(-1) == 0);
+static_assert(std::saturating_cast<unsigned>(INT_MIN) == 0);
+static_assert(std::saturating_cast<unsigned>(UINT_MAX) == UINT_MAX);
+static_assert(std::saturating_cast<unsigned>(LLONG_MAX) == UINT_MAX);
+static_assert(std::saturating_cast<unsigned>(ULLONG_MAX) == UINT_MAX);
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/div.cc b/libstdc++-v3/testsuite/26_numerics/saturation/div.cc
index a3f43573651a..71d4970d632d 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/div.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/div.cc
@@ -7,32 +7,32 @@
 
 template<typename T, typename U>
 concept can_div_sat
-  = requires(T t, U u) { { std::div_sat(t, u) } -> std::same_as<T>; };
+  = requires(T t, U u) { { std::saturating_div(t, u) } -> std::same_as<T>; };
 
 static_assert( can_div_sat<int, int> );
 static_assert( not can_div_sat<int, short> );
 static_assert( not can_div_sat<unsigned, int> );
-static_assert( noexcept(std::div_sat(0, 1)) );
-
-using std::div_sat;
-
-static_assert(std::div_sat(0, 1) == 0);
-static_assert(std::div_sat(0, -1) == 0);
-static_assert(std::div_sat(1, -1) == -1);
-static_assert(std::div_sat(10, -2) == -5);
-static_assert(std::div_sat(-10, -2) == 5);
-static_assert(std::div_sat(INT_MAX, 1) == INT_MAX);
-static_assert(std::div_sat(INT_MIN, 1) == INT_MIN);
-static_assert(std::div_sat(INT_MIN + 1, -1) == INT_MAX);
-static_assert(std::div_sat(0u, 1u) == 0u);
-static_assert(std::div_sat(UINT_MAX, 1u) == UINT_MAX);
-static_assert(std::div_sat(INT_MIN, -1) == INT_MAX);
-static_assert(std::div_sat((short)SHRT_MIN, (short)-1) == SHRT_MAX);
-static_assert(std::div_sat(LONG_MIN, -1L) == LONG_MAX);
-static_assert(std::div_sat(LLONG_MIN, -1LL) == LLONG_MAX);
+static_assert( noexcept(std::saturating_div(0, 1)) );
+
+using std::saturating_div;
+
+static_assert(std::saturating_div(0, 1) == 0);
+static_assert(std::saturating_div(0, -1) == 0);
+static_assert(std::saturating_div(1, -1) == -1);
+static_assert(std::saturating_div(10, -2) == -5);
+static_assert(std::saturating_div(-10, -2) == 5);
+static_assert(std::saturating_div(INT_MAX, 1) == INT_MAX);
+static_assert(std::saturating_div(INT_MIN, 1) == INT_MIN);
+static_assert(std::saturating_div(INT_MIN + 1, -1) == INT_MAX);
+static_assert(std::saturating_div(0u, 1u) == 0u);
+static_assert(std::saturating_div(UINT_MAX, 1u) == UINT_MAX);
+static_assert(std::saturating_div(INT_MIN, -1) == INT_MAX);
+static_assert(std::saturating_div((short)SHRT_MIN, (short)-1) == SHRT_MAX);
+static_assert(std::saturating_div(LONG_MIN, -1L) == LONG_MAX);
+static_assert(std::saturating_div(LLONG_MIN, -1LL) == LLONG_MAX);
 
 template<auto N>
-std::integral_constant<decltype(N), std::div_sat(N, N-N)>
+std::integral_constant<decltype(N), std::saturating_div(N, N-N)>
 div_sat_by_zero();
 
 template<auto N>
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/extended.cc b/libstdc++-v3/testsuite/26_numerics/saturation/extended.cc
index fbef62826c23..8095a32d01f2 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/extended.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/extended.cc
@@ -14,22 +14,22 @@ test()
   constexpr S smin = std::numeric_limits<S>::min();
   constexpr U umax = std::numeric_limits<U>::max();
 
-  static_assert( std::add_sat(smax, (S)1) == smax );
-  static_assert( std::add_sat(smin, (S)-2) == smin );
-  static_assert( std::add_sat(umax, (U)3) == umax );
-
-  static_assert( std::sub_sat(smax, (S)-1) == smax );
-  static_assert( std::sub_sat(smin, (S)2) == smin );
-  static_assert( std::sub_sat((U)0, (U)3) == (U)0 );
-
-  static_assert( std::mul_sat((S)(smax >> 1), (S)3) == smax );
-  static_assert( std::mul_sat((S)(smin >> 1), (S)5) == smin );
-  static_assert( std::mul_sat((U)(umax >> 1), (U)7) == umax );
-
-  static_assert( std::div_sat(smax, (S)2) == (smax >> 1) );
-  static_assert( std::div_sat(smin, (S)4) == (smin >> 2) );
-  static_assert( std::div_sat(smin, (S)-1) == smax );
-  static_assert( std::div_sat(umax, (U)8) == (umax >> 3) );
+  static_assert( std::saturating_add(smax, (S)1) == smax );
+  static_assert( std::saturating_add(smin, (S)-2) == smin );
+  static_assert( std::saturating_add(umax, (U)3) == umax );
+
+  static_assert( std::saturating_sub(smax, (S)-1) == smax );
+  static_assert( std::saturating_sub(smin, (S)2) == smin );
+  static_assert( std::saturating_sub((U)0, (U)3) == (U)0 );
+
+  static_assert( std::saturating_mul((S)(smax >> 1), (S)3) == smax );
+  static_assert( std::saturating_mul((S)(smin >> 1), (S)5) == smin );
+  static_assert( std::saturating_mul((U)(umax >> 1), (U)7) == umax );
+
+  static_assert( std::saturating_div(smax, (S)2) == (smax >> 1) );
+  static_assert( std::saturating_div(smin, (S)4) == (smin >> 2) );
+  static_assert( std::saturating_div(smin, (S)-1) == smax );
+  static_assert( std::saturating_div(umax, (U)8) == (umax >> 3) );
 
   return true;
 }
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/mul.cc b/libstdc++-v3/testsuite/26_numerics/saturation/mul.cc
index 1b5538c9af3b..ea8ca2e76522 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/mul.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/mul.cc
@@ -7,28 +7,28 @@
 
 template<typename T, typename U>
 concept can_mul_sat
-  = requires(T t, U u) { { std::mul_sat(t, u) } -> std::same_as<T>; };
+  = requires(T t, U u) { { std::saturating_mul(t, u) } -> std::same_as<T>; };
 
 static_assert( can_mul_sat<int, int> );
 static_assert( not can_mul_sat<int, short> );
 static_assert( not can_mul_sat<unsigned, int> );
-static_assert( noexcept(std::mul_sat(0, 0)) );
+static_assert( noexcept(std::saturating_mul(0, 0)) );
 
-using std::mul_sat;
+using std::saturating_mul;
 
-static_assert(mul_sat(1, 1) == 1);
-static_assert(mul_sat(10, 11) == 110);
-static_assert(mul_sat(INT_MAX / 2, 3) == INT_MAX);
-static_assert(mul_sat(INT_MAX / 2, -3) == INT_MIN);
-static_assert(mul_sat(INT_MAX / -2, 3) == INT_MIN);
-static_assert(mul_sat(INT_MIN / 2, -3) == INT_MAX);
-static_assert(mul_sat(INT_MIN, -1) == INT_MAX);
-static_assert(mul_sat(INT_MAX, -1) == INT_MIN + 1);
-static_assert(mul_sat(INT_MAX, INT_MAX) == INT_MAX);
-static_assert(mul_sat(INT_MAX, -INT_MAX) == INT_MIN);
-static_assert(mul_sat(UINT_MAX, UINT_MAX) == UINT_MAX);
-static_assert(mul_sat(UINT_MAX, 0u) == 0);
-static_assert(mul_sat(0u, UINT_MAX) == 0);
-static_assert(mul_sat((short)SHRT_MAX, (short)2) == SHRT_MAX);
-static_assert(mul_sat((short)SHRT_MAX, (short)SHRT_MIN) == SHRT_MIN);
-static_assert(mul_sat<long long>(SHRT_MAX, 2) == 2L * SHRT_MAX);
+static_assert(saturating_mul(1, 1) == 1);
+static_assert(saturating_mul(10, 11) == 110);
+static_assert(saturating_mul(INT_MAX / 2, 3) == INT_MAX);
+static_assert(saturating_mul(INT_MAX / 2, -3) == INT_MIN);
+static_assert(saturating_mul(INT_MAX / -2, 3) == INT_MIN);
+static_assert(saturating_mul(INT_MIN / 2, -3) == INT_MAX);
+static_assert(saturating_mul(INT_MIN, -1) == INT_MAX);
+static_assert(saturating_mul(INT_MAX, -1) == INT_MIN + 1);
+static_assert(saturating_mul(INT_MAX, INT_MAX) == INT_MAX);
+static_assert(saturating_mul(INT_MAX, -INT_MAX) == INT_MIN);
+static_assert(saturating_mul(UINT_MAX, UINT_MAX) == UINT_MAX);
+static_assert(saturating_mul(UINT_MAX, 0u) == 0);
+static_assert(saturating_mul(0u, UINT_MAX) == 0);
+static_assert(saturating_mul((short)SHRT_MAX, (short)2) == SHRT_MAX);
+static_assert(saturating_mul((short)SHRT_MAX, (short)SHRT_MIN) == SHRT_MIN);
+static_assert(saturating_mul<long long>(SHRT_MAX, 2) == 2L * SHRT_MAX);
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/sub.cc b/libstdc++-v3/testsuite/26_numerics/saturation/sub.cc
index c56154a49ff5..8b2eabc280af 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/sub.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/sub.cc
@@ -7,80 +7,80 @@
 
 template<typename T, typename U>
 concept can_sub_sat
-  = requires(T t, U u) { { std::sub_sat(t, u) } -> std::same_as<T>; };
+  = requires(T t, U u) { { std::saturating_sub(t, u) } -> std::same_as<T>; };
 
 static_assert( can_sub_sat<int, int> );
 static_assert( not can_sub_sat<int, short> );
 static_assert( not can_sub_sat<unsigned, int> );
-static_assert( noexcept(std::sub_sat(0, 0)) );
+static_assert( noexcept(std::saturating_sub(0, 0)) );
 
-using std::sub_sat;
+using std::saturating_sub;
 
 // Signed type
-static_assert(sub_sat(0, 0) == 0);
-static_assert(sub_sat(1, 1) == 0);
-static_assert(sub_sat(-1, -1) == 0);
-static_assert(sub_sat(-1, 1) == -2);
+static_assert(saturating_sub(0, 0) == 0);
+static_assert(saturating_sub(1, 1) == 0);
+static_assert(saturating_sub(-1, -1) == 0);
+static_assert(saturating_sub(-1, 1) == -2);
 constexpr auto max = std::numeric_limits<int>::max();
 constexpr auto min = std::numeric_limits<int>::min();
-static_assert(sub_sat(max, 1) == max - 1);
-static_assert(sub_sat(1, max) == 1 - max);
-static_assert(sub_sat(max, max) == 0);
-static_assert(sub_sat(min, 1) == min);
-static_assert(sub_sat(min, 123) == min);
-static_assert(sub_sat(0, max) == min + 1);
-static_assert(sub_sat(-1, max) == min);
-static_assert(sub_sat(-2, max) == min);
-static_assert(sub_sat(-2, min) == max - 1);
-static_assert(sub_sat(-1, min) == max);
-static_assert(sub_sat(0, min) == max);
-static_assert(sub_sat(1, min) == max);
-static_assert(sub_sat(min, -1) == min + 1);
-static_assert(sub_sat(min, min) == 0);
-static_assert(sub_sat(max, min) == max);
-static_assert(sub_sat(min, max) == min);
+static_assert(saturating_sub(max, 1) == max - 1);
+static_assert(saturating_sub(1, max) == 1 - max);
+static_assert(saturating_sub(max, max) == 0);
+static_assert(saturating_sub(min, 1) == min);
+static_assert(saturating_sub(min, 123) == min);
+static_assert(saturating_sub(0, max) == min + 1);
+static_assert(saturating_sub(-1, max) == min);
+static_assert(saturating_sub(-2, max) == min);
+static_assert(saturating_sub(-2, min) == max - 1);
+static_assert(saturating_sub(-1, min) == max);
+static_assert(saturating_sub(0, min) == max);
+static_assert(saturating_sub(1, min) == max);
+static_assert(saturating_sub(min, -1) == min + 1);
+static_assert(saturating_sub(min, min) == 0);
+static_assert(saturating_sub(max, min) == max);
+static_assert(saturating_sub(min, max) == min);
 
 // Wider signed type than the args
-static_assert(sub_sat<long long>(max, min) == (long long)max * 2 + 1);
-static_assert(sub_sat<long long>(min, max) == (long long)min * 2 + 1);
+static_assert(saturating_sub<long long>(max, min) == (long long)max * 2 + 1);
+static_assert(saturating_sub<long long>(min, max) == (long long)min * 2 + 1);
 
 // Signed type that undergoes integer promotion
 constexpr auto shrt_max = std::numeric_limits<short>::max();
 constexpr auto shrt_min = std::numeric_limits<short>::min();
-static_assert(sub_sat<short>(0, 0) == 0);
-static_assert(sub_sat<short>(1, 1) == 0);
-static_assert(sub_sat<short>(3, 1) == 2);
-static_assert(sub_sat<short>(shrt_max, shrt_max) == 0);
-static_assert(sub_sat<short>(shrt_max, 1) == shrt_max - 1);
-static_assert(sub_sat<short>(1, shrt_max) == shrt_min + 2);
-static_assert(sub_sat<short>(shrt_max, shrt_min) == shrt_max);
-static_assert(sub_sat<short>(0, shrt_min) == shrt_max);
-static_assert(sub_sat<short>(shrt_min, (short)1) == shrt_min);
-static_assert(sub_sat<short>(shrt_min, (short)-1) == shrt_min + 1);
-static_assert(sub_sat<short>((short)-1, shrt_min) == shrt_max);
-static_assert(sub_sat<short>((short)1, shrt_min) == shrt_max);
+static_assert(saturating_sub<short>(0, 0) == 0);
+static_assert(saturating_sub<short>(1, 1) == 0);
+static_assert(saturating_sub<short>(3, 1) == 2);
+static_assert(saturating_sub<short>(shrt_max, shrt_max) == 0);
+static_assert(saturating_sub<short>(shrt_max, 1) == shrt_max - 1);
+static_assert(saturating_sub<short>(1, shrt_max) == shrt_min + 2);
+static_assert(saturating_sub<short>(shrt_max, shrt_min) == shrt_max);
+static_assert(saturating_sub<short>(0, shrt_min) == shrt_max);
+static_assert(saturating_sub<short>(shrt_min, (short)1) == shrt_min);
+static_assert(saturating_sub<short>(shrt_min, (short)-1) == shrt_min + 1);
+static_assert(saturating_sub<short>((short)-1, shrt_min) == shrt_max);
+static_assert(saturating_sub<short>((short)1, shrt_min) == shrt_max);
 
 // Unsigned type
-static_assert(sub_sat(0u, 0u) == 0u);
-static_assert(sub_sat(1u, 1u) == 0u);
-static_assert(sub_sat(-1u, -1u) == 0u);
-static_assert(sub_sat(-1u, 1u) == -2u);
+static_assert(saturating_sub(0u, 0u) == 0u);
+static_assert(saturating_sub(1u, 1u) == 0u);
+static_assert(saturating_sub(-1u, -1u) == 0u);
+static_assert(saturating_sub(-1u, 1u) == -2u);
 constexpr auto umax = std::numeric_limits<unsigned>::max();
-static_assert(sub_sat(0u, 1u) == 0u);
-static_assert(sub_sat(umax, umax) == 0u);
-static_assert(sub_sat(umax, 0u) == umax);
-static_assert(sub_sat(0u, umax) == 0u);
-static_assert(sub_sat(umax, 1u) == umax - 1u);
-static_assert(sub_sat(0u, 0u) == 0u);
+static_assert(saturating_sub(0u, 1u) == 0u);
+static_assert(saturating_sub(umax, umax) == 0u);
+static_assert(saturating_sub(umax, 0u) == umax);
+static_assert(saturating_sub(0u, umax) == 0u);
+static_assert(saturating_sub(umax, 1u) == umax - 1u);
+static_assert(saturating_sub(0u, 0u) == 0u);
 
 // Wider unsigned type than the args
-static_assert(sub_sat<unsigned long long>(0u, umax) == 0u);
+static_assert(saturating_sub<unsigned long long>(0u, umax) == 0u);
 
 // Unsigned type that undergoes integer promotion
 constexpr auto ushrt_max = std::numeric_limits<unsigned short>::max();
-static_assert(sub_sat<unsigned short>(0, 0) == 0);
-static_assert(sub_sat<unsigned short>(1, 1) == 0);
-static_assert(sub_sat<unsigned short>(3, 1) == 2);
-static_assert(sub_sat<unsigned short>(ushrt_max, ushrt_max) == 0);
-static_assert(sub_sat<unsigned short>(0, 1) == 0);
-static_assert(sub_sat<unsigned short>(1, ushrt_max) == 0);
+static_assert(saturating_sub<unsigned short>(0, 0) == 0);
+static_assert(saturating_sub<unsigned short>(1, 1) == 0);
+static_assert(saturating_sub<unsigned short>(3, 1) == 2);
+static_assert(saturating_sub<unsigned short>(ushrt_max, ushrt_max) == 0);
+static_assert(saturating_sub<unsigned short>(0, 1) == 0);
+static_assert(saturating_sub<unsigned short>(1, ushrt_max) == 0);
diff --git a/libstdc++-v3/testsuite/26_numerics/saturation/version.cc b/libstdc++-v3/testsuite/26_numerics/saturation/version.cc
index ca94ef1212a2..7b08820b5984 100644
--- a/libstdc++-v3/testsuite/26_numerics/saturation/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/saturation/version.cc
@@ -5,7 +5,7 @@
 
 #ifndef __cpp_lib_saturation_arithmetic
 # error "Feature test macro for saturation arithmetic is missing in <numeric>"
-#elif __cpp_lib_saturation_arithmetic < 202311L
+#elif __cpp_lib_saturation_arithmetic < 202603L
 # error "Feature test macro for saturation arithmetic has wrong value in <numeric>"
 #endif
 
@@ -14,6 +14,6 @@
 
 #ifndef __cpp_lib_saturation_arithmetic
 # error "Feature test macro for saturation arithmetic is missing in <version>"
-#elif __cpp_lib_saturation_arithmetic < 202311L
+#elif __cpp_lib_saturation_arithmetic < 202603L
 # error "Feature test macro for saturation arithmetic has wrong value in <version>"
 #endif

From redi@gcc.gnu.org  Wed Apr  1 12:32:49 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  1 Apr 2026 12:32:49 +0000 (GMT)
Subject: [gcc r16-8386] libstdc++: Rename std::runtime_format for C++26
 (P3953R3)
Message-ID: <20260401123249.1A2E84BA902B@sourceware.org>

https://gcc.gnu.org/g:bd87cdb896f3e38ba7d006521e9dd43e07dbd541

commit r16-8386-gbd87cdb896f3e38ba7d006521e9dd43e07dbd541
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Mar 30 12:13:39 2026 +0100

    libstdc++: Rename std::runtime_format for C++26 (P3953R3)
    
    Last week in Croydon we approved P3953R3 to rename std::runtime_format
    for C++26. The rationale is that with compile-time std::format, the name
    std::runtime_format doesn't make sense. It's std::dynamic_format now
    instead.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h              | 14 +++++++-------
 libstdc++-v3/include/bits/version.def              |  3 ++-
 libstdc++-v3/include/bits/version.h                |  4 ++--
 libstdc++-v3/include/std/format                    | 18 +++++++++---------
 libstdc++-v3/include/std/print                     |  2 +-
 .../{runtime_format.cc => dynamic_format.cc}       | 22 +++++++++++-----------
 6 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index d152397891f2..f5a0a65a48da 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -885,9 +885,9 @@ namespace __format
       static constexpr const _CharT* _S_empty_spec = _S_chars + 18;
 
       [[__gnu__::__always_inline__]]
-      static _Runtime_format_string<_CharT>
+      static _Dynamic_format_string<_CharT>
       _S_empty_fs()
-      { return _Runtime_format_string<_CharT>(_S_empty_spec); }
+      { return _Dynamic_format_string<_CharT>(_S_empty_spec); }
 
       static constexpr const _CharT* _S_weekdays[]
       {
@@ -1321,7 +1321,7 @@ namespace __format
 
 	  if (__conv != 'y' && __ci >= 100) [[unlikely]]
 	    {
-	      using _FmtStr = _Runtime_format_string<_CharT>;
+	      using _FmtStr = _Dynamic_format_string<_CharT>;
 	      __string_view __fs = _S_minus_empty_spec + !__is_neg;
 	      __out = std::format_to(std::move(__out), _FmtStr(__fs),
 				     __conv == 'C' ? __ci : __yi);
@@ -1360,7 +1360,7 @@ namespace __format
 
 	  if (__mi >= 100 || __di >= 100) [[unlikely]]
 	    {
-	      using _FmtStr = _Runtime_format_string<_CharT>;
+	      using _FmtStr = _Dynamic_format_string<_CharT>;
 	      __string_view __fs = _GLIBCXX_WIDEN("{:02d}/{:02d}/{:02d}");
 	      __out = std::format_to(std::move(__out), _FmtStr(__fs),
 				     __mi, __di, __yi);
@@ -1416,7 +1416,7 @@ namespace __format
 
 	  if (__yi >= 10000 || __mi >= 100 || __di >= 100) [[unlikely]]
 	    {
-	      using _FmtStr = _Runtime_format_string<_CharT>;
+	      using _FmtStr = _Dynamic_format_string<_CharT>;
 	      __string_view __fs
 		= _GLIBCXX_WIDEN("-{:04d}-{:02d}-{:02d}") + !__is_neg;
 	      __out = std::format_to(std::move(__out), _FmtStr(__fs),
@@ -1706,7 +1706,7 @@ namespace __format
 	  else if (__prec > __max_prec)
 	    __prec = __max_prec;
 
-	  using _FmtStr = _Runtime_format_string<_CharT>;
+	  using _FmtStr = _Dynamic_format_string<_CharT>;
 	  return std::format_to(__out, _FmtStr(_GLIBCXX_WIDEN("{0:0{1}}")),
 				__subs, __prec);
 	}
@@ -2110,7 +2110,7 @@ namespace __format
 	 _Out
 	 _M_format_to(_Out __out, const chrono::sys_info& __si) const
 	 {
-	   using _FmtStr = _Runtime_format_string<_CharT>;
+	   using _FmtStr = _Dynamic_format_string<_CharT>;
 	   // n.b. only decimal separator is locale dependent for specifiers
 	   // used below, as sys_info uses seconds and minutes duration, the
 	   // output is locale-independent.
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 8c9ec854d3b2..434d38c8fbdf 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1321,8 +1321,9 @@ ftms = {
   // 202305 P2757R3 Type checking format args
   // 202306 P2637R3 Member visit
   // 202311 P2918R2 Runtime format strings II
+  // 202603 P3953R3 Rename std::runtime_format
   values = {
-    v = 202311;
+    v = 202603;
     cxxmin = 26;
     hosted = yes;
   };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 836aae02d773..bb2475087f1f 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1473,9 +1473,9 @@
 
 #if !defined(__cpp_lib_format)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
-#  define __glibcxx_format 202311L
+#  define __glibcxx_format 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_format)
-#   define __cpp_lib_format 202311L
+#   define __cpp_lib_format 202603L
 #  endif
 # elif (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_format 202304L
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 555781bbd274..2bcd06822b75 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -125,14 +125,14 @@ namespace __format
     using __format_context = basic_format_context<_Sink_iter<_CharT>, _CharT>;
 
   template<typename _CharT>
-    struct _Runtime_format_string
+    struct _Dynamic_format_string
     {
       [[__gnu__::__always_inline__]]
-      _Runtime_format_string(basic_string_view<_CharT> __s) noexcept
+      _Dynamic_format_string(basic_string_view<_CharT> __s) noexcept
       : _M_str(__s) { }
 
-      _Runtime_format_string(const _Runtime_format_string&) = delete;
-      void operator=(const _Runtime_format_string&) = delete;
+      _Dynamic_format_string(const _Dynamic_format_string&) = delete;
+      void operator=(const _Dynamic_format_string&) = delete;
 
     private:
       basic_string_view<_CharT> _M_str;
@@ -173,7 +173,7 @@ namespace __format
 	basic_format_string(const _Tp& __s);
 
       [[__gnu__::__always_inline__]]
-      basic_format_string(__format::_Runtime_format_string<_CharT> __s) noexcept
+      basic_format_string(__format::_Dynamic_format_string<_CharT> __s) noexcept
       : _M_str(__s._M_str)
       { }
 
@@ -197,14 +197,14 @@ namespace __format
 
 #if __cpp_lib_format >= 202311L // >= C++26
   [[__gnu__::__always_inline__]]
-  inline __format::_Runtime_format_string<char>
-  runtime_format(string_view __fmt) noexcept
+  inline __format::_Dynamic_format_string<char>
+  dynamic_format(string_view __fmt) noexcept
   { return __fmt; }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   [[__gnu__::__always_inline__]]
-  inline __format::_Runtime_format_string<wchar_t>
-  runtime_format(wstring_view __fmt) noexcept
+  inline __format::_Dynamic_format_string<wchar_t>
+  dynamic_format(wstring_view __fmt) noexcept
   { return __fmt; }
 #endif
 #endif // C++26
diff --git a/libstdc++-v3/include/std/print b/libstdc++-v3/include/std/print
index 6ffd9a4b1b3f..1b9e810419f0 100644
--- a/libstdc++-v3/include/std/print
+++ b/libstdc++-v3/include/std/print
@@ -352,7 +352,7 @@ namespace __format
 	(enable_nonlocking_formatter_optimization<remove_cvref_t<_Args>> && ...);
 
       // The standard wants us to call
-      // print(stream, runtime_format(string(fmt.get()) + '\n'), args...)
+      // print(stream, dynamic_format(string(fmt.get()) + '\n'), args...)
       // here, but we can avoid that string concatenation in most cases,
       // and we know what that would call, so we can call that directly.
 
diff --git a/libstdc++-v3/testsuite/std/format/runtime_format.cc b/libstdc++-v3/testsuite/std/format/dynamic_format.cc
similarity index 51%
rename from libstdc++-v3/testsuite/std/format/runtime_format.cc
rename to libstdc++-v3/testsuite/std/format/dynamic_format.cc
index f2bfa5b434d2..fde2555ccb2f 100644
--- a/libstdc++-v3/testsuite/std/format/runtime_format.cc
+++ b/libstdc++-v3/testsuite/std/format/dynamic_format.cc
@@ -7,7 +7,7 @@ void
 test_char()
 {
   std::string fmt = "{}";
-  auto s = std::format(std::runtime_format(fmt), 123);
+  auto s = std::format(std::dynamic_format(fmt), 123);
   VERIFY( s == "123" );
 }
 
@@ -15,30 +15,30 @@ void
 test_wchar()
 {
   std::wstring fmt = L"{:#o}";
-  auto s = std::format(std::runtime_format(fmt), 456);
+  auto s = std::format(std::dynamic_format(fmt), 456);
   VERIFY( s == L"0710" );
 }
 
 void
 test_internal_api()
 {
-  // Using _Runtime_format_string directly works even in C++20 mode.
+  // Using _Dynamic_format_string directly works even in C++20 mode.
   // This can be used internally by libstdc++.
   std::string fmt = "{:#x}";
-  auto s = std::format(std::__format::_Runtime_format_string<char>(fmt), 789);
+  auto s = std::format(std::__format::_Dynamic_format_string<char>(fmt), 789);
   VERIFY( s == "0x315" );
 }
 
-static_assert( noexcept(std::format_string<>(std::runtime_format(""))) );
-static_assert( noexcept(std::wformat_string<>(std::runtime_format(L""))) );
-static_assert( noexcept(std::format_string<int>(std::runtime_format(""))) );
-static_assert( noexcept(std::wformat_string<char>(std::runtime_format(L""))) );
-// A format string can be constructed from the result of std::runtime_format
+static_assert( noexcept(std::format_string<>(std::dynamic_format(""))) );
+static_assert( noexcept(std::wformat_string<>(std::dynamic_format(L""))) );
+static_assert( noexcept(std::format_string<int>(std::dynamic_format(""))) );
+static_assert( noexcept(std::wformat_string<char>(std::dynamic_format(L""))) );
+// A format string can be constructed from the result of std::dynamic_format
 // using copy elision, but cannot be constructed from an xvalue.
 static_assert( !std::is_constructible_v<std::format_string<>,
-					decltype(std::runtime_format(""))&&> );
+					decltype(std::dynamic_format(""))&&> );
 static_assert( !std::is_constructible_v<std::wformat_string<>,
-					decltype(std::runtime_format(L""))&&> );
+					decltype(std::dynamic_format(L""))&&> );
 
 int main()
 {

From ppalka@gcc.gnu.org  Wed Apr  1 15:35:09 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Wed,  1 Apr 2026 15:35:09 +0000 (GMT)
Subject: [gcc r16-8389] libstdc++: Implement P3725R3 Filter View Extensions
 for Safer Use
Message-ID: <20260401153509.98BBA4BA2E2F@sourceware.org>

https://gcc.gnu.org/g:d60b69a2eb798001a589c6de0f5fb9d25a5d0d9e

commit r16-8389-gd60b69a2eb798001a589c6de0f5fb9d25a5d0d9e
Author: Patrick Palka <ppalka@redhat.com>
Date:   Wed Apr 1 11:34:24 2026 -0400

    libstdc++: Implement P3725R3 Filter View Extensions for Safer Use
    
    This implements the recently approved C++26 paper P3725R3, which
    we treat as a Defect Report against C++20.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |   9 ++
 libstdc++-v3/include/bits/version.h                |  10 ++
 libstdc++-v3/include/std/ranges                    | 107 +++++++++++++++------
 .../testsuite/std/ranges/adaptors/filter.cc        |  38 +++++++-
 4 files changed, 131 insertions(+), 33 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 434d38c8fbdf..b7d4b3849acb 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2181,6 +2181,15 @@ ftms = {
   };
 };
 
+ftms = {
+  name = ranges_filter;
+  values = {
+    // This is P3725R3, a C++26 change, but we treat it as a DR against C++20.
+    v = 202603;
+    cxxmin = 20;
+  };
+};
+
 ftms = {
   name = ranges_to_input;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index bb2475087f1f..c2219bedb5f8 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2446,6 +2446,16 @@
 #endif /* !defined(__cpp_lib_text_encoding) */
 #undef __glibcxx_want_text_encoding
 
+#if !defined(__cpp_lib_ranges_filter)
+# if (__cplusplus >= 202002L)
+#  define __glibcxx_ranges_filter 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_filter)
+#   define __cpp_lib_ranges_filter 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_ranges_filter) */
+#undef __glibcxx_want_ranges_filter
+
 #if !defined(__cpp_lib_ranges_to_input)
 # if (__cplusplus >  202302L)
 #  define __glibcxx_ranges_to_input 202502L
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 95e0109a10cf..249cc466db4f 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -65,6 +65,7 @@
 #define __glibcxx_want_ranges_chunk
 #define __glibcxx_want_ranges_chunk_by
 #define __glibcxx_want_ranges_enumerate
+#define __glibcxx_want_ranges_filter
 #define __glibcxx_want_ranges_indices
 #define __glibcxx_want_ranges_join_with
 #define __glibcxx_want_ranges_repeat
@@ -1738,15 +1739,19 @@ namespace views::__adaptor
     class filter_view : public view_interface<filter_view<_Vp, _Pred>>
     {
     private:
+      template<bool _Const>
       struct _Sentinel;
 
+      template<bool _Const>
       struct _Iterator : __detail::__filter_view_iter_cat<_Vp>
       {
       private:
 	static constexpr auto
 	_S_iter_concept()
 	{
-	  if constexpr (bidirectional_range<_Vp>)
+	  if constexpr (_Const)
+	    return input_iterator_tag{};
+	  else if constexpr (bidirectional_range<_Vp>)
 	    return bidirectional_iterator_tag{};
 	  else if constexpr (forward_range<_Vp>)
 	    return forward_iterator_tag{};
@@ -1755,42 +1760,52 @@ namespace views::__adaptor
 	}
 
 	friend filter_view;
+	friend _Iterator<!_Const>;
 
-	using _Vp_iter = iterator_t<_Vp>;
+	using _Parent = __maybe_const_t<_Const, filter_view>;
+	using _Base = __maybe_const_t<_Const, _Vp>;
+	using _Base_iter = iterator_t<_Base>;
 
-	_Vp_iter _M_current = _Vp_iter();
-	filter_view* _M_parent = nullptr;
+	_Base_iter _M_current = _Base_iter();
+	_Parent* _M_parent = nullptr;
 
       public:
 	using iterator_concept = decltype(_S_iter_concept());
 	// iterator_category defined in __filter_view_iter_cat
-	using value_type = range_value_t<_Vp>;
-	using difference_type = range_difference_t<_Vp>;
+	using value_type = range_value_t<_Base>;
+	using difference_type = range_difference_t<_Base>;
 
-	_Iterator() requires default_initializable<_Vp_iter> = default;
+	_Iterator() requires default_initializable<_Base_iter> = default;
 
 	constexpr
-	_Iterator(filter_view* __parent, _Vp_iter __current)
+	_Iterator(_Parent* __parent, _Base_iter __current)
 	  : _M_current(std::move(__current)),
 	    _M_parent(__parent)
 	{ }
 
-	constexpr const _Vp_iter&
+	constexpr
+	_Iterator(_Iterator<!_Const> __i)
+	  requires _Const && convertible_to<iterator_t<_Vp>, iterator_t<_Base>>
+	  : _M_current(std::move(__i._M_current)),
+	    _M_parent(std::move(__i._M_parent))
+	{ }
+
+	constexpr const _Base_iter&
 	base() const & noexcept
 	{ return _M_current; }
 
-	constexpr _Vp_iter
+	constexpr _Base_iter
 	base() &&
 	{ return std::move(_M_current); }
 
-	constexpr range_reference_t<_Vp>
+	constexpr range_reference_t<_Base>
 	operator*() const
 	{ return *_M_current; }
 
-	constexpr _Vp_iter
+	constexpr _Base_iter
 	operator->() const
-	  requires __detail::__has_arrow<_Vp_iter>
-	    && copyable<_Vp_iter>
+	  requires __detail::__has_arrow<_Base_iter>
+	    && copyable<_Base_iter>
 	{ return _M_current; }
 
 	constexpr _Iterator&
@@ -1807,7 +1822,7 @@ namespace views::__adaptor
 	{ ++*this; }
 
 	constexpr _Iterator
-	operator++(int) requires forward_range<_Vp>
+	operator++(int) requires forward_range<_Base>
 	{
 	  auto __tmp = *this;
 	  ++*this;
@@ -1815,7 +1830,7 @@ namespace views::__adaptor
 	}
 
 	constexpr _Iterator&
-	operator--() requires bidirectional_range<_Vp>
+	operator--() requires bidirectional_range<_Base>
 	{
 	  do
 	    --_M_current;
@@ -1824,7 +1839,7 @@ namespace views::__adaptor
 	}
 
 	constexpr _Iterator
-	operator--(int) requires bidirectional_range<_Vp>
+	operator--(int) requires bidirectional_range<_Base>
 	{
 	  auto __tmp = *this;
 	  --*this;
@@ -1833,10 +1848,10 @@ namespace views::__adaptor
 
 	friend constexpr bool
 	operator==(const _Iterator& __x, const _Iterator& __y)
-	  requires equality_comparable<_Vp_iter>
+	  requires equality_comparable<_Base_iter>
 	{ return __x._M_current == __y._M_current; }
 
-	friend constexpr range_rvalue_reference_t<_Vp>
+	friend constexpr range_rvalue_reference_t<_Base>
 	iter_move(const _Iterator& __i)
 	  noexcept(noexcept(ranges::iter_move(__i._M_current)))
 	{ return ranges::iter_move(__i._M_current); }
@@ -1844,34 +1859,44 @@ namespace views::__adaptor
 	friend constexpr void
 	iter_swap(const _Iterator& __x, const _Iterator& __y)
 	  noexcept(noexcept(ranges::iter_swap(__x._M_current, __y._M_current)))
-	  requires indirectly_swappable<_Vp_iter>
+	  requires indirectly_swappable<_Base_iter>
 	{ ranges::iter_swap(__x._M_current, __y._M_current); }
       };
 
+      template<bool _Const>
       struct _Sentinel
       {
       private:
-	sentinel_t<_Vp> _M_end = sentinel_t<_Vp>();
+	using _Parent = __maybe_const_t<_Const, filter_view>;
+	using _Base = __maybe_const_t<_Const, _Vp>;
+	sentinel_t<_Base> _M_end = sentinel_t<_Base>();
 
-	constexpr bool
-	__equal(const _Iterator& __i) const
-	{ return __i._M_current == _M_end; }
+	friend _Sentinel<!_Const>;
 
       public:
 	_Sentinel() = default;
 
 	constexpr explicit
-	_Sentinel(filter_view* __parent)
+	_Sentinel(_Parent* __parent)
 	  : _M_end(ranges::end(__parent->_M_base))
 	{ }
 
-	constexpr sentinel_t<_Vp>
+	constexpr
+	_Sentinel(_Sentinel<!_Const> __i)
+	  requires _Const && convertible_to<sentinel_t<_Vp>, sentinel_t<_Base>>
+	  : _M_end(std::move(__i._M_end))
+	{ }
+
+	constexpr sentinel_t<_Base>
 	base() const
 	{ return _M_end; }
 
-	friend constexpr bool
-	operator==(const _Iterator& __x, const _Sentinel& __y)
-	{ return __y.__equal(__x); }
+	template<bool _Const2>
+	  requires sentinel_for<sentinel_t<_Base>,
+		     iterator_t<__maybe_const_t<_Const2, _Vp>>>
+	  friend constexpr bool
+	  operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)
+	  { return __x._M_current == __y._M_end; }
       };
 
       _Vp _M_base = _Vp();
@@ -1900,7 +1925,7 @@ namespace views::__adaptor
       pred() const
       { return *_M_pred; }
 
-      constexpr _Iterator
+      constexpr _Iterator<false>
       begin()
       {
 	if (_M_cached_begin._M_has_value())
@@ -1914,14 +1939,32 @@ namespace views::__adaptor
 	return {this, std::move(__it)};
       }
 
+      constexpr _Iterator<true>
+      begin() const
+	requires (input_range<const _Vp> && !forward_range<const _Vp>
+		  && indirect_unary_predicate<const _Pred, iterator_t<const _Vp>>)
+      {
+	__glibcxx_assert(_M_pred.has_value());
+	auto __it = ranges::find_if(ranges::begin(_M_base),
+				    ranges::end(_M_base),
+				    std::ref(*_M_pred));
+	return {this, std::move(__it)};
+      }
+
       constexpr auto
       end()
       {
 	if constexpr (common_range<_Vp>)
-	  return _Iterator{this, ranges::end(_M_base)};
+	  return _Iterator<false>{this, ranges::end(_M_base)};
 	else
-	  return _Sentinel{this};
+	  return _Sentinel<false>{this};
       }
+
+      constexpr _Sentinel<true>
+      end() const
+	requires (input_range<const _Vp> && !forward_range<const _Vp>
+		  && indirect_unary_predicate<const _Pred, iterator_t<const _Vp>>)
+      { return _Sentinel<true>{this}; }
     };
 
   template<typename _Range, typename _Pred>
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
index 7595e43d4e60..5b1e1ad05bc2 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
@@ -17,12 +17,18 @@
 
 // { dg-do run { target c++20 } }
 
-#include <algorithm>
 #include <ranges>
+
+#if __cpp_lib_ranges_filter != 202603L
+# error "Feature-test macro for ranges_filter has wrong value in <ranges>."
+#endif
+
+#include <algorithm>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
 
 using __gnu_test::test_range;
+using __gnu_test::input_iterator_wrapper;
 using __gnu_test::bidirectional_iterator_wrapper;
 using __gnu_test::forward_iterator_wrapper;
 using __gnu_test::random_access_iterator_wrapper;
@@ -166,6 +172,35 @@ test07()
 
 static_assert( test07() );
 
+void
+test08()
+{
+  // P3725R3 Filter View Extensions for Safer Use
+  int x[] = {1,2,3,4,5,6};
+  __gnu_test::test_range<int, input_iterator_wrapper> rx(x);
+  auto v = rx | views::filter([](int i) { return (i % 2) == 0; });
+  using R = decltype(v);
+  static_assert( ranges::input_range<R> && !ranges::forward_range<R> );
+  static_assert( ranges::input_range<const R> && !ranges::forward_range<const R> );
+  const auto& cv = v;
+  auto it = v.begin();
+  decltype(cv.begin()) cit = it;
+  auto sent = v.end();
+  decltype(cv.end()) csent = sent;
+  VERIFY( cit == cit && it == cit && cit == it );
+  VERIFY( cit != csent && it != csent && cit != sent );
+  VERIFY( ranges::equal(cv, (int[]){2,4,6}) );
+
+  [](auto&& rx) {
+    // filter_view of forward+ range is still not const-iterable.
+    static_assert( ranges::forward_range<decltype(rx)> );
+    auto v = rx | views::filter([](int) { return true; });
+    using R = decltype(v);
+    static_assert( ranges::forward_range<R> );
+    static_assert( ! ranges::range<const R> );
+  }(__gnu_test::test_range<int, forward_iterator_wrapper>(x));
+}
+
 int
 main()
 {
@@ -177,4 +212,5 @@ main()
   test05<random_access_iterator_wrapper>();
   test06();
   test07();
+  test08();
 }

From ppalka@gcc.gnu.org  Wed Apr  1 15:35:14 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Wed,  1 Apr 2026 15:35:14 +0000 (GMT)
Subject: [gcc r16-8390] libstdc++/ranges: Inline hidden friends' member
 function helpers
Message-ID: <20260401153514.BF9E54BA23E9@sourceware.org>

https://gcc.gnu.org/g:6497b8530c917e2877eb7853f03c7ca64c99c5cb

commit r16-8390-g6497b8530c917e2877eb7853f03c7ca64c99c5cb
Author: Patrick Palka <ppalka@redhat.com>
Date:   Wed Apr 1 11:34:27 2026 -0400

    libstdc++/ranges: Inline hidden friends' member function helpers
    
    These helpers were needed to work around GCC's historically strict
    interpretation of friendship for hidden friends whereby they did not
    inherit the friends of the containing class.  But this has been relaxed
    in r13-465 which granted hidden friends the same access as any other
    member declaration, and <ranges> additions since then rely on this
    relaxed interpretation.  (Note that Clang also has this relaxed
    interpretation, but MSVC / EDG seem to have the strict interpretation.)
    
    This patch removes these now redundant member functions and inlines
    their logic directly into the respective friend operators, making
    things simpler and more consistent.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges | 74 +++++++++--------------------------------
 1 file changed, 16 insertions(+), 58 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 249cc466db4f..eebb978221f1 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -752,14 +752,6 @@ namespace ranges
       struct _Sentinel
       {
       private:
-	constexpr bool
-	_M_equal(const _Iterator& __x) const
-	{ return __x._M_value == _M_bound; }
-
-	constexpr auto
-	_M_distance_from(const _Iterator& __x) const
-	{ return _M_bound - __x._M_value; }
-
 	_Bound _M_bound = _Bound();
 
       public:
@@ -771,17 +763,17 @@ namespace ranges
 
 	friend constexpr bool
 	operator==(const _Iterator& __x, const _Sentinel& __y)
-	{ return __y._M_equal(__x); }
+	{ return __x._M_value == __y._M_bound; }
 
 	friend constexpr iter_difference_t<_Winc>
 	operator-(const _Iterator& __x, const _Sentinel& __y)
 	  requires sized_sentinel_for<_Bound, _Winc>
-	{ return -__y._M_distance_from(__x); }
+	{ return -(__y._M_bound - __x._M_value); }
 
 	friend constexpr iter_difference_t<_Winc>
 	operator-(const _Sentinel& __x, const _Iterator& __y)
 	  requires sized_sentinel_for<_Bound, _Winc>
-	{ return __x._M_distance_from(__y); }
+	{ return __x._M_bound - __y._M_value; }
 
 	friend iota_view;
       };
@@ -1006,14 +998,10 @@ namespace views
 
 	friend bool
 	operator==(const _Iterator& __x, default_sentinel_t)
-	{ return __x._M_at_end(); }
+	{ return !*__x._M_parent->_M_stream; }
 
       private:
 	basic_istream_view* _M_parent;
-
-	bool
-	_M_at_end() const
-	{ return !*_M_parent->_M_stream; }
       };
 
       friend _Iterator;
@@ -2246,16 +2234,6 @@ namespace views::__adaptor
 	  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;
 	  using _Base = transform_view::_Base<_Const>;
 
-	  template<bool _Const2>
-	    constexpr auto
-	    __distance_from(const _Iterator<_Const2>& __i) const
-	    { return _M_end - __i._M_current; }
-
-	  template<bool _Const2>
-	    constexpr bool
-	    __equal(const _Iterator<_Const2>& __i) const
-	    { return __i._M_current == _M_end; }
-
 	  sentinel_t<_Base> _M_end = sentinel_t<_Base>();
 
 	public:
@@ -2282,21 +2260,21 @@ namespace views::__adaptor
 		       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>
 	    friend constexpr bool
 	    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)
-	    { return __y.__equal(__x); }
+	    { return __x._M_current == __y._M_end; }
 
 	  template<bool _Const2,
 		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
 	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
 	    friend constexpr range_difference_t<_Base2>
 	    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)
-	    { return -__y.__distance_from(__x); }
+	    { return -(__y._M_end - __x._M_current); }
 
 	  template<bool _Const2,
 		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
 	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
 	    friend constexpr range_difference_t<_Base2>
 	    operator-(const _Sentinel& __y, const _Iterator<_Const2>& __x)
-	    { return __y.__distance_from(__x); }
+	    { return __y._M_end - __x._M_current; }
 
 	  friend _Sentinel<!_Const>;
 	};
@@ -3300,11 +3278,6 @@ namespace views::__adaptor
 	  using _Parent = __detail::__maybe_const_t<_Const, join_view>;
 	  using _Base = join_view::_Base<_Const>;
 
-	  template<bool _Const2>
-	    constexpr bool
-	    __equal(const _Iterator<_Const2>& __i) const
-	    { return __i._M_get_outer() == _M_end; }
-
 	  sentinel_t<_Base> _M_end = sentinel_t<_Base>();
 
 	public:
@@ -3326,7 +3299,7 @@ namespace views::__adaptor
 		       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>
 	    friend constexpr bool
 	    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)
-	    { return __y.__equal(__x); }
+	    { return __x._M_get_outer() == __y._M_end; }
 
 	  friend _Sentinel<!_Const>;
 	};
@@ -3501,10 +3474,6 @@ namespace views::__adaptor
 	  using _Parent = __detail::__maybe_const_t<_Const, lazy_split_view>;
 	  using _Base = lazy_split_view::_Base<_Const>;
 
-	  constexpr bool
-	  __at_end() const
-	  { return __current() == ranges::end(_M_parent->_M_base) && !_M_trailing_empty; }
-
 	  // [range.lazy.split.outer] p1
 	  //  Many of the following specifications refer to the notional member
 	  //  current of outer-iterator.  current is equivalent to current_ if
@@ -3657,7 +3626,10 @@ namespace views::__adaptor
 
 	  friend constexpr bool
 	  operator==(const _OuterIter& __x, default_sentinel_t)
-	  { return __x.__at_end(); };
+	  {
+	    return __x.__current() == ranges::end(__x._M_parent->_M_base)
+	      && !__x._M_trailing_empty;
+	  }
 
 	  friend _OuterIter<!_Const>;
 	  friend _InnerIter<_Const>;
@@ -4050,10 +4022,6 @@ namespace views::__adaptor
     private:
       sentinel_t<_Vp> _M_end = sentinel_t<_Vp>();
 
-      constexpr bool
-      _M_equal(const _Iterator& __x) const
-      { return __x._M_cur == _M_end && !__x._M_trailing_empty; }
-
     public:
       _Sentinel() = default;
 
@@ -4064,7 +4032,7 @@ namespace views::__adaptor
 
       friend constexpr bool
       operator==(const _Iterator& __x, const _Sentinel& __y)
-      { return __y._M_equal(__x); }
+      { return __x._M_cur == __y._M_end && !__x._M_trailing_empty; }
     };
   };
 
@@ -4671,16 +4639,6 @@ namespace views::__adaptor
 	struct _Sentinel
 	{
 	private:
-	  template<bool _Const2>
-	    constexpr bool
-	    _M_equal(const _Iterator<_Const2>& __x) const
-	    { return __x._M_current == _M_end; }
-
-	  template<bool _Const2>
-	    constexpr auto
-	    _M_distance_from(const _Iterator<_Const2>& __i) const
-	    { return _M_end - __i._M_current; }
-
 	  using _Base = elements_view::_Base<_Const>;
 	  sentinel_t<_Base> _M_end = sentinel_t<_Base>();
 
@@ -4708,21 +4666,21 @@ namespace views::__adaptor
 		       iterator_t<__detail::__maybe_const_t<_Const2, _Vp>>>
 	    friend constexpr bool
 	    operator==(const _Iterator<_Const2>& __x, const _Sentinel& __y)
-	    { return __y._M_equal(__x); }
+	    { return __x._M_current == __y._M_end; }
 
 	  template<bool _Const2,
 		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
 	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
 	    friend constexpr range_difference_t<_Base2>
 	    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)
-	    { return -__y._M_distance_from(__x); }
+	    { return -(__y._M_end - __x._M_current); }
 
 	  template<bool _Const2,
 		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
 	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
 	    friend constexpr range_difference_t<_Base2>
 	    operator-(const _Sentinel& __x, const _Iterator<_Const2>& __y)
-	    { return __x._M_distance_from(__y); }
+	    { return __x._M_end - __y._M_current; }
 
 	  friend _Sentinel<!_Const>;
 	};

From fdumont@gcc.gnu.org  Wed Apr  1 16:59:53 2026
From: fdumont@gcc.gnu.org (Francois Dumont)
Date: Wed,  1 Apr 2026 16:59:53 +0000 (GMT)
Subject: [gcc r16-8392] libstdc++: [_GLIBCXX_DEBUG] Fix COW string valid range
 check
Message-ID: <20260401165953.3ECF04BA2E3B@sourceware.org>

https://gcc.gnu.org/g:c0b659db1adcf84c04629cd8aeda89f1d2047e2a

commit r16-8392-gc0b659db1adcf84c04629cd8aeda89f1d2047e2a
Author: Fran?ois Dumont <frs.dumont@gmail.com>
Date:   Mon Mar 30 22:18:50 2026 +0200

    libstdc++: [_GLIBCXX_DEBUG] Fix COW string valid range check
    
    In revision 698a6af5dcbae5d935bcda8a461dea8458c658dc the _GLIBCXX_DEBUG code
    for the Library Defect 438 has been removed as starting in C++11 the iterator
    type is constrained through the _RequireInputIter requirement.
    
    But the COW basic_string implementation used when _GLIBCXX_USE_CXX11_ABI=0 is
    missing the _RequireInputIter constraint on a number of methods resulting in test
    failures.
    
    For the moment move the culprit __glibcxx_requires_valid_range call in the COW
    basic_string implementation in a method where the iterator type has already been
    checked.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/cow_string.h               |  2 +-
 .../21_strings/basic_string/debug/append_neg.cc      | 19 +++++++++++++++++++
 .../21_strings/basic_string/debug/assign_neg.cc      | 19 +++++++++++++++++++
 .../21_strings/basic_string/debug/construct_neg.cc   | 17 +++++++++++++++++
 .../21_strings/basic_string/debug/insert_neg.cc      | 19 +++++++++++++++++++
 .../21_strings/basic_string/debug/replace_neg.cc     | 20 ++++++++++++++++++++
 6 files changed, 95 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/cow_string.h b/libstdc++-v3/include/bits/cow_string.h
index 6cf002243729..df71185e556d 100644
--- a/libstdc++-v3/include/bits/cow_string.h
+++ b/libstdc++-v3/include/bits/cow_string.h
@@ -2124,7 +2124,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
 				   && __i2 <= _M_iend());
-	  __glibcxx_requires_valid_range(__k1, __k2);
 	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
 	  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
 	}
@@ -3833,6 +3832,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
 			  _InputIterator __k2, __false_type)
       {
+	__glibcxx_requires_valid_range(__k1, __k2);
 	const basic_string __s(__k1, __k2);
 	const size_type __n1 = __i2 - __i1;
 	_M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/debug/append_neg.cc b/libstdc++-v3/testsuite/21_strings/basic_string/debug/append_neg.cc
new file mode 100644
index 000000000000..befe83a84f35
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/debug/append_neg.cc
@@ -0,0 +1,19 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-require-debug-mode "" }
+
+#include <vector>
+#include <string>
+
+void test01()
+{
+  std::vector<char> v1(10, 'a');
+  std::string s2;
+
+  s2.append(v1.begin() + 7, v1.begin() + 2);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/debug/assign_neg.cc b/libstdc++-v3/testsuite/21_strings/basic_string/debug/assign_neg.cc
new file mode 100644
index 000000000000..5f32c170f504
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/debug/assign_neg.cc
@@ -0,0 +1,19 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-require-debug-mode "" }
+
+#include <vector>
+#include <string>
+
+void test01()
+{
+  std::vector<char> v1(10, 'a');
+  std::string s2;
+
+  s2.assign(v1.begin() + 7, v1.begin() + 2);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/debug/construct_neg.cc b/libstdc++-v3/testsuite/21_strings/basic_string/debug/construct_neg.cc
new file mode 100644
index 000000000000..1ac933d43091
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/debug/construct_neg.cc
@@ -0,0 +1,17 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-require-debug-mode "" }
+
+#include <vector>
+#include <string>
+
+void test01()
+{
+  std::vector<char> v1(10, 'a');
+  std::string s2(v1.begin() + 7, v1.begin() + 2);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/debug/insert_neg.cc b/libstdc++-v3/testsuite/21_strings/basic_string/debug/insert_neg.cc
new file mode 100644
index 000000000000..95530ef2a510
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/debug/insert_neg.cc
@@ -0,0 +1,19 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-require-debug-mode "" }
+
+#include <vector>
+#include <string>
+
+void test01()
+{
+  std::vector<char> v1(10, 'a');
+  std::string s2;
+
+  s2.insert(s2.begin(), v1.begin() + 7, v1.begin() + 2);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/debug/replace_neg.cc b/libstdc++-v3/testsuite/21_strings/basic_string/debug/replace_neg.cc
new file mode 100644
index 000000000000..fd3df9e8539e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/debug/replace_neg.cc
@@ -0,0 +1,20 @@
+// { dg-do run { xfail *-*-* } }
+// { dg-require-debug-mode "" }
+
+#include <vector>
+#include <string>
+
+void test01()
+{
+  std::vector<char> v1(10, 'a');
+  std::string s2 = "bbbbbbbbbb";
+
+  s2.replace(s2.begin(), s2.begin() + 5,
+	     v1.begin() + 7, v1.begin() + 2);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}

From jakub@gcc.gnu.org  Wed Apr  1 17:17:13 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Wed,  1 Apr 2026 17:17:13 +0000 (GMT)
Subject: [gcc r16-8394] libstdc++: Attempt to implement LWG4537 - Improve
 define_static_array
Message-ID: <20260401171713.958234BA543C@sourceware.org>

https://gcc.gnu.org/g:f6f137f134d66ec4ec94dee046a269af9f282b87

commit r16-8394-gf6f137f134d66ec4ec94dee046a269af9f282b87
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 1 19:15:51 2026 +0200

    libstdc++: Attempt to implement LWG4537 - Improve define_static_array
    
    The following patch attempts to implement
    https://cplusplus.github.io/LWG/lwg-active.html#4537
    
    I've also added tests for the returned type.
    
    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.
    
            * g++.dg/reflect/define_static_array1.C (l): Another variable
            with define_static_array test from array<int, 0>.
            Add static assertions for types of the define_static_array results.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 .../g++.dg/reflect/define_static_array1.C          | 15 ++++++++++
 libstdc++-v3/include/std/meta                      | 33 ++++++++++++++++++----
 2 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/gcc/testsuite/g++.dg/reflect/define_static_array1.C b/gcc/testsuite/g++.dg/reflect/define_static_array1.C
index 61a6a53c9082..d9256091231b 100644
--- a/gcc/testsuite/g++.dg/reflect/define_static_array1.C
+++ b/gcc/testsuite/g++.dg/reflect/define_static_array1.C
@@ -22,6 +22,7 @@ constexpr auto h = std::define_static_array (fa.subspan (1, 4) | std::views::rev
 constexpr auto i = std::define_static_array (std::vector <V> { V { 1, 2, 3 }, V { 2, 3, 4 }, V { 3, 4, 5 } });
 constexpr auto j = std::define_static_array (std::vector <long long> {});
 constexpr auto k = std::define_static_array (std::meta::nonstatic_data_members_of (^^V, std::meta::access_context::current ()));
+constexpr auto l = std::define_static_array (std::array <int, 0> {});
 static_assert (a.data () == std::define_static_string ("abcd") && a.size () == 5);
 static_assert (b.data () == std::define_static_string (U"abcd\0ef\N{LATIN CAPITAL LETTER AE}")
 	       && b.size () == sizeof (U"abcd\0ef\N{LATIN CAPITAL LETTER AE}") / sizeof (char32_t));
@@ -40,6 +41,20 @@ static_assert (h.data () == std::define_static_array (std::vector <int> { 5, 4,
 static_assert (i.size () == 3);
 static_assert (j.data () == nullptr && j.size () == 0);
 static_assert (k.size () == 3 && k[0] == ^^V::a && k[1] == ^^V::b && k[2] == ^^V::c);
+static_assert (l.data () == nullptr && l.size () == 0);
+// LWG4537 - Improve define_static_array
+static_assert (type_of (^^a) == ^^const std::span <const char, 5>);
+static_assert (type_of (^^b) == ^^const std::span <const char32_t, sizeof (U"abcd\0ef\N{LATIN CAPITAL LETTER AE}") / sizeof (char32_t)>);
+static_assert (type_of (^^c) == ^^const std::span <const char, std::dynamic_extent>);
+static_assert (type_of (^^d) == ^^const std::span <const int, 4>);
+static_assert (type_of (^^e) == ^^const std::span <const float, 6>);
+static_assert (type_of (^^f) == ^^const std::span <const int, std::dynamic_extent>);
+static_assert (type_of (^^g) == ^^const std::span <const int, std::dynamic_extent>);
+static_assert (type_of (^^h) == ^^const std::span <const int, std::dynamic_extent>);
+static_assert (type_of (^^i) == ^^const std::span <const V, std::dynamic_extent>);
+static_assert (type_of (^^j) == ^^const std::span <const long long, std::dynamic_extent>);
+static_assert (type_of (^^k) == ^^const std::span <const std::meta::info, std::dynamic_extent>);
+static_assert (type_of (^^l) == ^^const std::span <const int, 0>);
 
 int
 main ()
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index 20cfba10b9f9..5b2dc58bdfe8 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -638,18 +638,41 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return meta::extract<const ranges::range_value_t<_Rg>*>(__str);
     }
 
+  namespace __detail
+  {
+    template<typename _Rg>
+    concept __statically_sized
+      = requires(_Rg&& __r) {
+	static_cast<char(*)[static_cast<size_t>(ranges::size(__r))
+			    >= 0]>(nullptr);
+      };
+  } // namespace __detail
+
   template<ranges::input_range _Rg>
-    consteval span<const ranges::range_value_t<_Rg>>
+    consteval auto
     define_static_array(_Rg&& __r)
     {
       using _Tp = ranges::range_value_t<_Rg>;
       auto __array = meta::reflect_constant_array(__r);
       auto __type = meta::type_of(__array);
-      if (meta::is_array_type(__type))
-	return span<const _Tp>(meta::extract<const _Tp*>(__array),
-			       meta::extent(__type, 0U));
+      if constexpr (__detail::__statically_sized<_Rg>)
+	{
+	  constexpr size_t __extent = static_cast<size_t>(ranges::size(__r));
+	  if constexpr (__extent)
+	    return span<const _Tp,
+			__extent>(meta::extract<const _Tp*>(__array),
+				  meta::extent(__type, 0U));
+	  else
+	    return span<const _Tp, 0>();
+	}
       else
-	return span<const _Tp>();
+	{
+	  if (meta::is_array_type(__type))
+	    return span<const _Tp>(meta::extract<const _Tp*>(__array),
+				   meta::extent(__type, 0U));
+	  else
+	    return span<const _Tp>();
+	}
     }
 
   template<class _Tp>

From gccadmin@gcc.gnu.org  Thu Apr  2 00:16:59 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu,  2 Apr 2026 00:16:59 +0000 (GMT)
Subject: [gcc r16-8403] Daily bump.
Message-ID: <20260402001659.6649F4BA2E11@sourceware.org>

https://gcc.gnu.org/g:8e28b55c334423961c46aabaf0f36c8be7fae689

commit r16-8403-g8e28b55c334423961c46aabaf0f36c8be7fae689
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 2 00:16:31 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   8 ++++
 gcc/ChangeLog           |  73 ++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/c/ChangeLog         |   6 +++
 gcc/cp/ChangeLog        |  14 ++++++
 gcc/d/ChangeLog         |  17 ++++++++
 gcc/fortran/ChangeLog   |  20 +++++++++
 gcc/testsuite/ChangeLog |  85 +++++++++++++++++++++++++++++++++++++
 libphobos/ChangeLog     |  12 ++++++
 libstdc++-v3/ChangeLog  | 110 ++++++++++++++++++++++++++++++++++++++++++++++++
 10 files changed, 346 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 131f0064fa01..4069580a5294 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-01  David Faust  <david.faust@oracle.com>
+
+	* MAINTAINERS: Add my bugzilla account.
+
+2026-04-01  David Faust  <david.faust@oracle.com>
+
+	* MAINTAINERS: Update Qing Zhao email address.
+
 2026-03-17  Prachi Godbole  <pgodbole@nvidia.com>
 
 	* MAINTAINERS: Add myself to write after approval and DCO.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8365fbc4857f..0a8a74764e31 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,76 @@
+2026-04-01  Tamar Christina  <tamar.christina@arm.com>
+	    Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/123238
+	* config/aarch64/aarch64.cc (aarch64_rtx_costs) <case NE/EQ>:
+	Provide improved costs for scalar and vector comparisons.
+
+2026-04-01  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/123238
+	* expr.cc (convert_tree_comp_to_rtx): Make global.
+	* expr.h (convert_tree_comp_to_rtx): Prototype here.
+	* internal-fn.cc (expand_vec_cond_mask_optab_fn): Use rtx_costs
+	to determine whether swapping operands would result in better
+	code.
+	* config/i386/i386-expand.cc (ix86_expand_int_vec_cmp): On
+	AVX512 targets use a ternlog instead of a comparison to negate
+	the mask (requires one instruction instead of two).
+	* config/i386/i386.cc (ix86_rtx_costs): Refactor code for UNSPEC.
+	Provide costs for UNSPEC_BLENDV and  UNSPEC_MOVMSK.  Provide
+	costs for comparison operators of integer vector modes.
+
+2026-04-01  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	PR rtl-optimization/124696
+	* lra-constraints.cc (simplify_operand_subreg): Reload
+	paradoxical subreg only if it requires more than one hard reg.
+
+2026-04-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+
+	* config/s390/s390.cc (print_operand): Use fputs instead of
+	fprintf.
+
+2026-04-01  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR preprocessor/70917
+	* doc/invoke.texi (Environment Variables): Clarify that LC_ALL,
+	LC_CTYPE, LC_MESSAGES, and LANG affect only diagnostics and
+	informational output from GCC, not the encodings of input and
+	output files.	Remove separate bit-rotten entry for LANG.
+
+2026-04-01  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124742
+	* tree-ssa-forwprop.cc (optimize_aggr_zeroprop): Exit
+	if the vdef on the stmt is NULL.
+
+2026-04-01  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR middle-end/124697
+	* function.cc (assign_parm_adjust_stack_rtl): Force a local copy
+	if the current alignment is less than the minimum of
+	BIGGEST_ALIGNMENT and MAX_SUPPORTED_STACK_ALIGNMENT.
+
+2026-04-01  Richard Biener  <rguenther@suse.de>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR middle-end/124634
+	* doc/ifn.texi: New file.
+	* doc/gccint.texi: Include ifn.texi.
+	* Makefile.in (TEXI_GCCINT_FILES): Add ifn.texi.
+
+2026-04-01  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR c/61896
+	* doc/cppopts.texi (-finput-charset=): Remove long-obsolete
+	locale discussion.  Document behavior about ill-formed inputs.
+
+2026-04-01  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* doc/poly-int.texi: Add copyright notice.
+	* doc/specs.texi: Likewise.
+
 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* tree-ssa-dse.cc (compute_trims): Bail out if ref->size is not
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index c077e78eada8..b2c8b6a74c2a 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260401
+20260402
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index d4bb05d9ce41..6ebd4f0644d2 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124635
+	* c-typeck.cc (c_reconstruct_complex_type): Copy
+	TYPE_REVERSE_STORAGE_ORDER.
+
 2026-03-24  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/123424
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 88ab81d98d40..ff1ecf67a111 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* name-lookup.cc (push_local_extern_decl_alias): Diagnose annotations
+	on local externs and their arguments.
+	* decl.cc (grokdeclarator): Diagnose annotations on non-defining
+	friends and their arguments.
+
+2026-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* mangle.cc (write_reflection): Change ^^:: mangling in grammar
+	from LDmngE to LDmgsE.
+	* reflect.cc (reflection_mangle_prefix): Set prefix to "gs" rather
+	than "ng" for global_namespace.
+
 2026-03-31  Jakub Jelinek  <jakub@redhat.com>
 
 	* reflect.cc (reflect_current_scope): Use decl_namespace_list->last ()
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 25847868c87e..69c961be0a6a 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,20 @@
+2026-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* dmd/MERGE: Merge upstream dmd 55e64690bc.
+	* dmd/VERSION: Bump version to v2.113.0-beta.1.
+	* d-codegen.cc (d_build_call): Check if argument is already a
+	TARGET_EXPR.
+	* decl.cc (DeclVisitor::visit (FuncDeclaration *)): Don't use
+	`__result' decl as named return value if it's a ref type.
+	* expr.cc (ExprVisitor::visit (StructLiteralExp *)): Force TARGET_EXPR
+	if init symbol needs to be mutable.
+	* runtime.def (ARRAYSETLENGTHT): Remove.
+	(ARRAYSETLENGTHIT): Remove.
+	(ARRAYCOPY): Remove.
+	(ARRAYAPPENDCTX): Remove.
+	* typeinfo.cc (TypeInfoVisitor::visit (TypeInfoClassDeclaration *)):
+	Only scan class fields for pointer members.
+
 2026-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* dmd/MERGE: Merge upstream dmd e7c34c13de.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9d65da3f5895..8276e5ad3a50 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,23 @@
+2026-04-01  Gonzalosilvalde  <gonzalo.silvalde@gmail.com>
+
+	PR fortran/79330
+	* decl.cc (gfc_match_subroutine): Set has_import_set when
+	matching a module procedure inside an interface block.
+	(gfc_match_function_decl): Likewise.
+
+2026-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/124739
+	* io.cc (match_inquire_element): Change tag_id from a
+	variable tag to an expression tag.
+
+2026-04-01  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/100194
+	* trans-expr.cc (gfc_conv_procedure_call): Skip
+	gfc_conv_subref_array_arg for assumed-rank actual arguments
+	(e->rank == -1) when the dummy is contiguous.
+
 2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
 	    Christopher Albert  <albert@tugraz.at>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9f6f7f7c8d16..80df77e6945c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,88 @@
+2026-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/124739
+	* gfortran.dg/pr124739.f90: Change 'run' to 'compile'.
+
+2026-04-01  Tamar Christina  <tamar.christina@arm.com>
+	    Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/123238
+	* gcc.target/aarch64/pr123238.c: New test case.
+
+2026-04-01  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/123238
+	* gcc.target/i386/pr123238.c: Likewise.
+
+2026-04-01  Gonzalosilvalde  <gonzalo.silvalde@gmail.com>
+
+	PR fortran/79330
+	* gfortran.dg/bind_c_module_proc.f90: New test.
+
+2026-04-01  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	PR rtl-optimization/124696
+	* gcc.target/i386/pr124696.c: New.
+
+2026-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/annotations17.C: New test.
+
+2026-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/mangle1.C: Expect _Z3barILi310ELDmgsEEvv
+	rather than _Z3barILi310ELDmngEEvv.
+
+2026-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/define_static_array1.C (l): Another variable
+	with define_static_array test from array<int, 0>.
+	Add static assertions for types of the define_static_array results.
+
+2026-04-01  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124742
+	* gcc.dg/torture/pr124742-1.c: New test.
+
+2026-04-01  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR middle-end/124697
+	* gcc.target/i386/pr120839-1b.c: Adjusted.
+	* gcc.target/i386/pr124697-1a.c: New test.
+	* gcc.target/i386/pr124697-1b.c: Likewise.
+	* gcc.target/i386/pr124697-2a.c: Likewise.
+	* gcc.target/i386/pr124697-2b.c: Likewise.
+	* gcc.target/i386/pr124697-3a.c: Likewise.
+	* gcc.target/i386/pr124697-3b.c: Likewise.
+
+2026-04-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124635
+	* gcc.dg/pr124635.c: New test.
+
+2026-04-01  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR target/124705
+	* gcc.dg/tree-ssa/gen-vect-26.c: Disable loop peeling check for
+	arm-none-eabi.
+	* gcc.dg/tree-ssa/gen-vect-28.c: Likewise.
+
+2026-04-01  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR testsuite/93080
+	* gcc.dg/tree-ssa/forwprop-40.c: Xfail for arm_mve.
+	* gcc.dg/tree-ssa/forwprop-41.c: Likewise.
+
+2026-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/124739
+	* gfortran.dg/pr124739.f90: New test.
+
+2026-04-01  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/100194
+	* gfortran.dg/pr100194.f90: New test.
+
 2026-03-31  Jakub Jelinek  <jakub@redhat.com>
 
 	* g++.dg/reflect/access_context1.C: Add new tests.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 3d8695639f41..fde7f1c2e0df 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* libdruntime/MERGE: Merge upstream druntime 55e64690bc.
+	* src/MERGE: Merge upstream phobos 0c519ae39.
+	* src/Makefile.am (PHOBOS_DSOURCES): Add
+	std/internal/windows/bcrypt.d.
+	* src/Makefile.in: Regenerate.
+	* testsuite/libphobos.aa/test_aa.d: Update.
+	* testsuite/libphobos.phobos/std_array.d: Regenerate.
+	* testsuite/libphobos.phobos/std_mathspecial.d: Regenerate.
+	* src/std/internal/windows/bcrypt.d: New file.
+
 2026-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* libdruntime/MERGE: Merge upstream druntime e7c34c13de.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 88ca086a3a34..422c23c6aa0a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,113 @@
+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

From tkaminsk@gcc.gnu.org  Thu Apr  2 07:09:00 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 07:09:00 +0000 (GMT)
Subject: [gcc r16-8405] libstdc++: Update export declaration for
 dynamic_format and saturation arithmetic.
Message-ID: <20260402070900.A9C694BA2E14@sourceware.org>

https://gcc.gnu.org/g:1ad0af7dbfb3a4ebcad12869752d5c8b93c1f053

commit r16-8405-g1ad0af7dbfb3a4ebcad12869752d5c8b93c1f053
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 2 08:53:32 2026 +0200

    libstdc++: Update export declaration for dynamic_format and saturation arithmetic.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/src/c++23/std.cc.in | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 1e174b85af1b..aef9b7d59cc1 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -1369,8 +1369,8 @@ export namespace std
   using std::formatter;
   using std::make_format_args;
   using std::make_wformat_args;
-#if __cpp_lib_format >= 202311L // >= C++26
-  using std::runtime_format;
+#if __cpp_lib_format >= 202603L // >= C++26
+  using std::dynamic_format;
 #endif
   using std::vformat;
   using std::vformat_to;
@@ -2449,11 +2449,11 @@ export namespace std
   }
 #endif
 #if __cpp_lib_saturation_arithmetic
-  using std::add_sat;
-  using std::sub_sat;
-  using std::mul_sat;
-  using std::div_sat;
-  using std::saturate_cast;
+  using std::saturating_add;
+  using std::saturating_sub;
+  using std::saturating_mul;
+  using std::saturating_div;
+  using std::saturatint_cast;
 #endif
 }

From tkaminsk@gcc.gnu.org  Thu Apr  2 07:13:09 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 07:13:09 +0000 (GMT)
Subject: [gcc r16-8406] libstdc++: Fix typo in export of std::saturating_cast.
Message-ID: <20260402071309.1230A4BA2E2F@sourceware.org>

https://gcc.gnu.org/g:2861d16c831f9e1a99dd4c36471b8ba074fe3497

commit r16-8406-g2861d16c831f9e1a99dd4c36471b8ba074fe3497
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 2 09:10:51 2026 +0200

    libstdc++: Fix typo in export of std::saturating_cast.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++23/std.cc.in (std::saturatint_cast): Fixed typo...
            (std::saturating_cast): ...by exporting this.

Diff:
---
 libstdc++-v3/src/c++23/std.cc.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index aef9b7d59cc1..e857463812be 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2453,7 +2453,7 @@ export namespace std
   using std::saturating_sub;
   using std::saturating_mul;
   using std::saturating_div;
-  using std::saturatint_cast;
+  using std::saturating_cast;
 #endif
 }

From redi@gcc.gnu.org  Thu Apr  2 07:25:29 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 07:25:29 +0000 (GMT)
Subject: [gcc r16-8407] libstdc++: Check right value of __cpp_lib_format for
 dynamic_string
Message-ID: <20260402072529.CD59D4BA2E0A@sourceware.org>

https://gcc.gnu.org/g:4886afeb5c35e323714d4763f20858ee94edce8c

commit r16-8407-g4886afeb5c35e323714d4763f20858ee94edce8c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:25:14 2026 +0100

    libstdc++: Check right value of __cpp_lib_format for dynamic_string
    
    This doesn't matter in practice, but strictly speaking the right value
    for defining std::dynamic_format is 202603 not 202311 (which was the
    macro value for the old name, std::runtime_format).
    
    libstdc++-v3/ChangeLog:
    
            * include/std/format (dynamic_format): Check new value for
            feature test macro.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/format | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 2bcd06822b75..eca5bd213aa0 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -195,7 +195,7 @@ namespace __format
       = basic_format_string<wchar_t, type_identity_t<_Args>...>;
 #endif
 
-#if __cpp_lib_format >= 202311L // >= C++26
+#if __cpp_lib_format >= 202603L // >= C++26
   [[__gnu__::__always_inline__]]
   inline __format::_Dynamic_format_string<char>
   dynamic_format(string_view __fmt) noexcept

From redi@gcc.gnu.org  Thu Apr  2 07:25:34 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 07:25:34 +0000 (GMT)
Subject: [gcc r16-8408] libstdc++: Add new-abi-baseline target to main Makefile
Message-ID: <20260402072534.F42004BA2E32@sourceware.org>

https://gcc.gnu.org/g:9c81094809efbcf154939b83a3787cbc543e80b5

commit r16-8408-g9c81094809efbcf154939b83a3787cbc543e80b5
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 14:55:28 2026 +0100

    libstdc++: Add new-abi-baseline target to main Makefile
    
    This allows you to run 'make new-abi-baseline' in the
    $target/libstdc++-v3 build directory instead of only in the testsuite
    subdirectory.
    
    libstdc++-v3/ChangeLog:
    
            * Makefile.am (new-abi-baseline): New target.
            * Makefile.in: Regenerate.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/Makefile.am | 3 +++
 libstdc++-v3/Makefile.in | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/libstdc++-v3/Makefile.am b/libstdc++-v3/Makefile.am
index b0da23c7e1db..0a8f4beb0399 100644
--- a/libstdc++-v3/Makefile.am
+++ b/libstdc++-v3/Makefile.am
@@ -124,6 +124,9 @@ install-ps:
 dvi:
 install-dvi:
 
+new-abi-baseline:
+	$(MAKE) -C testsuite $@
+
 # Multilib support.
 MAKEOVERRIDES=
 
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 5d2570b31cb8..915e9acbf2f3 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -830,6 +830,9 @@ install-ps:
 dvi:
 install-dvi:
 
+new-abi-baseline:
+	$(MAKE) -C testsuite $@
+
 # All the machinations with string instantiations messes up the
 # automake-generated TAGS rule. Make a simple one here.
 TAGS: tags-recursive $(LISP)

From tkaminsk@gcc.gnu.org  Thu Apr  2 07:43:43 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 07:43:43 +0000 (GMT)
Subject: [gcc r16-8411] libstdc++: Implement range_slice from P3982R2.
Message-ID: <20260402074343.B41D54BA5436@sourceware.org>

https://gcc.gnu.org/g:3edcf6a22576d076df6d86f0bfe4a453c057eea7

commit r16-8411-g3edcf6a22576d076df6d86f0bfe4a453c057eea7
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Dec 16 18:03:23 2025 +0100

    libstdc++: Implement range_slice from P3982R2.
    
    This patch add a range_slice a class, and maps it to strided_slice
    with the original meanning. This is usefull for benchmark, as effects
    of strided_slice remain stable before and after the change.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/mdspan                    | 33 +++++++++
 libstdc++-v3/src/c++23/std.cc.in                   |  1 +
 .../23_containers/mdspan/submdspan/subextents.cc   | 82 ++++++++++++++++++++++
 3 files changed, 116 insertions(+)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 2d3e82a9980d..7f02b3460546 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -374,6 +374,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       [[no_unique_address]] stride_type stride{};
     };
 
+  template<typename _FirstType, typename _LastType, typename _StrideType = constant_wrapper<1zu>>
+    struct range_slice
+    {
+      static_assert(__is_signed_or_unsigned_integer<_FirstType>::value
+	|| __detail::__integral_constant_like<_FirstType>);
+      static_assert(__is_signed_or_unsigned_integer<_LastType>::value
+	|| __detail::__integral_constant_like<_LastType>);
+      static_assert(__is_signed_or_unsigned_integer<_StrideType>::value
+	|| __detail::__integral_constant_like<_StrideType>);
+
+      [[no_unique_address]] _FirstType first{};
+      [[no_unique_address]] _LastType last{};
+      [[no_unique_address]] _StrideType stride{};
+    };
+
   template<typename _Mapping>
     struct submdspan_mapping_result
     {
@@ -870,6 +885,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       constexpr bool __is_strided_slice<strided_slice<_OffsetType,
 	  _ExtentType, _StrideType>> = true;
 
+    template<typename _Tp>
+      constexpr bool __is_range_slice = false;
+
+    template<typename _FirstType, typename _LastType, typename _StrideType>
+      constexpr bool __is_range_slice<range_slice<_FirstType,
+	  _LastType, _StrideType>> = true;
+
     template<typename _IndexType, typename _OIndexType>
       consteval bool
       __is_representable_integer(_OIndexType __value)
@@ -3301,6 +3323,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		  = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride))
 	      };
 	  }
+	else if constexpr (__is_range_slice<_SliceType>)
+	  {
+	    auto __first
+	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.first));
+	    auto __last
+	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.last));
+	    auto __stride
+	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride));
+            return __mdspan::__slice_cast<_IndexType>(
+		     strided_slice{__first, __last - __first, __stride});
+	  }
 	else
 	  {
 	    auto [__sbegin, __send] = std::move(__slice);
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index e857463812be..32e167be0c1c 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -1915,6 +1915,7 @@ export namespace std
 #endif
 #if __glibcxx_submdspan
   using std::strided_slice;
+  using std::range_slice;
   using std::full_extent_t;
   using std::full_extent;
   using std::submdspan_mapping_result;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
index ae77d3d96a89..464b253ff4d8 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
@@ -134,6 +134,86 @@ template<template<int> typename Cw>
     return true;
   }
 
+template<template<int> typename Cw>
+  constexpr bool
+  test_from_range_slice()
+  {
+    auto exts = std::extents<int, 5, 7, 11>{};
+    {
+      auto s0 = 1;
+      auto s1 = std::range_slice{0, 0, 0};
+      auto s2 = std::range_slice{Cw<1>{}, Cw<1>{}, 0};
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 2);
+      VERIFY(sub_exts.static_extent(0) == dyn);
+      VERIFY(sub_exts.extent(0) == 0);
+      VERIFY(sub_exts.static_extent(1) == 0);
+    }
+
+    {
+      auto s0 = 1;
+      auto s1 = std::range_slice{0, 2, Cw<1>{}};
+      auto s2 = std::range_slice{1, Cw<3>{}};
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 2);
+      VERIFY(sub_exts.static_extent(0) == dyn);
+      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.static_extent(1) == dyn);
+      VERIFY(sub_exts.extent(1) == 2);
+    }
+
+    {
+      auto s0 = 1;
+      auto s1 = std::range_slice{0, 2, Cw<1>{}};
+      auto s2 = std::range_slice{Cw<1>{}, Cw<3>{}, 1};
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 2);
+      VERIFY(sub_exts.static_extent(0) == dyn);
+      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.static_extent(1) == dyn);
+      VERIFY(sub_exts.extent(1) == 2);
+    }
+
+    {
+      // selected = 1 x [1, 3] x [1, 4, 7, 10]
+      auto s0 = 1;
+      auto s1 = std::range_slice{1, Cw<5>{}, 2};
+      auto s2 = std::range_slice{1, Cw<11>{}, Cw<3>{}};
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 2);
+      VERIFY(sub_exts.static_extent(0) == dyn);
+      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.static_extent(1) == dyn);
+      VERIFY(sub_exts.extent(1) == 4);
+    }
+
+    {
+      // selected = 1 x [1, 3] x [1, 4, 7, 10]
+      auto s0 = 1;
+      auto s1 = std::range_slice{1, Cw<5>{}, 2};
+      auto s2 = std::range_slice{Cw<1>{}, Cw<11>{}, Cw<3>{}};
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 2);
+      VERIFY(sub_exts.static_extent(0) == dyn);
+      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.static_extent(1) == 4);
+    }
+
+    {
+      // selected = [0, 2] x [1, 3] x [0, 3, 6]
+      auto s0 = std::range_slice(0, 3, 2);
+      auto s1 = std::range_slice(1, 5, 2);
+      auto s2 = std::range_slice(0, 7, 3);
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 3);
+      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.extent(1) == 2);
+      VERIFY(sub_exts.extent(2) == 3);
+    }
+    return true;
+  }
+
+
 template<int Value>
   using CW = std::constant_wrapper<Value, int>;
 
@@ -150,6 +230,8 @@ test_all()
   test_from_const_int<IC>();
   test_from_strided_slice<CW>();
   test_from_strided_slice<IC>();
+  test_from_range_slice<CW>();
+  test_from_range_slice<IC>();
   test_from_int_like_in_tuple<StructuralInt>();
   return true;
 }

From tkaminsk@gcc.gnu.org  Thu Apr  2 07:49:01 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 07:49:01 +0000 (GMT)
Subject: [gcc r16-8412] libstdc++: Change meaning of strided_slice::extent per
 P3982R2
Message-ID: <20260402074901.0D3E44BA9016@sourceware.org>

https://gcc.gnu.org/g:e920613db52adece7e3de5f2a2812247c72782f6

commit r16-8412-ge920613db52adece7e3de5f2a2812247c72782f6
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon Jan 26 12:20:48 2026 +0100

    libstdc++: Change meaning of strided_slice::extent per P3982R2
    
    This patch implements the changes suggested in P3982R2 (and PL007 NB comment)
    for C++26, but changing the strided_slice::extent to indicate number of
    elements (extent) in the produced (output) mdspan, instead of input.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/mdspan                    | 199 ++++++++++++++-------
 .../mdspan/submdspan/canonical_slices.cc           | 160 +++++++++++++----
 .../mdspan/submdspan/canonical_slices_neg.cc       |  33 ++++
 .../mdspan/submdspan/selections/testcases.h        |  12 +-
 .../23_containers/mdspan/submdspan/subextents.cc   |  90 ++++++----
 .../mdspan/submdspan/subextents_neg.cc             |   6 +-
 .../mdspan/submdspan/submdspan_neg.cc              |   2 +-
 7 files changed, 363 insertions(+), 139 deletions(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 7f02b3460546..5b80de2ca619 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -1001,10 +1001,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return _Extent;
 	else if constexpr (same_as<_Slice, constant_wrapper<_IndexType(0)>>)
 	  return 0;
-	else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>
-			&& __is_constant_wrapper<typename _Slice::stride_type>)
-	  return 1 + ((typename _Slice::extent_type{}) - 1)
-		   / (typename _Slice::stride_type{});
+	else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)
+	  return _Slice::extent_type::value;
 	else
 	  return dynamic_extent;
       }
@@ -1014,7 +1012,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __dynamic_slice_extent(const _Extents& __exts, _Slice __slice)
       {
 	if constexpr (__is_strided_slice<_Slice>)
-	  return __slice.extent == 0 ? 0 : 1 + (__slice.extent - 1) / __slice.stride;
+	  return __slice.extent;
 	else
 	  return __exts.extent(_K);
       }
@@ -1128,7 +1126,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    auto __stride = [&__mapping](size_t __k, auto __slice) -> _IndexType
 	    {
 	      if constexpr (__is_strided_slice<decltype(__slice)>)
-		if (__slice.stride < __slice.extent)
+		if (__slice.extent > 1)
 		  return __mapping.stride(__k) * __slice.stride;
 	      return __mapping.stride(__k);
 	    };
@@ -1173,7 +1171,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		size_t __krev = _SubTrait::_S_idx(__k);
 		if constexpr (__is_strided_slice<decltype(__slice)>)
 		  {
-		    if (__slice.stride < __slice.extent)
+		    if (__slice.extent > 1)
 		      __ret[__krev] = __stride * __slice.stride;
 		    else
 		      __ret[__krev] = __stride;
@@ -3293,6 +3291,52 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return __mdspan::__index_type_cast<_IndexType>(std::move(__slice));
       }
 
+    template<typename _IndexType, 
+	    typename _OffsetType, typename _SpanType, typename _StrideType>
+    constexpr auto
+    __canonical_range_slice(_OffsetType __offset, _SpanType __span,
+			    _StrideType __stride)
+    {
+      if constexpr (is_same_v<_SpanType, constant_wrapper<_IndexType(0)>>
+		    || is_same_v<_StrideType, constant_wrapper<_IndexType(1)>>)
+	return strided_slice{
+	  .offset = __offset,
+	  .extent = __span,
+	  .stride = cw<_IndexType(1)>
+	};
+      else if constexpr (__is_constant_wrapper<_StrideType>)
+        {
+	  static_assert(_StrideType::value > 0);
+	  if constexpr (__is_constant_wrapper<_SpanType>)
+	    return strided_slice{
+	      .offset = __offset,
+	      .extent = cw<_IndexType(1 + (_SpanType::value - 1) / _StrideType::value)>,
+	      .stride = __stride
+	    };
+	  else
+	    return strided_slice{
+	      .offset = __offset,
+	      .extent = _IndexType(__span > 0 ? 1 + (__span - 1) / _StrideType::value : 0),
+	      .stride = __stride
+	    };
+        }
+      else if (__span == 0 || __stride == 1)
+	return strided_slice{
+	  .offset = __offset,
+	  .extent = _IndexType(__span),
+	  .stride = _IndexType(1)
+	};
+      else
+        {
+	  __glibcxx_assert(__stride > 0);
+	  return strided_slice{
+	    .offset = __offset,
+	    .extent = _IndexType(1 + (__span - 1) / __stride),
+	    .stride = __stride
+	  };
+	}
+    }
+
     template<typename _IndexType, typename _Slice>
       constexpr auto
       __slice_cast(_Slice&& __slice)
@@ -3303,52 +3347,51 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	else if constexpr (is_convertible_v<_SliceType, _IndexType>)
 	  return __mdspan::__canonical_index<_IndexType>(std::move(__slice));
 	else if constexpr (__is_strided_slice<_SliceType>)
-	  {
-	    auto __extent
-	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.extent));
-	    auto __offset
-	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.offset));
-	    if constexpr (is_same_v<decltype(__extent),
-				    constant_wrapper<_IndexType(0)>>)
-	      return strided_slice{
-		.offset = __offset,
-		.extent = __extent,
-		.stride = cw<_IndexType(1)>
-	      };
-	    else
-	      return strided_slice{
-		.offset = __offset,
-		.extent = __extent,
-		.stride
-		  = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride))
-	      };
-	  }
+	  return strided_slice{
+	    .offset = __mdspan::__canonical_index<_IndexType>(std::move(__slice.offset)),
+	    .extent = __mdspan::__canonical_index<_IndexType>(std::move(__slice.extent)),
+	    .stride = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride))
+	  };
 	else if constexpr (__is_range_slice<_SliceType>)
 	  {
 	    auto __first
 	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.first));
 	    auto __last
 	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.last));
-	    auto __stride
-	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride));
-            return __mdspan::__slice_cast<_IndexType>(
-		     strided_slice{__first, __last - __first, __stride});
+	    return __mdspan::__canonical_range_slice<_IndexType>(
+		     __first,
+		     __mdspan::__canonical_index<_IndexType>(__last - __first),
+		     __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride)));
 	  }
 	else
 	  {
 	    auto [__sbegin, __send] = std::move(__slice);
-	    auto __offset
+	    auto __cbegin
 	      = __mdspan::__canonical_index<_IndexType>(std::move(__sbegin));
-	    auto __end
+	    auto __cend
 	      = __mdspan::__canonical_index<_IndexType>(std::move(__send));
-	    return strided_slice{
-	      .offset = __offset,
-	      .extent = __mdspan::__canonical_index<_IndexType>(__end - __offset),
-	      .stride = cw<_IndexType(1)>
-	    };
+	    auto __cspan
+	      = __mdspan::__canonical_index<_IndexType>(__cend - __cbegin);
+	    return __mdspan::__canonical_range_slice<_IndexType>(
+		     __cbegin, __cspan, cw<_IndexType(1)>);
 	  }
       }
 
+   template<typename _IndexType, size_t _Extent, typename _OIndexType>
+      constexpr void
+      __check_inrange_index(const extents<_IndexType, _Extent>& __ext,
+			   const _OIndexType& __idx)
+      {
+	if constexpr (__is_constant_wrapper<_OIndexType>
+		      && _Extent != dynamic_extent)
+	  {
+	    static_assert(_OIndexType::value >= 0);
+	    static_assert(std::cmp_less(_OIndexType::value, _Extent));
+	  }
+	else
+	  __glibcxx_assert(__idx < __ext.extent(0));
+      }
+
     template<typename _IndexType, size_t _Extent, typename _OIndexType>
       constexpr void
       __check_valid_index(const extents<_IndexType, _Extent>& __ext,
@@ -3362,7 +3405,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  }
 	else
 	  __glibcxx_assert(__idx <= __ext.extent(0));
-}
+      }
 
     template<typename _IndexType, size_t _Extent, typename _Slice>
       constexpr void
@@ -3371,34 +3414,68 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	if constexpr (__is_strided_slice<_Slice>)
 	  {
+	    __mdspan::__check_valid_index(__ext, __slice.extent);
 	    // DEVIATION: For empty slices, P3663r3 does not allow us to check
 	    // that this is less than or equal to the k-th extent (at runtime).
 	    // We're only allowed to check if __slice.offset, __slice.extent
 	    // are constant wrappers and __ext is a static extent.
-	    __mdspan::__check_valid_index(__ext, __slice.offset);
-	    __mdspan::__check_valid_index(__ext, __slice.extent);
-
-	    if constexpr (__is_constant_wrapper<typename _Slice::extent_type>
-			  && __is_constant_wrapper<typename _Slice::stride_type>)
-	      static_assert(_Slice::stride_type::value > 0);
-	    else
-	      __glibcxx_assert(__slice.extent == 0 || __slice.stride > 0);
-
-	    if constexpr (__is_constant_wrapper<typename _Slice::offset_type>
-		&& __is_constant_wrapper<typename _Slice::extent_type>
-		&& _Extent != dynamic_extent)
-	      static_assert(std::cmp_greater_equal(
-		  _Extent - _Slice::offset_type::value,
-		  _Slice::extent_type::value));
+	    if constexpr (is_same_v<typename _Slice::extent_type,
+				    constant_wrapper<_IndexType(0)>>)
+	      __mdspan::__check_valid_index(__ext, __slice.offset);
+	    else if constexpr (is_same_v<typename _Slice::extent_type,
+				         constant_wrapper<_IndexType(1)>>)
+              __mdspan::__check_inrange_index(__ext, __slice.offset);
+	    else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)
+	      { 
+              	__mdspan::__check_inrange_index(__ext, __slice.offset);
+		if constexpr (__is_constant_wrapper<typename _Slice::stride_type>)
+		  static_assert(_Slice::stride_type::value > 0);
+		else
+		  __glibcxx_assert(__slice.stride > 0);
+
+		if constexpr (_Extent != dynamic_extent
+		     && __is_constant_wrapper<typename _Slice::offset_type>)
+                  static_assert(std::cmp_greater_equal(
+		    _Extent - _Slice::offset_type::value,
+		    _Slice::extent_type::value));
+		if constexpr (_Extent != dynamic_extent
+		     && __is_constant_wrapper<typename _Slice::stride_type>)
+                  static_assert(std::cmp_greater(
+		    _Extent,
+		    (_Slice::extent_type::value - 1) * _Slice::stride_type::value));
+
+		if constexpr (_Extent != dynamic_extent
+		     && __is_constant_wrapper<typename _Slice::offset_type>
+	             && __is_constant_wrapper<typename _Slice::stride_type>)
+                  static_assert(std::cmp_greater(
+		    _Extent - _Slice::offset_type::value,
+		    (_Slice::extent_type::value - 1) * _Slice::stride_type::value));
+		else
+		  __glibcxx_assert(std::cmp_greater(
+		    __ext.extent(0) - __slice.offset,
+		    (_Slice::extent_type::value - 1) * __slice.stride));
+	      }
+	    else if constexpr (is_same_v<typename _Slice::stride_type,
+                                         constant_wrapper<_IndexType(1)>>)
+	      {
+	        __mdspan::__check_valid_index(__ext, __slice.offset);
+		__glibcxx_assert(std::cmp_greater_equal(
+		  __ext.extent(0) - __slice.offset,
+		  __slice.extent));
+              }
+	    else if (__slice.extent == 0)
+	      __mdspan::__check_valid_index(__ext, __slice.offset);
 	    else
-	      __glibcxx_assert(__ext.extent(0) - __slice.offset
-			       >= __slice.extent);
+	      {
+	        __glibcxx_assert(__slice.offset < __ext.extent(0));
+		__glibcxx_assert(__slice.extent == 1 || __slice.stride > 0);
+		__glibcxx_assert(__slice.extent == 1 || std::cmp_greater(
+		  __ext.extent(0) - __slice.offset,
+		  (__slice.extent - 1) * __slice.stride));
+	      }
 	  }
-	else if constexpr (__is_constant_wrapper<_Slice>
-			   && _Extent != dynamic_extent)
-	  static_assert(std::cmp_less(_Slice::value, _Extent));
-	else if constexpr (convertible_to<_Slice, _IndexType>)
-	  __glibcxx_assert(__slice < __ext.extent(0));
+	else if constexpr (!is_same_v<_Slice, full_extent_t>)
+          __mdspan::__check_inrange_index(__ext, __slice);
       }
 
     template<typename _Extents, typename... _Slices>
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
index 5ca123eee506..7e6a0791af7d 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
@@ -114,90 +114,184 @@ test_pair_all()
 {
   test_pair<std::pair>();
   test_pair<std::tuple>();
+  test_pair<std::range_slice>();
   test_pair<Range>();
   return true;
 }
 
+template<template<typename, typename, typename> typename Triple>
 constexpr bool
-test_strided_slice(auto exts, auto co, auto ce, auto cs)
+test_triple(auto exts, auto ce, auto cf, auto cl, auto cs)
 {
   using IndexType = decltype(exts)::index_type;
 
-  auto coffset = std::cw<IndexType{co.value}>;
+  auto coffset = std::cw<IndexType{cf.value}>;
   auto cextent = std::cw<IndexType{ce.value}>;
   auto cstride = std::cw<IndexType{cs.value}>;
 
-  auto raw_ccc = std::strided_slice{co, ce, cs};
+  auto raw_ccc = Triple{cf, cl, cs};
   auto [ccc] = std::canonical_slices(exts, raw_ccc);
   assert_same(ccc.offset, coffset);
   assert_same(ccc.extent, cextent);
   assert_same(ccc.stride, cstride);
 
-  auto raw_dcc = std::strided_slice{co.value, ce, cs};
+  auto raw_dcc = Triple{cf.value, cl, cs};
   auto [dcc] = std::canonical_slices(exts, raw_dcc);
   assert_same(dcc.offset, coffset.value);
-  assert_same(dcc.extent, cextent);
+  assert_same(dcc.extent, cextent.value);
   assert_same(dcc.stride, cstride);
 
-  auto raw_cdc = std::strided_slice{co, ce.value, cs};
+  auto raw_cdc = Triple{cf, cl.value, cs};
   auto [cdc] = std::canonical_slices(exts, raw_cdc);
   assert_same(cdc.offset, coffset);
   assert_same(cdc.extent, cextent.value);
   assert_same(cdc.stride, cstride);
 
-  auto raw_ccd = std::strided_slice{co, ce, cs.value};
+  auto raw_ccd = Triple{cf, cl, cs.value};
   auto [ccd] = std::canonical_slices(exts, raw_ccd);
   assert_same(ccd.offset, coffset);
-  assert_same(ccd.extent, cextent);
+  assert_same(ccd.extent, cextent.value);
   assert_same(ccd.stride, cstride.value);
   return true;
 }
 
+template<template<typename, typename, typename> typename Triple>
 constexpr bool
-test_strided_slice()
+test_triple_zero_extent(auto exts, auto cf, auto cs)
 {
-  auto run = [](auto exts)
+  using IndexType = typename decltype(exts)::index_type;
+  auto raw_ccc = Triple{cf, cf, cs};
+  auto [ccc] = std::canonical_slices(exts, raw_ccc);
+  assert_same(ccc.stride, std::cw<IndexType{1}>);
+
+  auto raw_ccd = Triple{cf, cf, cs.value};
+  auto [ccd] = std::canonical_slices(exts, raw_ccd);
+  assert_same(ccd.stride, std::cw<IndexType{1}>);
+
+  auto raw_cdd = Triple{cf, cf.value, cs.value};
+  auto [cdd] = std::canonical_slices(exts, raw_cdd);
+  assert_same(cdd.stride, IndexType(1));
+
+  auto raw_dcd = Triple{cf.value, cf, cs.value};
+  auto [dcd] = std::canonical_slices(exts, raw_dcd);
+  assert_same(dcd.stride, IndexType(1));
+
+  auto raw_ddd = Triple{cf.value, cf.value, cs.value};
+  auto [ddd] = std::canonical_slices(exts, raw_ddd);
+  assert_same(cdd.stride, IndexType(1));
+
+  if constexpr (decltype(cs)::value > 0)
   {
-    auto cs = std::cw<uint8_t{9}>;
-    test_strided_slice(exts, std::cw<uint8_t{2}>, std::cw<uint8_t{3}>, cs);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, cs);
-  };
+    auto cstride = std::cw<IndexType(cs.value)>;
+
+    auto raw_cdc = Triple{cf, cf.value, cs};
+    auto [cdc] = std::canonical_slices(exts, raw_cdc);
+    assert_same(cdc.stride, cstride);
+
+    auto raw_dcc = Triple{cf.value, cf, cs};
+    auto [dcc] = std::canonical_slices(exts, raw_dcc);
+    assert_same(dcc.stride, cstride);
+
+    auto raw_ddc = Triple{cf.value, cf.value, cs};
+    auto [ddc] = std::canonical_slices(exts, raw_ddc);
+    assert_same(cdc.stride, cstride);
+  }
 
+  return true;
+}
+
+template<template<typename, typename, typename> typename Triple>
+constexpr bool
+test_triple()
+{
+  auto run = [](auto exts) {
+    test_triple<Triple>(exts, std::cw<uint8_t{5}>,
+      std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, std::cw<uint8_t{1}>);
+    test_triple<Triple>(exts, std::cw<uint8_t{3}>,
+      std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, std::cw<uint8_t{2}>);
+    test_triple<Triple>(exts, std::cw<uint8_t{2}>,
+      std::cw<uint8_t{1}>, std::cw<uint8_t{5}>, std::cw<uint8_t{3}>);
+    test_triple<Triple>(exts, std::cw<uint8_t{1}>,
+      std::cw<uint8_t{1}>, std::cw<uint8_t{5}>, std::cw<uint8_t{9}>);
+
+    test_triple_zero_extent<Triple>(exts, 
+      std::cw<uint8_t{0}>, std::cw<uint8_t{9}>);
+    test_triple_zero_extent<Triple>(exts,
+      std::cw<uint8_t{0}>, std::cw<uint8_t{0}>);
+    test_triple_zero_extent<Triple>(exts,
+      std::cw<uint8_t{5}>, std::cw<uint8_t{9}>);
+    test_triple_zero_extent<Triple>(exts,
+      std::cw<uint8_t{5}>, std::cw<uint8_t{0}>);
+  };
   run(std::extents<int, 5>{});
   run(std::extents<int, dyn>{5});
+
+  test_triple_zero_extent<Triple>(std::extents<int, 0>{}, 
+    std::cw<uint8_t{0}>, std::cw<uint8_t{9}>);
+  test_triple_zero_extent<Triple>(std::extents<int, dyn>{0},
+    std::cw<uint8_t{0}>, std::cw<uint8_t{0}>);
+
   return true;
 }
 
 constexpr bool
-test_strided_slice_zero_extent(auto exts, auto cs)
+test_triple_all()
 {
-  using IndexType = typename decltype(exts)::index_type;
-  auto c0 = std::cw<uint8_t{0}>;
-  auto raw_ccc = std::strided_slice{c0, c0, cs};
-  auto [ccc] = std::canonical_slices(exts, raw_ccc);
-  assert_same(ccc.stride, std::cw<IndexType{1}>);
-
-  auto raw_ccd = std::strided_slice{c0, c0, cs.value};
-  auto [ccd] = std::canonical_slices(exts, raw_ccd);
-  assert_same(ccd.stride, std::cw<IndexType{1}>);
+  test_triple<std::range_slice>();
   return true;
 }
 
 constexpr bool
-test_strided_slice_zero_extent(auto exts)
+test_strided_slice(auto exts, auto co, auto ce, auto cs)
 {
-  test_strided_slice_zero_extent(exts, std::cw<uint8_t{0}>);
-  test_strided_slice_zero_extent(exts, std::cw<uint8_t{9}>);
+  using IndexType = decltype(exts)::index_type;
+
+  auto coffset = std::cw<IndexType{co.value}>;
+  auto cextent = std::cw<IndexType{ce.value}>;
+  auto cstride = std::cw<IndexType{cs.value}>;
+
+  auto raw_ccc = std::strided_slice{co, ce, cs};
+  auto [ccc] = std::canonical_slices(exts, raw_ccc);
+  assert_same(ccc.offset, coffset);
+  assert_same(ccc.extent, cextent);
+  assert_same(ccc.stride, cstride);
+
+  auto raw_dcc = std::strided_slice{co.value, ce, cs};
+  auto [dcc] = std::canonical_slices(exts, raw_dcc);
+  assert_same(dcc.offset, coffset.value);
+  assert_same(dcc.extent, cextent);
+  assert_same(dcc.stride, cstride);
+
+  auto raw_cdc = std::strided_slice{co, ce.value, cs};
+  auto [cdc] = std::canonical_slices(exts, raw_cdc);
+  assert_same(cdc.offset, coffset);
+  assert_same(cdc.extent, cextent.value);
+  assert_same(cdc.stride, cstride);
+
+  auto raw_ccd = std::strided_slice{co, ce, cs.value};
+  auto [ccd] = std::canonical_slices(exts, raw_ccd);
+  assert_same(ccd.offset, coffset);
+  assert_same(ccd.extent, cextent);
+  assert_same(ccd.stride, cstride.value);
   return true;
 }
 
 constexpr bool
-test_strided_slice_zero_extent()
+test_strided_slice()
 {
-  test_strided_slice_zero_extent(std::extents<int, 0>{});
-  test_strided_slice_zero_extent(std::extents<int, dyn>{0});
-  test_strided_slice_zero_extent(std::extents<int, 5>{});
-  test_strided_slice_zero_extent(std::extents<int, dyn>{5});
+  auto run = [](auto exts)
+  {
+    auto cs = std::cw<uint8_t{1}>;
+    test_strided_slice(exts, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>);
+    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, std::cw<uint8_t{1}>);
+    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{1}>);
+    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{3}>);
+    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>);
+    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{9}>);
+  };
+
+  run(std::extents<int, 5>{});
+  run(std::extents<int, dyn>{5});
   return true;
 }
 
@@ -206,8 +300,8 @@ test_all()
 {
   test_scalar();
   test_pair_all();
+  test_triple_all();
   test_strided_slice();
-  test_strided_slice_zero_extent();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
index 6dbfd5e8a1b8..3923d5393b9e 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
@@ -112,6 +112,7 @@ template<typename Offset, typename Extent, typename Stride, typename Extents>
 constexpr auto i8_6 = int8_t{6};
 constexpr auto c_i8_6 = std::cw<int8_t{6}>;
 constexpr auto c2 = std::cw<2>;
+constexpr auto c3 = std::cw<3>;
 constexpr auto c4 = std::cw<4>;
 
 static_assert(test_over2(i8_6, 0, 1, dyn_uexts));    // { dg-error "expansion of" }
@@ -122,6 +123,14 @@ static_assert(test_over2(0, c_i8_6, 1, dyn_uexts));  // { dg-error "expansion of
 static_assert(test_over2(c2, 4, 1, dyn_uexts));      // { dg-error "expansion of" }
 static_assert(test_over2(2, c4, 1, dyn_uexts));      // { dg-error "expansion of" }
 static_assert(test_over2(c2, c4, 1, dyn_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, 2, dyn_uexts));       // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, c2, dyn_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, 2, dyn_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, 2, dyn_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, 2, dyn_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, c2, dyn_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, c2, dyn_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, c2, dyn_uexts));    // { dg-error "expansion of" }
 
 static_assert(test_over2(i8_6, 0, 1, dyn_sexts));    // { dg-error "expansion of" }
 static_assert(test_over2(0, i8_6, 1, dyn_sexts));    // { dg-error "expansion of" }
@@ -131,6 +140,14 @@ static_assert(test_over2(0, c_i8_6, 1, dyn_sexts));  // { dg-error "expansion of
 static_assert(test_over2(c2, 4, 1, dyn_sexts));      // { dg-error "expansion of" }
 static_assert(test_over2(2, c4, 1, dyn_sexts));      // { dg-error "expansion of" }
 static_assert(test_over2(c2, c4, 1, dyn_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, 2, dyn_sexts));       // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, c2, dyn_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, 2, dyn_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, 2, dyn_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, 2, dyn_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, c2, dyn_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, c2, dyn_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, c2, dyn_sexts));    // { dg-error "expansion of" }
 
 static_assert(test_over2(i8_6, 0, 1, sta_uexts));    // { dg-error "expansion of" }
 static_assert(test_over2(0, i8_6, 1, sta_uexts));    // { dg-error "expansion of" }
@@ -140,6 +157,14 @@ static_assert(test_over2(0, c_i8_6, 1, sta_uexts));  // { dg-error "expansion of
 static_assert(test_over2(c2, 4, 1, sta_uexts));      // { dg-error "expansion of" }
 static_assert(test_over2(2, c4, 1, sta_uexts));      // { dg-error "expansion of" }
 static_assert(test_over2(c2, c4, 1, sta_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, 2, sta_uexts));       // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, c2, sta_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, 2, sta_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, 2, sta_uexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, 2, sta_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, c2, sta_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, c2, sta_uexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, c2, sta_uexts));    // { dg-error "from here" }
 
 static_assert(test_over2(i8_6, 0, 1, sta_sexts));    // { dg-error "expansion of" }
 static_assert(test_over2(0, i8_6, 1, sta_sexts));    // { dg-error "expansion of" }
@@ -149,6 +174,14 @@ static_assert(test_over2(0, c_i8_6, 1, sta_sexts));  // { dg-error "expansion of
 static_assert(test_over2(c2, 4, 1, sta_sexts));      // { dg-error "expansion of" }
 static_assert(test_over2(2, c4, 1, sta_sexts));      // { dg-error "expansion of" }
 static_assert(test_over2(c2, c4, 1, sta_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, 2, sta_sexts));       // { dg-error "expansion of" }
+static_assert(test_over2(2, 3, c2, sta_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, 2, sta_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, 2, sta_sexts));      // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, 2, sta_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(2, c3, c2, sta_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, 3, c2, sta_sexts));     // { dg-error "expansion of" }
+static_assert(test_over2(c2, c3, c2, sta_sexts));    // { dg-error "from here" }
 
 // Checks the precondition: offset + extent <= exts.extent(0) for unsigned
 // index_type when offset + extent overflows.
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
index d7b751d700c0..eade9017e039 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
@@ -292,10 +292,10 @@ template<typename Layout>
       check_selection<Layout>(exts, collapse{}, s, collapse{});
     };
 
+    check(std::strided_slice(0, 1, 2));
     check(std::strided_slice(0, 2, 2));
-    check(std::strided_slice(0, 3, 2));
-    check(std::strided_slice(1, 3, 2));
-    check(std::strided_slice(1, std::cw<3>, std::cw<2>));
+    check(std::strided_slice(1, 2, 2));
+    check(std::strided_slice(1, std::cw<2>, std::cw<2>));
     return true;
   }
 
@@ -303,9 +303,9 @@ template<typename Layout>
   constexpr bool
   test_strided_box_selection(auto exts)
   {
-    auto s0 = std::strided_slice(0, 3, 2);
-    auto s1 = std::strided_slice(1, 4, 2);
-    auto s2 = std::strided_slice(0, 7, 3);
+    auto s0 = std::strided_slice(0, 2, 2);
+    auto s1 = std::strided_slice(1, 2, 2);
+    auto s2 = std::strided_slice(0, 3, 3);
 
     check_selection<Layout>(exts, s0, s1, s2);
     return true;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
index 464b253ff4d8..379fb79dfc23 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
@@ -21,7 +21,7 @@ test_from_full_extent()
 
 template<template<typename, typename> typename Pair, template<int> typename Cw>
   constexpr bool
-  test_from_tuple()
+  test_from_pair()
   {
     auto exts = std::extents<int, 3, 5, 7>{};
     auto s0 = Cw<1>{};
@@ -29,22 +29,22 @@ template<template<typename, typename> typename Pair, template<int> typename Cw>
     auto s2 = Pair{Cw<1>{}, 4};
     auto sub_exts = std::subextents(exts, s0, s1, s2);
     VERIFY(sub_exts.rank() == 2);
-    VERIFY(sub_exts.static_extent(0) == size_t(get<1>(s1) - get<0>(s1)));
+    VERIFY(sub_exts.static_extent(0) == 1);
     VERIFY(sub_exts.static_extent(1) == dyn);
-    VERIFY(std::cmp_equal(sub_exts.extent(1), get<1>(s2) - get<0>(s2)));
+    VERIFY(std::cmp_equal(sub_exts.extent(1), 3));
     return true;
   }
 
 template<template<int> typename Cw>
   constexpr bool
-  test_from_tuple_all()
+  test_from_pair_all()
   {
-    test_from_tuple<std::tuple, Cw>();
-    test_from_tuple<std::pair, Cw>();
+    test_from_pair<std::tuple, Cw>();
+    test_from_pair<std::pair, Cw>();
+    test_from_pair<std::range_slice, Cw>();
     return true;
   }
 
-
 template<typename Int>
   void
   test_from_int_like_as_scalar()
@@ -104,45 +104,57 @@ template<template<int> typename Cw>
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
       VERIFY(sub_exts.extent(0) == 2);
-      VERIFY(sub_exts.static_extent(1) == dyn);
-      VERIFY(sub_exts.extent(1) == 2);
+      VERIFY(sub_exts.static_extent(1) == 2);
     }
 
     {
       // selected = 1 x [1, 3] x [1, 4, 7, 10]
       auto s0 = 1;
-      auto s1 = std::strided_slice{1, Cw<4>{}, 2};
-      auto s2 = std::strided_slice{1, Cw<10>{}, Cw<3>{}};
+      auto s1 = std::strided_slice{1, Cw<2>{}, 2};
+      auto s2 = std::strided_slice{1, Cw<4>{}, Cw<3>{}};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
-      VERIFY(sub_exts.static_extent(0) == dyn);
-      VERIFY(sub_exts.extent(0) == 2);
+      VERIFY(sub_exts.static_extent(0) == 2);
       VERIFY(sub_exts.static_extent(1) == 4);
     }
 
     {
       // selected = [0, 2] x [1, 3] x [0, 3, 6]
-      auto s0 = std::strided_slice(0, 3, 2);
-      auto s1 = std::strided_slice(1, 4, 2);
-      auto s2 = std::strided_slice(0, 7, 3);
+      auto s0 = std::strided_slice(0, 2, 2);
+      auto s1 = std::strided_slice(1, 2, 2);
+      auto s2 = std::strided_slice(0, 3, 3);
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 3);
       VERIFY(sub_exts.extent(0) == 2);
       VERIFY(sub_exts.extent(1) == 2);
       VERIFY(sub_exts.extent(2) == 3);
     }
+
+    {
+      // selected = [0] x [1] x [2]
+      auto s0 = std::strided_slice(0, 1, 99);
+      auto s1 = std::strided_slice(1, 1, 99);
+      auto s2 = std::strided_slice(2, 1, 99);
+      auto sub_exts = std::subextents(exts, s0, s1, s2);
+      VERIFY(sub_exts.rank() == 3);
+      VERIFY(sub_exts.extent(0) == 1);
+      VERIFY(sub_exts.extent(1) == 1);
+      VERIFY(sub_exts.extent(2) == 1);
+    }
+
     return true;
   }
 
-template<template<int> typename Cw>
+template<template<typename, typename, typename> class Triple,
+	 template<int> typename Cw>
   constexpr bool
-  test_from_range_slice()
+  test_from_triple()
   {
     auto exts = std::extents<int, 5, 7, 11>{};
     {
       auto s0 = 1;
-      auto s1 = std::range_slice{0, 0, 0};
-      auto s2 = std::range_slice{Cw<1>{}, Cw<1>{}, 0};
+      auto s1 = Triple{0, 0, 0};
+      auto s2 = Triple{Cw<1>{}, Cw<1>{}, 0};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -152,8 +164,8 @@ template<template<int> typename Cw>
 
     {
       auto s0 = 1;
-      auto s1 = std::range_slice{0, 2, Cw<1>{}};
-      auto s2 = std::range_slice{1, Cw<3>{}};
+      auto s1 = Triple{0, 2, Cw<1>{}};
+      auto s2 = Triple{1, Cw<3>{}, Cw<1>{}};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -164,8 +176,8 @@ template<template<int> typename Cw>
 
     {
       auto s0 = 1;
-      auto s1 = std::range_slice{0, 2, Cw<1>{}};
-      auto s2 = std::range_slice{Cw<1>{}, Cw<3>{}, 1};
+      auto s1 = Triple{0, 2, Cw<1>{}};
+      auto s2 = Triple{Cw<1>{}, Cw<3>{}, 1};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -177,8 +189,8 @@ template<template<int> typename Cw>
     {
       // selected = 1 x [1, 3] x [1, 4, 7, 10]
       auto s0 = 1;
-      auto s1 = std::range_slice{1, Cw<5>{}, 2};
-      auto s2 = std::range_slice{1, Cw<11>{}, Cw<3>{}};
+      auto s1 = Triple{1, Cw<5>{}, 2};
+      auto s2 = Triple{1, Cw<11>{}, Cw<3>{}};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -190,8 +202,8 @@ template<template<int> typename Cw>
     {
       // selected = 1 x [1, 3] x [1, 4, 7, 10]
       auto s0 = 1;
-      auto s1 = std::range_slice{1, Cw<5>{}, 2};
-      auto s2 = std::range_slice{Cw<1>{}, Cw<11>{}, Cw<3>{}};
+      auto s1 = Triple{1, Cw<5>{}, 2};
+      auto s2 = Triple{Cw<1>{}, Cw<11>{}, Cw<3>{}};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -201,18 +213,26 @@ template<template<int> typename Cw>
 
     {
       // selected = [0, 2] x [1, 3] x [0, 3, 6]
-      auto s0 = std::range_slice(0, 3, 2);
-      auto s1 = std::range_slice(1, 5, 2);
-      auto s2 = std::range_slice(0, 7, 3);
+      auto s0 = Triple{0, 3, 2};
+      auto s1 = Triple{1, 5, 2};
+      auto s2 = Triple{0, 7, 3};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 3);
       VERIFY(sub_exts.extent(0) == 2);
       VERIFY(sub_exts.extent(1) == 2);
       VERIFY(sub_exts.extent(2) == 3);
     }
+
     return true;
   }
 
+template<template<int> typename Cw>
+  constexpr bool
+  test_from_triple_all()
+  {
+    test_from_triple<std::range_slice, Cw>();
+    return true;
+  }
 
 template<int Value>
   using CW = std::constant_wrapper<Value, int>;
@@ -224,14 +244,14 @@ constexpr bool
 test_all()
 {
   test_from_full_extent();
-  test_from_tuple_all<CW>();
-  test_from_tuple_all<IC>();
+  test_from_pair_all<CW>();
+  test_from_pair_all<IC>();
   test_from_const_int<CW>();
   test_from_const_int<IC>();
   test_from_strided_slice<CW>();
   test_from_strided_slice<IC>();
-  test_from_range_slice<CW>();
-  test_from_range_slice<IC>();
+  test_from_triple_all<CW>();
+  test_from_triple_all<IC>();
   test_from_int_like_in_tuple<StructuralInt>();
   return true;
 }
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
index c81a1383e3cb..5b11424680df 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
@@ -19,7 +19,7 @@ constexpr bool
 test_invalid_stride_zero()
 {
   auto exts = std::extents(3, 5, 7);
-  auto s = std::strided_slice{0, 1, 0};
+  auto s = std::strided_slice{0, 2, 0};
   auto sub_exts = std::subextents(exts, 1, s, 2);  // { dg-error "expansion of" }
   return true;
 }
@@ -34,9 +34,9 @@ test_out_of_bounds(const Slice& slice)
   return true;
 }
 static_assert(test_out_of_bounds(std::strided_slice{0, 6, 1}));  // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{0, 7, 2}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::strided_slice{0, 4, 2}));  // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::strided_slice{1, 6, 1}));  // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{1, 6, 2}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::strided_slice{1, 4, 2}));  // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::tuple{1, 6}));             // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::tuple{std::cw<1>, std::cw<6>})); // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::strided_slice{-1, 2, 1})); // { dg-error "expansion of" }
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
index 39eb18cb03df..74fccc6f014b 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
@@ -75,7 +75,7 @@ template<typename Layout>
   constexpr bool
   test_strided_slice_zero()
   {
-    check_slice_range<Layout>(1, std::strided_slice{1, 1, 0}, 2);  // { dg-error "expansion of" }
+    check_slice_range<Layout>(1, std::strided_slice{1, 2, 0}, 2);  // { dg-error "expansion of" }
     return true;
   }
 static_assert(test_strided_slice_zero<std::layout_left>());   // { dg-error "expansion of" }

From tkaminsk@gcc.gnu.org  Thu Apr  2 08:04:59 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 08:04:59 +0000 (GMT)
Subject: [gcc r16-8413] libstdc++: Rename std::strided_slice to
 std::extent_slice.
Message-ID: <20260402080459.0EB5E4BA2E27@sourceware.org>

https://gcc.gnu.org/g:c00c750ba27dd86aaf5bc2d06679e30c76826272

commit r16-8413-gc00c750ba27dd86aaf5bc2d06679e30c76826272
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Mar 19 16:35:13 2026 +0100

    libstdc++: Rename std::strided_slice to std::extent_slice.
    
    This is last change proposed in P3982R2, so we bump submdspan
    value.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |  7 ++-
 libstdc++-v3/include/bits/version.h                |  4 +-
 libstdc++-v3/include/std/mdspan                    | 56 +++++++++++-----------
 libstdc++-v3/src/c++23/std.cc.in                   |  2 +-
 .../mdspan/submdspan/canonical_slices.cc           | 26 +++++-----
 .../mdspan/submdspan/canonical_slices_neg.cc       |  8 ++--
 .../{strided_slice.cc => extent_slice.cc}          | 12 ++---
 .../{strided_slice_neg.cc => extent_slice_neg.cc}  |  2 +-
 .../mdspan/submdspan/selections/testcases.h        | 20 ++++----
 .../23_containers/mdspan/submdspan/subextents.cc   | 30 ++++++------
 .../mdspan/submdspan/subextents_neg.cc             | 12 ++---
 .../mdspan/submdspan/submdspan_mapping.cc          | 32 ++++++-------
 .../mdspan/submdspan/submdspan_neg.cc              | 40 ++++++++--------
 13 files changed, 128 insertions(+), 123 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index b7d4b3849acb..ada8da88bc52 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1117,8 +1117,13 @@ ftms = {
 
 ftms = {
   name = submdspan;
+  // 202306 P2630R4 Submdspan
+  // 202403 P2642R6 Padded mdspan layouts
+  // 202411 P3355R1 Fix submdspan for C++26
+  // 202511 P3663R3 Future-proof submdspan-mapping  
+  // 202603 P3982R1 Split strided_slice into extent_slice and range_slice for C++26                                                          
   values = {
-    v = 202411;
+    v = 202603;
     cxxmin = 26;
     extra_cond = "__glibcxx_constant_wrapper >= 202506L";
   };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index c2219bedb5f8..0490e79dd416 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1243,9 +1243,9 @@
 
 #if !defined(__cpp_lib_submdspan)
 # if (__cplusplus >  202302L) && (__glibcxx_constant_wrapper >= 202506L)
-#  define __glibcxx_submdspan 202411L
+#  define __glibcxx_submdspan 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_submdspan)
-#   define __cpp_lib_submdspan 202411L
+#   define __cpp_lib_submdspan 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_submdspan) */
diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 5b80de2ca619..f30c5e83d164 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -356,7 +356,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline constexpr full_extent_t full_extent{};
 
   template<typename _OffsetType, typename _ExtentType, typename _StrideType>
-    struct strided_slice
+    struct extent_slice
     {
       static_assert(__is_signed_or_unsigned_integer<_OffsetType>::value
 	|| __detail::__integral_constant_like<_OffsetType>);
@@ -879,10 +879,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #ifdef __glibcxx_submdspan
     template<typename _Tp>
-      constexpr bool __is_strided_slice = false;
+      constexpr bool __is_extent_slice = false;
 
     template<typename _OffsetType, typename _ExtentType, typename _StrideType>
-      constexpr bool __is_strided_slice<strided_slice<_OffsetType,
+      constexpr bool __is_extent_slice<extent_slice<_OffsetType,
 	  _ExtentType, _StrideType>> = true;
 
     template<typename _Tp>
@@ -921,7 +921,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     template<typename _Slice, typename _IndexType>
       concept __acceptable_slice_type = same_as<_Slice, full_extent_t>
 	  || same_as<_Slice, _IndexType> || __is_constant_wrapper<_Slice>
-	  || __is_strided_slice<_Slice>;
+	  || __is_extent_slice<_Slice>;
 
     template<typename _IndexType, typename... _Slices>
       consteval auto
@@ -954,7 +954,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	if constexpr (same_as<_Slice, full_extent_t>)
 	  return 0;
-	else if constexpr (__is_strided_slice<_Slice>)
+	else if constexpr (__is_extent_slice<_Slice>)
 	  return __slice.offset;
 	else
 	  return __slice; // collapsing slice
@@ -1011,7 +1011,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       constexpr typename _Extents::index_type
       __dynamic_slice_extent(const _Extents& __exts, _Slice __slice)
       {
-	if constexpr (__is_strided_slice<_Slice>)
+	if constexpr (__is_extent_slice<_Slice>)
 	  return __slice.extent;
 	else
 	  return __exts.extent(_K);
@@ -1125,7 +1125,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  {
 	    auto __stride = [&__mapping](size_t __k, auto __slice) -> _IndexType
 	    {
-	      if constexpr (__is_strided_slice<decltype(__slice)>)
+	      if constexpr (__is_extent_slice<decltype(__slice)>)
 		if (__slice.extent > 1)
 		  return __mapping.stride(__k) * __slice.stride;
 	      return __mapping.stride(__k);
@@ -1169,7 +1169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		  __stride *= _Trait::_S_padded_extent(__mapping, __i);
 
 		size_t __krev = _SubTrait::_S_idx(__k);
-		if constexpr (__is_strided_slice<decltype(__slice)>)
+		if constexpr (__is_extent_slice<decltype(__slice)>)
 		  {
 		    if (__slice.extent > 1)
 		      __ret[__krev] = __stride * __slice.stride;
@@ -1201,19 +1201,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
     template<typename _Slice>
-      concept __is_unit_stride_slice = (__mdspan::__is_strided_slice<_Slice>
+      concept __is_unit_stride_slice = (__mdspan::__is_extent_slice<_Slice>
 	  && __mdspan::__is_constant_wrapper<typename _Slice::stride_type>
 	  && _Slice::stride_type::value == 1)
 	|| std::same_as<_Slice, full_extent_t>;
 
     // These are (forced) exclusive categories:
     //  - full & collapsing: obvious,
-    //  - unit_strided_slice: strided_slice{a, b, cw<1>}, but not `full`,
-    //  - strided_slice: strided_slice{a, b, c} with c != cw<1>.
+    //  - unit_extent_slice: extent_slice{a, b, cw<1>}, but not `full`,
+    //  - extent_slice: extent_slice{a, b, c} with c != cw<1>.
     enum class _SliceKind
     {
-      __strided_slice,
-      __unit_strided_slice,
+      __extent_slice,
+      __unit_stride_slice,
       __full,
       __collapsing
     };
@@ -1224,12 +1224,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	if constexpr (std::same_as<_Slice, full_extent_t>)
 	  return _SliceKind::__full;
-	else if constexpr (__mdspan::__is_strided_slice<_Slice>)
+	else if constexpr (__mdspan::__is_extent_slice<_Slice>)
 	  {
 	    if constexpr (__mdspan::__is_unit_stride_slice<_Slice>)
-	      return _SliceKind::__unit_strided_slice;
+	      return _SliceKind::__unit_stride_slice;
 	    else
-	      return _SliceKind::__strided_slice;
+	      return _SliceKind::__extent_slice;
 	  }
 	else
 	  return _SliceKind::__collapsing;
@@ -1260,7 +1260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       auto __last = __slice_kinds[__block_size - 1];
       return __last == _SliceKind::__full
-	  || __last == _SliceKind::__unit_strided_slice;
+	  || __last == _SliceKind::__unit_stride_slice;
     }
 
     //                         __u              __u + __sub_rank-2
@@ -1270,7 +1270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				 size_t __sub_rank)
     {
       if (__slice_kinds[0] != _SliceKind::__full
-	  && __slice_kinds[0] != _SliceKind::__unit_strided_slice)
+	  && __slice_kinds[0] != _SliceKind::__unit_stride_slice)
 	return dynamic_extent;
       else if (__slice_kinds.size() == 1)
 	return dynamic_extent;
@@ -1361,7 +1361,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				   size_t __sub_rank)
 	  {
 	    if (__sub_rank == 1)
-	      return __slice_kinds[0] == _SliceKind::__unit_strided_slice
+	      return __slice_kinds[0] == _SliceKind::__unit_stride_slice
 		|| __slice_kinds[0] == _SliceKind::__full;
 	    else
 	      return false;
@@ -1429,7 +1429,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				   size_t __sub_rank)
 	  {
 	    if (__sub_rank == 1)
-	      return __slice_kinds[_Nm - 1] == _SliceKind::__unit_strided_slice
+	      return __slice_kinds[_Nm - 1] == _SliceKind::__unit_stride_slice
 		|| __slice_kinds[_Nm - 1] == _SliceKind::__full;
 	    else
 	      return false;
@@ -3299,7 +3299,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       if constexpr (is_same_v<_SpanType, constant_wrapper<_IndexType(0)>>
 		    || is_same_v<_StrideType, constant_wrapper<_IndexType(1)>>)
-	return strided_slice{
+	return extent_slice{
 	  .offset = __offset,
 	  .extent = __span,
 	  .stride = cw<_IndexType(1)>
@@ -3308,20 +3308,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
         {
 	  static_assert(_StrideType::value > 0);
 	  if constexpr (__is_constant_wrapper<_SpanType>)
-	    return strided_slice{
+	    return extent_slice{
 	      .offset = __offset,
 	      .extent = cw<_IndexType(1 + (_SpanType::value - 1) / _StrideType::value)>,
 	      .stride = __stride
 	    };
 	  else
-	    return strided_slice{
+	    return extent_slice{
 	      .offset = __offset,
 	      .extent = _IndexType(__span > 0 ? 1 + (__span - 1) / _StrideType::value : 0),
 	      .stride = __stride
 	    };
         }
       else if (__span == 0 || __stride == 1)
-	return strided_slice{
+	return extent_slice{
 	  .offset = __offset,
 	  .extent = _IndexType(__span),
 	  .stride = _IndexType(1)
@@ -3329,7 +3329,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       else
         {
 	  __glibcxx_assert(__stride > 0);
-	  return strided_slice{
+	  return extent_slice{
 	    .offset = __offset,
 	    .extent = _IndexType(1 + (__span - 1) / __stride),
 	    .stride = __stride
@@ -3346,8 +3346,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return static_cast<full_extent_t>(std::move(__slice));
 	else if constexpr (is_convertible_v<_SliceType, _IndexType>)
 	  return __mdspan::__canonical_index<_IndexType>(std::move(__slice));
-	else if constexpr (__is_strided_slice<_SliceType>)
-	  return strided_slice{
+	else if constexpr (__is_extent_slice<_SliceType>)
+	  return extent_slice{
 	    .offset = __mdspan::__canonical_index<_IndexType>(std::move(__slice.offset)),
 	    .extent = __mdspan::__canonical_index<_IndexType>(std::move(__slice.extent)),
 	    .stride = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride))
@@ -3412,7 +3412,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __check_valid_slice(const extents<_IndexType, _Extent>& __ext,
 			   const _Slice& __slice)
       {
-	if constexpr (__is_strided_slice<_Slice>)
+	if constexpr (__is_extent_slice<_Slice>)
 	  {
 	    __mdspan::__check_valid_index(__ext, __slice.extent);
 	    // DEVIATION: For empty slices, P3663r3 does not allow us to check
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 32e167be0c1c..a7e88945c2f9 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -1914,7 +1914,7 @@ export namespace std
   using std::layout_right_padded;
 #endif
 #if __glibcxx_submdspan
-  using std::strided_slice;
+  using std::extent_slice;
   using std::range_slice;
   using std::full_extent_t;
   using std::full_extent;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
index 7e6a0791af7d..d747ad40de21 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
@@ -242,7 +242,7 @@ test_triple_all()
 }
 
 constexpr bool
-test_strided_slice(auto exts, auto co, auto ce, auto cs)
+test_extent_slice(auto exts, auto co, auto ce, auto cs)
 {
   using IndexType = decltype(exts)::index_type;
 
@@ -250,25 +250,25 @@ test_strided_slice(auto exts, auto co, auto ce, auto cs)
   auto cextent = std::cw<IndexType{ce.value}>;
   auto cstride = std::cw<IndexType{cs.value}>;
 
-  auto raw_ccc = std::strided_slice{co, ce, cs};
+  auto raw_ccc = std::extent_slice{co, ce, cs};
   auto [ccc] = std::canonical_slices(exts, raw_ccc);
   assert_same(ccc.offset, coffset);
   assert_same(ccc.extent, cextent);
   assert_same(ccc.stride, cstride);
 
-  auto raw_dcc = std::strided_slice{co.value, ce, cs};
+  auto raw_dcc = std::extent_slice{co.value, ce, cs};
   auto [dcc] = std::canonical_slices(exts, raw_dcc);
   assert_same(dcc.offset, coffset.value);
   assert_same(dcc.extent, cextent);
   assert_same(dcc.stride, cstride);
 
-  auto raw_cdc = std::strided_slice{co, ce.value, cs};
+  auto raw_cdc = std::extent_slice{co, ce.value, cs};
   auto [cdc] = std::canonical_slices(exts, raw_cdc);
   assert_same(cdc.offset, coffset);
   assert_same(cdc.extent, cextent.value);
   assert_same(cdc.stride, cstride);
 
-  auto raw_ccd = std::strided_slice{co, ce, cs.value};
+  auto raw_ccd = std::extent_slice{co, ce, cs.value};
   auto [ccd] = std::canonical_slices(exts, raw_ccd);
   assert_same(ccd.offset, coffset);
   assert_same(ccd.extent, cextent);
@@ -277,17 +277,17 @@ test_strided_slice(auto exts, auto co, auto ce, auto cs)
 }
 
 constexpr bool
-test_strided_slice()
+test_extent_slice()
 {
   auto run = [](auto exts)
   {
     auto cs = std::cw<uint8_t{1}>;
-    test_strided_slice(exts, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, std::cw<uint8_t{1}>);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{1}>);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{3}>);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>);
-    test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{9}>);
+    test_extent_slice(exts, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>, std::cw<uint8_t{2}>);
+    test_extent_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, std::cw<uint8_t{1}>);
+    test_extent_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{1}>);
+    test_extent_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{3}>);
+    test_extent_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>);
+    test_extent_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{0}>, std::cw<uint8_t{9}>);
   };
 
   run(std::extents<int, 5>{});
@@ -301,7 +301,7 @@ test_all()
   test_scalar();
   test_pair_all();
   test_triple_all();
-  test_strided_slice();
+  test_extent_slice();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
index 3923d5393b9e..5c61e938da5e 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
@@ -65,7 +65,7 @@ template<typename Offset, typename Extent, typename Stride, typename Extents>
   constexpr bool
   test_under2(Offset o, Extent e, Stride s, Extents exts)
   {
-    std::canonical_slices(exts, std::strided_slice{o, e, s});
+    std::canonical_slices(exts, std::extent_slice{o, e, s});
     return true;
   }
 
@@ -105,7 +105,7 @@ template<typename Offset, typename Extent, typename Stride, typename Extents>
   constexpr bool
   test_over2(Offset o, Extent e, Stride s, Extents exts)
   {
-    std::canonical_slices(exts, std::strided_slice{o, e, s});
+    std::canonical_slices(exts, std::extent_slice{o, e, s});
     return true;
   }
 
@@ -189,7 +189,7 @@ constexpr bool
 test_overflow1(auto o, auto e)
 {
   auto exts = std::extents<uint8_t, dyn>{255};
-  auto slice = std::strided_slice{o, e, 1};
+  auto slice = std::extent_slice{o, e, 1};
   std::canonical_slices(exts, slice);
   return true;
 }
@@ -224,7 +224,7 @@ constexpr bool
 test_invalid(auto e, auto s)
 {
   auto exts = std::extents(5);
-  auto slice = std::strided_slice(0, e, s);
+  auto slice = std::extent_slice(0, e, s);
   std::canonical_slices(exts, slice);
   return true;
 }
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice.cc
similarity index 67%
rename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc
rename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice.cc
index 6fa5aaa2f1ed..1a2a5b213990 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice.cc
@@ -5,9 +5,9 @@
 #include <testsuite_hooks.h>
 
 constexpr void
-check_strided_slice(auto s, auto offset, auto extent, auto stride)
+check_extent_slice(auto s, auto offset, auto extent, auto stride)
 {
-  using slice_type = std::strided_slice<decltype(offset), decltype(extent),
+  using slice_type = std::extent_slice<decltype(offset), decltype(extent),
 					decltype(stride)>;
   static_assert(std::same_as<decltype(s), slice_type>);
   VERIFY(s.offset == offset);
@@ -20,12 +20,12 @@ test_initializers(auto offset, auto extent, auto stride)
 {
   auto check = [&](auto s)
   {
-    check_strided_slice(s, offset, extent, stride);
+    check_extent_slice(s, offset, extent, stride);
   };
 
-  check(std::strided_slice{.offset=offset, .extent=extent, .stride=stride});
-  check(std::strided_slice{offset, extent, stride});
-  check(std::strided_slice(offset, extent, stride));
+  check(std::extent_slice{.offset=offset, .extent=extent, .stride=stride});
+  check(std::extent_slice{offset, extent, stride});
+  check(std::extent_slice(offset, extent, stride));
 }
 
 constexpr bool
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc
similarity index 84%
rename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc
rename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc
index 0f1d791d13aa..9740b37668a0 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc
@@ -7,7 +7,7 @@ template<typename OffsetType, typename ExtentType, typename StrideType>
   constexpr bool
   test_invalid()
   {
-    auto s1 = std::strided_slice(OffsetType{}, ExtentType{}, StrideType{}); // { dg-error "required from" }
+    auto s1 = std::extent_slice(OffsetType{}, ExtentType{}, StrideType{}); // { dg-error "required from" }
     return true;
   }
 
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
index eade9017e039..536d2ad51742 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/selections/testcases.h
@@ -9,10 +9,10 @@ constexpr size_t dyn = std::dynamic_extent;
 constexpr auto all = std::full_extent;
 
 template<typename T>
-  constexpr bool is_strided_slice = false;
+  constexpr bool is_extent_slice = false;
 
 template<typename O, typename E, typename S>
-  constexpr bool is_strided_slice<std::strided_slice<O, E, S>> = true;
+  constexpr bool is_extent_slice<std::extent_slice<O, E, S>> = true;
 
 template<typename MDSpan>
   constexpr void
@@ -151,7 +151,7 @@ template<typename IndexType, typename Slice>
 	std::ranges::iota(ret, 0);
 	return ret;
       }
-    else if constexpr (is_strided_slice<Slice>)
+    else if constexpr (is_extent_slice<Slice>)
       {
 	auto ret = std::vector<IndexType>{};
 	size_t n = static_cast<size_t>(slice.extent);
@@ -292,10 +292,10 @@ template<typename Layout>
       check_selection<Layout>(exts, collapse{}, s, collapse{});
     };
 
-    check(std::strided_slice(0, 1, 2));
-    check(std::strided_slice(0, 2, 2));
-    check(std::strided_slice(1, 2, 2));
-    check(std::strided_slice(1, std::cw<2>, std::cw<2>));
+    check(std::extent_slice(0, 1, 2));
+    check(std::extent_slice(0, 2, 2));
+    check(std::extent_slice(1, 2, 2));
+    check(std::extent_slice(1, std::cw<2>, std::cw<2>));
     return true;
   }
 
@@ -303,9 +303,9 @@ template<typename Layout>
   constexpr bool
   test_strided_box_selection(auto exts)
   {
-    auto s0 = std::strided_slice(0, 2, 2);
-    auto s1 = std::strided_slice(1, 2, 2);
-    auto s2 = std::strided_slice(0, 3, 3);
+    auto s0 = std::extent_slice(0, 2, 2);
+    auto s1 = std::extent_slice(1, 2, 2);
+    auto s2 = std::extent_slice(0, 3, 3);
 
     check_selection<Layout>(exts, s0, s1, s2);
     return true;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
index 379fb79dfc23..35927a0276e6 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc
@@ -82,13 +82,13 @@ template<typename Int>
 
 template<template<int> typename Cw>
   constexpr bool
-  test_from_strided_slice()
+  test_from_extent_slice()
   {
     auto exts = std::extents<int, 5, 7, 11>{};
     {
       auto s0 = 1;
-      auto s1 = std::strided_slice{0, 0, 0};
-      auto s2 = std::strided_slice{1, Cw<0>{}, 0};
+      auto s1 = std::extent_slice{0, 0, 0};
+      auto s2 = std::extent_slice{1, Cw<0>{}, 0};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -98,8 +98,8 @@ template<template<int> typename Cw>
 
     {
       auto s0 = 1;
-      auto s1 = std::strided_slice{0, 2, Cw<1>{}};
-      auto s2 = std::strided_slice{1, Cw<2>{}, 1};
+      auto s1 = std::extent_slice{0, 2, Cw<1>{}};
+      auto s2 = std::extent_slice{1, Cw<2>{}, 1};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == dyn);
@@ -110,8 +110,8 @@ template<template<int> typename Cw>
     {
       // selected = 1 x [1, 3] x [1, 4, 7, 10]
       auto s0 = 1;
-      auto s1 = std::strided_slice{1, Cw<2>{}, 2};
-      auto s2 = std::strided_slice{1, Cw<4>{}, Cw<3>{}};
+      auto s1 = std::extent_slice{1, Cw<2>{}, 2};
+      auto s2 = std::extent_slice{1, Cw<4>{}, Cw<3>{}};
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 2);
       VERIFY(sub_exts.static_extent(0) == 2);
@@ -120,9 +120,9 @@ template<template<int> typename Cw>
 
     {
       // selected = [0, 2] x [1, 3] x [0, 3, 6]
-      auto s0 = std::strided_slice(0, 2, 2);
-      auto s1 = std::strided_slice(1, 2, 2);
-      auto s2 = std::strided_slice(0, 3, 3);
+      auto s0 = std::extent_slice(0, 2, 2);
+      auto s1 = std::extent_slice(1, 2, 2);
+      auto s2 = std::extent_slice(0, 3, 3);
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 3);
       VERIFY(sub_exts.extent(0) == 2);
@@ -132,9 +132,9 @@ template<template<int> typename Cw>
 
     {
       // selected = [0] x [1] x [2]
-      auto s0 = std::strided_slice(0, 1, 99);
-      auto s1 = std::strided_slice(1, 1, 99);
-      auto s2 = std::strided_slice(2, 1, 99);
+      auto s0 = std::extent_slice(0, 1, 99);
+      auto s1 = std::extent_slice(1, 1, 99);
+      auto s2 = std::extent_slice(2, 1, 99);
       auto sub_exts = std::subextents(exts, s0, s1, s2);
       VERIFY(sub_exts.rank() == 3);
       VERIFY(sub_exts.extent(0) == 1);
@@ -248,8 +248,8 @@ test_all()
   test_from_pair_all<IC>();
   test_from_const_int<CW>();
   test_from_const_int<IC>();
-  test_from_strided_slice<CW>();
-  test_from_strided_slice<IC>();
+  test_from_extent_slice<CW>();
+  test_from_extent_slice<IC>();
   test_from_triple_all<CW>();
   test_from_triple_all<IC>();
   test_from_int_like_in_tuple<StructuralInt>();
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
index 5b11424680df..2ff419ec50cd 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc
@@ -19,7 +19,7 @@ constexpr bool
 test_invalid_stride_zero()
 {
   auto exts = std::extents(3, 5, 7);
-  auto s = std::strided_slice{0, 2, 0};
+  auto s = std::extent_slice{0, 2, 0};
   auto sub_exts = std::subextents(exts, 1, s, 2);  // { dg-error "expansion of" }
   return true;
 }
@@ -33,13 +33,13 @@ test_out_of_bounds(const Slice& slice)
   auto sub_exts = std::subextents(exts, 1, slice, 2);  // { dg-error "expansion of" }
   return true;
 }
-static_assert(test_out_of_bounds(std::strided_slice{0, 6, 1}));  // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{0, 4, 2}));  // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{1, 6, 1}));  // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{1, 4, 2}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::extent_slice{0, 6, 1}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::extent_slice{0, 4, 2}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::extent_slice{1, 6, 1}));  // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::extent_slice{1, 4, 2}));  // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::tuple{1, 6}));             // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::tuple{std::cw<1>, std::cw<6>})); // { dg-error "expansion of" }
-static_assert(test_out_of_bounds(std::strided_slice{-1, 2, 1})); // { dg-error "expansion of" }
+static_assert(test_out_of_bounds(std::extent_slice{-1, 2, 1})); // { dg-error "expansion of" }
 static_assert(test_out_of_bounds(std::tuple{-1, 2}));            // { dg-error "expansion of" }
 
 // { dg-prune-output "cannot decompose class type 'NotASlice'" }
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc
index efd71d10f9d9..f52d752079ed 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc
@@ -34,7 +34,7 @@ template<typename Layout>
 
     auto exts = Traits::make_extents(std::dims<5, int>(3, 5, 7, 11, 13));
     auto m = typename Layout::mapping(exts);
-    auto s251 = std::strided_slice{2, 5, std::cw<1>};
+    auto s251 = std::extent_slice{2, 5, std::cw<1>};
 
     {
       auto slices = std::tuple{0, 0, 0, 0, 0};
@@ -44,7 +44,7 @@ template<typename Layout>
     }
 
     {
-      auto s0 = std::strided_slice{1, 1, std::cw<1>};
+      auto s0 = std::extent_slice{1, 1, std::cw<1>};
       auto slices = std::tuple{s0, all, all, s251, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = typename decltype(result.mapping)::layout_type;
@@ -52,7 +52,7 @@ template<typename Layout>
     }
 
     {
-      auto s0 = std::strided_slice{1, 2, std::cw<1>};
+      auto s0 = std::extent_slice{1, 2, std::cw<1>};
       auto slices = std::tuple{s0, all, all, s251, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = typename decltype(result.mapping)::layout_type;
@@ -60,7 +60,7 @@ template<typename Layout>
     }
 
     {
-      auto s0 = std::strided_slice{1, 2, std::cw<1>};
+      auto s0 = std::extent_slice{1, 2, std::cw<1>};
       auto slices = std::tuple{s0, 0, all, s251, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = typename decltype(result.mapping)::layout_type;
@@ -68,7 +68,7 @@ template<typename Layout>
     }
 
     {
-      auto s0 = std::strided_slice{1, 2, 1};
+      auto s0 = std::extent_slice{1, 2, 1};
       auto slices = std::tuple{s0, all, all, s251, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = decltype(result.mapping)::layout_type;
@@ -83,7 +83,7 @@ template<typename Layout>
     }
 
     {
-      auto s3 = std::strided_slice{2, std::cw<7>, std::cw<2>};
+      auto s3 = std::extent_slice{2, std::cw<7>, std::cw<2>};
       auto slices = std::tuple{all, all, all, s3, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = decltype(result.mapping)::layout_type;
@@ -101,7 +101,7 @@ template<typename Layout>
 
     auto exts = Traits::make_extents(std::dims<5, int>(3, 5, 7, 11, 13));
     auto m = typename Layout::mapping(exts);
-    auto s251 = std::strided_slice{2, 5, std::cw<1>};
+    auto s251 = std::extent_slice{2, 5, std::cw<1>};
 
     {
       auto slices = std::tuple{all, all, all, s251, 0};
@@ -121,7 +121,7 @@ template<typename Layout>
 
     auto exts = Traits::make_extents(std::dims<5, int>(3, 5, 7, 11, 13));
     auto m = typename Layout::mapping(exts);
-    auto s251 = std::strided_slice{2, 5, std::cw<1>};
+    auto s251 = std::extent_slice{2, 5, std::cw<1>};
 
     {
       auto slices = std::tuple{all, all, all, s251, 0};
@@ -140,7 +140,7 @@ template<typename Layout>
     }
 
     {
-      auto s121 = std::strided_slice{1, 2, std::cw<1>};
+      auto s121 = std::extent_slice{1, 2, std::cw<1>};
       auto slices = std::tuple{s121, 0, 0, 0, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = typename decltype(result.mapping)::layout_type;
@@ -149,7 +149,7 @@ template<typename Layout>
     }
 
     {
-      auto s121 = std::strided_slice{1, 2, std::cw<1>};
+      auto s121 = std::extent_slice{1, 2, std::cw<1>};
       auto slices = std::tuple{0, s121, 0, 0, 0};
       auto result = call_submdspan_mapping(m, Traits::make_tuple(slices));
       using layout_type = typename decltype(result.mapping)::layout_type;
@@ -163,8 +163,8 @@ template<typename Layout>
   test_layout_unpadded_padding_value()
   {
     using Traits = LayoutTraits<DeducePaddingSide::from_typename<Layout>()>;
-    auto s0 = std::strided_slice{size_t(1), size_t(2), std::cw<size_t(1)>};
-    auto s3 = std::strided_slice{size_t(2), size_t(5), std::cw<size_t(1)>};
+    auto s0 = std::extent_slice{size_t(1), size_t(2), std::cw<size_t(1)>};
+    auto s3 = std::extent_slice{size_t(2), size_t(5), std::cw<size_t(1)>};
 
     auto check = [&](auto exts, size_t expected)
     {
@@ -196,8 +196,8 @@ template<typename Layout>
   test_layout_padded_padding_value()
   {
     using Traits = LayoutTraits<DeducePaddingSide::from_typename<Layout>()>;
-    auto s0 = std::strided_slice{size_t(1), size_t(2), std::cw<size_t(1)>};
-    auto s3 = std::strided_slice{size_t(2), size_t(5), std::cw<size_t(1)>};
+    auto s0 = std::extent_slice{size_t(1), size_t(2), std::cw<size_t(1)>};
+    auto s3 = std::extent_slice{size_t(2), size_t(5), std::cw<size_t(1)>};
 
     auto check = [&](auto exts, size_t expected)
     {
@@ -235,8 +235,8 @@ test_layout_stride_return_types()
   auto m = std::layout_stride::mapping(exts, std::array{2, 12});
 
   using index_type = decltype(exts)::index_type;
-  auto s1 = std::strided_slice{index_type(2), index_type(2),
-			       std::cw<index_type(2)>};
+  auto s1 = std::extent_slice{index_type(2), index_type(2),
+			      std::cw<index_type(2)>};
   auto result = submdspan_mapping(m, index_type(1), s1);
   using layout_type = decltype(result.mapping)::layout_type;
   static_assert(std::same_as<layout_type, std::layout_stride>);
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
index 74fccc6f014b..8e673a084339 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc
@@ -73,47 +73,47 @@ static_assert(test_tuple_over<std::layout_stride>()); // { dg-error "expansion o
 
 template<typename Layout>
   constexpr bool
-  test_strided_slice_zero()
+  test_extent_slice_zero()
   {
-    check_slice_range<Layout>(1, std::strided_slice{1, 2, 0}, 2);  // { dg-error "expansion of" }
+    check_slice_range<Layout>(1, std::extent_slice{1, 2, 0}, 2);  // { dg-error "expansion of" }
     return true;
   }
-static_assert(test_strided_slice_zero<std::layout_left>());   // { dg-error "expansion of" }
-static_assert(test_strided_slice_zero<std::layout_right>());  // { dg-error "expansion of" }
-static_assert(test_strided_slice_zero<std::layout_stride>()); // { dg-error "expansion of" }
+static_assert(test_extent_slice_zero<std::layout_left>());   // { dg-error "expansion of" }
+static_assert(test_extent_slice_zero<std::layout_right>());  // { dg-error "expansion of" }
+static_assert(test_extent_slice_zero<std::layout_stride>()); // { dg-error "expansion of" }
 
 template<typename Layout>
   constexpr bool
-  test_strided_slice_offset_under()
+  test_extent_slice_offset_under()
   {
-    check_slice_range<Layout>(1, std::strided_slice{-1, 1, 1}, 2);   // { dg-error "expansion of" }
+    check_slice_range<Layout>(1, std::extent_slice{-1, 1, 1}, 2);   // { dg-error "expansion of" }
     return true;
   }
-static_assert(test_strided_slice_offset_under<std::layout_left>());   // { dg-error "expansion of" }
-static_assert(test_strided_slice_offset_under<std::layout_right>());  // { dg-error "expansion of" }
-static_assert(test_strided_slice_offset_under<std::layout_stride>()); // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_under<std::layout_left>());   // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_under<std::layout_right>());  // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_under<std::layout_stride>()); // { dg-error "expansion of" }
 
 template<typename Layout>
   constexpr bool
-  test_strided_slice_offset_over()
+  test_extent_slice_offset_over()
   {
-    check_slice_range<Layout>(1, std::strided_slice{6, 0, 1}, 2);    // { dg-error "expansion of" }
+    check_slice_range<Layout>(1, std::extent_slice{6, 0, 1}, 2);    // { dg-error "expansion of" }
     return true;
   }
-static_assert(test_strided_slice_offset_over<std::layout_left>());   // { dg-error "expansion of" }
-static_assert(test_strided_slice_offset_over<std::layout_right>());  // { dg-error "expansion of" }
-static_assert(test_strided_slice_offset_over<std::layout_stride>()); // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_over<std::layout_left>());   // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_over<std::layout_right>());  // { dg-error "expansion of" }
+static_assert(test_extent_slice_offset_over<std::layout_stride>()); // { dg-error "expansion of" }
 
 template<typename Layout>
   constexpr bool
-  test_strided_slice_extent_over()
+  test_extent_slice_extent_over()
   {
-    check_slice_range<Layout>(1, std::strided_slice{1, 5, 1}, 2);    // { dg-error "expansion of" }
+    check_slice_range<Layout>(1, std::extent_slice{1, 5, 1}, 2);    // { dg-error "expansion of" }
     return true;
   }
-static_assert(test_strided_slice_extent_over<std::layout_left>());   // { dg-error "expansion of" }
-static_assert(test_strided_slice_extent_over<std::layout_right>());  // { dg-error "expansion of" }
-static_assert(test_strided_slice_extent_over<std::layout_stride>()); // { dg-error "expansion of" }
+static_assert(test_extent_slice_extent_over<std::layout_left>());   // { dg-error "expansion of" }
+static_assert(test_extent_slice_extent_over<std::layout_right>());  // { dg-error "expansion of" }
+static_assert(test_extent_slice_extent_over<std::layout_stride>()); // { dg-error "expansion of" }
 
 // { dg-prune-output "static assertion failed" }
 // { dg-prune-output "__glibcxx_assert_fail" }

From redi@gcc.gnu.org  Thu Apr  2 13:25:46 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:25:46 +0000 (GMT)
Subject: [gcc r16-8415] libstdc++: Use __cpp_lib_map_try_emplace feature test
 macro
Message-ID: <20260402132546.EE37D4BA2E2B@sourceware.org>

https://gcc.gnu.org/g:8be7d5deb0679dbd3c4e7e4717ec65021a97faaf

commit r16-8415-g8be7d5deb0679dbd3c4e7e4717ec65021a97faaf
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:16:38 2026 +0100

    libstdc++: Use __cpp_lib_map_try_emplace feature test macro
    
    Check the relevant macro for insert_or_assign members, instead of just
    checking the value of __cplusplus.
    
    Also use Doxygen grouping to make docs for try_emplace apply to all
    three overloads.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/stl_map.h | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index 72a7392dbb77..1e119a95b5cd 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -870,6 +870,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  to the first is returned.
        *
        *  Insertion requires logarithmic time (if the hint is not taken).
+       *
+       *  @{
        */
       template <typename... _Args>
 	iterator
@@ -906,7 +908,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	    __i = iterator(__true_hint.first);
 	  return __i;
 	}
-#endif
 
 #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
       template <__heterogeneous_tree_key<map> _Kt, typename ..._Args>
@@ -927,6 +928,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  return __i;
 	}
 #endif
+      /// @}
+#endif // __glibcxx_map_try_emplace
 
       /**
        *  @brief Attempts to insert a std::pair into the %map.
@@ -1074,7 +1077,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	insert(_InputIterator __first, _InputIterator __last)
 	{ _M_t._M_insert_range_unique(__first, __last); }
 
-#if __cplusplus > 201402L
+#ifdef __glibcxx_map_try_emplace // >= C++17 && HOSTED
       /**
        *  @brief Attempts to insert or assign a std::pair into the %map.
        *  @param __k    Key to use for finding a possibly existing pair in
@@ -1150,9 +1153,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	}
 #endif
       ///@}
-#endif
 
-#if __cplusplus > 201402L
       ///@{
       /**
        *  @brief Attempts to insert or assign a std::pair into the %map.
@@ -1238,7 +1239,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	}
 #endif
       ///@}
-#endif
+#endif // __glibcxx_map_try_emplace
 
 #if __cplusplus >= 201103L
       // _GLIBCXX_RESOLVE_LIB_DEFECTS

From redi@gcc.gnu.org  Thu Apr  2 13:25:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:25:52 +0000 (GMT)
Subject: [gcc r16-8416] libstdc++: Update Doxygen config to 1.17.0
Message-ID: <20260402132552.252D54BA9025@sourceware.org>

https://gcc.gnu.org/g:1f8cceab3de618fb40916e577569fccea96896c9

commit r16-8416-g1f8cceab3de618fb40916e577569fccea96896c9
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 10:37:09 2026 +0100

    libstdc++: Update Doxygen config to 1.17.0
    
    The changes were done automatically using 'doxygen -u' to rebase the
    config on Doxygen 1.17.0, which added a number of new config options and
    removed HTML_TIMESTAMP and LATEX_TIMESTAMP.
    
    libstdc++-v3/ChangeLog:
    
            * doc/doxygen/user.cfg.in: Update Doxygen config.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/doxygen/user.cfg.in | 1252 ++++++++++++++++++++++++----------
 1 file changed, 907 insertions(+), 345 deletions(-)

diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in
index 8969bb8b9489..bdcb19c56faa 100644
--- a/libstdc++-v3/doc/doxygen/user.cfg.in
+++ b/libstdc++-v3/doc/doxygen/user.cfg.in
@@ -1,7 +1,7 @@
-# Doxyfile 1.8.20
+# Doxyfile 1.17.0
 
 # This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
+# Doxygen (www.doxygen.org) for a project.
 #
 # All text after a double hash (##) is considered a comment and is placed in
 # front of the TAG it is preceding.
@@ -12,6 +12,16 @@
 # For lists, items can also be appended using:
 # TAG += value [value, ...]
 # Values that contain spaces should be placed between quotes (\" \").
+#
+# Note:
+#
+# Use Doxygen to compare the used configuration file with the template
+# configuration file:
+# doxygen -x [configFile]
+# Use Doxygen to compare the used configuration file with the template
+# configuration file without replacing the environment variables or CMake type
+# replacement variables:
+# doxygen -x_noenv [configFile]
 
 #---------------------------------------------------------------------------
 # Project related configuration options
@@ -41,7 +51,7 @@ PROJECT_NAME           = libstdc++
 PROJECT_NUMBER         =
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
+# for a project that appears at the top of each page and should give viewers a
 # quick idea about the purpose of the project. Keep the description short.
 
 PROJECT_BRIEF          =
@@ -53,24 +63,42 @@ PROJECT_BRIEF          =
 
 PROJECT_LOGO           =
 
+# With the PROJECT_ICON tag one can specify an icon that is included in the tabs
+# when the HTML document is shown. Doxygen will copy the logo to the output
+# directory.
+
+PROJECT_ICON           =
+
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
 # into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
+# entered, it will be relative to the location where Doxygen was started. If
 # left blank the current directory will be used.
 
 OUTPUT_DIRECTORY       = @outdir@
 
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
+# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096
+# sub-directories (in 2 levels) under the output directory of each output format
+# and will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding Doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise cause
+# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
+# control the number of sub-directories.
 # The default value is: NO.
 
 CREATE_SUBDIRS         = NO
 
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# Controls the number of sub-directories that will be created when
+# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
+# level increment doubles the number of directories, resulting in 4096
+# directories at level 8 which is the default and also the maximum value. The
+# sub-directories are organized in 2 levels, the first level always has a fixed
+# number of 16 directories.
+# Minimum value: 0, maximum value: 8, default value: 8.
+# This tag requires that the tag CREATE_SUBDIRS is set to YES.
+
+CREATE_SUBDIRS_LEVEL   = 8
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII
 # characters to appear in the names of generated files. If set to NO, non-ASCII
 # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
 # U+3044.
@@ -79,28 +107,28 @@ CREATE_SUBDIRS         = NO
 ALLOW_UNICODE_NAMES    = NO
 
 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
+# documentation generated by Doxygen is written. Doxygen will use this
 # information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
+# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
+# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
+# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
+# English messages), Korean, Korean-en (Korean with English messages), Latvian,
+# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
+# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
+# Swedish, Turkish, Ukrainian and Vietnamese.
 # The default value is: English.
 
 OUTPUT_LANGUAGE        = English
 
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member
 # descriptions after the members that are listed in the file and class
 # documentation (similar to Javadoc). Set to NO to disable this.
 # The default value is: YES.
 
 BRIEF_MEMBER_DESC      = @do_man@
 
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief
 # description of a member or function before the detailed description
 #
 # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
@@ -121,13 +149,13 @@ REPEAT_BRIEF           = YES
 ABBREVIATE_BRIEF       =
 
 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
+# Doxygen will generate a detailed section even if there is only a brief
 # description.
 # The default value is: NO.
 
 ALWAYS_DETAILED_SEC    = YES
 
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all
 # inherited members of a class in the documentation of that class as if those
 # members were ordinary class members. Constructors, destructors and assignment
 # operators of the base classes will not be shown.
@@ -135,7 +163,7 @@ ALWAYS_DETAILED_SEC    = YES
 
 INLINE_INHERITED_MEMB  = YES
 
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path
 # before files name in the file list and in the header files. If set to NO the
 # shortest path that makes the file name unique will be used
 # The default value is: YES.
@@ -145,11 +173,11 @@ FULL_PATH_NAMES        = NO
 # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
 # Stripping is only done if one of the specified strings matches the left-hand
 # part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
+# If left blank the directory from which Doxygen is run is used as the path to
 # strip.
 #
 # Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
+# will be relative from the directory where Doxygen is started.
 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
 
 STRIP_FROM_PATH        = @srcdir@/doc/ @srcdir@/libsupc++/ include/
@@ -163,41 +191,42 @@ STRIP_FROM_PATH        = @srcdir@/doc/ @srcdir@/libsupc++/ include/
 
 STRIP_FROM_INC_PATH    =
 
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
+# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but
+# less readable) file names. This can be useful if your file system doesn't
 # support long names like on DOS, Mac, or CD-ROM.
 # The default value is: NO.
 
 SHORT_NAMES            = @shortname@
 
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the
+# first line (until the first dot, question mark or exclamation mark) of a
+# Javadoc-style comment as the brief description. If set to NO, the Javadoc-
+# style will behave just like regular Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.)
 # The default value is: NO.
 
 JAVADOC_AUTOBRIEF      = NO
 
-# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
+# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line
 # such as
 # /***************
 # as being the beginning of a Javadoc-style comment "banner". If set to NO, the
 # Javadoc-style will behave just like regular comments and it will not be
-# interpreted by doxygen.
+# interpreted by Doxygen.
 # The default value is: NO.
 
 JAVADOC_BANNER         = NO
 
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first
+# line (until the first dot, question mark or exclamation mark) of a Qt-style
+# comment as the brief description. If set to NO, the Qt-style will behave just
+# like regular Qt-style comments (thus requiring an explicit \brief command for
+# a brief description.)
 # The default value is: NO.
 
 QT_AUTOBRIEF           = NO
 
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a
 # multi-line C++ special comment block (i.e. a block of //! or /// comments) as
 # a brief description. This used to be the default behavior. The new default is
 # to treat a multi-line C++ comment block as a detailed description. Set this
@@ -209,10 +238,10 @@ QT_AUTOBRIEF           = NO
 
 MULTILINE_CPP_IS_BRIEF = YES
 
-# By default Python docstrings are displayed as preformatted text and doxygen's
+# By default Python docstrings are displayed as preformatted text and Doxygen's
 # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
-# doxygen's special commands can be used and the contents of the docstring
-# documentation blocks is shown as doxygen documentation.
+# Doxygen's special commands can be used and the contents of the docstring
+# documentation blocks is shown as Doxygen documentation.
 # The default value is: YES.
 
 PYTHON_DOCSTRING       = YES
@@ -223,7 +252,7 @@ PYTHON_DOCSTRING       = YES
 
 INHERIT_DOCS           = YES
 
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new
 # page for each member. If set to NO, the documentation of a member will be part
 # of the file/class/namespace that contains it.
 # The default value is: NO.
@@ -240,16 +269,16 @@ TAB_SIZE               = 8
 # the documentation. An alias has the form:
 # name=value
 # For example adding
-# "sideeffect=@par Side Effects:\n"
+# "sideeffect=@par Side Effects:^^"
 # will allow you to put the command \sideeffect (or @sideeffect) in the
 # documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines (in the resulting output). You can put ^^ in the value part of an
-# alias to insert a newline as if a physical newline was in the original file.
-# When you need a literal { or } or , in the value part of an alias you have to
-# escape them by means of a backslash (\), this can lead to conflicts with the
-# commands \{ and \} for these it is advised to use the version @{ and @} or use
-# a double escape (\\{ and \\})
+# "Side Effects:". Note that you cannot put \n's in the value part of an alias
+# to insert newlines (in the resulting output). You can put ^^ in the value part
+# of an alias to insert a newline as if a physical newline was in the original
+# file. When you need a literal { or } or , in the value part of an alias you
+# have to escape them by means of a backslash (\), this can lead to conflicts
+# with the commands \{ and \} for these it is advised to use the version @{ and
+# @} or use a double escape (\\{ and \\})
 
 ALIASES                = "doctodo=@todo Needs documentation! See http://gcc.gnu.org/onlinedocs/libstdc++/manual/documentation_style.html" \
                          "headername{1}=Instead, include \<\1\>." \
@@ -295,58 +324,95 @@ OPTIMIZE_OUTPUT_SLICE  = NO
 # parses. With this tag you can assign which parser to use for a given
 # extension. Doxygen has a built-in mapping, but you can override or extend it
 # using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
-# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,
-# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
+# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript,
+# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
+# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
 # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
 # tries to guess whether the code is fixed or free formatted code, this is the
-# default for Fortran type files). For instance to make doxygen treat .inc files
+# default for Fortran type files). For instance to make Doxygen treat .inc files
 # as Fortran files (default is PHP), and .f files as C (default is Fortran),
 # use: inc=Fortran f=C.
 #
 # Note: For files without extension you can use no_extension as a placeholder.
 #
 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
+# the files are not read by Doxygen. When specifying no_extension you should add
+# * to the FILE_PATTERNS.
+#
+# Note see also the list of default file extension mappings.
 
 EXTENSION_MAPPING      = no_extension=C++ \
                          .h=C++ \
                          .tcc=C++ \
                          .hpp=C++
 
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments
 # according to the Markdown format, which allows for more readable
 # documentation. See https://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# The output of markdown processing is further processed by Doxygen, so you can
+# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in
 # case of backward compatibilities issues.
 # The default value is: YES.
 
 MARKDOWN_SUPPORT       = YES
 
+# If the MARKDOWN_STRICT tag is enabled then Doxygen treats text in comments as
+# Markdown formatted also in cases where Doxygen's native markup format
+# conflicts with that of Markdown. This is only relevant in cases where
+# backticks are used. Doxygen's native markup style allows a single quote to end
+# a text fragment started with a backtick and then treat it as a piece of quoted
+# text, whereas in Markdown such text fragment is treated as verbatim and only
+# ends when a second matching backtick is found. Also, Doxygen's native markup
+# format requires double quotes to be escaped when they appear in a backtick
+# section, whereas this is not needed for Markdown.
+# The default value is: YES.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+MARKDOWN_STRICT        = YES
+
 # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
 # to that level are automatically included in the table of contents, even if
 # they do not have an id attribute.
 # Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 5.
+# Minimum value: 0, maximum value: 99, default value: 6.
 # This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
 
 TOC_INCLUDE_HEADINGS   = 0
 
-# When enabled doxygen tries to link words that correspond to documented
+# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
+# generate identifiers for the Markdown headings. Note: Every identifier is
+# unique.
+# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
+# sequence number starting at 0 and GITHUB use the lower case version of title
+# with any whitespace replaced by '-' and punctuation characters removed.
+# The default value is: DOXYGEN.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+MARKDOWN_ID_STYLE      = DOXYGEN
+
+# When enabled Doxygen tries to link words that correspond to documented
 # classes, or namespaces to their corresponding documentation. Such a link can
 # be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
+# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the
+# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking.
 # The default value is: YES.
 
 AUTOLINK_SUPPORT       = NO
 
+# This tag specifies a list of words that, when matching the start of a word in
+# the documentation, will suppress auto links generation, if it is enabled via
+# AUTOLINK_SUPPORT. This list does not affect links explicitly created using #
+# or the \link or \ref commands.
+# This tag requires that the tag AUTOLINK_SUPPORT is set to YES.
+
+AUTOLINK_IGNORE_WORDS  =
+
 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
 # to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
+# tag to YES in order to let Doxygen match functions declarations and
 # definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
+# versus func(std::string) {}). This also makes the inheritance and
+# collaboration diagrams that involve STL classes more complete and accurate.
 # The default value is: NO.
 
 BUILTIN_STL_SUPPORT    = NO
@@ -358,16 +424,16 @@ BUILTIN_STL_SUPPORT    = NO
 CPP_CLI_SUPPORT        = NO
 
 # Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
+# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse
+# them like normal C++ but will assume all classes use public instead of private
+# inheritance when no explicit protection keyword is present.
 # The default value is: NO.
 
 SIP_SUPPORT            = NO
 
 # For Microsoft's IDL there are propget and propput attributes to indicate
 # getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
+# Doxygen to replace the get and set methods by a property in the documentation.
 # This will only work if the methods are indeed getting or setting a simple
 # type. If this is not the case, or you want to show the methods anyway, you
 # should set this option to NO.
@@ -376,7 +442,7 @@ SIP_SUPPORT            = NO
 IDL_PROPERTY_SUPPORT   = NO
 
 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
+# tag is set to YES then Doxygen will reuse the documentation of the first
 # member in the group (if any) for the other members of the group. By default
 # all members of a group must be documented explicitly.
 # The default value is: NO.
@@ -434,34 +500,42 @@ TYPEDEF_HIDES_STRUCT   = NO
 # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
 # cache is used to resolve symbols given their name and scope. Since this can be
 # an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
+# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# Doxygen will become slower. If the cache is too large, memory is wasted. The
 # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
 # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
+# symbols. At the end of a run Doxygen will report the cache usage and suggest
 # the optimal cache size from a speed point of view.
 # Minimum value: 0, maximum value: 9, default value: 0.
 
 LOOKUP_CACHE_SIZE      = 0
 
-# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use
-# during processing. When set to 0 doxygen will based this on the number of
+# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use
+# during processing. When set to 0 Doxygen will based this on the number of
 # cores available in the system. You can set it explicitly to a value larger
 # than 0 to get more control over the balance between CPU load and processing
 # speed. At this moment only the input processing can be done using multiple
 # threads. Since this is still an experimental feature the default is set to 1,
-# which efficively disables parallel processing. Please report any issues you
+# which effectively disables parallel processing. Please report any issues you
 # encounter. Generating dot graphs in parallel is controlled by the
 # DOT_NUM_THREADS setting.
-# Minimum value: 0, maximum value: 32, default value: 1.
+# Minimum value: 0, maximum value: 512, default value: 1.
 
 NUM_PROC_THREADS       = 1
 
+# If the TIMESTAMP tag is set different from NO then each generated page will
+# contain the date or date and time when the page was generated. Setting this to
+# NO can help when comparing the output of multiple runs.
+# Possible values are: YES, NO, DATETIME and DATE.
+# The default value is: NO.
+
+TIMESTAMP              = NO
+
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
 
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in
 # documentation are documented, even if no documentation was available. Private
 # class members and static file members will be hidden unless the
 # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
@@ -520,7 +594,14 @@ EXTRACT_LOCAL_METHODS  = YES
 
 EXTRACT_ANON_NSPACES   = NO
 
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# If this flag is set to YES, the name of an unnamed parameter in a declaration
+# will be determined by the corresponding definition. By default unnamed
+# parameters remain unnamed in the output.
+# The default value is: YES.
+
+RESOLVE_UNNAMED_PARAMS = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
 # undocumented members inside documented classes or files. If set to NO these
 # members will be included in the various overviews, but no documentation
 # section is generated. This option has no effect if EXTRACT_ALL is enabled.
@@ -528,22 +609,31 @@ EXTRACT_ANON_NSPACES   = NO
 
 HIDE_UNDOC_MEMBERS     = NO
 
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
 # undocumented classes that are normally visible in the class hierarchy. If set
 # to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
+# will also hide undocumented C++ concepts if enabled. This option has no effect
+# if EXTRACT_ALL is enabled.
 # The default value is: NO.
 
 HIDE_UNDOC_CLASSES     = YES
 
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all
+# undocumented namespaces that are normally visible in the namespace hierarchy.
+# If set to NO, these namespaces will be included in the various overviews. This
+# option has no effect if EXTRACT_ALL is enabled.
+# The default value is: YES.
+
+HIDE_UNDOC_NAMESPACES  = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend
 # declarations. If set to NO, these declarations will be included in the
 # documentation.
 # The default value is: NO.
 
 HIDE_FRIEND_COMPOUNDS  = NO
 
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
 # documentation blocks found inside the body of a function. If set to NO, these
 # blocks will be appended to the function's detailed documentation block.
 # The default value is: NO.
@@ -557,23 +647,31 @@ HIDE_IN_BODY_DOCS      = NO
 
 INTERNAL_DOCS          = NO
 
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# (including Cygwin) and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
+# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be
+# able to match the capabilities of the underlying filesystem. In case the
+# filesystem is case sensitive (i.e. it supports files in the same directory
+# whose names only differ in casing), the option must be set to YES to properly
+# deal with such files in case they appear in the input. For filesystems that
+# are not case sensitive the option should be set to NO to properly deal with
+# output files written for symbols that only differ in casing, such as for two
+# classes, one named CLASS and the other named Class, and to also support
+# references to files without having to specify the exact matching casing. On
+# Windows (including Cygwin) and macOS, users should typically set this option
+# to NO, whereas on Linux or other Unix flavors it should typically be set to
+# YES.
+# Possible values are: SYSTEM, NO and YES.
+# The default value is: SYSTEM.
 
 CASE_SENSE_NAMES       = NO
 
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with
 # their full class and namespace scopes in the documentation. If set to YES, the
 # scope will be hidden.
 # The default value is: NO.
 
 HIDE_SCOPE_NAMES       = NO
 
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will
 # append additional text to a page's title, such as Class Reference. If set to
 # YES the compound reference will be hidden.
 # The default value is: NO.
@@ -586,7 +684,7 @@ HIDE_COMPOUND_REFERENCE= NO
 
 SHOW_HEADERFILE        = YES
 
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of
 # the files that are included by a file in the documentation of that file.
 # The default value is: YES.
 
@@ -599,7 +697,7 @@ SHOW_INCLUDE_FILES     = NO
 
 SHOW_GROUPED_MEMB_INC  = NO
 
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include
 # files with double quotes in the documentation rather than with sharp brackets.
 # The default value is: NO.
 
@@ -611,14 +709,14 @@ FORCE_LOCAL_INCLUDES   = NO
 
 INLINE_INFO            = YES
 
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the
 # (detailed) documentation of file and class members alphabetically by member
 # name. If set to NO, the members will appear in declaration order.
 # The default value is: YES.
 
 SORT_MEMBER_DOCS       = YES
 
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief
 # descriptions of file, namespace and class members alphabetically by member
 # name. If set to NO, the members will appear in declaration order. Note that
 # this will also influence the order of the classes in the class list.
@@ -626,7 +724,7 @@ SORT_MEMBER_DOCS       = YES
 
 SORT_BRIEF_DOCS        = YES
 
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the
 # (brief and detailed) documentation of class members so that constructors and
 # destructors are listed first. If set to NO the constructors will appear in the
 # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
@@ -638,7 +736,7 @@ SORT_BRIEF_DOCS        = YES
 
 SORT_MEMBERS_CTORS_1ST = YES
 
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy
 # of group names into alphabetical order. If set to NO the group names will
 # appear in their defined order.
 # The default value is: NO.
@@ -655,11 +753,11 @@ SORT_GROUP_NAMES       = YES
 
 SORT_BY_SCOPE_NAME     = NO
 
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper
 # type resolution of all parameters of a function it will reject a match between
 # the prototype and the implementation of a member function even if there is
 # only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still
 # accept a match between prototype and implementation in such cases.
 # The default value is: NO.
 
@@ -690,6 +788,27 @@ GENERATE_BUGLIST       = NO
 
 GENERATE_DEPRECATEDLIST= YES
 
+# The GENERATE_REQUIREMENTS tag can be used to enable (YES) or disable (NO) the
+# requirements page. When enabled, this page is automatically created when at
+# least one comment block with a \requirement command appears in the input.
+# The default value is: YES.
+
+GENERATE_REQUIREMENTS  = YES
+
+# The REQ_TRACEABILITY_INFO tag controls if traceability information is shown on
+# the requirements page (only relevant when using \requirement comment blocks).
+# The setting NO will disable the traceability information altogether. The
+# setting UNSATISFIED_ONLY will show a list of requirements that are missing a
+# satisfies relation (through the command: \satisfies). Similarly the setting
+# UNVERIFIED_ONLY will show a list of requirements that are missing a verifies
+# relation (through the command: \verifies). Setting the tag to YES (the
+# default) will show both lists if applicable.
+# Possible values are: YES, NO, UNSATISFIED_ONLY and UNVERIFIED_ONLY.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_REQUIREMENTS is set to YES.
+
+REQ_TRACEABILITY_INFO  = YES
+
 # The ENABLED_SECTIONS tag can be used to enable conditional documentation
 # sections, marked by \if <section_label> ... \endif and \cond <section_label>
 # ... \endcond blocks.
@@ -729,24 +848,25 @@ SHOW_FILES             = YES
 SHOW_NAMESPACES        = YES
 
 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
+# Doxygen should invoke to get the current version for each file (typically from
 # the version control system). Doxygen will invoke the program by executing (via
 # popen()) the command command input-file, where command is the value of the
 # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
+# by Doxygen. Whatever the program writes to standard output is used as the file
 # version. For an example see the documentation.
 
 FILE_VERSION_FILTER    =
 
 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
+# by Doxygen. The layout file controls the global structure of the generated
 # output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
+# that represents Doxygen's defaults, run Doxygen with the -l option. You can
 # optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
+# will be used as the name of the layout file. See also section "Changing the
+# layout of pages" for information.
 #
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# Note that if you run Doxygen from a directory containing a file called
+# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE
 # tag is left empty.
 
 LAYOUT_FILE            =
@@ -761,19 +881,35 @@ LAYOUT_FILE            =
 
 CITE_BIB_FILES         =
 
+# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH
+# environment variable) so that external tools such as latex and gs can be
+# found.
+# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the
+# path already specified by the PATH variable, and are added in the order
+# specified.
+# Note: This option is particularly useful for macOS version 14 (Sonoma) and
+# higher, when running Doxygen from Doxywizard, because in this case any user-
+# defined changes to the PATH are ignored. A typical example on macOS is to set
+# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin
+# together with the standard path, the full search path used by doxygen when
+# launching external tools will then become
+# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+
+EXTERNAL_TOOL_PATH     =
+
 #---------------------------------------------------------------------------
 # Configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 
 # The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
+# standard output by Doxygen. If QUIET is set to YES this implies that the
 # messages are off.
 # The default value is: NO.
 
 QUIET                  = YES
 
 # The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES
 # this implies that the warnings are on.
 #
 # Tip: Turn warnings on while writing the documentation.
@@ -781,49 +917,97 @@ QUIET                  = YES
 
 WARNINGS               = YES
 
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate
 # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
 # will automatically be disabled.
 # The default value is: YES.
 
 WARN_IF_UNDOCUMENTED   = NO
 
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
+# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for
+# potential errors in the documentation, such as documenting some parameters in
+# a documented function twice, or documenting parameters that don't exist or
+# using markup commands wrongly.
 # The default value is: YES.
 
 WARN_IF_DOC_ERROR      = YES
 
+# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete
+# function parameter documentation. If set to NO, Doxygen will accept that some
+# parameters have no documentation without warning.
+# The default value is: YES.
+
+WARN_IF_INCOMPLETE_DOC = YES
+
 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
 # are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation. If
-# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
+# value. If set to NO, Doxygen will only warn about wrong parameter
+# documentation, but not about the absence of documentation. If EXTRACT_ALL is
+# set to YES then this flag will automatically be disabled. See also
+# WARN_IF_INCOMPLETE_DOC
 # The default value is: NO.
 
 WARN_NO_PARAMDOC       = NO
 
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered.
+# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about
+# undocumented enumeration values. If set to NO, Doxygen will accept
+# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: NO.
+
+WARN_IF_UNDOC_ENUM_VAL = NO
+
+# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found
+# while parsing the user defined layout file, such as missing or wrong elements.
+# See also LAYOUT_FILE for details. If set to NO, problems with the layout file
+# will be suppressed.
+# The default value is: YES.
+
+WARN_LAYOUT_FILE       = YES
+
+# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when
+# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
+# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
+# at the end of the Doxygen process Doxygen will return with a non-zero status.
+# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves
+# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not
+# write the warning messages in between other messages but write them at the end
+# of a run, in case a WARN_LOGFILE is defined the warning messages will be
+# besides being in the defined file also be shown at the end of a run, unless
+# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case
+# the behavior will remain as with the setting FAIL_ON_WARNINGS.
+# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT.
 # The default value is: NO.
 
 WARN_AS_ERROR          = NO
 
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# The WARN_FORMAT tag determines the format of the warning messages that Doxygen
 # can produce. The string should contain the $file, $line, and $text tags, which
 # will be replaced by the file and line number from which the warning originated
 # and the warning text. Optionally the format may contain $version, which will
 # be replaced by the version of the file (if it could be obtained via
 # FILE_VERSION_FILTER)
+# See also: WARN_LINE_FORMAT
 # The default value is: $file:$line: $text.
 
-WARN_FORMAT            = "$file:$line: $text  "
+WARN_FORMAT            = "$file:$line: $text "
+
+# In the $text part of the WARN_FORMAT command it is possible that a reference
+# to a more specific place is given. To make it easier to jump to this place
+# (outside of Doxygen) the user can define a custom "cut" / "paste" string.
+# Example:
+# WARN_LINE_FORMAT = "'vi $file +$line'"
+# See also: WARN_FORMAT
+# The default value is: at line $line of file $file.
+
+WARN_LINE_FORMAT       = "at line $line of file $file"
 
 # The WARN_LOGFILE tag can be used to specify a file to which warning and error
 # messages should be written. If left blank the output is written to standard
-# error (stderr).
+# error (stderr). In case the file specified cannot be opened for writing the
+# warning and error messages are written to standard error. When as file - is
+# specified the warning and error messages are written to standard output
+# (stdout).
 
 WARN_LOGFILE           =
 
@@ -1061,29 +1245,42 @@ INPUT                  = @srcdir@/doc/doxygen/doxygroups.cc \
                          include/ext/pb_ds/detail/unordered_iterator
 
 # This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses
 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
-# possible encodings.
+# documentation (see:
+# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
+# See also: INPUT_FILE_ENCODING
 # The default value is: UTF-8.
 
 INPUT_ENCODING         = UTF-8
 
+# This tag can be used to specify the character encoding of the source files
+# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify
+# character encoding on a per file pattern basis. Doxygen will compare the file
+# name with each pattern and apply the encoding instead of the default
+# INPUT_ENCODING if there is a match. The character encodings are a list of the
+# form: pattern=encoding (like *.php=ISO-8859-1).
+# See also: INPUT_ENCODING for further information on supported encodings.
+
+INPUT_FILE_ENCODING    =
+
 # If the value of the INPUT tag contains directories, you can use the
 # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
 # *.h) to filter out the source-files in the directories.
 #
 # Note that for custom extensions or not directly supported extensions you also
 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
+# read by Doxygen.
+#
+# Note the list of default checked file patterns might differ from the list of
+# default file extension mappings.
 #
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
-# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),
-# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen
-# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
-# *.vhdl, *.ucf, *.qsf and *.ice.
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm,
+# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl,
+# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php,
+# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be
+# provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
 
 FILE_PATTERNS          = *.h \
                          *.hpp \
@@ -1099,7 +1296,7 @@ RECURSIVE              = NO
 # excluded from the INPUT source files. This way you can easily exclude a
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 #
-# Note that relative paths are relative to the directory from which doxygen is
+# Note that relative paths are relative to the directory from which Doxygen is
 # run.
 
 EXCLUDE                = Makefile \
@@ -1131,8 +1328,8 @@ EXCLUDE_PATTERNS       = stamp-* \
 # (namespaces, classes, functions, etc.) that should be excluded from the
 # output. The symbol name can be a fully qualified name, a word, or if the
 # wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
+# ANamespace::AClass, ANamespace::*Test
+
 # Note that the wildcards are matched against the file with absolute path, so to
 # exclude all test directories use the pattern */test/*
 
@@ -1164,7 +1361,7 @@ EXAMPLE_RECURSIVE      = NO
 
 IMAGE_PATH             =
 
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# The INPUT_FILTER tag can be used to specify a program that Doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
 # by executing (via popen()) the command:
 #
@@ -1179,9 +1376,14 @@ IMAGE_PATH             =
 # code is scanned, but not when the output code is generated. If lines are added
 # or removed, the anchors will not be placed correctly.
 #
+# Note that Doxygen will use the data processed and written to standard output
+# for further processing, therefore nothing else, like debug statements or used
+# commands (so in case of a Windows batch file always use @echo OFF), should be
+# written to standard output.
+#
 # Note that for custom extensions or not directly supported extensions you also
 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
+# properly processed by Doxygen.
 
 INPUT_FILTER           =
 
@@ -1194,7 +1396,7 @@ INPUT_FILTER           =
 #
 # Note that for custom extensions or not directly supported extensions you also
 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
+# properly processed by Doxygen.
 
 FILTER_PATTERNS        =
 
@@ -1216,10 +1418,28 @@ FILTER_SOURCE_PATTERNS =
 # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
 # is part of the input, its contents will be placed on the main page
 # (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
+# and want to reuse the introduction page also for the Doxygen output.
 
 USE_MDFILE_AS_MAINPAGE =
 
+# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub-
+# directories of the project's root, is used as the documentation for that sub-
+# directory, except when the README.md starts with a \dir, \page or \mainpage
+# command. If set to NO, the README.md file needs to start with an explicit \dir
+# command in order to be used as directory documentation.
+# The default value is: YES.
+
+IMPLICIT_DIR_DOCS      = YES
+
+# The Fortran standard specifies that for fixed formatted Fortran code all
+# characters from position 72 are to be considered as comment. A common
+# extension is to allow longer lines before the automatic comment starts. The
+# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can
+# be processed before the automatic comment starts.
+# Minimum value: 7, maximum value: 10000, default value: 72.
+
+FORTRAN_COMMENT_AFTER  = 72
+
 #---------------------------------------------------------------------------
 # Configuration options related to source browsing
 #---------------------------------------------------------------------------
@@ -1234,12 +1454,13 @@ USE_MDFILE_AS_MAINPAGE =
 SOURCE_BROWSER         = @do_html@
 
 # Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
+# multi-line macros, enums or list initialized variables directly into the
+# documentation.
 # The default value is: NO.
 
 INLINE_SOURCES         = NO
 
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any
 # special comment blocks from generated source code fragments. Normal C, C++ and
 # Fortran comments will always remain visible.
 # The default value is: YES.
@@ -1277,7 +1498,7 @@ REFERENCES_LINK_SOURCE = YES
 SOURCE_TOOLTIPS        = YES
 
 # If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# point to the HTML generated by the htags(1) tool instead of Doxygen built-in
 # source browser. The htags tool is part of GNU's global source tagging system
 # (see https://www.gnu.org/software/global/global.html). You will need version
 # 4.8.6 or higher.
@@ -1291,14 +1512,14 @@ SOURCE_TOOLTIPS        = YES
 # Doxygen will invoke htags (and that will in turn invoke gtags), so these
 # tools must be available from the command line (i.e. in the search path).
 #
-# The result: instead of the source browser generated by doxygen, the links to
+# The result: instead of the source browser generated by Doxygen, the links to
 # source code will now point to the output of htags.
 # The default value is: NO.
 # This tag requires that the tag SOURCE_BROWSER is set to YES.
 
 USE_HTAGS              = NO
 
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a
 # verbatim copy of the header file for each class for which an include is
 # specified. Set to NO to disable this.
 # See also: Section \class.
@@ -1317,10 +1538,11 @@ VERBATIM_HEADERS       = NO
 
 ALPHABETICAL_INDEX     = YES
 
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
+# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
+# that should be ignored while generating the index headers. The IGNORE_PREFIX
+# tag works for classes, function and member names. The entity will be placed in
+# the alphabetical list under the first letter of the entity name that remains
+# after removing the prefix.
 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
 
 IGNORE_PREFIX          =
@@ -1329,7 +1551,7 @@ IGNORE_PREFIX          =
 # Configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output
 # The default value is: YES.
 
 GENERATE_HTML          = @do_html@
@@ -1350,40 +1572,40 @@ HTML_OUTPUT            = html
 HTML_FILE_EXTENSION    = .html
 
 # The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
+# each generated HTML page. If the tag is left blank Doxygen will generate a
 # standard header.
 #
 # To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
+# that Doxygen needs, which is dependent on the configuration options used (e.g.
 # the setting GENERATE_TREEVIEW). It is highly recommended to start with a
 # default header using
 # doxygen -w html new_header.html new_footer.html new_stylesheet.css
 # YourConfigFile
 # and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
+# for information on how to generate the default header that Doxygen normally
 # uses.
 # Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
+# default header when upgrading to a newer version of Doxygen. For a description
 # of the possible markers and block names see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_HEADER            =
 
 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
+# generated HTML page. If the tag is left blank Doxygen will generate a standard
 # footer. See HTML_HEADER for more information on how to generate a default
 # footer and what special commands can be used inside the footer. See also
 # section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
+# that Doxygen normally uses.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_FOOTER            =
 
 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
 # sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
+# the HTML output. If left blank Doxygen will generate a default style sheet.
 # See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
+# sheet that Doxygen normally uses.
 # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
 # it is more robust and this tag (HTML_STYLESHEET) will in the future become
 # obsolete.
@@ -1393,13 +1615,18 @@ HTML_STYLESHEET        =
 
 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
 # cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
+# created by Doxygen. Using this option one can overrule certain style aspects.
 # This is preferred over using HTML_STYLESHEET since it does not replace the
 # standard style sheet and is therefore more robust against future updates.
 # Doxygen will copy the style sheet files to the output directory.
 # Note: The order of the extra style sheet files is of importance (e.g. the last
 # style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
+# list).
+# Note: Since the styling of scrollbars can currently not be overruled in
+# Webkit/Chromium, the styling will be left out of the default doxygen.css if
+# one or more extra stylesheets have been specified. So if scrollbar
+# customization is desired it has to be added explicitly. For an example see the
+# documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_EXTRA_STYLESHEET  =
@@ -1414,9 +1641,22 @@ HTML_EXTRA_STYLESHEET  =
 
 HTML_EXTRA_FILES       =
 
+# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
+# should be rendered with a dark or light theme.
+# Possible values are: LIGHT always generates light mode output, DARK always
+# generates dark mode output, AUTO_LIGHT automatically sets the mode according
+# to the user preference, uses light mode if no preference is set (the default),
+# AUTO_DARK automatically sets the mode according to the user preference, uses
+# dark mode if no preference is set and TOGGLE allows a user to switch between
+# light and dark mode via a button.
+# The default value is: AUTO_LIGHT.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE        = AUTO_LIGHT
+
 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
 # will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
+# this color. Hue is specified as an angle on a color-wheel, see
 # https://en.wikipedia.org/wiki/Hue for more information. For instance the value
 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
 # purple, and 360 is red again.
@@ -1426,7 +1666,7 @@ HTML_EXTRA_FILES       =
 HTML_COLORSTYLE_HUE    = 220
 
 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
+# in the HTML output. For a value of 0 the output will use gray-scales only. A
 # value of 255 will produce the most vivid colors.
 # Minimum value: 0, maximum value: 255, default value: 100.
 # This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1444,15 +1684,6 @@ HTML_COLORSTYLE_SAT    = 100
 
 HTML_COLORSTYLE_GAMMA  = 80
 
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = NO
-
 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
 # documentation will contain a main index with vertical navigation menus that
 # are dynamically created via JavaScript. If disabled, the navigation index will
@@ -1472,6 +1703,33 @@ HTML_DYNAMIC_MENUS     = YES
 
 HTML_DYNAMIC_SECTIONS  = NO
 
+# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be
+# dynamically folded and expanded in the generated HTML source code.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_CODE_FOLDING      = YES
+
+# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in
+# the top right corner of code and text fragments that allows the user to copy
+# its content to the clipboard. Note this only works if supported by the browser
+# and the web page is served via a secure context (see:
+# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file:
+# protocol.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COPY_CLIPBOARD    = YES
+
+# Doxygen stores a couple of settings persistently in the browser (via e.g.
+# cookies). By default these settings apply to all HTML pages generated by
+# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store
+# the settings under a project specific key, such that the user preferences will
+# be stored separately.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_PROJECT_COOKIE    =
+
 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
 # shown in the various tree structured indices initially; the user can expand
 # and collapse entries dynamically later on. Doxygen will expand the tree to
@@ -1487,10 +1745,11 @@ HTML_INDEX_NUM_ENTRIES = 0
 
 # If the GENERATE_DOCSET tag is set to YES, additional index files will be
 # generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: https://developer.apple.com/xcode/), introduced with OSX
-# 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
+# environment (see:
+# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
+# create a documentation set, Doxygen will generate a Makefile in the HTML
+# output directory. Running make will produce the docset in that directory and
+# running make install will install the docset in
 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
 # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
 # genXcode/_index.html for more information.
@@ -1507,6 +1766,13 @@ GENERATE_DOCSET        = NO
 
 DOCSET_FEEDNAME        = "Doxygen generated docs"
 
+# This tag determines the URL of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDURL         =
+
 # This tag specifies a string that should uniquely identify the documentation
 # set bundle. This should be a reverse domain-name style string, e.g.
 # com.mycompany.MyDocSet. Doxygen will append .docset to the name.
@@ -1529,14 +1795,18 @@ DOCSET_PUBLISHER_ID    = org.fsf
 
 DOCSET_PUBLISHER_NAME  = libstdc++
 
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three
 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The
 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
+# on Windows. In the beginning of 2021 Microsoft took the original page, with
+# a.o. the download links, offline (the HTML help workshop was already many
+# years in maintenance mode). You can download the HTML help workshop from the
+# web archives at Installation executable (see:
+# http://web.archive.org/web/20160201063255/https://download.microsoft.com/downl
+# oad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
 #
 # The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML
 # files are now used as the Windows 98 help format, and will replace the old
 # Windows help format (.hlp) on all Windows platforms in the future. Compressed
 # HTML files also contain an index, a table of contents, and you can search for
@@ -1556,7 +1826,7 @@ CHM_FILE               =
 
 # The HHC_LOCATION tag can be used to specify the location (absolute path
 # including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# Doxygen will try to run the HTML help compiler on the generated index.hhp.
 # The file has to be specified with full path.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
@@ -1590,6 +1860,16 @@ BINARY_TOC             = NO
 
 TOC_EXPAND             = NO
 
+# The SITEMAP_URL tag is used to specify the full URL of the place where the
+# generated documentation will be placed on the server by the user during the
+# deployment of the documentation. The generated sitemap is called sitemap.xml
+# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL
+# is specified no sitemap is generated. For information about the sitemap
+# protocol see https://www.sitemaps.org
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SITEMAP_URL            =
+
 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
 # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
@@ -1608,7 +1888,8 @@ QCH_FILE               =
 
 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
 # Project output. For more information please see Qt Help Project / Namespace
-# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
+# (see:
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
 # The default value is: org.doxygen.Project.
 # This tag requires that the tag GENERATE_QHP is set to YES.
 
@@ -1616,7 +1897,8 @@ QHP_NAMESPACE          = org.doxygen.Project
 
 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
 # Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
+# Folders (see:
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
 # The default value is: doc.
 # This tag requires that the tag GENERATE_QHP is set to YES.
 
@@ -1624,14 +1906,16 @@ QHP_VIRTUAL_FOLDER     = doc
 
 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
 # filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
+# Filters (see:
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
 # This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_CUST_FILTER_NAME   =
 
 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
 # custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
+# Filters (see:
+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
 # This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_CUST_FILTER_ATTRS  =
@@ -1643,9 +1927,9 @@ QHP_CUST_FILTER_ATTRS  =
 
 QHP_SECT_FILTER_ATTRS  =
 
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
+# The QHG_LOCATION tag can be used to specify the location (absolute path
+# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to
+# run qhelpgenerator on the generated .qhp file.
 # This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHG_LOCATION           =
@@ -1688,18 +1972,39 @@ DISABLE_INDEX          = YES
 # to work a browser that supports JavaScript, DHTML, CSS and frames is required
 # (i.e. any modern browser). Windows users are probably better off using the
 # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
+# further fine tune the look of the index (see "Fine-tuning the output"). As an
+# example, the default style sheet generated by Doxygen has an example that
+# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
+# Since the tree basically has more details information than the tab index, you
+# could consider setting DISABLE_INDEX to YES when enabling this option.
+# The default value is: YES.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 GENERATE_TREEVIEW      = YES
 
+# When GENERATE_TREEVIEW is set to YES, the PAGE_OUTLINE_PANEL option determines
+# if an additional navigation panel is shown at the right hand side of the
+# screen, displaying an outline of the contents of the main page, similar to
+# e.g. https://developer.android.com/reference If GENERATE_TREEVIEW is set to
+# NO, this option has no effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+PAGE_OUTLINE_PANEL     = YES
+
+# When GENERATE_TREEVIEW is set to YES, the FULL_SIDEBAR option determines if
+# the side bar is limited to only the treeview area (value NO) or if it should
+# extend to the full height of the window (value YES). Setting this to YES gives
+# a layout similar to e.g. https://docs.readthedocs.io with more room for
+# contents, but less room for the project logo, title, and description. If
+# GENERATE_TREEVIEW is set to NO, this option has no effect.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FULL_SIDEBAR           = NO
+
 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
+# Doxygen will group on one line in the generated HTML documentation.
 #
 # Note that a value of 0 will completely suppress the enum values from appearing
 # in the overview section.
@@ -1708,6 +2013,12 @@ GENERATE_TREEVIEW      = YES
 
 ENUM_VALUES_PER_LINE   = 4
 
+# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified
+# enumeration values besides the enumeration mnemonics.
+# The default value is: NO.
+
+SHOW_ENUM_VALUES       = NO
+
 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
 # to set the initial width (in pixels) of the frame in which the tree is shown.
 # Minimum value: 0, maximum value: 1500, default value: 250.
@@ -1715,14 +2026,21 @@ ENUM_VALUES_PER_LINE   = 4
 
 TREEVIEW_WIDTH         = 250
 
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to
 # external symbols imported via tag files in a separate window.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 EXT_LINKS_IN_WINDOW    = NO
 
-# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
+# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email
+# addresses.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+OBFUSCATE_EMAILS       = YES
+
+# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg
 # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
 # https://inkscape.org) to generate formulas as SVG images instead of PNGs for
 # the HTML output. These images will generally look nicer at scaled resolutions.
@@ -1735,7 +2053,7 @@ HTML_FORMULA_FORMAT    = png
 
 # Use this tag to change the font size of LaTeX formulas included as images in
 # the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
+# Doxygen run you need to manually remove any form_*.png images from the HTML
 # output directory to force them to be regenerated.
 # Minimum value: 8, maximum value: 50, default value: 10.
 # This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1759,50 +2077,90 @@ FORMULA_MACROFILE      =
 
 USE_MATHJAX            = NO
 
+# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
+# Note that the different versions of MathJax have different requirements with
+# regards to the different settings, so it is possible that also other MathJax
+# settings have to be changed when switching between the different MathJax
+# versions.
+# Possible values are: MathJax_2, MathJax_3 and MathJax_4.
+# The default value is: MathJax_2.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_VERSION        = MathJax_2
+
 # When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
+# the MathJax output. For more details about the output format see MathJax
+# version 2 (see:
+# https://docs.mathjax.org/en/v2.7/output.html), MathJax version 3 (see:
+# https://docs.mathjax.org/en/v3.2/output/index.html) and MathJax version 4
+# (see:
+# https://docs.mathjax.org/en/v4.0/output/index.htm).
 # Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
+# compatibility. This is the name for Mathjax version 2, for MathJax version 3
+# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
+# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
+# is the name for Mathjax version 3, for MathJax version 2 this will be
+# translated into HTML-CSS) and SVG.
 # The default value is: HTML-CSS.
 # This tag requires that the tag USE_MATHJAX is set to YES.
 
 MATHJAX_FORMAT         = HTML-CSS
 
 # When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from https://www.mathjax.org before deployment.
-# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.
+# output directory using the MATHJAX_RELPATH option. For Mathjax version 2 the
+# destination directory should contain the MathJax.js script. For instance, if
+# the mathjax directory is located at the same level as the HTML output
+# directory, then MATHJAX_RELPATH should be ../mathjax. For Mathjax versions 3
+# and 4 the destination directory should contain the tex-<format>.js script
+# (where <format> is either chtml or svg). The default value points to the
+# MathJax Content Delivery Network so you can quickly see the result without
+# installing MathJax. However, it is strongly recommended to install a local
+# copy of MathJax from https://www.mathjax.org before deployment. The default
+# value is:
+# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
+# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
+# - in case of MathJax version 4: https://cdn.jsdelivr.net/npm/mathjax@4
 # This tag requires that the tag USE_MATHJAX is set to YES.
 
 MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
 
 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
 # extension names that should be enabled during MathJax rendering. For example
+# for MathJax version 2 (see https://docs.mathjax.org/en/v2.7/tex.html):
 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# For example for MathJax version 3 (see
+# https://docs.mathjax.org/en/v3.2/input/tex/extensions/):
+# MATHJAX_EXTENSIONS = ams
+# For example for MathJax version 4 (see
+# https://docs.mathjax.org/en/v4.0/input/tex/extensions/):
+# MATHJAX_EXTENSIONS = units
+# Note that for Mathjax version 4 quite a few extensions are already
+# automatically loaded. To disable a package in Mathjax version 4 one can use
+# the package name prepended with a minus sign (- like MATHJAX_EXTENSIONS +=
+# -textmacros)
 # This tag requires that the tag USE_MATHJAX is set to YES.
 
 MATHJAX_EXTENSIONS     =
 
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
+# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces
+# of code that will be used on startup of the MathJax code. See the Mathjax site
+# for more details:
+# - MathJax version 2 (see:
+# https://docs.mathjax.org/en/v2.7/)
+# - MathJax version 3 (see:
+# https://docs.mathjax.org/en/v3.2/)
+# - MathJax version 4 (see:
+# https://docs.mathjax.org/en/v4.0/) For an example see the documentation.
 # This tag requires that the tag USE_MATHJAX is set to YES.
 
 MATHJAX_CODEFILE       =
 
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
+# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for
+# the HTML output. The underlying search engine uses JavaScript and DHTML and
 # should work on any modern browser. Note that when using HTML help
 # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
 # there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
+# For large projects the JavaScript based search engine can be slow, then
 # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
 # search using the keyboard; to jump to the search box use <access key> + S
 # (what the <access key> is depends on the OS and browser, but it is typically
@@ -1821,7 +2179,7 @@ SEARCHENGINE           = NO
 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
 # implemented using a web server instead of a web client using JavaScript. There
 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
+# setting. When disabled, Doxygen will generate a PHP script for searching and
 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
 # and searching needs to be provided by external tools. See the section
 # "External Indexing and Searching" for details.
@@ -1830,7 +2188,7 @@ SEARCHENGINE           = NO
 
 SERVER_BASED_SEARCH    = NO
 
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP
 # script for searching. Instead the search results are written to an XML file
 # which needs to be processed by an external indexer. Doxygen will invoke an
 # external search engine pointed to by the SEARCHENGINE_URL option to obtain the
@@ -1838,7 +2196,8 @@ SERVER_BASED_SEARCH    = NO
 #
 # Doxygen ships with an example indexer (doxyindexer) and search engine
 # (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: https://xapian.org/).
+# Xapian (see:
+# https://xapian.org/).
 #
 # See the section "External Indexing and Searching" for details.
 # The default value is: NO.
@@ -1851,8 +2210,9 @@ EXTERNAL_SEARCH        = NO
 #
 # Doxygen ships with an example indexer (doxyindexer) and search engine
 # (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: https://xapian.org/). See the section "External Indexing and
-# Searching" for details.
+# Xapian (see:
+# https://xapian.org/). See the section "External Indexing and Searching" for
+# details.
 # This tag requires that the tag SEARCHENGINE is set to YES.
 
 SEARCHENGINE_URL       =
@@ -1873,7 +2233,7 @@ SEARCHDATA_FILE        = searchdata.xml
 
 EXTERNAL_SEARCH_ID     =
 
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen
 # projects other than the one defined by this configuration file, but that are
 # all added to the same external search index. Each project needs to have a
 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
@@ -1887,7 +2247,7 @@ EXTRA_SEARCH_MAPPINGS  =
 # Configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output.
 # The default value is: YES.
 
 GENERATE_LATEX         = @do_latex@
@@ -1932,7 +2292,7 @@ MAKEINDEX_CMD_NAME     = makeindex
 
 LATEX_MAKEINDEX_CMD    = makeindex
 
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX
 # documents. This may be useful for small projects and may help to save some
 # trees in general.
 # The default value is: NO.
@@ -1961,36 +2321,38 @@ PAPER_TYPE             = letter
 
 EXTRA_PACKAGES         = amsmath
 
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
+# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
+# the generated LaTeX document. The header should contain everything until the
+# first chapter. If it is left blank Doxygen will generate a standard header. It
+# is highly recommended to start with a default header using
+# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
+# and then modify the file new_header.tex. See also section "Doxygen usage" for
+# information on how to generate the default header that Doxygen normally uses.
 #
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
+# Note: Only use a user-defined header if you know what you are doing!
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of Doxygen. The following
+# commands have a special meaning inside the header (and footer): For a
+# description of the possible markers and block names see the documentation.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_HEADER           =
 
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
+# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
+# the generated LaTeX document. The footer should contain everything after the
+# last chapter. If it is left blank Doxygen will generate a standard footer. See
 # LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
+# special commands can be used inside the footer. See also section "Doxygen
+# usage" for information on how to generate the default footer that Doxygen
+# normally uses. Note: Only use a user-defined footer if you know what you are
+# doing!
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_FOOTER           =
 
 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
 # LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# by Doxygen. Using this option one can overrule certain style aspects. Doxygen
 # will copy the style sheet files to the output directory.
 # Note: The order of the extra style sheet files is of importance (e.g. the last
 # style sheet in the list overrules the setting of the previous ones in the
@@ -2016,7 +2378,7 @@ LATEX_EXTRA_FILES      =
 
 PDF_HYPERLINKS         = YES
 
-# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
+# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as
 # specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
 # files. Set this option to YES, to get a higher quality PDF documentation.
 #
@@ -2026,16 +2388,22 @@ PDF_HYPERLINKS         = YES
 
 USE_PDFLATEX           = YES
 
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
+# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error.
+# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch
+# mode nothing is printed on the terminal, errors are scrolled as if <return> is
+# hit at every error; missing files that TeX tries to input or request from
+# keyboard input (\read on a not open input stream) cause the job to abort,
+# NON_STOP In nonstop mode the diagnostic message will appear on the terminal,
+# but there is no possibility of user interaction just like in batch mode,
+# SCROLL In scroll mode, TeX will stop only for missing files to input or if
+# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at
+# each error, asking for user intervention.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_BATCHMODE        = YES
 
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the
 # index chapters (such as File Index, Compound Index, etc.) in the output.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -2045,19 +2413,11 @@ LATEX_HIDE_INDICES     = YES
 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
 # bibliography, e.g. plainnat, or ieeetr. See
 # https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
+# The default value is: plainnat.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_BIB_STYLE        = plain
 
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP        = NO
-
 # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
 # path from which the emoji images will be read. If a relative path is entered,
 # it will be relative to the LATEX_OUTPUT directory. If left blank the
@@ -2070,7 +2430,7 @@ LATEX_EMOJI_DIRECTORY  =
 # Configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The
 # RTF output is optimized for Word 97 and may not look too pretty with other RTF
 # readers/editors.
 # The default value is: NO.
@@ -2085,7 +2445,7 @@ GENERATE_RTF           = NO
 
 RTF_OUTPUT             = rtf
 
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF
 # documents. This may be useful for small projects and may help to save some
 # trees in general.
 # The default value is: NO.
@@ -2105,28 +2465,36 @@ COMPACT_RTF            = NO
 
 RTF_HYPERLINKS         = NO
 
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# Load stylesheet definitions from file. Syntax is similar to Doxygen's
 # configuration file, i.e. a series of assignments. You only have to provide
 # replacements, missing definitions are set to their default value.
 #
 # See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
+# default style sheet that Doxygen normally uses.
 # This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_STYLESHEET_FILE    =
 
 # Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's configuration file. A template extensions file can be
+# similar to Doxygen's configuration file. A template extensions file can be
 # generated using doxygen -e rtf extensionFile.
 # This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_EXTENSIONS_FILE    =
 
+# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the RTF_OUTPUT output directory.
+# Note that the files will be copied as-is; there are no commands or markers
+# available.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTRA_FILES        =
+
 #---------------------------------------------------------------------------
 # Configuration options related to the man page output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for
 # classes and files.
 # The default value is: NO.
 
@@ -2157,7 +2525,7 @@ MAN_EXTENSION          = .3
 
 MAN_SUBDIR             =
 
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it
 # will generate one additional man file for each entity documented in the real
 # man page(s). These additional files only source the real man page, but without
 # them the man command would be unable to find the correct page.
@@ -2170,7 +2538,7 @@ MAN_LINKS              = NO
 # Configuration options related to the XML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that
 # captures the structure of the code including all documentation.
 # The default value is: NO.
 
@@ -2184,7 +2552,7 @@ GENERATE_XML           = @do_xml@
 
 XML_OUTPUT             = xml
 
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program
 # listings (including syntax highlighting and cross-referencing information) to
 # the XML output. Note that enabling this will significantly increase the size
 # of the XML output.
@@ -2193,7 +2561,7 @@ XML_OUTPUT             = xml
 
 XML_PROGRAMLISTING     = NO
 
-# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
+# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include
 # namespace members in file scope as well, matching the HTML output.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_XML is set to YES.
@@ -2204,7 +2572,7 @@ XML_NS_MEMB_FILE_SCOPE = NO
 # Configuration options related to the DOCBOOK output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files
 # that can be used to generate PDF.
 # The default value is: NO.
 
@@ -2222,19 +2590,45 @@ DOCBOOK_OUTPUT         = docbook
 # Configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an
+# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures
 # the structure of the code including all documentation. Note that this feature
 # is still experimental and incomplete at the moment.
 # The default value is: NO.
 
 GENERATE_AUTOGEN_DEF   = NO
 
+#---------------------------------------------------------------------------
+# Configuration options related to Sqlite3 output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3
+# database with symbols found by Doxygen stored in tables.
+# The default value is: NO.
+
+GENERATE_SQLITE3       = NO
+
+# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be
+# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put
+# in front of it.
+# The default directory is: sqlite3.
+# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
+
+SQLITE3_OUTPUT         = sqlite3
+
+# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db
+# database file will be recreated with each Doxygen run. If set to NO, Doxygen
+# will warn if a database file is already found and not modify it.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
+
+SQLITE3_RECREATE_DB    = YES
+
 #---------------------------------------------------------------------------
 # Configuration options related to the Perl module output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module
 # file that captures the structure of the code including all documentation.
 #
 # Note that this feature is still experimental and incomplete at the moment.
@@ -2242,7 +2636,7 @@ GENERATE_AUTOGEN_DEF   = NO
 
 GENERATE_PERLMOD       = NO
 
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary
 # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
 # output from the Perl module output.
 # The default value is: NO.
@@ -2272,13 +2666,13 @@ PERLMOD_MAKEVAR_PREFIX =
 # Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all
 # C-preprocessor directives found in the sources and include files.
 # The default value is: YES.
 
 ENABLE_PREPROCESSING   = YES
 
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names
 # in the source code. If set to NO, only conditional compilation will be
 # performed. Macro expansion can be done in a controlled way by setting
 # EXPAND_ONLY_PREDEF to YES.
@@ -2304,7 +2698,8 @@ SEARCH_INCLUDES        = YES
 
 # The INCLUDE_PATH tag can be used to specify one or more directories that
 # contain include files that are not input files but should be processed by the
-# preprocessor.
+# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
+# RECURSIVE has no effect here.
 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
 
 INCLUDE_PATH           = include
@@ -2429,7 +2824,7 @@ PREDEFINED             = __cplusplus=202002L \
 
 EXPAND_AS_DEFINED      =
 
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will
 # remove all references to function-like macros that are alone on a line, have
 # an all uppercase name, and do not end with a semicolon. Such function macros
 # are typically used for boiler-plate code, and will confuse the parser if not
@@ -2453,26 +2848,26 @@ SKIP_FUNCTION_MACROS   = YES
 # section "Linking to external documentation" for more information about the use
 # of tag files.
 # Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
+# the path). If a tag file is not located in the directory in which Doxygen is
 # run, you must also specify the path to the tagfile here.
 
 TAGFILES               =
 
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a
 # tag file that is based on the input files it reads. See section "Linking to
 # external documentation" for more information about the usage of tag files.
 
 GENERATE_TAGFILE       = @generate_tagfile@
 
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
+# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces
+# will be listed in the class and namespace index. If set to NO, only the
+# inherited external classes will be listed.
 # The default value is: NO.
 
 ALLEXTERNALS           = YES
 
 # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
+# in the topic index. If set to NO, only the current project's groups will be
 # listed.
 # The default value is: YES.
 
@@ -2486,73 +2881,111 @@ EXTERNAL_GROUPS        = YES
 EXTERNAL_PAGES         = YES
 
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool
+# Configuration options related to diagram generator tools
 #---------------------------------------------------------------------------
 
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
 # If set to YES the inheritance and collaboration graphs will hide inheritance
 # and usage relations if the target is undocumented or is not a class.
 # The default value is: YES.
 
 HIDE_UNDOC_RELATIONS   = NO
 
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is
 # available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
 # Bell Labs. The other options in this section have no effect if this option is
 # set to NO
 # The default value is: NO.
 
 HAVE_DOT               = YES
 
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
+# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed
+# to run in parallel. When set to 0 Doxygen will base this on the number of
 # processors available in the system. You can set it explicitly to a value
 # larger than 0 to get control over the balance between CPU load and processing
 # speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
+# Minimum value: 0, maximum value: 512, default value: 0.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_NUM_THREADS        = 0
 
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
+# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
+# subgraphs. When you want a differently looking font in the dot files that
+# Doxygen generates you can specify fontname, fontcolor and fontsize attributes.
+# For details please see <a href=https://graphviz.org/doc/info/attrs.html>Node,
+# Edge and Graph Attributes specification</a> You need to make sure dot is able
+# to find the font, which can be done by putting it in a standard location or by
+# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font. Default graphviz fontsize is 14.
+# The default value is: fontname=Helvetica,fontsize=10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_COMMON_ATTR        = "fontname=Helvetica,fontsize=10"
+
+# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can
+# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. <a
+# href=https://graphviz.org/doc/info/arrows.html>Complete documentation about
+# arrows shapes.</a>
+# The default value is: labelfontname=Helvetica,labelfontsize=10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_EDGE_ATTR          = "labelfontname=Helvetica,labelfontsize=10"
+
+# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes
+# around nodes set 'shape=plain' or 'shape=plaintext' <a
+# href=https://www.graphviz.org/doc/info/shapes.html>Shapes specification</a>
+# The default value is: shape=box,height=0.2,width=0.4.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NODE_ATTR          = "shape=box,height=0.2,width=0.4"
+
+# You can set the path where dot can find font specified with fontname in
+# DOT_COMMON_ATTR and others dot attributes.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_FONTPATH           =
 
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will
+# generate a graph for each documented class showing the direct and indirect
+# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and
+# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case
+# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the
+# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used.
+# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance
+# relations will be shown as texts / links. Explicit enabling an inheritance
+# graph or choosing a different representation for an inheritance graph of a
+# specific class, can be accomplished by means of the command \inheritancegraph.
+# Disabling an inheritance graph can be accomplished by means of the command
+# \hideinheritancegraph.
+# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN.
 # The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
 
 CLASS_GRAPH            = YES
 
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a
 # graph for each documented class showing the direct and indirect implementation
 # dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
+# class with other documented classes. Explicit enabling a collaboration graph,
+# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the
+# command \collaborationgraph. Disabling a collaboration graph can be
+# accomplished by means of the command \hidecollaborationgraph.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 COLLABORATION_GRAPH    = NO
 
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
+# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for
+# groups, showing the direct groups dependencies. Explicit enabling a group
+# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means
+# of the command \groupgraph. Disabling a directory graph can be accomplished by
+# means of the command \hidegroupgraph. See also the chapter Grouping in the
+# manual.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 GROUP_GRAPHS           = YES
 
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
+# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and
 # collaboration diagrams in a style similar to the OMG's Unified Modeling
 # Language.
 # The default value is: NO.
@@ -2569,10 +3002,41 @@ UML_LOOK               = NO
 # but if the number exceeds 15, the total amount of fields shown is limited to
 # 10.
 # Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
+# This tag requires that the tag UML_LOOK is set to YES.
 
 UML_LIMIT_NUM_FIELDS   = 10
 
+# If the UML_LOOK tag is enabled, field labels are shown along the edge between
+# two class nodes. If there are many fields and many nodes the graph may become
+# too cluttered. The UML_MAX_EDGE_LABELS threshold limits the number of items to
+# make the size more manageable. Set this to 0 for no limit.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag UML_LOOK is set to YES.
+
+UML_MAX_EDGE_LABELS    = 10
+
+# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and
+# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
+# tag is set to YES, Doxygen will add type and arguments for attributes and
+# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen
+# will not generate fields with class member information in the UML graphs. The
+# class diagrams will look similar to the default class diagrams but using UML
+# notation for the relationships.
+# Possible values are: NO, YES and NONE.
+# The default value is: NO.
+# This tag requires that the tag UML_LOOK is set to YES.
+
+DOT_UML_DETAILS        = NO
+
+# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
+# to display on a single line. If the actual line length exceeds this threshold
+# significantly it will be wrapped across multiple lines. Some heuristics are
+# applied to avoid ugly line breaks.
+# Minimum value: 0, maximum value: 1000, default value: 17.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_WRAP_THRESHOLD     = 17
+
 # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
 # collaboration graphs will show the relations between templates and their
 # instances.
@@ -2582,24 +3046,29 @@ UML_LIMIT_NUM_FIELDS   = 10
 TEMPLATE_RELATIONS     = NO
 
 # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
+# YES then Doxygen will generate a graph for each documented file showing the
 # direct and indirect include dependencies of the file with other documented
-# files.
+# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO,
+# can be accomplished by means of the command \includegraph. Disabling an
+# include graph can be accomplished by means of the command \hideincludegraph.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 INCLUDE_GRAPH          = NO
 
 # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
+# set to YES then Doxygen will generate a graph for each documented file showing
 # the direct and indirect include dependencies of the file with other documented
-# files.
+# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set
+# to NO, can be accomplished by means of the command \includedbygraph. Disabling
+# an included by graph can be accomplished by means of the command
+# \hideincludedbygraph.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 INCLUDED_BY_GRAPH      = NO
 
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call
 # dependency graph for every global function or class method.
 #
 # Note that enabling this option will significantly increase the time of a run.
@@ -2611,7 +3080,7 @@ INCLUDED_BY_GRAPH      = NO
 
 CALL_GRAPH             = NO
 
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller
 # dependency graph for every global function or class method.
 #
 # Note that enabling this option will significantly increase the time of a run.
@@ -2623,44 +3092,59 @@ CALL_GRAPH             = NO
 
 CALLER_GRAPH           = NO
 
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical
 # hierarchy of all classes instead of a textual one.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 GRAPHICAL_HIERARCHY    = YES
 
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the
 # dependencies a directory has on other directories in a graphical way. The
 # dependency relations are determined by the #include relations between the
-# files in the directories.
+# files in the directories. Explicit enabling a directory graph, when
+# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command
+# \directorygraph. Disabling a directory graph can be accomplished by means of
+# the command \hidedirectorygraph.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 DIRECTORY_GRAPH        = NO
 
+# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
+# of child directories generated in directory dependency graphs by dot.
+# Minimum value: 1, maximum value: 25, default value: 1.
+# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
+
+DIR_GRAPH_MAX_DEPTH    = 1
+
 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
 # generated by dot. For an explanation of the image formats see the section
 # output formats in the documentation of the dot tool (Graphviz (see:
-# http://www.graphviz.org/)).
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
+# https://www.graphviz.org/)).
+#
+# Note the formats svg:cairo and svg:cairo:cairo cannot be used in combination
+# with INTERACTIVE_SVG (the INTERACTIVE_SVG will be set to NO).
 # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
-# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
-# png:gdiplus:gdiplus.
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus,
+# png:gdiplus:gdiplus, svg:cairo, svg:cairo:cairo, svg:svg, svg:svg:core,
+# gif:cairo, gif:cairo:gd, gif:cairo:gdiplus, gif:gdiplus, gif:gdiplus:gdiplus,
+# gif:gd, gif:gd:gd, jpg:cairo, jpg:cairo:gd, jpg:cairo:gdiplus, jpg:gd,
+# jpg:gd:gd, jpg:gdiplus and jpg:gdiplus:gdiplus.
 # The default value is: png.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_IMAGE_FORMAT       = svg
 
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
+# If DOT_IMAGE_FORMAT is set to svg or svg:svg or svg:svg:core, then this option
+# can be set to YES to enable generation of interactive SVG images that allow
+# zooming and panning.
 #
 # Note that this requires a modern browser other than Internet Explorer. Tested
 # and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
+#
+# Note This option will be automatically disabled when DOT_IMAGE_FORMAT is set
+# to svg:cairo or svg:cairo:cairo.
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
@@ -2679,11 +3163,12 @@ DOT_PATH               =
 
 DOTFILE_DIRS           =
 
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
+# You can include diagrams made with dia in Doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
 
-MSCFILE_DIRS           =
+DIA_PATH               =
 
 # The DIAFILE_DIRS tag can be used to specify one or more directories that
 # contain dia files that are included in the documentation (see the \diafile
@@ -2691,28 +3176,85 @@ MSCFILE_DIRS           =
 
 DIAFILE_DIRS           =
 
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
+# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file or to the filename of jar file
+# to be used. If left blank, it is assumed PlantUML is not used or called during
+# a preprocessing step. Doxygen will generate a warning when it encounters a
+# \startuml command in this case and will not generate output for the diagram.
 
 PLANTUML_JAR_PATH      =
 
-# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
-# configuration file for plantuml.
+# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a
+# configuration file for PlantUML.
 
 PLANTUML_CFG_FILE      =
 
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
+# When using PlantUML, the specified paths are searched for files specified by
+# the !include statement in a PlantUML block.
 
 PLANTUML_INCLUDE_PATH  =
 
+# The PLANTUMLFILE_DIRS tag can be used to specify one or more directories that
+# contain PlantUml files that are included in the documentation (see the
+# \plantumlfile command).
+
+PLANTUMLFILE_DIRS      =
+
+# When using Mermaid diagrams with CLI rendering, the MERMAID_PATH tag should be
+# used to specify the directory where the mmdc (Mermaid CLI) executable can be
+# found. If left blank, CLI-based rendering is disabled. For HTML output,
+# client-side rendering via JavaScript is used by default and does not require
+# mmdc. For LaTeX/PDF output, mmdc is required to pre-generate images. Doxygen
+# will generate a warning when CLI rendering is needed but mmdc is not
+# available.
+
+MERMAID_PATH           =
+
+# When using Mermaid diagrams, the MERMAID_CONFIG_FILE tag can be used to
+# specify a JSON configuration file for the Mermaid CLI tool (mmdc). This file
+# can contain theme settings and other Mermaid configuration options.
+
+MERMAID_CONFIG_FILE    =
+
+# The MERMAID_RENDER_MODE tag selects how Mermaid diagrams are rendered.
+# Possible values are: AUTO Use client-side rendering for HTML and mmdc for
+# LaTeX/PDF and other formats. If MERMAID_PATH is not set, non-HTML diagrams
+# will produce a warning., CLI Use the mmdc tool to pre-generate images
+# (requires Node.js and mermaid-js/mermaid-cli). Works for all output formats.
+# and CLIENT_SIDE Embed mermaid.js in HTML output for client-side rendering.
+# Does not require mmdc but only works for HTML output..
+# The default value is: AUTO.
+
+MERMAID_RENDER_MODE    = AUTO
+
+# The MERMAID_JS_URL tag specifies the URL to load mermaid.js from when using
+# client-side rendering (MERMAID_RENDER_MODE is CLIENT_SIDE or AUTO). The
+# default points to the latest Mermaid v11 release on the jsDelivr CDN.
+# Examples:
+# - Latest v11 (default):
+# 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'
+# - Pinned version:
+# 'https://cdn.jsdelivr.net/npm/mermaid@11.3.0/dist/mermaid.esm.min.mjs'
+# - Local copy: './mermaid.esm.min.mjs' (user must place file in HTML output
+# directory)
+# The default CDN URL requires internet access when viewing the generated
+# documentation. For offline use, download mermaid.esm.min.mjs and set this to a
+# relative path, or use MERMAID_RENDER_MODE=CLI to pre-generate images instead.
+# The default value is:
+# https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs.
+
+MERMAID_JS_URL         = https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs
+
+# The MERMAIDFILE_DIRS tag can be used to specify one or more directories that
+# contain Mermaid files that are included in the documentation (see the
+# \mermaidfile command).
+
+MERMAIDFILE_DIRS       =
+
 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
 # that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
+# larger than this value, Doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that if the number of direct
 # children of the root node in a graph is already larger than
 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
 # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
@@ -2742,17 +3284,37 @@ MAX_DOT_GRAPH_DEPTH    = 0
 
 DOT_MULTI_TARGETS      = YES
 
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page
 # explaining the meaning of the various boxes and arrows in the dot generated
 # graphs.
+# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal
+# graphical representation for inheritance and collaboration diagrams is used.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
 GENERATE_LEGEND        = YES
 
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate
 # files that are used to generate the various graphs.
+#
+# Note: This setting is not only used for dot files but also for msc temporary
+# files.
 # The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_CLEANUP            = YES
+
+# You can define message sequence charts within Doxygen comments using the \msc
+# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will
+# use a built-in version of mscgen tool to produce the charts. Alternatively,
+# the MSCGEN_TOOL tag can also specify the name an external tool. For instance,
+# specifying prog as the value, Doxygen will call the tool as prog -T
+# <outfile_format> -o <outputfile> <inputfile>. The external tool should support
+# output file formats "png", "eps", "svg", and "ismap".
+
+MSCGEN_TOOL            =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =

From redi@gcc.gnu.org  Thu Apr  2 13:25:57 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:25:57 +0000 (GMT)
Subject: [gcc r16-8417] libstdc++: Tweak Doxygen config file to include C++26
 components
Message-ID: <20260402132557.4F1694BA23E5@sourceware.org>

https://gcc.gnu.org/g:210f884e000cb0ef033287313294c41e9ac18866

commit r16-8417-g210f884e000cb0ef033287313294c41e9ac18866
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 10:41:29 2026 +0100

    libstdc++: Tweak Doxygen config file to include C++26 components
    
    This updates the __cplusplus value used by Doxygen, so that C++26
    components are included in the generated docs. It also suppresses
    documentation for some macros that are implementation details or just
    uninteresting for users.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/doxygen/user.cfg.in | 175 +++++++++++++++++++++++++++--------
 1 file changed, 137 insertions(+), 38 deletions(-)

diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in
index bdcb19c56faa..fc82debd1b4b 100644
--- a/libstdc++-v3/doc/doxygen/user.cfg.in
+++ b/libstdc++-v3/doc/doxygen/user.cfg.in
@@ -1043,6 +1043,7 @@ INPUT                  = @srcdir@/doc/doxygen/doxygroups.cc \
                          include/concepts \
                          include/condition_variable \
                          include/deque \
+                         include/debugging \
                          include/expected \
                          include/filesystem \
                          include/flat_map \
@@ -1332,8 +1333,104 @@ EXCLUDE_PATTERNS       = stamp-* \
 
 # Note that the wildcards are matched against the file with absolute path, so to
 # exclude all test directories use the pattern */test/*
+# We exclude header guard macros, and all __glibcxx_want_feature_test_macro,
+# and a few other macros that we don't want documented.
+EXCLUDE_SYMBOLS        = \
+			 _GLIBCXX_GET_ENCODING_DATA \
+			 _GLIBCXX_CONSTEXPR_BAD_*_ACCESS \
+			 _GLIBCXX_GET_ENCODING_DATA \
+			 __glibcxx_want_* \
+			 _*_H \
+			 _*_TCC \
+			 __EXCEPTION__ \
+			 _COMPARE \
+			 _NEW \
+			 _TYPEINFO \
+			 _GLIBCXX_ALGORITHM \
+			 _GLIBCXX_ANY \
+			 _GLIBCXX_ARRAY \
+			 _GLIBCXX_ATOMIC \
+			 _GLIBCXX_BARRIER \
+			 _GLIBCXX_BIT \
+			 _GLIBCXX_BITSET \
+			 _GLIBCXX_CHARCONV \
+			 _GLIBCXX_CHRONO \
+			 _GLIBCXX_CODECVT \
+			 _GLIBCXX_COMPLEX \
+			 _GLIBCXX_CONCEPTS \
+			 _GLIBCXX_CONDITION_VARIABLE \
+			 _GLIBCXX_CONTRACTS \
+			 _GLIBCXX_COROUTINE \
+			 _GLIBCXX_DEBUGGING \
+			 _GLIBCXX_DEQUE \
+			 _GLIBCXX_EXECUTION \
+			 _GLIBCXX_EXPECTED \
+			 _GLIBCXX_FILESYSTEM \
+			 _GLIBCXX_FLAT_MAP \
+			 _GLIBCXX_FLAT_SET \
+			 _GLIBCXX_FORMAT \
+			 _GLIBCXX_FORWARD_LIST \
+			 _GLIBCXX_FSTREAM \
+			 _GLIBCXX_FUNCTIONAL \
+			 _GLIBCXX_FUTURE \
+			 _GLIBCXX_GENERATOR \
+			 _GLIBCXX_INPLACE_VECTOR \
+			 _GLIBCXX_IOMANIP \
+			 _GLIBCXX_IOS \
+			 _GLIBCXX_IOSFWD \
+			 _GLIBCXX_IOSTREAM \
+			 _GLIBCXX_ISTREAM \
+			 _GLIBCXX_ITERATOR \
+			 _GLIBCXX_LATCH \
+			 _GLIBCXX_NUMERIC_LIMITS \
+			 _GLIBCXX_LIST \
+			 _GLIBCXX_MAP \
+			 _GLIBCXX_MDSPAN \
+			 _GLIBCXX_MEMORY \
+			 _GLIBCXX_MEMORY_RESOURCE \
+			 _GLIBCXX_META \
+			 _GLIBCXX_MUTEX \
+			 _GLIBCXX_NUMBERS \
+			 _GLIBCXX_NUMERIC \
+			 _GLIBCXX_OPTIONAL \
+			 _GLIBCXX_OSTREAM \
+			 _GLIBCXX_PRINT \
+			 _GLIBCXX_QUEUE \
+			 _GLIBCXX_RANDOM \
+			 _GLIBCXX_RANGES \
+			 _GLIBCXX_RATIO \
+			 _GLIBCXX_REGEX \
+			 _SCOPED_ALLOCATOR \
+			 _GLIBCXX_SEMAPHORE \
+			 _GLIBCXX_SET \
+			 _GLIBCXX_SHARED_MUTEX \
+			 _GLIBCXX_SIMD \
+			 _GLIBCXX_SRCLOC \
+			 _GLIBCXX_SPAN \
+			 _GLIBCXX_SPANSTREAM \
+			 _GLIBCXX_SSTREAM \
+			 _GLIBCXX_STACK \
+			 _GLIBCXX_STACKTRACE \
+			 _GLIBCXX_STDEXCEPT \
+			 _GLIBCXX_STDFLOAT \
+			 _GLIBCXX_STOP_TOKEN \
+			 _GLIBXX_STREAMBUF \
+			 _GLIBCXX_STRING_VIEW \
+			 _GLIBCXX_SYNCSTREAM \
+			 _GLIBCXX_SYSTEM_ERROR \
+			 _GLIBCXX_TEXT_ENCODING \
+			 _GLIBCXX_THREAD \
+			 _GLIBCXX_TUPLE \
+			 _GLIBCXX_TYPE_TRAITS \
+			 _GLIBCXX_TYPEINDEX \
+			 _GLIBCXX_UNORDERED_MAP \
+			 _GLIBCXX_UNORDERED_SET \
+			 _GLIBCXX_UTILITY \
+			 _GLIBCXX_VALARRAY \
+			 _GLIBCXX_VARIANT \
+			 _GLIBCXX_VECTOR \
+			 _GLIBCXX_VERSION_INCLUDED \
 
-EXCLUDE_SYMBOLS        =
 
 # The EXAMPLE_PATH tag can be used to specify one or more files or directories
 # that contain example code fragments that are included (see the \include
@@ -2720,40 +2817,40 @@ INCLUDE_FILE_PATTERNS  =
 # recursively expanded use the := operator instead of the = operator.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-PREDEFINED             = __cplusplus=202002L \
+PREDEFINED             = __cplusplus=202603L \
                          __GTHREADS \
                          _GLIBCXX_HAS_GTHREADS \
                          _GTHREAD_USE_MUTEX_TIMEDLOCK \
                          _GLIBCXX_HAVE_TLS \
                          _GLIBCXX_INCLUDE_AS_CXX11 \
-                         "_GLIBCXX_PURE= " \
-                         "_GLIBCXX_CONST= " \
+                         "_GLIBCXX_PURE=" \
+                         "_GLIBCXX_CONST=" \
                          "_GLIBCXX_NODISCARD=[[nodiscard]]" \
-                         "_GLIBCXX_NORETURN= " \
-                         "_GLIBCXX_NOEXCEPT_PARM= " \
-                         "_GLIBCXX_NOEXCEPT_QUAL= " \
-                         "_GLIBCXX_STD_C= " \
-                         "_GLIBCXX_STD_A= " \
-                         "_GLIBCXX_TXN_SAFE_DYN= " \
-                         "_GLIBCXX_VISIBILITY(V)= " \
-                         "_GLIBCXX_BEGIN_NAMESPACE_VERSION= " \
-                         "_GLIBCXX_BEGIN_NAMESPACE_ALGO= " \
-                         "_GLIBCXX_BEGIN_NAMESPACE_CONTAINER= " \
-                         "_GLIBCXX_BEGIN_NAMESPACE_CXX11= " \
-                         "_GLIBCXX_BEGIN_NAMESPACE_LDBL= " \
-                         "_GLIBCXX_END_NAMESPACE_VERSION= " \
-                         "_GLIBCXX_END_NAMESPACE_ALGO= " \
-                         "_GLIBCXX_END_NAMESPACE_CONTAINER= " \
-                         "_GLIBCXX_END_NAMESPACE_CXX11= " \
-                         "_GLIBCXX_END_NAMESPACE_LDBL= " \
-			 "_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(X)= " \
-			 "_GLIBCXX_END_INLINE_ABI_NAMESPACE(X)= " \
-                         "_GLIBCXX_TEMPLATE_ARGS=...  " \
-                         "_GLIBCXX_DEPRECATED= " \
-                         "_GLIBCXX_DEPRECATED_SUGGEST(E)= " \
+                         "_GLIBCXX_NORETURN=" \
+                         "_GLIBCXX_NOEXCEPT_PARM=" \
+                         "_GLIBCXX_NOEXCEPT_QUAL=" \
+                         "_GLIBCXX_STD_C=" \
+                         "_GLIBCXX_STD_A=" \
+                         "_GLIBCXX_TXN_SAFE_DYN=" \
+                         "_GLIBCXX_VISIBILITY(V)=" \
+                         "_GLIBCXX_BEGIN_NAMESPACE_VERSION=" \
+                         "_GLIBCXX_BEGIN_NAMESPACE_ALGO=" \
+                         "_GLIBCXX_BEGIN_NAMESPACE_CONTAINER=" \
+                         "_GLIBCXX_BEGIN_NAMESPACE_CXX11=" \
+                         "_GLIBCXX_BEGIN_NAMESPACE_LDBL=" \
+                         "_GLIBCXX_END_NAMESPACE_VERSION=" \
+                         "_GLIBCXX_END_NAMESPACE_ALGO=" \
+                         "_GLIBCXX_END_NAMESPACE_CONTAINER=" \
+                         "_GLIBCXX_END_NAMESPACE_CXX11=" \
+                         "_GLIBCXX_END_NAMESPACE_LDBL=" \
+			 "_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(X)=" \
+			 "_GLIBCXX_END_INLINE_ABI_NAMESPACE(X)=" \
+                         "_GLIBCXX_TEMPLATE_ARGS=... " \
+                         "_GLIBCXX_DEPRECATED=" \
+                         "_GLIBCXX_DEPRECATED_SUGGEST(E)=" \
                          _GLIBCXX_CONSTEXPR=constexpr \
                          _GLIBCXX_USE_CONSTEXPR=constexpr \
-                         "_GLIBCXX_THROW(E)= " \
+                         "_GLIBCXX_THROW(E)=" \
                          _GLIBCXX_NOEXCEPT=noexcept \
                          "_GLIBCXX_NOEXCEPT_IF(C)=noexcept(/*conditional*/)" \
                          _GLIBCXX_NOTHROW=noexcept \
@@ -2780,29 +2877,30 @@ PREDEFINED             = __cplusplus=202002L \
                          ATOMIC_INT_LOCK_FREE=2 \
                          PB_DS_DATA_TRUE_INDICATOR \
                          PB_DS_STATIC_ASSERT=// \
-                         "_GLIBCXX_BEGIN_NAMESPACE_ALGO= " \
-                         "_GLIBCXX_END_NAMESPACE_ALGO= " \
+                         "_GLIBCXX_BEGIN_NAMESPACE_ALGO=" \
+                         "_GLIBCXX_END_NAMESPACE_ALGO=" \
                          __glibcxx_function_requires=// \
                          __glibcxx_class_requires=// \
                          __glibcxx_class_requires2=// \
                          __glibcxx_class_requires3=// \
                          __glibcxx_class_requires4=// \
-                         "__attribute__(X)= " \
+                         "__attribute__(X)=" \
                          _GLIBCXX14_CONSTEXPR=constexpr \
                          _GLIBCXX17_CONSTEXPR=constexpr \
                          _GLIBCXX20_CONSTEXPR=constexpr \
                          _GLIBCXX23_CONSTEXPR=constexpr \
-                         "_GLIBCXX11_DEPRECATED= " \
-                         "_GLIBCXX11_DEPRECATED_SUGGEST(E)= " \
-                         "_GLIBCXX17_DEPRECATED= " \
-                         "_GLIBCXX17_DEPRECATED_SUGGEST(E)= " \
-                         "_GLIBCXX20_DEPRECATED= " \
-                         "_GLIBCXX20_DEPRECATED_SUGGEST(E)= " \
-                         "_GLIBCXX23_DEPRECATED= " \
-                         "_GLIBCXX23_DEPRECATED_SUGGEST(E)= " \
+                         "_GLIBCXX11_DEPRECATED=" \
+                         "_GLIBCXX11_DEPRECATED_SUGGEST(E)=" \
+                         "_GLIBCXX17_DEPRECATED=" \
+                         "_GLIBCXX17_DEPRECATED_SUGGEST(E)=" \
+                         "_GLIBCXX20_DEPRECATED=" \
+                         "_GLIBCXX20_DEPRECATED_SUGGEST(E)=" \
+                         "_GLIBCXX23_DEPRECATED=" \
+                         "_GLIBCXX23_DEPRECATED_SUGGEST(E)=" \
                          _GLIBCXX17_INLINE=inline \
                          _GLIBCXX_CHRONO_INT64_T=int64_t \
                          _GLIBCXX_DEFAULT_ABI_TAG \
+			 _GLIBCXX_ABI_TAG_CXX11 \
                          _GLIBCXX_USE_DEPRECATED \
                          _GLIBCXX_HOSTED \
                          "__has_builtin(x)=1" \
@@ -2815,6 +2913,7 @@ PREDEFINED             = __cplusplus=202002L \
 			 "_GLIBCXX_DOXYGEN_ONLY(X)=X " \
 			 __exception_ptr=__unspecified__ \
 
+
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
 # tag can be used to specify a list of macro names that should be expanded. The
 # macro definition that is found in the sources will be used. Use the PREDEFINED

From redi@gcc.gnu.org  Thu Apr  2 13:26:02 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:02 +0000 (GMT)
Subject: [gcc r16-8418] libstdc++: Fix errors in Doxygen markup
Message-ID: <20260402132602.764554BA9000@sourceware.org>

https://gcc.gnu.org/g:9b3957cd5958955ffae2a5cc7ad3b37e110e8d8f

commit r16-8418-g9b3957cd5958955ffae2a5cc7ad3b37e110e8d8f
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 31 16:00:41 2026 +0100

    libstdc++: Fix errors in Doxygen markup
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/doxygen/doxygroups.cc      | 15 +++++++++++++++
 libstdc++-v3/include/bits/binders.h         |  2 +-
 libstdc++-v3/include/bits/formatfwd.h       |  1 +
 libstdc++-v3/include/bits/forward_list.h    |  2 +-
 libstdc++-v3/include/bits/out_ptr.h         |  4 ++--
 libstdc++-v3/include/bits/regex_constants.h |  4 ++--
 libstdc++-v3/include/bits/stl_map.h         |  1 +
 libstdc++-v3/include/bits/stl_pair.h        |  9 ++++++---
 libstdc++-v3/include/bits/stl_set.h         |  1 +
 libstdc++-v3/include/std/functional         |  2 +-
 libstdc++-v3/include/std/type_traits        |  8 ++++----
 libstdc++-v3/libsupc++/exception            |  4 ++--
 12 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc
index 27d4a5e20ba9..00d945ceba00 100644
--- a/libstdc++-v3/doc/doxygen/doxygroups.cc
+++ b/libstdc++-v3/doc/doxygen/doxygroups.cc
@@ -164,6 +164,21 @@ summarized in <a href="tables.html">tables</a>.  */
  * and condition variables.
  */
 
+/**
+ * @defgroup variable_templates Variable Templates
+ * @ingroup metaprogramming
+ * @since C++17
+ *
+ * Each trait in `<type_traits>` that has a `value` static data member is
+ * also available as a variable template, using the same name with a `_v`
+ * suffix. For example, `std::is_integral_v<T>` is a `bool` constant with
+ * the same value as `std::is_integral<T>::value`.
+ *
+ * In some cases, using the variable template instead of the `::value` member
+ * avoids instantiating the class template for the trait. This gives the
+ * compiler less work to do and can make your code compile a little faster.
+ */
+
 /**
  * @defgroup experimental Technical Specifications
  *
diff --git a/libstdc++-v3/include/bits/binders.h b/libstdc++-v3/include/bits/binders.h
index 972471745bd4..51dba4cb446d 100644
--- a/libstdc++-v3/include/bits/binders.h
+++ b/libstdc++-v3/include/bits/binders.h
@@ -23,7 +23,7 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
-/** @file include/bits/binder.h
+/** @file include/bits/binders.h
  *  This is an internal header file, included by other library headers.
  *  Do not attempt to use it directly. @headername{functional}
  */
diff --git a/libstdc++-v3/include/bits/formatfwd.h b/libstdc++-v3/include/bits/formatfwd.h
index d2dfb17492d1..d28ca70b7d80 100644
--- a/libstdc++-v3/include/bits/formatfwd.h
+++ b/libstdc++-v3/include/bits/formatfwd.h
@@ -56,6 +56,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // [format.formatter], formatter
   template<typename _Tp, typename _CharT = char> struct formatter;
 
+/// @cond undocumented
 namespace __format
 {
 #ifdef _GLIBCXX_USE_WCHAR_T
diff --git a/libstdc++-v3/include/bits/forward_list.h b/libstdc++-v3/include/bits/forward_list.h
index 025486646f3c..7b333b3b0b6e 100644
--- a/libstdc++-v3/include/bits/forward_list.h
+++ b/libstdc++-v3/include/bits/forward_list.h
@@ -1461,7 +1461,7 @@ namespace __fwdlist
        *
        *  This function will insert copies of the data in the range
        *  `[ __first, __last)` into the %forward_list after the
-       *  location specified by `__pos.
+       *  location specified by `__pos`.
        *
        *  This operation is linear in the number of elements inserted and
        *  does not invalidate iterators and references.
diff --git a/libstdc++-v3/include/bits/out_ptr.h b/libstdc++-v3/include/bits/out_ptr.h
index 48fe3475b2f7..cc5a8a3adacb 100644
--- a/libstdc++-v3/include/bits/out_ptr.h
+++ b/libstdc++-v3/include/bits/out_ptr.h
@@ -396,7 +396,7 @@ namespace __detail
   /**
    * @tparam _Pointer The type of pointer to convert to.
    * @param __s The pointer that should take ownership of the result.
-   * @param __args... Arguments to use when resetting the smart pointer.
+   * @param __args Pack of arguments to use when resetting the smart pointer.
    * @return A `std::out_ptr_t` referring to `__s`.
    * @since C++23
    * @headerfile <memory>
@@ -417,7 +417,7 @@ namespace __detail
   /**
    * @tparam _Pointer The type of pointer to convert to.
    * @param __s The pointer that should take ownership of the result.
-   * @param __args... Arguments to use when resetting the smart pointer.
+   * @param __args Pack of arguments to use when resetting the smart pointer.
    * @return A `std::inout_ptr_t` referring to `__s`.
    * @since C++23
    * @headerfile <memory>
diff --git a/libstdc++-v3/include/bits/regex_constants.h b/libstdc++-v3/include/bits/regex_constants.h
index 32b9de1000b2..e18f162196e3 100644
--- a/libstdc++-v3/include/bits/regex_constants.h
+++ b/libstdc++-v3/include/bits/regex_constants.h
@@ -335,9 +335,9 @@ namespace regex_constants
    * Format strings (from ECMA-262 [15.5.4.11]):
    * @li $$  The dollar-sign itself ($)
    * @li $&  The matched substring.
-   * @li $`  The portion of @a string that precedes the matched substring.
+   * @li $\`  The portion of the string that precedes the matched substring.
    *         This would be match_results::prefix().
-   * @li $'  The portion of @a string that follows the matched substring.
+   * @li $'  The portion of the string that follows the matched substring.
    *         This would be match_results::suffix().
    * @li $n  The nth capture, where n is in [1,9] and $n is not followed by a
    *         decimal digit.  If n <= match_results::size() and the nth capture
diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index 1e119a95b5cd..88a8faab9244 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -1096,6 +1096,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  is assigned from __obj.
        *
        *  Insertion requires logarithmic time.
+       *  @{
        */
       template <typename _Obj>
 	pair<iterator, bool>
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index efe6f72569ba..aa49f87fc137 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -101,9 +101,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<size_t...>
     struct _Index_tuple;
 
-  template<typename _Tp>
-    class complex;
-
   template<size_t _Int, class _Tp1, class _Tp2>
     constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&
     get(pair<_Tp1, _Tp2>& __in) noexcept;
@@ -153,6 +150,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     get(const array<_Tp, _Nm>&&) noexcept;
 
 #if __glibcxx_tuple_like >= 202311 // >= C++26
+  template<typename _Tp>
+    class complex;
+
   template<size_t _Int, typename _Tp>
     constexpr _Tp&
     get(complex<_Tp>&) noexcept;
@@ -233,8 +233,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
     };
 #endif // lib concepts
+  /// @endcond
 #endif // C++11
 
+  /// @cond undocumented
+
 #if __glibcxx_tuple_like // >= C++23
   template<typename _Tp>
     inline constexpr bool __is_tuple_v = false;
diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h
index 14825cc05acb..ce35e28cde78 100644
--- a/libstdc++-v3/include/bits/stl_set.h
+++ b/libstdc++-v3/include/bits/stl_set.h
@@ -585,6 +585,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  to the first is returned.
        *
        *  Insertion requires logarithmic time (if the hint is not taken).
+       *  @{
        */
       iterator
       insert(const_iterator __position, const value_type& __x)
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 314c0f6ac4a4..91478d3e9fbe 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -148,9 +148,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     }
 #endif // __cpp_lib_invoke_r
 
+#if __cplusplus >= 201103L
   /// @cond undocumented
 
-#if __cplusplus >= 201103L
   template<typename _MemFunPtr,
 	   bool __is_mem_fn = is_member_function_pointer<_MemFunPtr>::value>
     class _Mem_fn_base
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index a7f881fe9736..bba7a3fd03d2 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -2484,15 +2484,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     const size_t aligned_union<_Len, _Types...>::alignment_value;
 #pragma GCC diagnostic pop
 
-  /// @cond undocumented
-
+  // Decay trait for arrays and functions, used for perfect forwarding
+  // in make_pair, make_tuple, etc.
 #if _GLIBCXX_USE_BUILTIN_TRAIT(__decay)
   template<typename _Tp>
     struct decay
     { using type = __decay(_Tp); };
 #else
-  // Decay trait for arrays and functions, used for perfect forwarding
-  // in make_pair, make_tuple, etc.
+  /// @cond undocumented
+
   template<typename _Up>
     struct __decay_selector
     : __conditional_t<is_const<const _Up>::value, // false for functions
diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception
index 0ae01be25dd5..ab3e06da9f79 100644
--- a/libstdc++-v3/libsupc++/exception
+++ b/libstdc++-v3/libsupc++/exception
@@ -134,8 +134,8 @@ namespace std _GLIBCXX_VISIBILITY(default)
    *  stack unwinding [15.2].  end note]'
    *
    *  2: 'When `uncaught_exception()` is true, throwing an
-   *  %exception can result in a call of 1terminate()`
-   *  (15.5.1).'
+   *  %exception can result in a call of `terminate()`
+   *  (15.5.1).
    */
   _GLIBCXX17_DEPRECATED_SUGGEST("std::uncaught_exceptions()")
   bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));

From redi@gcc.gnu.org  Thu Apr  2 13:26:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:07 +0000 (GMT)
Subject: [gcc r16-8419] libstdc++: Fix missing #endif in unused header
Message-ID: <20260402132607.A044A4BA2E2B@sourceware.org>

https://gcc.gnu.org/g:0591b1422c96cc3ba8c38dd14963959561201219

commit r16-8419-g0591b1422c96cc3ba8c38dd14963959561201219
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 10:26:19 2026 +0100

    libstdc++: Fix missing #endif in unused header
    
    This header does not appear to be used anywhere, but Doxygen gives a
    warning when processing it:
    
    include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:49: warning: More #if's than #endif's found (might be in an included file).
    
    libstdc++-v3/ChangeLog:
    
            * include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:
            Add missing #endif.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp   | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
index 99684c66be26..aa19c0d04722 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
@@ -46,3 +46,4 @@ inline typename PB_DS_CLASS_C_DEC::pointer
 PB_DS_CLASS_C_DEC::
 find_key_pointer(key_const_reference r_key, false_type)
 
+#endif

From redi@gcc.gnu.org  Thu Apr  2 13:26:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:12 +0000 (GMT)
Subject: [gcc r16-8420] libstdc++: Remove Doxygen @return on void functions
Message-ID: <20260402132612.C4A1B4BA9025@sourceware.org>

https://gcc.gnu.org/g:6cfeaa2a6ddcf51e12ee0a0ba0a61888a14eec3d

commit r16-8420-g6cfeaa2a6ddcf51e12ee0a0ba0a61888a14eec3d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:06:21 2026 +0100

    libstdc++: Remove Doxygen @return on void functions
    
    With the latest version of Doxygen this gives a warning about using
    @return on a function that returns void. Stating it explicitly adds very
    little value, anybody can see from the signature that a function returns
    void.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/move.h                    |  1 -
 libstdc++-v3/include/bits/stl_algo.h                | 13 -------------
 libstdc++-v3/include/bits/stl_algobase.h            |  2 --
 libstdc++-v3/include/bits/stl_deque.h               |  3 ---
 libstdc++-v3/include/bits/stl_iterator_base_funcs.h |  1 -
 libstdc++-v3/include/bits/stl_numeric.h             |  1 -
 libstdc++-v3/include/bits/stl_tempbuf.h             |  1 -
 libstdc++-v3/include/bits/stl_uninitialized.h       |  1 -
 8 files changed, 23 deletions(-)

diff --git a/libstdc++-v3/include/bits/move.h b/libstdc++-v3/include/bits/move.h
index 34962455129e..1a03db661123 100644
--- a/libstdc++-v3/include/bits/move.h
+++ b/libstdc++-v3/include/bits/move.h
@@ -212,7 +212,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief Swaps two values.
    *  @param  __a  A thing of arbitrary type.
    *  @param  __b  Another thing of arbitrary type.
-   *  @return   Nothing.
   */
   template<typename _Tp>
 #if __glibcxx_concepts // >= C++20
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index aa62bff8a469..adf9b9e0f280 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -2531,7 +2531,6 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   An iterator.
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
-   *  @return  Nothing.
    *
    *  Merges two sorted and consecutive ranges, [__first,__middle) and
    *  [__middle,__last), and puts the result in [__first,__last).  The
@@ -2570,7 +2569,6 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
    *  @param  __comp    A functor to use for comparisons.
-   *  @return  Nothing.
    *
    *  Merges two sorted and consecutive ranges, [__first,__middle) and
    *  [middle,last), and puts the result in [__first,__last).  The output will
@@ -3678,7 +3676,6 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
    *  @param  __g       A UniformRandomNumberGenerator (26.5.1.3).
-   *  @return  Nothing.
    *
    *  Reorders the elements in the range @p [__first,__last) using @p __g to
    *  provide random numbers.
@@ -4499,7 +4496,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup mutating_algorithms
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
-   *  @return  Nothing.
    *
    *  Reorder the elements in the range `[__first, __last)` using a random
    *  distribution, so that every possible ordering of the sequence is
@@ -4565,7 +4561,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
    *  @param  __rand    The RNG functor or function.
-   *  @return  Nothing.
    *
    *  Reorders the elements in the range `[__first, __last)` using `__rand`
    *  to provide a random distribution. Calling `__rand(N)` for a positive
@@ -4647,7 +4642,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
-   *  @return  Nothing.
    *
    *  Sorts the smallest `(__middle - __first)` elements in the range
    *  `[first, last)` and moves them to the range `[__first, __middle)`. The
@@ -4686,7 +4680,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
    *  @param  __comp    A comparison functor.
-   *  @return  Nothing.
    *
    *  Sorts the smallest `(__middle - __first)` elements in the range
    *  `[__first, __last)` and moves them to the range `[__first, __middle)`.
@@ -4724,7 +4717,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __nth     Another iterator.
    *  @param  __last    Another iterator.
-   *  @return  Nothing.
    *
    *  Rearranges the elements in the range `[__first, __last)` so that `*__nth`
    *  is the same element that would have been in that position had the
@@ -4764,7 +4756,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __nth     Another iterator.
    *  @param  __last    Another iterator.
    *  @param  __comp    A comparison functor.
-   *  @return  Nothing.
    *
    *  Rearranges the elements in the range `[__first, __last)` so that `*__nth`
    *  is the same element that would have been in that position had the
@@ -4802,7 +4793,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @return  Nothing.
    *
    *  Sorts the elements in the range `[__first, __last)` in ascending order,
    *  such that for each iterator `i` in the range `[__first, __last - 1)`,
@@ -4833,7 +4823,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __comp    A comparison functor.
-   *  @return  Nothing.
    *
    *  Sorts the elements in the range `[__first, __last)` in ascending order,
    *  such that `__comp(*(i+1), *i)` is false for every iterator `i` in the
@@ -5028,7 +5017,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @return  Nothing.
    *
    *  Sorts the elements in the range @p [__first,__last) in ascending order,
    *  such that for each iterator @p i in the range @p [__first,__last-1),
@@ -5063,7 +5051,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __comp    A comparison functor.
-   *  @return  Nothing.
    *
    *  Sorts the elements in the range @p [__first,__last) in ascending order,
    *  such that for each iterator @p i in the range @p [__first,__last-1),
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 3fdbff973538..1350736a8d8e 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -144,7 +144,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @ingroup mutating_algorithms
    *  @param  __a  An iterator.
    *  @param  __b  Another iterator.
-   *  @return   Nothing.
    *
    *  This function swaps the values pointed to by two iterators, not the
    *  iterators themselves.
@@ -990,7 +989,6 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
    *  @param  __first  A forward iterator.
    *  @param  __last   A forward iterator.
    *  @param  __value  A reference-to-const of arbitrary type.
-   *  @return   Nothing.
    *
    *  This function fills a range with copies of the same value.  For char
    *  types filling contiguous areas of memory, this becomes an inline call
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index c08212861b6c..aebe865ffc1a 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -632,7 +632,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *  @brief Layout storage.
    *  @param  __num_elements  The count of T's for which to allocate space
    *                          at first.
-   *  @return   Nothing.
    *
    *  The initial underlying memory layout is a bit complicated...
   */
@@ -1985,7 +1984,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        *  @brief Fills the deque with whatever is in [first,last).
        *  @param  __first  An input iterator.
        *  @param  __last  An input iterator.
-       *  @return   Nothing.
        *
        *  If the iterators are actually forward iterators (or better), then the
        *  memory layout can be done all at once.  Else we move forward using
@@ -2006,7 +2004,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       /**
        *  @brief Fills the %deque with copies of value.
        *  @param  __value  Initial value.
-       *  @return   Nothing.
        *  @pre _M_start and _M_finish have already been initialized,
        *  but none of the %deque's elements have yet been constructed.
        *
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
index 515d6e6c04f8..d85b39365400 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
@@ -248,7 +248,6 @@ namespace __detail
    *  @brief A generalization of pointer arithmetic.
    *  @param  __i  An input iterator.
    *  @param  __n  The @a delta by which to change @p __i.
-   *  @return  Nothing.
    *
    *  This increments @p i by @p n.  For bidirectional and random access
    *  iterators, @p __n may be negative, in which case @p __i is decremented.
diff --git a/libstdc++-v3/include/bits/stl_numeric.h b/libstdc++-v3/include/bits/stl_numeric.h
index dad20c806b30..182769f0dc4f 100644
--- a/libstdc++-v3/include/bits/stl_numeric.h
+++ b/libstdc++-v3/include/bits/stl_numeric.h
@@ -79,7 +79,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  Start of range.
    *  @param  __last  End of range.
    *  @param  __value  Starting value.
-   *  @return  Nothing.
    *  @ingroup numeric_ops
    */
   template<typename _ForwardIterator, typename _Tp>
diff --git a/libstdc++-v3/include/bits/stl_tempbuf.h b/libstdc++-v3/include/bits/stl_tempbuf.h
index 1ae41991910c..a1d0a39f0b98 100644
--- a/libstdc++-v3/include/bits/stl_tempbuf.h
+++ b/libstdc++-v3/include/bits/stl_tempbuf.h
@@ -159,7 +159,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief The companion to get_temporary_buffer().
    *  @param  __p  A buffer previously allocated by get_temporary_buffer.
-   *  @return   None.
    *
    *  Frees the memory pointed to by __p.
    */
diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h
index ecc24023e98f..1c1fcfd62a4d 100644
--- a/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -403,7 +403,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  A forward iterator.
    *  @param  __last   A forward iterator.
    *  @param  __x      The source value.
-   *  @return   Nothing.
    *
    *  Like std::fill, but does not require an initialized output range.
   */

From redi@gcc.gnu.org  Thu Apr  2 13:26:17 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:17 +0000 (GMT)
Subject: [gcc r16-8421] libstdc++: Fix Doxygen grouping
Message-ID: <20260402132617.EA6954BA9000@sourceware.org>

https://gcc.gnu.org/g:0c2c94b1d1ecca89c4daf6f9d67f9e86eceab5bd

commit r16-8421-g0c2c94b1d1ecca89c4daf6f9d67f9e86eceab5bd
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:13:23 2026 +0100

    libstdc++: Fix Doxygen grouping
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/ostream.h       | 4 ++--
 libstdc++-v3/include/bits/stl_queue.h     | 7 ++++++-
 libstdc++-v3/include/bits/unordered_map.h | 3 +--
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/bits/ostream.h b/libstdc++-v3/include/bits/ostream.h
index a637c433bf1b..7c53b21bdb3d 100644
--- a/libstdc++-v3/include/bits/ostream.h
+++ b/libstdc++-v3/include/bits/ostream.h
@@ -657,6 +657,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline basic_ostream<char, _Traits>&
     operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
     { return (__out << static_cast<char>(__c)); }
+  ///@}
 
 #if __cplusplus > 201703L
   // The following deleted overloads prevent formatting character values as
@@ -696,7 +697,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     operator<<(basic_ostream<wchar_t, _Traits>&, char32_t) = delete;
 #endif // _GLIBCXX_USE_WCHAR_T
 #endif // C++20
-  ///@}
 
   ///@{
   /**
@@ -751,6 +751,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline basic_ostream<char, _Traits> &
     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
     { return (__out << reinterpret_cast<const char*>(__s)); }
+  ///@}
 
 #if __cplusplus > 201703L
    // The following deleted overloads prevent formatting strings as
@@ -790,7 +791,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     operator<<(basic_ostream<wchar_t, _Traits>&, const char32_t*) = delete;
 #endif // _GLIBCXX_USE_WCHAR_T
 #endif // C++20
-  ///@}
 
 #if __cplusplus >= 201103L
   // C++11 27.7.3.9 Rvalue stream insertion [ostream.rvalue]
diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index 48bd0ebed634..5dc846e13e16 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -685,6 +685,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *
        *  For more information on function objects, see the
        *  documentation on @link functors functor base classes@endlink.
+       *
+       *  @{
        */
 #if __cplusplus < 201103L
       template<typename _InputIterator>
@@ -730,7 +732,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  c.insert(c.end(), __first, __last);
 	  std::make_heap(c.begin(), c.end(), comp);
 	}
+#endif // C++11
+      /// @}
 
+#if __cplusplus >= 201103L
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 3506. Missing allocator-extended constructors for priority_queue
       template<typename _InputIterator, typename _Alloc,
@@ -773,7 +778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  c.insert(c.end(), __first, __last);
 	  std::make_heap(c.begin(), c.end(), comp);
 	}
-#endif
+#endif // C++11
 
 #if __glibcxx_containers_ranges // C++ >= 23
       /**
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index 229179933f3b..853386e9f9bc 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -456,7 +456,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	emplace(_Args&&... __args)
 	{ return _M_h.emplace(std::forward<_Args>(__args)...); }
 
-      ///@{
       /**
        *  @brief Attempts to build and insert a std::pair into the
        *  %unordered_map.
@@ -617,7 +616,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  return _M_h.try_emplace(__hint, std::move(__k),
 				  std::forward<_Args>(__args)...).first;
 	}
-#endif // __glibcxx_unordered_map_try_emplace
 
 #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
       template <__heterogeneous_hash_key<unordered_map> _Kt, typename ..._Args>
@@ -629,6 +627,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	}
 #endif
       ///@}
+#endif // __glibcxx_unordered_map_try_emplace
 
       ///@{
       /**

From redi@gcc.gnu.org  Thu Apr  2 13:26:23 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:23 +0000 (GMT)
Subject: [gcc r16-8422] libstdc++: Rename parameters of unordered erase(K&&)
 members
Message-ID: <20260402132623.1D6C44BA9027@sourceware.org>

https://gcc.gnu.org/g:bc8c59ad3ab798283cbd47eb619946c140644c94

commit r16-8422-gbc8c59ad3ab798283cbd47eb619946c140644c94
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 18:11:34 2026 +0100

    libstdc++: Rename parameters of unordered erase(K&&) members
    
    This fixes some Doxygen warnings caused by inconsistent parameter names,
    which do not match the names used in the Doxygen comments:
    
    include/bits/unordered_map.h:899: warning: argument '__x' of command @param is not found in the argument list of std::unordered_map< _Key, _Tp, _Hash, _Pred, _Alloc >::erase(_Kt &&__key)
    include/bits/unordered_map.h:899: warning: The following parameter of std::unordered_map::erase(_Kt &&__key) is not documented:
      parameter '__key'
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/unordered_map.h | 4 ++--
 libstdc++-v3/include/bits/unordered_set.h | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index 853386e9f9bc..c84a4730e320 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -913,8 +913,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 #ifdef __glibcxx_associative_heterogeneous_erasure // C++23
       template <__heterogeneous_hash_key<unordered_map> _Kt>
 	size_type
-	erase(_Kt&& __key)
-	{ return _M_h._M_erase_tr(__key); }
+	erase(_Kt&& __x)
+	{ return _M_h._M_erase_tr(__x); }
 #endif
       ///@}
 
diff --git a/libstdc++-v3/include/bits/unordered_set.h b/libstdc++-v3/include/bits/unordered_set.h
index 3585fe2c7144..e7db34151b49 100644
--- a/libstdc++-v3/include/bits/unordered_set.h
+++ b/libstdc++-v3/include/bits/unordered_set.h
@@ -656,8 +656,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 #ifdef __glibcxx_associative_heterogeneous_erasure // C++23
       template <__heterogeneous_hash_key<unordered_set> _Kt>
 	size_type
-	erase(_Kt&& __key)
-	{ return _M_h._M_erase_tr(__key); }
+	erase(_Kt&& __x)
+	{ return _M_h._M_erase_tr(__x); }
 #endif
 
       /**
@@ -1674,8 +1674,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 #ifdef __glibcxx_associative_heterogeneous_erasure // C++23
       template <__heterogeneous_hash_key<unordered_multiset> _Kt>
 	size_type
-	erase(_Kt&& __key)
-	{ return _M_h._M_erase_tr(__key); }
+	erase(_Kt&& __x)
+	{ return _M_h._M_erase_tr(__x); }
 #endif
 
       /**

From redi@gcc.gnu.org  Thu Apr  2 13:26:28 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:28 +0000 (GMT)
Subject: [gcc r16-8423] libstdc++: Fix Doxygen comments on chrono::floor etc.
Message-ID: <20260402132628.431994BA23E3@sourceware.org>

https://gcc.gnu.org/g:3c16bcabff16e9281d08353fe29c1bbd5fd4a805

commit r16-8423-g3c16bcabff16e9281d08353fe29c1bbd5fd4a805
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 17:06:21 2026 +0100

    libstdc++: Fix Doxygen comments on chrono::floor etc.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono.h (floor, ceil, round): Fix Doxygen
            comments to use correct parameter name and describe return value
            more accurately.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/chrono.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index 911cc791ca0e..fd91505c16f4 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1035,8 +1035,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
      * returns the closest value that is less than the argument.
      *
      * @tparam _ToDur The `duration` type to use for the result.
-     * @param __t A time point.
-     * @return The value of `__d` converted to type `_ToDur`.
+     * @param __tp A time point.
+     * @return The value of `__tp` rounded down to the precision of `_ToDur`.
      * @since C++17
      */
     template<typename _ToDur, typename _Clock, typename _Dur>
@@ -1056,8 +1056,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
      * returns the closest value that is greater than the argument.
      *
      * @tparam _ToDur The `duration` type to use for the result.
-     * @param __t A time point.
-     * @return The value of `__d` converted to type `_ToDur`.
+     * @param __tp A time point.
+     * @return The value of `__tp` rounded up to the precision of `_ToDur`.
      * @since C++17
      */
     template<typename _ToDur, typename _Clock, typename _Dur>
@@ -1078,8 +1078,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
      *
      * @tparam _ToDur The `duration` type to use for the result,
      *                which must have a non-floating-point `rep` type.
-     * @param __t A time point.
-     * @return The value of `__d` converted to type `_ToDur`.
+     * @param __tp A time point.
+     * @return The value of `__tp` rounded to the precision `_ToDur`.
      * @since C++17
      */
     template<typename _ToDur, typename _Clock, typename _Dur>

From redi@gcc.gnu.org  Thu Apr  2 13:26:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:33 +0000 (GMT)
Subject: [gcc r16-8424] libstdc++: Minor tweak to Doxygen comment for std::pair
Message-ID: <20260402132633.781104BA23F0@sourceware.org>

https://gcc.gnu.org/g:d61f795de98e282a22748b0fa6d10a38d98f2bdb

commit r16-8424-gd61f795de98e282a22748b0fa6d10a38d98f2bdb
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:22:14 2026 +0100

    libstdc++: Minor tweak to Doxygen comment for std::pair
    
    It doesn't necessarily hold objects, it can hold references too.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_pair.h (pair): Adjust Doxygen comment.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/stl_pair.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index aa49f87fc137..f08b2714a4fe 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -292,10 +292,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// @endcond
 
  /**
-   *  @brief Struct holding two objects of arbitrary type.
+  *  @brief Struct holding two objects (or references) of arbitrary type.
    *
-   *  @tparam _T1  Type of first object.
-   *  @tparam _T2  Type of second object.
+   *  @tparam _T1  Type of the `first` member.
+   *  @tparam _T2  Type of the `second` member.
    *
    *  <https://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html>
    *

From redi@gcc.gnu.org  Thu Apr  2 13:26:38 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:26:38 +0000 (GMT)
Subject: [gcc r16-8425] libstdc++: Simplify documentation of
 match_flag_type::format_default
Message-ID: <20260402132638.9860A4BA23F0@sourceware.org>

https://gcc.gnu.org/g:74b665e0f0fed9e544cf332089ee7abad528aa93

commit r16-8425-g74b665e0f0fed9e544cf332089ee7abad528aa93
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 15:02:06 2026 +0100

    libstdc++: Simplify documentation of match_flag_type::format_default
    
    This combines the $n and $nn items into one, which is more consistent
    with the EcmaScript docs.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/regex_constants.h (format_default): Simplify
            description of $n in Doxygen comment.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/regex_constants.h | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/libstdc++-v3/include/bits/regex_constants.h b/libstdc++-v3/include/bits/regex_constants.h
index e18f162196e3..5fa78e18a3f1 100644
--- a/libstdc++-v3/include/bits/regex_constants.h
+++ b/libstdc++-v3/include/bits/regex_constants.h
@@ -339,14 +339,10 @@ namespace regex_constants
    *         This would be match_results::prefix().
    * @li $'  The portion of the string that follows the matched substring.
    *         This would be match_results::suffix().
-   * @li $n  The nth capture, where n is in [1,9] and $n is not followed by a
-   *         decimal digit.  If n <= match_results::size() and the nth capture
-   *         is undefined, use the empty string instead.  If n >
-   *         match_results::size(), the result is implementation-defined.
-   * @li $nn The nnth capture, where nn is a two-digit decimal number on
-   *         [01, 99].  If nn <= match_results::size() and the nth capture is
-   *         undefined, use the empty string instead. If
-   *         nn > match_results::size(), the result is implementation-defined.
+   * @li $n  The nth capture, where n is a positive integer less than 100.
+   *         If `n <= match_results::size()` and the nth capture is undefined,
+   *         use the empty string instead.  If `n > match_results::size()`,
+   *         the result is implementation-defined.
    */
   _GLIBCXX17_INLINE constexpr match_flag_type format_default = _S_default;

From redi@gcc.gnu.org  Thu Apr  2 13:43:50 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  2 Apr 2026 13:43:50 +0000 (GMT)
Subject: [gcc r16-8426] libstdc++: Add Doxygen documentation to <version>
Message-ID: <20260402134350.6965A4BA2E17@sourceware.org>

https://gcc.gnu.org/g:99135a19aad894b8f3d5372df0f94b14e2f42fb2

commit r16-8426-g99135a19aad894b8f3d5372df0f94b14e2f42fb2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 20:17:29 2026 +0100

    libstdc++: Add Doxygen documentation to <version>
    
    libstdc++-v3/ChangeLog:
    
            * include/std/version: Add Doxygen documentation comment.
    
    Reviewed-by: Nathan Myers <nmyers@redhat.com>
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/version | 38 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index c6ac031f6b54..8ab9acc17a0a 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -23,8 +23,42 @@
 // <http://www.gnu.org/licenses/>.
 
 /** @file version
- *  This is a Standard C++ Library file.  You should @c \#include this file
- *  in your programs, rather than any of the @a *.h implementation files.
+ *  This is a Standard C++ Library header.  You should `#include` this header
+ *  in your programs, rather than any of the `*.h` implementation files.
+ *
+ * The `<version>` header defines feature test macros that describe the
+ * supported features of the C++ standard library implementation being used.
+ * The macros that are defined, and their values, depend on compiler flags
+ * (usually `-std`, but others such as `-fcoroutines` and `-fno-aligned-new`
+ * can affect them).
+ *
+ * These macros can be used to conditionally enable or disable code:
+ *
+ * ```
+ * #include <version>
+ * #ifdef __cpp_lib_expected
+ *   // std::expected is supported
+ * #endif
+ * ```
+ *
+ * The macro values indicate different levels of support, for example
+ * `__cpp_lib_expected == 202202L` means only the original feature set of
+ * `std::expected` is supported, while `__cpp_lib_expected == 202211L` means
+ * that the monadic functions such as `std::expected::and_then` are also
+ * supported.
+ *
+ * The list of macros defined in `<version>` and their meanings is given in
+ * the C++ standard committee's SD-6 document:
+ * https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
+ *
+ * `<version>` may also define non-standard, implementation-specific macros,
+ * such as libstdc++'s `_GLIBCXX_RELEASE`.  However, the standard feature
+ * test macros should be preferred over depending on specific versions of any
+ * particular implementation.
+ *
+ * The `<version>` header was introduced in C++20, but libstdc++ provides it
+ * unconditionally. As documented in SD-6, some macros correspond to features
+ * in C++17 and earlier standards.
  */
 
 #ifndef _GLIBCXX_VERSION_INCLUDED

From tkaminsk@gcc.gnu.org  Thu Apr  2 13:50:34 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  2 Apr 2026 13:50:34 +0000 (GMT)
Subject: [gcc r16-8429] libstdc++: Updated inplace_vector::try_ functions per
 P3981R2 and P4022R0.
Message-ID: <20260402135034.79D594BA2E17@sourceware.org>

https://gcc.gnu.org/g:8b95d5f5b22621da6a5f0d6e07e7d9bf8d270a6d

commit r16-8429-g8b95d5f5b22621da6a5f0d6e07e7d9bf8d270a6d
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 2 12:00:01 2026 +0200

    libstdc++: Updated inplace_vector::try_ functions per P3981R2 and P4022R0.
    
    This paper removes the try_append_range from inplace_vector and changes the
    return type of try_emplace_back and try_push_back to optional<_Tp&> per:
    P4022R0: Remove try_append_range from inplace_vector for now.
    P3981R2: Better return types in std::inplace_vector and std::exception_ptr_cast.
    
    The test are also expanded to cover type Y, that is convertible to optional<Y&>,
    and require return type to be constructed using in_place.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |  5 +-
 libstdc++-v3/include/bits/version.h                |  4 +-
 libstdc++-v3/include/debug/inplace_vector          | 26 +++-----
 libstdc++-v3/include/std/inplace_vector            | 70 ++++++----------------
 .../debug/invalidation/try_append_range.cc         | 45 --------------
 .../debug/invalidation/try_emplace_back.cc         |  2 +-
 .../debug/invalidation/try_push_back.cc            |  4 +-
 .../inplace_vector/modifiers/multi_insert.cc       | 46 --------------
 .../inplace_vector/modifiers/single_insert.cc      | 41 +++++++++----
 .../23_containers/inplace_vector/version.cc        |  4 +-
 10 files changed, 66 insertions(+), 181 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index ada8da88bc52..998223306e25 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2223,9 +2223,12 @@ ftms = {
 };
 
 ftms = {
+  // 202406 P0843R14 inplace_vector 
+  // 202603 P3981R2 Better return types in std::inplace_vector and std::exception_ptr_cast
+  //        P4022R0 Remove try_append_range from inplace_vector for now
   name = inplace_vector;
   values = {
-    v = 202406;
+    v = 202603;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 0490e79dd416..cb3b9b0997e8 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2488,9 +2488,9 @@
 
 #if !defined(__cpp_lib_inplace_vector)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_inplace_vector 202406L
+#  define __glibcxx_inplace_vector 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_inplace_vector)
-#   define __cpp_lib_inplace_vector 202406L
+#   define __cpp_lib_inplace_vector 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_inplace_vector) */
diff --git a/libstdc++-v3/include/debug/inplace_vector b/libstdc++-v3/include/debug/inplace_vector
index 750b0a7343ca..e579e8636f98 100644
--- a/libstdc++-v3/include/debug/inplace_vector
+++ b/libstdc++-v3/include/debug/inplace_vector
@@ -338,11 +338,12 @@ namespace __debug
       }
 
       template<typename... _Args>
-	constexpr _Tp*
+	constexpr optional<_Tp&>
 	try_emplace_back(_Args&&... __args)
 	{
 	  auto __end = _Base::cend();
-	  _Tp* __res = _Base::try_emplace_back(std::forward<_Args>(__args)...);
+	  optional<_Tp&> __res
+	    = _Base::try_emplace_back(std::forward<_Args>(__args)...);
 
 	  if (__res)
 	    this->_M_invalidate_if(_Equal(__end));
@@ -350,11 +351,11 @@ namespace __debug
 	  return __res;
 	}
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(const _Tp& __x)
       {
 	const auto __end = _Base::cend();
-	_Tp* __res = _Base::try_push_back(__x);
+	optional<_Tp&> __res = _Base::try_push_back(__x);
 
 	if (__res)
 	  this->_M_invalidate_if(_Equal(__end));
@@ -362,11 +363,11 @@ namespace __debug
 	return __res;
       }
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(_Tp&& __x)
       {
 	const auto __end = _Base::cend();
-	_Tp* __res = _Base::try_push_back(std::move(__x));
+	optional<_Tp&> __res = _Base::try_push_back(std::move(__x));
 
 	if (__res)
 	  this->_M_invalidate_if(_Equal(__end));
@@ -374,19 +375,6 @@ namespace __debug
 	return __res;
       }
 
-      template<__detail::__container_compatible_range<_Tp> _Rg>
-	constexpr ranges::borrowed_iterator_t<_Rg>
-	try_append_range(_Rg&& __rg)
-	{
-	  const auto __size = size();
-	  const auto __end = _Base::cend();
-	  auto __res = _Base::try_append_range(__rg);
-	  if (size() != __size)
-	    this->_M_invalidate_if(_Equal(__end));
-
-	  return __res;
-	}
-
       template<typename... _Args>
 	constexpr _Tp&
 	unchecked_emplace_back(_Args&&... __args)
diff --git a/libstdc++-v3/include/std/inplace_vector b/libstdc++-v3/include/std/inplace_vector
index c22a9e1f9b40..5ad92332a02c 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -38,6 +38,7 @@
 #ifdef __glibcxx_inplace_vector // C++ >= 26
 #include <compare>
 #include <initializer_list>
+#include <optional>
 #include <bits/stdexcept_throw.h>
 #include <bits/range_access.h>
 #include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range
@@ -550,63 +551,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       }
 
       template<typename... _Args>
-	constexpr _Tp*
+	constexpr optional<_Tp&>
 	try_emplace_back(_Args&&... __args)
 	{
 	  if (_M_size >= _Nm) [[unlikely]]
-	    return nullptr;
-	  auto& __r = unchecked_emplace_back(std::forward<_Args>(__args)...);
-	  return __builtin_addressof(__r);
+	    return nullopt;
+	  return optional<_Tp&>(in_place,
+		   unchecked_emplace_back(std::forward<_Args>(__args)...));
 	}
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(const _Tp& __x)
       {
 	if (_M_size >= _Nm) [[unlikely]]
-	  return nullptr;
-	return __builtin_addressof(unchecked_emplace_back(__x));
+	  return nullopt;
+	return optional<_Tp&>(in_place, unchecked_emplace_back(__x));
       }
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(_Tp&& __x)
       {
 	if (_M_size >= _Nm) [[unlikely]]
-	  return nullptr;
-	return __builtin_addressof(unchecked_emplace_back(std::move(__x)));
+	  return nullopt;
+	return optional<_Tp&>(in_place, unchecked_emplace_back(std::move(__x)));
       }
 
-      template<__detail::__container_compatible_range<_Tp> _Rg>
-	constexpr ranges::borrowed_iterator_t<_Rg>
-	try_append_range(_Rg&& __rg)
-	{
-	  if constexpr (ranges::sized_range<_Rg>)
-	    {
-	      auto __n = ranges::distance(__rg);
-	      if (__n == 0) [[unlikely]]
-		return ranges::begin(__rg);
-
-	      const auto __end = data() + _M_size;
-	      const size_t __avail = _Nm - size();
-	      if (__n <= __avail)
-		_M_size += size_type(__n);
-	      else
-		{
-		  __n = __avail;
-		  _M_size = _Nm;
-		}
-	      return ranges::uninitialized_copy_n(
-		       ranges::begin(__rg), __n,
-		       __end, unreachable_sentinel).in;
-	    }
-	  else
-	    {
-	      ranges::subrange<pointer> __tail(data() + _M_size, data() + _Nm);
-	      auto [__in, __out] = ranges::uninitialized_copy(__rg, __tail);
-	      _M_size = __out - data();
-	      return std::move(__in);
-	    }
-	}
-
       template<typename... _Args>
 	constexpr _Tp&
 	unchecked_emplace_back(_Args&&... __args)
@@ -1208,22 +1177,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       { __builtin_trap(); }
 
       template<typename... _Args>
-	constexpr _Tp*
+        constexpr optional<_Tp&>
 	try_emplace_back(_Args&&...)
-	{ return nullptr; }
+	{ return nullopt; }
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(const _Tp&)
-      { return nullptr; }
+      { return nullopt; }
 
-      constexpr _Tp*
+      constexpr optional<_Tp&>
       try_push_back(_Tp&&)
-      { return nullptr; }
-
-      template<__detail::__container_compatible_range<_Tp> _Rg>
-	constexpr ranges::borrowed_iterator_t<_Rg>
-	try_append_range(_Rg&& __rg)
-	{ return ranges::begin(__rg); }
+      { return nullopt; }
 
       template<typename... _Args>
 	[[noreturn]]
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc
deleted file mode 100644
index ae4ac418f501..000000000000
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// { dg-do run { target c++26 } }
-
-#include <debug/inplace_vector>
-#include <testsuite_hooks.h>
-
-using __gnu_debug::inplace_vector;
-
-void test01()
-{
-  inplace_vector<int, 100> v(10, 17);
-  inplace_vector<int, 10> v1(10, 19);
-
-  auto before = v.begin() + 6;
-  auto last = v.end();
-  auto end = last--;
-
-  v.try_append_range(v1);
-
-  VERIFY(before._M_dereferenceable());
-  VERIFY(last._M_dereferenceable());
-  VERIFY(end._M_singular());
-}
-
-void test02()
-{
-  inplace_vector<int, 100> v(10, 17);
-  inplace_vector<int, 0> v1;
-
-  auto before = v.begin() + 6;
-  auto last = v.end();
-  auto end = last--;
-
-  v.try_append_range(v1);
-
-  VERIFY(before._M_dereferenceable());
-  VERIFY(last._M_dereferenceable());
-  VERIFY(!end._M_singular());
-}
-
-int main()
-{
-  test01();
-  test02();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc
index f7c8c7a9ba20..606d478a0dce 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc
@@ -13,7 +13,7 @@ void test01()
   auto last = v.end();
   auto end = last--;
 
-  VERIFY( v.try_emplace_back(42) != nullptr );
+  VERIFY( v.try_emplace_back(42).has_value() );
 
   VERIFY(before._M_dereferenceable());
   VERIFY(last._M_dereferenceable());
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc
index 04fc010e5003..96af2b65b725 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc
@@ -14,7 +14,7 @@ void test01()
   auto last = v.end();
   auto end = last--;
 
-  VERIFY( v.try_push_back(42) != nullptr );
+  VERIFY( v.try_push_back(42).has_value() );
 
   VERIFY(before._M_dereferenceable());
   VERIFY(last._M_dereferenceable());
@@ -30,7 +30,7 @@ void test02()
   auto last = v.end();
   auto end = last--;
 
-  VERIFY( v.try_push_back(std::move(vv)) != nullptr );
+  VERIFY( v.try_push_back(std::move(vv)).has_value() );
 
   VERIFY(before._M_dereferenceable());
   VERIFY(last._M_dereferenceable());
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
index 454163892add..e5a482cdc65d 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
@@ -54,16 +54,6 @@ test_add_to_full_it()
 
   std::inplace_vector<T, N> v(std::from_range, std::span(a, a+N));
 
-  Range r1(a, a);
-  auto rit1 = v.try_append_range(r1);
-  VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( rit1.base() == a );
-
-  SizedRange r2(a, a);
-  auto rit2 = v.try_append_range(r2);
-  VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( rit2.base() == a );
-
   v.append_range(Range(a, a));
   VERIFY( eq<T>(v, {a, N}) );
   v.append_range(SizedRange(a, a));
@@ -93,17 +83,6 @@ test_add_to_full_it()
   VERIFY( eq<T>(v, {a, N}) );
   VERIFY( it == v.begin() );
 
-  // Inserting non-empty range
-  Range r3(a+3, a+5);
-  auto rit3 = v.try_append_range(r3);
-  VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( rit3.base() == a+3 );
-
-  SizedRange r4(a+2, a+5);
-  auto rit4 = v.try_append_range(r4);
-  VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( rit4.base() == a+2 );
-
 #ifdef __cpp_exceptions
 #ifndef __cpp_lib_constexpr_exceptions
   if consteval {
@@ -265,30 +244,6 @@ test_append_range()
 #endif
 }
 
-template<typename Range>
-constexpr void
-test_try_append_range()
-{
-  using T = std::ranges::range_value_t<Range>;
-  T a[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
-
-  std::inplace_vector<T, 20> v;
-  Range r1 = Range(a, a+10);
-  auto it1 = v.try_append_range(r1);
-  VERIFY( eq<T>(v, {a, 10}) );
-  VERIFY( it1.base() == a+10 );
-
-  Range r2 = Range(a+10, a+15);
-  auto it2 = v.try_append_range(r2);
-  VERIFY( eq<T>(v, {a, 15}) );
-  VERIFY( it2.base() == a+15 );
-
-  Range r3 = Range(a+15, a+25);
-  auto it3 = v.try_append_range(r3);
-  VERIFY( eq<T>(v, {a, 20}) );
-  VERIFY( it3.base() == a+20 );
-}
-
 template<typename Range>
 constexpr void
 test_insert_range()
@@ -357,7 +312,6 @@ constexpr void
 do_test_ranges()
 {
   test_append_range<Range>();
-  test_try_append_range<Range>();
   test_insert_range<Range>();
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc
index 92bd765982e2..245af9288009 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc
@@ -3,6 +3,7 @@
 #include <inplace_vector>
 
 #include <span>
+#include <optional>
 #include <testsuite_hooks.h>
 
 struct X
@@ -18,6 +19,20 @@ struct X
   friend auto operator<=>(const X&, const X&) = default;
 };
 
+// Type that is convertible to optional<Y&>
+struct Y
+{
+  Y() = default;
+  constexpr Y(int p) : v(p) {}
+      
+  constexpr operator std::optional<Y&>()
+  { return std::nullopt; }
+
+  int v;
+
+  friend auto operator<=>(const Y&, const Y&) = default;
+};
+
 template<typename T, typename V, size_t N>
 constexpr bool
 eq(const std::inplace_vector<V, N>& l, std::span<const T> r) {
@@ -40,11 +55,11 @@ test_add_to_full()
 
   std::inplace_vector<T, N> v(std::from_range, std::span(a, a+N));
 
-  VERIFY( v.try_emplace_back(1) == nullptr );
+  VERIFY( !v.try_emplace_back(1).has_value() );
   VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( v.try_push_back(T(1)) == nullptr );
+  VERIFY( !v.try_push_back(T(1)).has_value() );
   VERIFY( eq<T>(v, {a, N}) );
-  VERIFY( v.try_push_back(c) == nullptr );
+  VERIFY( !v.try_push_back(c).has_value() );
   VERIFY( eq<T>(v, {a, N}) );
 
 #ifdef __cpp_exceptions
@@ -149,15 +164,18 @@ test_inserts()
   v.unchecked_push_back(c);
   VERIFY( eq<T>(v, {a+3, 6}) );
 
-  T* ptr = v.try_emplace_back(7);
+  std::optional<T&> opt = v.try_emplace_back(7);
   VERIFY( eq<T>(v, {a+3, 7}) );
-  VERIFY( ptr = &v.back() );
-  ptr = v.try_push_back(T(8));
+  VERIFY( opt.has_value() );
+  VERIFY( &*opt == &v.back() );
+  opt = v.try_push_back(T(8));
   VERIFY( eq<T>(v, {a+3, 8}) );
-  VERIFY( ptr = &v.back() );
-  ptr = v.try_push_back(c);
+  VERIFY( opt.has_value() );
+  VERIFY( &*opt == &v.back() );
+  opt = v.try_push_back(c);
   VERIFY( eq<T>(v, {a+3, 9}) );
-  VERIFY( ptr = &v.back() );
+  VERIFY( opt.has_value() );
+  VERIFY( &*opt == &v.back() );
 
   auto it = v.emplace(v.end(), 10);
   VERIFY( eq<T>(v, {a+3, 10}) );
@@ -195,12 +213,15 @@ int main()
   auto test_all = [] {
     test_add_to_full<0, int>();
     test_add_to_full<0, X>();
+    test_add_to_full<0, Y>();
 
     test_add_to_full<4, int>();
+    test_add_to_full<4, Y>();
 
     test_inserts<int>();
+    test_inserts<Y>();
 #ifdef __cpp_lib_constexpr_inplace_vector
-#error uncomemnt test_inserts<X>()
+#error enable tests bellow
 #endif
     if ! consteval {
       test_add_to_full<4, X>();
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc
index a5bbdb8464be..493e86dc6dd2 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc
@@ -5,7 +5,7 @@
 
 #ifndef __cpp_lib_inplace_vector
 # error "Feature-test macro for inplace_vector missing in <inplace_vector>"
-#elif __cpp_lib_inplace_vector != 202406L
+#elif __cpp_lib_inplace_vector != 202603L
 # error "Feature-test macro for inplace_vector has wrong value in <inplace_vector>"
 #endif
 
@@ -15,6 +15,6 @@
 
 #ifndef __cpp_lib_inplace_vector
 # error "Feature-test macro for inplace_vector missing in <version>"
-#elif __cpp_lib_inplace_vector != 202406L
+#elif __cpp_lib_inplace_vector != 202603L
 # error "Feature-test macro for inplace_vector has wrong value in <version>"
 #endif

From ppalka@gcc.gnu.org  Thu Apr  2 20:51:44 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu,  2 Apr 2026 20:51:44 +0000 (GMT)
Subject: [gcc r16-8433] libstdc++/ranges: Uglify 'sizes' function parameter
Message-ID: <20260402205144.A63614BA2E09@sourceware.org>

https://gcc.gnu.org/g:d130e9bf3dc4b1f670340f8ae4a02419481fe982

commit r16-8433-gd130e9bf3dc4b1f670340f8ae4a02419481fe982
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu Apr 2 16:51:09 2026 -0400

    libstdc++/ranges: Uglify 'sizes' function parameter
    
    libstdc++-v3/ChangeLog:
    
            * include/std/ranges (zip_view::size): Uglify 'sizes'
            parameter.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index eebb978221f1..0aa4191e04f6 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -4807,18 +4807,18 @@ namespace views::__adaptor
     constexpr auto
     size() requires (sized_range<_Vs> && ...)
     {
-      return std::apply([](auto... sizes) {
-	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(sizes)...>>;
-	return ranges::min({_CT(sizes)...});
+      return std::apply([](auto... __sizes) {
+	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(__sizes)...>>;
+	return ranges::min({_CT(__sizes)...});
       }, __detail::__tuple_transform(ranges::size, _M_views));
     }
 
     constexpr auto
     size() const requires (sized_range<const _Vs> && ...)
     {
-      return std::apply([](auto... sizes) {
-	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(sizes)...>>;
-	return ranges::min({_CT(sizes)...});
+      return std::apply([](auto... __sizes) {
+	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(__sizes)...>>;
+	return ranges::min({_CT(__sizes)...});
       }, __detail::__tuple_transform(ranges::size, _M_views));
     }
   };

From gccadmin@gcc.gnu.org  Fri Apr  3 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri,  3 Apr 2026 00:16:54 +0000 (GMT)
Subject: [gcc r16-8435] Daily bump.
Message-ID: <20260403001654.502B34BA23D7@sourceware.org>

https://gcc.gnu.org/g:40204d6f75209ff9a32674258c2654aa686e9845

commit r16-8435-g40204d6f75209ff9a32674258c2654aa686e9845
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Apr 3 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  24 ++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cobol/ChangeLog     | 111 +++++++++++++++++++++++++
 gcc/cp/ChangeLog        |  13 +++
 gcc/fortran/ChangeLog   |   8 ++
 gcc/testsuite/ChangeLog |  51 ++++++++++++
 libgcobol/ChangeLog     |  29 +++++++
 libstdc++-v3/ChangeLog  | 215 ++++++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 452 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a8a74764e31..05008267962d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,27 @@
+2026-04-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124746
+	* tree-ssa-phiprop.cc (propagate_with_phi): Treat
+	and aggregate copy as it is a trapping load.
+
+2026-04-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiprop.cc (propagate_with_phi): Move the
+	check for load from ptr before the checks of domination.
+
+2026-04-02  Lulu Cheng  <chenglulu@loongson.cn>
+
+	* config/loongarch/loongarch-protos.h
+	(loongarch_parse_fmv_features): Modify parameter type.
+	* config/loongarch/loongarch-target-attr.cc
+	(loongarch_parse_fmv_features): Some errors have been
+	changed to warnings.
+	* config/loongarch/loongarch.cc
+	(loongarch_process_target_version_attr): Update parameters.
+	(loongarch_check_target_clone_version): Likewise.
+	(loongarch_option_same_function_versions): Likewise.
+	(TARGET_CHECK_TARGET_CLONE_VERSION): Define.
+
 2026-04-01  Tamar Christina  <tamar.christina@arm.com>
 	    Roger Sayle  <roger@nextmovesoftware.com>
 
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index b2c8b6a74c2a..aa616bdb404b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260402
+20260403
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 304ad29a61f4..a1741e4f2989 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,114 @@
+2026-04-02  Robert Dubner  <rdubner@symas.com>
+
+	* cobol1.cc (cobol_langhook_handle_option): Handle OPT_Wrecording_mode.
+	* gcobol.1: Documentation of pre-program registers.
+	* genapi.cc (hijacker): Define new function hijacked code generation.
+	(RETURN_WHEN_HIJACKED): Macro for wrapping if(hijacked)return;
+	(hijacked): Either a boolean or false depending on ENABLE_HIJACKING.
+	(set_exception_environment): Use gg_pointer_to_array instead of
+	gg_get_address_of.
+	(parser_statement_end): Formatting.
+	(section_label): Change ALTER STATEMENT processing.
+	(pseudo_return_push): Expand TRACE1 message.
+	(pseudo_return_pop): Expand TRACE1 message; improved PERFORM processing.
+	(find_procedure): Change how cbl_proc_t is allocated; improved PERFORM
+	processing.
+	(parser_enter_section): Changed ALTER statement processing.
+	(parser_enter_paragraph): Likewise.
+	(parser_goto): Use SWITCH_EXPR instead of indirect jump.
+	(parser_perform): Likewise.
+	(internal_perform_through): Likewise.
+	(parser_enter_file): Use SWITCH_EXPR for implementing ENTRY statement.
+	(parser_leave_file): Build table of values for the SWITCH_EXPR.
+	(enter_program_common): Remove unused JMP *ptr.
+	(parser_enter_program): Code to hijack code generation for a function
+	"dubner" when ENABLE_HIJACKING is defined.
+	(build_dispatch_switch): Generalize builder of SWITCH_EXPR.
+	(build_alter_switch): Uses build_dispatch_switch.
+	(build_entry_switch): Likewise.
+	(build_perform_dispatcher): Likewise.
+	(parser_end_program): Wrap build_perform_dispatcher() in if(!hijacked).
+	(parser_init_list): Use RETURN_WHEN_HIJACKED; use gg_pointer_to_array()
+	instead of gg_get_address_of().
+	(psa_FldLiteralN): Set TREE_READONLY(var_decl) = 1.
+	(parser_alphabet): use gg_pointer_to_array() instead of
+	gg_get_address_of().
+	(parser_assign): Formatting.
+	(program_end_stuff): Call hijacking() when ENABLE_HIJACKING and the
+	program-id is "hijack"; use gg_pointer_to_array().
+	(parser_exit): Handle if(hijacked);
+	(register_find): New static function to find XML-* COBOL variables.
+	(parser_xml_parse): Updated XML PARSE statement handling.
+	(initialize_the_data): Use RETURN_WHEN_HIJACKED.
+	(establish_using): Change first-time-through processing.
+	(parser_division): Change ENTRY statement processing.
+	(parser_see_stop_run): Changed RETURN-CODE per-function variable
+	processing.
+	(parser_label_label): Use RETURN_WHEN_HIJACKED.
+	(parser_label_goto): Likewise.
+	(parser_perform_inline_times): Honor cbl_field_t offset for the count
+	parameter.
+	(inspect_tally): Use __gg__inspect_format_1_sbc() for SBC characters.
+	(create_and_call): Use per-function RETURN-CODE.
+	(parser_entry_activate): Eliminate static tree variables.
+	(parser_entry): Use automatic tree variables.
+	(parser_program_hierarchy): Use RETURN_WHEN_HIJACKED and
+	gg_pointer_to_array().
+	(build_temporaryN): New function compiled when ENABLE_HIJACKING.
+	(hijack_for_development): Changed to generate minimal GENERIC.
+	(actually_create_the_static_field): Use gg_structure_type_constructor
+	to create the constructor for the static cblc_field_t VAR_DECL.
+	(psa_FldLiteralA): Move where TREE attributes are established.
+	(parser_local_add): Use gg_pointer_to_array().
+	(parser_symbol_add): Use RETURN_WHEN_HIJACKED(); use gg_pointer_to_array().
+	* gengen.cc (gg_append_statement): #if 0 around some debugging code.
+	(gg_show_type): Expanded to display "static" and "readonly".
+	(gg_find_field_in_struct): Moved and rewritten.
+	(gg_get_structure_type_decl): New function.
+	(gg_start_building_a_union): Eliminated.
+	(gg_start_building_a_struct): Eliminated.
+	(gg_add_field_to_structure): Eliminated.
+	(gg_structure_type_constructor): New function.
+	(gg_get_struct_type_decl): Eliminated.
+	(gg_get_union_type_decl): Eliminated.
+	(gg_get_local_struct_type_decl): Eliminated.
+	(gg_get_filelevel_struct_type_decl): Eliminated.
+	(gg_get_filelevel_union_type_decl): Eliminated.
+	(gg_define_local_struct): Eliminated.
+	(gg_assign_to_structure): Eliminated.
+	(gg_define_array): Formatting.
+	(gg_pointer_to_array): Returns ADDR_EXPR for &array[0];
+	(gg_goto): Comment reflecting why we aren't using it.
+	* gengen.h (SHORT_P): Alias for build_pointer_type(short_integer_type_node);
+	(struct gg_function_t): Changes mostly in support of SWITCH_EXPR.
+	(gg_get_local_struct_type_decl): Eliminated declaration.
+	(gg_get_filelevel_struct_type_decl): Likewise.
+	(gg_get_filelevel_union_type_decl): Likewise.
+	(gg_define_local_struct): Likewise.
+	(gg_get_structure_type_decl): New declaration.
+	(gg_structure_type_constructor): New declaration.
+	(gg_assign_to_structure): Eliminated declaration.
+	(gg_define_uchar_star): Changed declaration.
+	(gg_pointer_to_array): New declaration.
+	* genutil.cc: Removed unused globals; added var_decl_entry_index.
+	* genutil.h: Likewise.
+	* parse.y: Change program-id and REDEFINES handling.
+	* parse_ante.h: Likewise.
+	* scan_ante.h (is_refmod): Rewrite.
+	* structs.cc (create_cblc_field_t): Use gg_get_structure_type_decl().
+	* symbols.cc (return_code_register): Use per-program COBOL registers.
+	(symbol_redefines_root): New function.
+	(symbols_update): Use per-program COBOL registers.
+	(symbol_table_init): Implement per-program registers.
+	(symbol_registers_add): Likewise.
+	(cbl_field_t::encode): Loosen COBOL level requirement.
+	* symbols.h (struct cbl_proc_t): SWITCH_EXPR-based PERFORM returns.
+	(symbol_redefines_root): New declaration.
+	(symbol_registers_add): New declaration.
+	(new_alphanumeric): New comment.
+	* util.cc (FOR_JIM): Remove some unused demonstration code.
+	(cbl_field_t::encode_numeric): Likewise.
+
 2026-03-02  Robert Dubner  <rdubner@symas.com>
 
 	PR cobol/119456
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ff1ecf67a111..daeeb0e13f5a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,16 @@
+2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124477
+	* module.cc (trees_in::read_function_def): Set DECL_ARGUMENTS if
+	installing and otherwise missing.
+
+2026-04-02  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124646
+	PR c++/124645
+	* call.cc (set_up_extended_ref_temp): Move setting DECL_EXTERNAL
+	to the !at_function_scope_p block.
+
 2026-04-01  Jakub Jelinek  <jakub@redhat.com>
 
 	* name-lookup.cc (push_local_extern_decl_alias): Diagnose annotations
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8276e5ad3a50..bc0fe0d5cf6e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-02  Christopher Albert  <albert@tugraz.at>
+	    Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124751
+	* trans-array.cc (gfc_conv_array_parameter): Build a packed
+	descriptor for assumed-rank actual arguments instead of reusing
+	stale metadata from the original descriptor.
+
 2026-04-01  Gonzalosilvalde  <gonzalo.silvalde@gmail.com>
 
 	PR fortran/79330
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 80df77e6945c..00d22178d46a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,54 @@
+2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124477
+	* g++.dg/modules/builtin-10_a.C: New test.
+	* g++.dg/modules/builtin-10_b.C: New test.
+
+2026-04-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR testsuite/124548
+	* g++.dg/coroutines/torture/func-params-07.C (main): Fix lifetime
+	issue of rvalue reference.
+
+2026-04-02  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124646
+	PR c++/124645
+	* g++.dg/reflect/members_of11.C: New test.
+	* g++.dg/reflect/members_of12.C: New test.
+
+2026-04-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124746
+	* gcc.dg/tree-ssa/pr124746-1.c: New test.
+
+2026-04-02  Uros Bizjak  <ubizjak@gmail.com>
+
+	* gcc.target/i386/pr124696.c: Compile only for int128 targets.
+	(dg-options): Use -Wno-psabi instead of -w
+
+2026-04-02  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124705
+	* gcc.dg/tree-ssa/gen-vect-26.c: Disable loop peeling check for
+	arm*-*-.
+	* gcc.dg/tree-ssa/gen-vect-28.c: Likewise.
+
+2026-04-02  Lulu Cheng  <chenglulu@loongson.cn>
+
+	* gcc.target/loongarch/attr-check-error-message8.c: Removed.
+	* gcc.target/loongarch/attr-check-error-message9.c: Removed.
+	* gcc.target/loongarch/attr-check-warning-message1.c: New test.
+	* gcc.target/loongarch/attr-check-warning-message2.c: New test.
+	* gcc.target/loongarch/attr-check-warning-message3.c: New test.
+
+2026-04-02  Christopher Albert  <albert@tugraz.at>
+	    Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124751
+	* gfortran.dg/pr100194.f90: Run the testcase and add runtime
+	coverage for packed assumed-rank sections.
+
 2026-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/124739
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 0b701c420838..f522db177158 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,32 @@
+2026-04-02  Robert Dubner  <rdubner@symas.com>
+
+	* Makefile.am: Include new libgcobol/inspect.cc file.
+	* Makefile.in: Likewise.
+	* charmaps.h: Remove global RETURN-CODE
+	* constants.cc (struct cblc_field_t): Eliminate various globals.
+	* gcobolio.h: Eliminate cblc_field_t::dummy member.
+	* libgcobol.cc (funky_find): Moved to inspect.cc.
+	(funky_find_wide): Likewise.
+	(funky_find_backward): Likewise.
+	(funky_find_wide_backward): Likewise.
+	(normalize_id): Likewise.
+	(match_lengths): Likewise.
+	(the_alpha_and_omega): Likewise.
+	(the_alpha_and_omega_backward): Likewise.
+	(inspect_backward_format_1): Likewise.
+	(__gg__inspect_format_1): Likewise.
+	(inspect_backward_format_2): Likewise.
+	(__gg__inspect_format_2): Likewise.
+	(normalize_for_inspect_format_4): Likewise.
+	(__gg__inspect_format_4): Likewise.
+	(__gg__is_canceled): Simplify establishing the function return code.
+	(__gg__pseudo_return_push): Work with integer indexes rather than
+	addresses.
+	(__gg__set_data_member): New function.
+	* xmlparse.cc (xml_event): Use passed variables rather than globals.
+	(__gg__xml_parse): Likewise.
+	* inspect.cc: New file.
+
 2026-02-26  Robert Dubner  <rdubner@symas.com>
 
 	* intrinsic.cc (__gg__trim):  Rewritten to work properly, and avoid
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 422c23c6aa0a..ab9e329ac406 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,218 @@
+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

From jakub@gcc.gnu.org  Fri Apr  3 18:49:05 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri,  3 Apr 2026 18:49:05 +0000 (GMT)
Subject: [gcc r16-8447] c++,
 libstdc++: Attempt to implement P3842R2 - A conservative fix for
 constexpr uncaught_exceptions(
Message-ID: <20260403184905.0E6864BA23DC@sourceware.org>

https://gcc.gnu.org/g:2b6c8467feea5be6082b1f316fb312a9e8042e0e

commit r16-8447-g2b6c8467feea5be6082b1f316fb312a9e8042e0e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Apr 3 20:46:42 2026 +0200

    c++, libstdc++: Attempt to implement P3842R2 - A conservative fix for constexpr uncaught_exceptions() and current_exception()
    
    The following patch attempts to implement the
    P3842R2 - A conservative fix for constexpr uncaught_exceptions()
              and current_exception()
    paper.  std::current_exception() and std::uncaught_exceptions() aren't
    constexpr anymore (admittedly, they weren't declared that way in the
    headers before either, but the FE magically treated them as such),
    instead two new FE builtins are introduced so that one can get their
    behavior before this patch when needed.  So, at constant evaluation
    time they are constant evaluated and if they are not folded away,
    they are transformed into std::current_exception() or
    std::uncaught_exceptions() runtime calls during gimplification.
    
    And nested_exception isn't constexpr anymore either.
    
    2026-04-03  Jakub Jelinek  <jakub@redhat.com>
    
    gcc/cp/
            * cp-tree.h (enum cp_built_in_function): Add
            CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
            * tree.cc (builtin_valid_in_constant_expr_p): Handle
            those.
            * decl.cc (cxx_init_decl_processing): Build
            decls for CP_BUILT_IN_CURRENT_EXCEPTION and
            CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
            (require_deduced_type): Deduce CP_BUILT_IN_CURRENT_EXCEPTION
            return type.
            * cp-gimplify.cc (cp_gimplify_expr): Handle
            CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
            * constexpr.cc (enum cxa_builtin): Remove STD_UNCAUGHT_EXCEPTIONS
            and STD_CURRENT_EXCEPTION, add BUILTIN_UNCAUGHT_EXCEPTIONS and
            BUILTIN_CURRENT_EXCEPTION, renumber some enumerators.
            (cxx_cxa_builtin_fn_p): Don't check for std::uncaught_exceptions
            nor std::current_exception.
            (cxx_eval_cxa_builtin_fn): Handle BUILTIN_UNCAUGHT_EXCEPTIONS
            and BUILTIN_CURRENT_EXCEPTION instead of STD_UNCAUGHT_EXCEPTIONS
            and STD_CURRENT_EXCEPTION.
            (cxx_eval_builtin_function_call): Handle
            CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
            Do just one fndecl_builtin_p check for BUILT_IN_FRONTEND and
            switch on DECL_FE_FUNCTION_CODE.
    gcc/testsuite/
            * g++.dg/cpp26/constexpr-eh3.C: Use __builtin_current_exception()
            instead of std::current_exception() and
            __builttin_uncaught_exceptions() instead of
            std::uncaught_exceptions().  Remove nested_exception related parts
            of the test.
            * g++.dg/cpp26/constexpr-eh8.C: Use __builtin_current_exception()
            instead of std::current_exception().
    libstdc++-v3/
            * 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.
    
    Reviewed-by: Jason Merrill <jason@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/cp/constexpr.cc                                |  87 ++++-----
 gcc/cp/cp-gimplify.cc                              |  26 +++
 gcc/cp/cp-tree.h                                   |   2 +
 gcc/cp/decl.cc                                     |  45 ++++-
 gcc/cp/tree.cc                                     |   2 +
 gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C         | 194 ++-------------------
 gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C         |   2 +-
 libstdc++-v3/libsupc++/exception_ptr.h             |   4 +
 libstdc++-v3/libsupc++/nested_exception.h          |  20 +--
 .../18_support/exception_ptr/exception_ptr_cast.cc |   6 +-
 10 files changed, 150 insertions(+), 238 deletions(-)

diff --git a/gcc/cp/constexpr.cc b/gcc/cp/constexpr.cc
index 9c32c13ae649..b3d7616628a7 100644
--- a/gcc/cp/constexpr.cc
+++ b/gcc/cp/constexpr.cc
@@ -1804,10 +1804,10 @@ enum cxa_builtin {
   CXA_BAD_CAST = 8,
   CXA_BAD_TYPEID = 9,
   CXA_THROW_BAD_ARRAY_NEW_LENGTH = 10,
-  STD_UNCAUGHT_EXCEPTIONS = 11,
-  STD_CURRENT_EXCEPTION = 12,
-  STD_RETHROW_EXCEPTION = 13,
-  BUILTIN_EH_PTR_ADJUST_REF = 14
+  STD_RETHROW_EXCEPTION = 11,
+  BUILTIN_EH_PTR_ADJUST_REF = 12,
+  BUILTIN_UNCAUGHT_EXCEPTIONS = 13,
+  BUILTIN_CURRENT_EXCEPTION = 14
 };
 
 /* Return cxa_builtin if FNDECL is a __cxa_* function handled as
@@ -1822,10 +1822,6 @@ cxx_cxa_builtin_fn_p (tree fndecl)
     {
       if (!decl_in_std_namespace_p (fndecl))
 	return CXA_NONE;
-      if (id_equal (DECL_NAME (fndecl), "uncaught_exceptions"))
-	return STD_UNCAUGHT_EXCEPTIONS;
-      if (id_equal (DECL_NAME (fndecl), "current_exception"))
-	return STD_CURRENT_EXCEPTION;
       if (id_equal (DECL_NAME (fndecl), "rethrow_exception"))
 	return STD_RETHROW_EXCEPTION;
       return CXA_NONE;
@@ -2186,7 +2182,7 @@ cxx_eval_cxa_builtin_fn (const constexpr_ctx *ctx, tree call,
 	  *jump_target = var;
 	}
       return void_node;
-    case STD_UNCAUGHT_EXCEPTIONS:
+    case BUILTIN_UNCAUGHT_EXCEPTIONS:
       if (nargs != 0)
 	goto invalid_nargs;
       /* Similarly to __builtin_is_constant_evaluated (), we don't
@@ -2202,7 +2198,7 @@ cxx_eval_cxa_builtin_fn (const constexpr_ctx *ctx, tree call,
 	}
       return build_int_cst (integer_type_node,
 			    ctx->global->uncaught_exceptions);
-    case STD_CURRENT_EXCEPTION:
+    case BUILTIN_CURRENT_EXCEPTION:
       if (nargs != 0)
 	goto invalid_nargs;
       else
@@ -2489,40 +2485,53 @@ cxx_eval_builtin_function_call (const constexpr_ctx *ctx, tree t, tree fun,
       return t;
     }
 
-  /* For __builtin_is_constant_evaluated, defer it if not
-     ctx->manifestly_const_eval (as sometimes we try to constant evaluate
-     without manifestly_const_eval even expressions or parts thereof which
-     will later be manifestly const_eval evaluated), otherwise fold it to
-     true.  */
-  if (fndecl_built_in_p (fun, CP_BUILT_IN_IS_CONSTANT_EVALUATED,
-			 BUILT_IN_FRONTEND))
-    {
-      if (ctx->manifestly_const_eval == mce_unknown)
+  if (fndecl_built_in_p (fun, BUILT_IN_FRONTEND))
+    switch (DECL_FE_FUNCTION_CODE (fun))
+      {
+      case CP_BUILT_IN_IS_CONSTANT_EVALUATED:
+	/* For __builtin_is_constant_evaluated, defer it if not
+	   ctx->manifestly_const_eval (as sometimes we try to constant evaluate
+	   without manifestly_const_eval even expressions or parts thereof
+	   which will later be manifestly const_eval evaluated), otherwise fold
+	   it to true.  */
+	if (ctx->manifestly_const_eval == mce_unknown)
+	  {
+	    *non_constant_p = true;
+	    return t;
+	  }
+	return constant_boolean_node (ctx->manifestly_const_eval == mce_true,
+				      boolean_type_node);
+
+      case CP_BUILT_IN_SOURCE_LOCATION:
 	{
-	  *non_constant_p = true;
-	  return t;
+	  temp_override<tree> ovr (current_function_decl);
+	  if (ctx->call && ctx->call->fundef)
+	    current_function_decl = ctx->call->fundef->decl;
+	  return fold_builtin_source_location (t);
 	}
-      return constant_boolean_node (ctx->manifestly_const_eval == mce_true,
-				    boolean_type_node);
-    }
 
-  if (fndecl_built_in_p (fun, CP_BUILT_IN_SOURCE_LOCATION, BUILT_IN_FRONTEND))
-    {
-      temp_override<tree> ovr (current_function_decl);
-      if (ctx->call && ctx->call->fundef)
-	current_function_decl = ctx->call->fundef->decl;
-      return fold_builtin_source_location (t);
-    }
+      case CP_BUILT_IN_EH_PTR_ADJUST_REF:
+	return cxx_eval_cxa_builtin_fn (ctx, t, BUILTIN_EH_PTR_ADJUST_REF,
+					fun, non_constant_p, overflow_p,
+					jump_target);
 
-  if (fndecl_built_in_p (fun, CP_BUILT_IN_EH_PTR_ADJUST_REF,
-			 BUILT_IN_FRONTEND))
-    return cxx_eval_cxa_builtin_fn (ctx, t, BUILTIN_EH_PTR_ADJUST_REF,
-				    fun, non_constant_p, overflow_p,
-				    jump_target);
+      case CP_BUILT_IN_CURRENT_EXCEPTION:
+	return cxx_eval_cxa_builtin_fn (ctx, t, BUILTIN_CURRENT_EXCEPTION,
+					fun, non_constant_p, overflow_p,
+					jump_target);
 
-  if (fndecl_built_in_p (fun, CP_BUILT_IN_CONSTEXPR_DIAG, BUILT_IN_FRONTEND))
-    return cxx_eval_constexpr_diag (ctx, t, non_constant_p, overflow_p,
-				    jump_target);
+      case CP_BUILT_IN_UNCAUGHT_EXCEPTIONS:
+	return cxx_eval_cxa_builtin_fn (ctx, t, BUILTIN_UNCAUGHT_EXCEPTIONS,
+					fun, non_constant_p, overflow_p,
+					jump_target);
+
+      case CP_BUILT_IN_CONSTEXPR_DIAG:
+	return cxx_eval_constexpr_diag (ctx, t, non_constant_p, overflow_p,
+					jump_target);
+
+      default:
+	break;
+      }
 
   int strops = 0;
   int strret = 0;
diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc
index 0b096ccd7271..5bcf51689700 100644
--- a/gcc/cp/cp-gimplify.cc
+++ b/gcc/cp/cp-gimplify.cc
@@ -979,6 +979,32 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
 			  "__builtin_eh_ptr_adjust_ref");
 		*expr_p = void_node;
 		break;
+	      case CP_BUILT_IN_CURRENT_EXCEPTION:
+	      case CP_BUILT_IN_UNCAUGHT_EXCEPTIONS:
+		{
+		  const char *name
+		    = (DECL_FE_FUNCTION_CODE (decl)
+		       == CP_BUILT_IN_CURRENT_EXCEPTION
+		       ? "current_exception" : "uncaught_exceptions");
+		  tree newdecl = lookup_qualified_name (std_node, name);
+		  if (error_operand_p (newdecl))
+		    *expr_p = build_zero_cst (TREE_TYPE (*expr_p));
+		  else if (TREE_CODE (newdecl) != FUNCTION_DECL
+			   || !same_type_p (TREE_TYPE (TREE_TYPE (newdecl)),
+					    TREE_TYPE (TREE_TYPE (decl)))
+			   || (TYPE_ARG_TYPES (TREE_TYPE (newdecl))
+			       != void_list_node))
+		    {
+		      error_at (EXPR_LOCATION (*expr_p),
+				"unexpected %<std::%s%> declaration",
+				name);
+		      *expr_p = build_zero_cst (TREE_TYPE (*expr_p));
+		    }
+		  else
+		    *expr_p = build_call_expr_loc (EXPR_LOCATION (*expr_p),
+						   newdecl, 0);
+		  break;
+		}
 	      case CP_BUILT_IN_IS_STRING_LITERAL:
 		*expr_p
 		  = fold_builtin_is_string_literal (EXPR_LOCATION (*expr_p),
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index ea3cb049785b..c0822da82835 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -7135,6 +7135,8 @@ enum cp_built_in_function {
   CP_BUILT_IN_EH_PTR_ADJUST_REF,
   CP_BUILT_IN_IS_STRING_LITERAL,
   CP_BUILT_IN_CONSTEXPR_DIAG,
+  CP_BUILT_IN_CURRENT_EXCEPTION,
+  CP_BUILT_IN_UNCAUGHT_EXCEPTIONS,
   CP_BUILT_IN_LAST
 };
 
diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc
index 8409752aa0c8..feaca1c3f52a 100644
--- a/gcc/cp/decl.cc
+++ b/gcc/cp/decl.cc
@@ -5627,6 +5627,20 @@ cxx_init_decl_processing (void)
 				   CP_BUILT_IN_EH_PTR_ADJUST_REF,
 				   BUILT_IN_FRONTEND, NULL, NULL_TREE);
       set_call_expr_flags (decl, ECF_NOTHROW | ECF_LEAF);
+
+      /* Similar case to __builtin_source_location above.  The concrete
+	 return type is std::exception_ptr, but we can't form the type
+	 at this point, so it is deduced later.  */
+      decl = add_builtin_function ("__builtin_current_exception",
+				   auto_ftype, CP_BUILT_IN_CURRENT_EXCEPTION,
+				   BUILT_IN_FRONTEND, NULL, NULL_TREE);
+      set_call_expr_flags (decl, ECF_NOTHROW | ECF_LEAF);
+
+      tree int_ftype = build_function_type_list (integer_type_node, NULL_TREE);
+      decl = add_builtin_function ("__builtin_uncaught_exceptions",
+				   int_ftype, CP_BUILT_IN_UNCAUGHT_EXCEPTIONS,
+				   BUILT_IN_FRONTEND, NULL, NULL_TREE);
+      set_call_expr_flags (decl, ECF_PURE | ECF_NOTHROW | ECF_LEAF);
     }
 
   decl
@@ -21247,8 +21261,8 @@ require_deduced_type (tree decl, tsubst_flags_t complain)
   if (undeduced_auto_decl (decl))
     {
       if (TREE_CODE (decl) == FUNCTION_DECL
-	  && fndecl_built_in_p (decl, BUILT_IN_FRONTEND)
-	  && DECL_FE_FUNCTION_CODE (decl) == CP_BUILT_IN_SOURCE_LOCATION)
+	  && fndecl_built_in_p (decl, CP_BUILT_IN_SOURCE_LOCATION,
+				BUILT_IN_FRONTEND))
 	{
 	  /* Set the return type of __builtin_source_location.  */
 	  tree type = get_source_location_impl_type ();
@@ -21263,6 +21277,33 @@ require_deduced_type (tree decl, tsubst_flags_t complain)
 	  return true;
 	}
 
+      if (TREE_CODE (decl) == FUNCTION_DECL
+	  && fndecl_built_in_p (decl, CP_BUILT_IN_CURRENT_EXCEPTION,
+				BUILT_IN_FRONTEND))
+	{
+	  /* Set the return type of __builtin_current_exception.  */
+	  tree name = get_identifier ("exception_ptr");
+	  tree eptr = lookup_qualified_name (std_node, name);
+	  tree fld;
+	  if (TREE_CODE (eptr) != TYPE_DECL
+	      || !CLASS_TYPE_P (TREE_TYPE (eptr))
+	      || !COMPLETE_TYPE_P (TREE_TYPE (eptr))
+	      || !(fld = next_aggregate_field (TYPE_FIELDS (TREE_TYPE (eptr))))
+	      || DECL_ARTIFICIAL (fld)
+	      || TREE_CODE (TREE_TYPE (fld)) != POINTER_TYPE
+	      || next_aggregate_field (DECL_CHAIN (fld))
+	      || !tree_int_cst_equal (TYPE_SIZE (TREE_TYPE (eptr)),
+				      TYPE_SIZE (TREE_TYPE (fld))))
+	    {
+	      error ("%qs used without %qs declaration",
+		     "__builtin_current_exception", "std::exception_ptr");
+	      return false;
+	    }
+
+	  apply_deduced_return_type (decl, TREE_TYPE (eptr));
+	  return true;
+	}
+
       if (warning_suppressed_p (decl) && seen_error ())
 	/* We probably already complained about deduction failure.  */;
       else if (complain & tf_error)
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index 7296f2b5c0d4..ff2e78cd89cf 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -570,6 +570,8 @@ builtin_valid_in_constant_expr_p (const_tree decl)
 	  case CP_BUILT_IN_EH_PTR_ADJUST_REF:
 	  case CP_BUILT_IN_IS_STRING_LITERAL:
 	  case CP_BUILT_IN_CONSTEXPR_DIAG:
+	  case CP_BUILT_IN_CURRENT_EXCEPTION:
+	  case CP_BUILT_IN_UNCAUGHT_EXCEPTIONS:
 	    return true;
 	  default:
 	    break;
diff --git a/gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C b/gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
index f844d118ce8b..8dda92dcf90c 100644
--- a/gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
+++ b/gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
@@ -20,12 +20,10 @@ constexpr std::bad_typeid k;
 constexpr const char *l = k.what ();
 constexpr std::exception_ptr m = nullptr;
 static_assert (m == nullptr);
-constexpr std::exception_ptr n = std::current_exception ();
+constexpr std::exception_ptr n = __builtin_current_exception ();
 static_assert (n == nullptr);
 constexpr std::exception_ptr o;
 static_assert (o == nullptr);
-constexpr std::nested_exception p;
-static_assert (p.nested_ptr () == nullptr);
 
 struct A { virtual ~A () {} };
 struct B { virtual void b (); };
@@ -33,20 +31,13 @@ struct C { virtual void c (); };
 struct D : private B { virtual void d (); };
 struct E { virtual void e (); };
 struct F : D, E, private C { virtual void f (); };
-struct G { constexpr G () { if (std::uncaught_exceptions () != 0) asm (""); } };
-struct H { constexpr H () : h (0) {} constexpr ~H () { if (std::uncaught_exceptions () != h) asm (""); } int h; };
-struct I : std::nested_exception { };
-struct J { virtual ~J () noexcept = default; };
-struct K final { };
-struct L : J, std::nested_exception { };
-struct M { };
-struct N : I, L { };
-struct O : private std::nested_exception { };
+struct G { constexpr G () { if (__builtin_uncaught_exceptions () != 0) asm (""); } };
+struct H { constexpr H () : h (0) {} constexpr ~H () { if (__builtin_uncaught_exceptions () != h) asm (""); } int h; };
 
 constexpr int
 foo (int x)
 {
-  if (std::uncaught_exceptions () != 0)
+  if (__builtin_uncaught_exceptions () != 0)
     return -1;
   switch (x)
     {
@@ -58,7 +49,7 @@ foo (int x)
 	}
       catch (const std::bad_typeid &x)
 	{
-	  if (std::uncaught_exceptions () != 0)
+	  if (__builtin_uncaught_exceptions () != 0)
 	    return -1;
 	  const char *p = x.what ();
 	  return 1;
@@ -90,15 +81,15 @@ foo (int x)
 	{
 	  H h;
 	  h.h = 1;
-	  if (std::current_exception () != nullptr)
+	  if (__builtin_current_exception () != nullptr)
 	    return -1;
 	  throw G ();
 	}
       catch (const G &g)
 	{
-	  if (std::uncaught_exceptions () != 0)
+	  if (__builtin_uncaught_exceptions () != 0)
 	    return -1;
-	  if (std::current_exception () == nullptr)
+	  if (__builtin_current_exception () == nullptr)
 	    return -1;
 	  return 3;
 	}
@@ -156,7 +147,7 @@ foo (int x)
 	  {
 	    if (a != 1)
 	      return -1;
-	    b = std::current_exception ();
+	    b = __builtin_current_exception ();
 	    if (b == nullptr)
 	      return -1;
 	    try
@@ -167,14 +158,14 @@ foo (int x)
 	      {
 		if (c != 2L)
 		  return -1;
-		d = std::current_exception ();
+		d = __builtin_current_exception ();
 		if (d == nullptr || b == d)
 		  return -1;
 	      }
-	    if (std::current_exception () != b)
+	    if (__builtin_current_exception () != b)
 	      return -1;
 	  }
-	if (std::current_exception () != nullptr)
+	if (__builtin_current_exception () != nullptr)
 	  return -1;
 	try
 	  {
@@ -266,157 +257,6 @@ foo (int x)
 	  }
 	return 8;
       }
-    case 8:
-      {
-	std::nested_exception a;
-	if (a.nested_ptr () != nullptr)
-	  return -1;
-	try
-	  {
-	    std::nested_exception b;
-	    if (b.nested_ptr () != nullptr)
-	      return -1;
-	    throw 42;
-	  }
-	catch (...)
-	  {
-	    std::nested_exception c;
-	    if (c.nested_ptr () != std::current_exception ())
-	      return -1;
-	    std::nested_exception d = c;
-	    if (d.nested_ptr () != c.nested_ptr ())
-	      return -1;
-	    c = d;
-	    try
-	      {
-		c.rethrow_nested ();
-	      }
-	    catch (const int &e)
-	      {
-		if (e != 42)
-		  return -1;
-	      }
-	  }
-	return 9;
-      }
-    case 9:
-      try
-	{
-	  std::throw_with_nested (I ());
-	}
-      catch (const std::nested_exception &a)
-	{
-	  if (a.nested_ptr () != nullptr)
-	    return -1;
-	  try
-	    {
-	      throw;
-	    }
-	  catch (const I &)
-	    {
-	      return 10;
-	    }
-	}
-      return -1;
-    case 10:
-      try
-	{
-	  std::throw_with_nested (J ());
-	}
-      catch (const std::nested_exception &a)
-	{
-	  if (a.nested_ptr () != nullptr)
-	    return -1;
-	  try
-	    {
-	      throw;
-	    }
-	  catch (const J &)
-	    {
-	      return 11;
-	    }
-	}
-      return -1;
-    case 11:
-      try
-	{
-	  std::throw_with_nested (K ());
-	}
-      catch (const std::nested_exception &)
-	{
-	  return -1;
-	}
-      catch (const K &)
-	{
-	  return 12;
-	}
-      return -1;
-    case 12:
-      try
-	{
-	  throw 42;
-	}
-      catch (...)
-	{
-	  I a;
-	  try
-	    {
-	      std::rethrow_if_nested (a);
-	    }
-	  catch (const int &b)
-	    {
-	      if (b == 42)
-		return 13;
-	    }
-	}
-      return -1;
-    case 13:
-      try
-	{
-	  throw J ();
-	}
-      catch (const J &a)
-	{
-	  std::rethrow_if_nested (a);
-	  return 14;
-	}
-      return -1;
-    case 14:
-      try
-	{
-	  throw 42;
-	}
-      catch (...)
-	{
-	  try
-	    {
-	      throw L ();
-	    }
-	  catch (const J &a)
-	    {
-	      try
-		{
-		  std::rethrow_if_nested (a);
-		}
-	      catch (const int &b)
-		{
-		  if (b == 42)
-		    return 15;
-		}
-	    }
-	}
-      return -1;
-    case 15:
-      {
-	std::rethrow_if_nested (1);
-	M m;
-	std::rethrow_if_nested (m);
-	N n;
-	std::rethrow_if_nested (n);
-	O o;
-	std::rethrow_if_nested (o);
-	return 16;
-      }
     default:
       break;
     }
@@ -431,12 +271,4 @@ static_assert (foo (4) == 5);
 static_assert (foo (5) == 6);
 static_assert (foo (6) == 7);
 static_assert (foo (7) == 8);
-static_assert (foo (8) == 9);
-static_assert (foo (9) == 10);
-static_assert (foo (10) == 11);
-static_assert (foo (11) == 12);
-static_assert (foo (12) == 13);
-static_assert (foo (13) == 14);
-static_assert (foo (14) == 15);
-static_assert (foo (15) == 16);
-static_assert (std::uncaught_exceptions () == 0);
+static_assert (__builtin_uncaught_exceptions () == 0);
diff --git a/gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C b/gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C
index 2560364fe55d..7401d137073f 100644
--- a/gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C
+++ b/gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C
@@ -13,7 +13,7 @@ foo ()
     }
   catch (...)
     {
-      return std::current_exception ();
+      return __builtin_current_exception ();
     }
 }
 
diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h
index b7a2304e121c..61ab0203fa0d 100644
--- a/libstdc++-v3/libsupc++/exception_ptr.h
+++ b/libstdc++-v3/libsupc++/exception_ptr.h
@@ -342,7 +342,11 @@ namespace std _GLIBCXX_VISIBILITY(default)
 	}
       catch(...)
 	{
+#if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_current_exception)
+	  return __builtin_current_exception();
+#else
 	  return current_exception();
+#endif
 	}
 #endif
       return exception_ptr();
diff --git a/libstdc++-v3/libsupc++/nested_exception.h b/libstdc++-v3/libsupc++/nested_exception.h
index 132f51dde60a..9093b4d6d524 100644
--- a/libstdc++-v3/libsupc++/nested_exception.h
+++ b/libstdc++-v3/libsupc++/nested_exception.h
@@ -62,25 +62,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
 
   public:
     /// The default constructor stores the current exception (if any).
-    _GLIBCXX26_CONSTEXPR
     nested_exception() noexcept : _M_ptr(current_exception()) { }
 
-    _GLIBCXX26_CONSTEXPR
     nested_exception(const nested_exception&) noexcept = default;
 
-    _GLIBCXX26_CONSTEXPR
     nested_exception& operator=(const nested_exception&) noexcept = default;
 
-#if __cplusplus >= 202400L
-    [[__gnu__::__gnu_inline__]]
-    constexpr inline virtual ~nested_exception() noexcept {}
-#else
     virtual ~nested_exception() noexcept;
-#endif
 
     /// Rethrow the stored exception, or terminate if none was stored.
     [[noreturn]]
-    _GLIBCXX26_CONSTEXPR void
+    void
     rethrow_nested() const
     {
       if (_M_ptr)
@@ -89,7 +81,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
     }
 
     /// Access the stored exception.
-    _GLIBCXX26_CONSTEXPR exception_ptr
+    exception_ptr
     nested_ptr() const noexcept
     { return _M_ptr; }
   };
@@ -99,11 +91,11 @@ namespace std _GLIBCXX_VISIBILITY(default)
   template<typename _Except>
     struct _Nested_exception : public _Except, public nested_exception
     {
-      _GLIBCXX26_CONSTEXPR explicit _Nested_exception(const _Except& __ex)
+      explicit _Nested_exception(const _Except& __ex)
       : _Except(__ex)
       { }
 
-      _GLIBCXX26_CONSTEXPR explicit _Nested_exception(_Except&& __ex)
+      explicit _Nested_exception(_Except&& __ex)
       : _Except(static_cast<_Except&&>(__ex))
       { }
     };
@@ -152,7 +144,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
    */
   template<typename _Tp>
     [[noreturn]]
-    _GLIBCXX26_CONSTEXPR inline void
+    inline void
     throw_with_nested(_Tp&& __t)
     {
       using _Up = typename decay<_Tp>::type;
@@ -212,7 +204,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
 # if ! __cpp_rtti
     [[__gnu__::__always_inline__]]
 #endif
-    _GLIBCXX26_CONSTEXPR inline void
+    inline void
     rethrow_if_nested(const _Ex& __ex)
     {
       const _Ex* __ptr = __builtin_addressof(__ex);
diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/exception_ptr_cast.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/exception_ptr_cast.cc
index eebb5cb36e8e..3c40bef36a4a 100644
--- a/libstdc++-v3/testsuite/18_support/exception_ptr/exception_ptr_cast.cc
+++ b/libstdc++-v3/testsuite/18_support/exception_ptr/exception_ptr_cast.cc
@@ -58,7 +58,11 @@ constexpr bool test01(bool x)
     }
   catch (...)
     {
+#if __has_builtin(__builtin_current_exception)
+      auto h = __builtin_current_exception();
+#else
       auto h = std::current_exception();
+#endif
       auto i = std::exception_ptr_cast<G>(h);
       VERIFY( i != nullptr );
       VERIFY( i->a == 1 && i->e == 2 && i->f == 3 && i->g == 4 );
@@ -78,7 +82,7 @@ constexpr bool test01(bool x)
   return true;
 }
 
-#if _GLIBCXX_USE_CXX11_ABI
+#if _GLIBCXX_USE_CXX11_ABI && __has_builtin(__builtin_current_exception)
 static_assert(test01(false));
 #endif

From jakub@gcc.gnu.org  Fri Apr  3 18:54:21 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri,  3 Apr 2026 18:54:21 +0000 (GMT)
Subject: [gcc r16-8448] c++,
 libstdc++: Implement P3856R8 - New reflection metafunction -
 is_structural_type
Message-ID: <20260403185421.482184BA23DC@sourceware.org>

https://gcc.gnu.org/g:1e38d1a4f42973cdbf49d4347d9bb0baac061851

commit r16-8448-g1e38d1a4f42973cdbf49d4347d9bb0baac061851
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Apr 3 20:52:33 2026 +0200

    c++, libstdc++: Implement P3856R8 - New reflection metafunction - is_structural_type
    
    This patch attempts to implement this paper, adds a new trait, builtin trait
    and metafunction.
    
    2026-04-03  Jakub Jelinek  <jakub@redhat.com>
    
    gcc/cp/
            * cp-trait.def (__builtin_is_structural): New trait.
            * semantics.cc (trait_expr_value): Handle CPTK_IS_STRUCTURAL.
            (finish_trait_expr): Likewise.
            * constraint.cc (diagnose_trait_expr): Likewise.
            * metafns.gperf (enum metafn_code): Add METAFN_IS_STRUCTURAL_TYPE.
            (is_structural_type): New metafn.
            * metafns.h: Regenerate.
            * reflect.cc (eval_is_structural_type): New function.
            (process_metafunction): Handle METAFN_IS_STRUCTURAL_TYPE.
    gcc/testsuite/
            * g++.dg/reflect/type_trait14.C: New test.
            * g++.dg/reflect/eh1.C: Add test for is_structural_type.
            * g++.dg/reflect/eh2.C: Likewise.
    libstdc++-v3/
            * 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.
    
    Reviewed-by: Jason Merrill <jason@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/cp/constraint.cc                               |   4 +
 gcc/cp/cp-trait.def                                |   1 +
 gcc/cp/metafns.gperf                               |   2 +
 gcc/cp/metafns.h                                   | 563 +++++++++++----------
 gcc/cp/reflect.cc                                  |  10 +
 gcc/cp/semantics.cc                                |   4 +
 gcc/testsuite/g++.dg/reflect/eh1.C                 |   4 +
 gcc/testsuite/g++.dg/reflect/eh2.C                 |   1 +
 gcc/testsuite/g++.dg/reflect/type_trait14.C        |  61 +++
 libstdc++-v3/include/bits/version.def              |   9 +
 libstdc++-v3/include/bits/version.h                |  10 +
 libstdc++-v3/include/std/meta                      |   3 +
 libstdc++-v3/include/std/type_traits               |  18 +
 libstdc++-v3/src/c++23/std.cc.in                   |   7 +
 .../requirements/explicit_instantiation.cc         |  12 +
 .../20_util/is_structural/requirements/typedefs.cc |  16 +
 .../testsuite/20_util/is_structural/value.cc       |  51 ++
 .../20_util/variable_templates_for_traits.cc       |   5 +
 18 files changed, 501 insertions(+), 280 deletions(-)

diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc
index 4d667ced3429..0e0bcb2c90fc 100644
--- a/gcc/cp/constraint.cc
+++ b/gcc/cp/constraint.cc
@@ -3357,6 +3357,10 @@ diagnose_trait_expr (location_t loc, tree expr, tree args)
     case CPTK_IS_CONSTEVAL_ONLY:
       inform (decl_loc, "%qT is not consteval-only", t1);
       break;
+    case CPTK_IS_STRUCTURAL:
+      inform (decl_loc, "%qT is not a structural type", t1);
+      structural_type_p (t1, /*explain=*/true);
+      break;
     case CPTK_RANK:
       inform (loc, "%qT cannot yield a rank", t1);
       break;
diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def
index 395cadc5767d..f1b40f2a6d87 100644
--- a/gcc/cp/cp-trait.def
+++ b/gcc/cp/cp-trait.def
@@ -98,6 +98,7 @@ DEFTRAIT_EXPR (IS_REFERENCE, "__is_reference", 1)
 DEFTRAIT_EXPR (IS_SAME, "__is_same", 2)
 DEFTRAIT_EXPR (IS_SCOPED_ENUM, "__is_scoped_enum", 1)
 DEFTRAIT_EXPR (IS_STD_LAYOUT, "__is_standard_layout", 1)
+DEFTRAIT_EXPR (IS_STRUCTURAL, "__builtin_is_structural", 1)
 DEFTRAIT_EXPR (IS_TRIVIAL, "__is_trivial", 1)
 DEFTRAIT_EXPR (IS_TRIVIALLY_ASSIGNABLE, "__is_trivially_assignable", 2)
 DEFTRAIT_EXPR (IS_TRIVIALLY_CONSTRUCTIBLE, "__is_trivially_constructible", -1)
diff --git a/gcc/cp/metafns.gperf b/gcc/cp/metafns.gperf
index 0e919687c605..89e31866b03b 100644
--- a/gcc/cp/metafns.gperf
+++ b/gcc/cp/metafns.gperf
@@ -175,6 +175,7 @@ enum metafn_code {
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
   METAFN_IS_CONSTEVAL_ONLY_TYPE,
+  METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
   METAFN_IS_BOUNDED_ARRAY_TYPE,
@@ -615,6 +616,7 @@ is_abstract_type, METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,
 is_final_type, METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_aggregate_type, METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,
 is_consteval_only_type, METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,
+is_structural_type, METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_signed_type, METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
 is_unsigned_type, METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
 is_bounded_array_type, METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,
diff --git a/gcc/cp/metafns.h b/gcc/cp/metafns.h
index 611e0587f437..f47545c48db5 100644
--- a/gcc/cp/metafns.h
+++ b/gcc/cp/metafns.h
@@ -203,6 +203,7 @@ enum metafn_code {
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
   METAFN_IS_CONSTEVAL_ONLY_TYPE,
+  METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
   METAFN_IS_BOUNDED_ARRAY_TYPE,
@@ -477,7 +478,7 @@ enum metafn_kind {
     = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
       | METAFN_KIND_RET_U8STRING_VIEW
 };
-#line 453 "metafns.gperf"
+#line 454 "metafns.gperf"
 struct metafn_info
 {
   /* A name within "std::meta::" (or "std::meta::access_context::").  */
@@ -588,7 +589,7 @@ metafn_lookup::find (const char *str, size_t len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 237,
+      TOTAL_KEYWORDS = 238,
       MIN_WORD_LENGTH = 4,
       MAX_WORD_LENGTH = 40,
       MIN_HASH_VALUE = 39,
@@ -601,479 +602,481 @@ metafn_lookup::find (const char *str, size_t len)
 #endif
   static const struct metafn_info wordlist[] =
     {
-#line 656 "metafns.gperf"
+#line 658 "metafns.gperf"
       {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
-#line 586 "metafns.gperf"
+#line 587 "metafns.gperf"
       {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 591 "metafns.gperf"
+#line 592 "metafns.gperf"
       {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 494 "metafns.gperf"
+#line 495 "metafns.gperf"
       {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
-#line 540 "metafns.gperf"
+#line 541 "metafns.gperf"
       {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
-#line 547 "metafns.gperf"
+#line 548 "metafns.gperf"
       {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
-#line 479 "metafns.gperf"
+#line 480 "metafns.gperf"
       {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
-#line 508 "metafns.gperf"
+#line 509 "metafns.gperf"
       {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
-#line 662 "metafns.gperf"
+#line 664 "metafns.gperf"
       {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 641 "metafns.gperf"
+#line 643 "metafns.gperf"
       {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 667 "metafns.gperf"
+#line 669 "metafns.gperf"
       {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 646 "metafns.gperf"
+#line 648 "metafns.gperf"
       {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 668 "metafns.gperf"
+#line 670 "metafns.gperf"
       {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 643 "metafns.gperf"
+#line 645 "metafns.gperf"
       {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 659 "metafns.gperf"
+#line 661 "metafns.gperf"
       {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 647 "metafns.gperf"
+#line 649 "metafns.gperf"
       {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 658 "metafns.gperf"
+#line 660 "metafns.gperf"
       {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 644 "metafns.gperf"
+#line 646 "metafns.gperf"
       {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 532 "metafns.gperf"
+#line 533 "metafns.gperf"
       {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 587 "metafns.gperf"
+#line 588 "metafns.gperf"
       {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 645 "metafns.gperf"
+#line 647 "metafns.gperf"
       {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 650 "metafns.gperf"
+#line 652 "metafns.gperf"
       {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 477 "metafns.gperf"
+#line 478 "metafns.gperf"
       {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
-#line 489 "metafns.gperf"
+#line 490 "metafns.gperf"
       {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
-#line 575 "metafns.gperf"
+#line 576 "metafns.gperf"
       {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
-#line 695 "metafns.gperf"
+#line 697 "metafns.gperf"
       {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 613 "metafns.gperf"
+#line 614 "metafns.gperf"
       {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 513 "metafns.gperf"
+#line 514 "metafns.gperf"
       {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 510 "metafns.gperf"
+#line 511 "metafns.gperf"
       {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
-#line 466 "metafns.gperf"
+#line 467 "metafns.gperf"
       {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
-#line 664 "metafns.gperf"
+#line 666 "metafns.gperf"
       {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 620 "metafns.gperf"
+#line 622 "metafns.gperf"
       {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 694 "metafns.gperf"
+#line 696 "metafns.gperf"
       {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 493 "metafns.gperf"
+#line 494 "metafns.gperf"
       {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
-#line 539 "metafns.gperf"
+#line 540 "metafns.gperf"
       {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
-#line 509 "metafns.gperf"
+#line 510 "metafns.gperf"
       {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 566 "metafns.gperf"
+#line 567 "metafns.gperf"
       {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 531 "metafns.gperf"
+#line 532 "metafns.gperf"
       {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 514 "metafns.gperf"
+#line 515 "metafns.gperf"
       {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 628 "metafns.gperf"
+#line 630 "metafns.gperf"
       {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 661 "metafns.gperf"
+#line 663 "metafns.gperf"
       {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 651 "metafns.gperf"
+#line 653 "metafns.gperf"
       {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 696 "metafns.gperf"
+#line 698 "metafns.gperf"
       {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
-#line 530 "metafns.gperf"
+#line 531 "metafns.gperf"
       {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 642 "metafns.gperf"
+#line 644 "metafns.gperf"
       {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 576 "metafns.gperf"
+#line 577 "metafns.gperf"
       {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 535 "metafns.gperf"
+#line 536 "metafns.gperf"
       {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 523 "metafns.gperf"
+#line 524 "metafns.gperf"
       {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 625 "metafns.gperf"
+#line 627 "metafns.gperf"
       {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 572 "metafns.gperf"
+#line 573 "metafns.gperf"
       {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 474 "metafns.gperf"
+#line 475 "metafns.gperf"
       {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 511 "metafns.gperf"
+#line 512 "metafns.gperf"
       {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 623 "metafns.gperf"
+#line 625 "metafns.gperf"
       {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 631 "metafns.gperf"
+#line 633 "metafns.gperf"
       {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 502 "metafns.gperf"
+#line 503 "metafns.gperf"
       {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 529 "metafns.gperf"
+#line 530 "metafns.gperf"
       {"is_vararg_function", METAFN_IS_VARARG_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 520 "metafns.gperf"
+#line 521 "metafns.gperf"
       {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 692 "metafns.gperf"
+#line 694 "metafns.gperf"
       {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 556 "metafns.gperf"
+#line 557 "metafns.gperf"
       {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
-#line 600 "metafns.gperf"
+#line 601 "metafns.gperf"
       {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 574 "metafns.gperf"
+#line 575 "metafns.gperf"
       {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 603 "metafns.gperf"
+#line 604 "metafns.gperf"
       {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 663 "metafns.gperf"
+#line 665 "metafns.gperf"
       {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 699 "metafns.gperf"
+#line 701 "metafns.gperf"
       {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
-#line 562 "metafns.gperf"
+#line 563 "metafns.gperf"
       {"current_function", METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,},
-#line 538 "metafns.gperf"
+#line 539 "metafns.gperf"
       {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 686 "metafns.gperf"
+#line 688 "metafns.gperf"
       {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 629 "metafns.gperf"
+#line 631 "metafns.gperf"
       {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 687 "metafns.gperf"
+#line 689 "metafns.gperf"
       {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 693 "metafns.gperf"
+#line 695 "metafns.gperf"
       {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 580 "metafns.gperf"
+#line 581 "metafns.gperf"
       {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 500 "metafns.gperf"
+#line 501 "metafns.gperf"
       {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 524 "metafns.gperf"
+#line 525 "metafns.gperf"
       {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 518 "metafns.gperf"
+#line 519 "metafns.gperf"
       {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 549 "metafns.gperf"
+#line 550 "metafns.gperf"
       {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
-#line 626 "metafns.gperf"
+#line 628 "metafns.gperf"
       {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 649 "metafns.gperf"
+#line 651 "metafns.gperf"
       {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 610 "metafns.gperf"
+#line 611 "metafns.gperf"
       {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 601 "metafns.gperf"
+#line 602 "metafns.gperf"
       {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 593 "metafns.gperf"
+#line 594 "metafns.gperf"
       {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 648 "metafns.gperf"
+#line 650 "metafns.gperf"
       {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 633 "metafns.gperf"
+#line 635 "metafns.gperf"
       {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 630 "metafns.gperf"
+#line 632 "metafns.gperf"
       {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 638 "metafns.gperf"
+#line 640 "metafns.gperf"
       {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 688 "metafns.gperf"
+#line 690 "metafns.gperf"
       {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
-#line 635 "metafns.gperf"
+#line 637 "metafns.gperf"
       {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 607 "metafns.gperf"
+#line 608 "metafns.gperf"
       {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 577 "metafns.gperf"
+#line 578 "metafns.gperf"
       {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 555 "metafns.gperf"
+#line 556 "metafns.gperf"
       {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 521 "metafns.gperf"
+#line 522 "metafns.gperf"
       {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 548 "metafns.gperf"
+#line 549 "metafns.gperf"
       {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
-#line 517 "metafns.gperf"
+#line 518 "metafns.gperf"
       {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 612 "metafns.gperf"
+#line 613 "metafns.gperf"
       {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 627 "metafns.gperf"
+#line 629 "metafns.gperf"
       {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 592 "metafns.gperf"
+#line 593 "metafns.gperf"
       {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 528 "metafns.gperf"
+#line 529 "metafns.gperf"
       {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
-#line 690 "metafns.gperf"
+#line 692 "metafns.gperf"
       {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 522 "metafns.gperf"
+#line 523 "metafns.gperf"
       {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 609 "metafns.gperf"
+#line 610 "metafns.gperf"
       {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 543 "metafns.gperf"
+#line 544 "metafns.gperf"
       {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 602 "metafns.gperf"
+#line 603 "metafns.gperf"
       {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 544 "metafns.gperf"
+#line 545 "metafns.gperf"
       {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 565 "metafns.gperf"
+#line 566 "metafns.gperf"
       {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 478 "metafns.gperf"
+#line 479 "metafns.gperf"
       {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
-#line 505 "metafns.gperf"
+#line 506 "metafns.gperf"
       {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 469 "metafns.gperf"
+#line 470 "metafns.gperf"
       {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 677 "metafns.gperf"
+#line 679 "metafns.gperf"
       {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 553 "metafns.gperf"
+#line 554 "metafns.gperf"
       {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
-#line 512 "metafns.gperf"
+#line 513 "metafns.gperf"
       {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 657 "metafns.gperf"
+#line 659 "metafns.gperf"
       {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
-#line 596 "metafns.gperf"
+#line 597 "metafns.gperf"
       {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 533 "metafns.gperf"
+#line 534 "metafns.gperf"
       {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 608 "metafns.gperf"
+#line 619 "metafns.gperf"
+      {"is_structural_type", METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 609 "metafns.gperf"
       {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 564 "metafns.gperf"
+#line 565 "metafns.gperf"
       {"current_namespace", METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,},
-#line 488 "metafns.gperf"
+#line 489 "metafns.gperf"
       {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
-#line 683 "metafns.gperf"
+#line 685 "metafns.gperf"
       {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 639 "metafns.gperf"
+#line 641 "metafns.gperf"
       {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 506 "metafns.gperf"
+#line 507 "metafns.gperf"
       {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 636 "metafns.gperf"
+#line 638 "metafns.gperf"
       {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 605 "metafns.gperf"
+#line 606 "metafns.gperf"
       {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 481 "metafns.gperf"
+#line 482 "metafns.gperf"
       {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 526 "metafns.gperf"
+#line 527 "metafns.gperf"
       {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 507 "metafns.gperf"
+#line 508 "metafns.gperf"
       {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 599 "metafns.gperf"
+#line 600 "metafns.gperf"
       {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 550 "metafns.gperf"
+#line 551 "metafns.gperf"
       {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
-#line 545 "metafns.gperf"
+#line 546 "metafns.gperf"
       {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 542 "metafns.gperf"
+#line 543 "metafns.gperf"
       {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
-#line 495 "metafns.gperf"
+#line 496 "metafns.gperf"
       {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 637 "metafns.gperf"
+#line 639 "metafns.gperf"
       {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 624 "metafns.gperf"
+#line 626 "metafns.gperf"
       {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 527 "metafns.gperf"
+#line 528 "metafns.gperf"
       {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 673 "metafns.gperf"
+#line 675 "metafns.gperf"
       {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 563 "metafns.gperf"
+#line 564 "metafns.gperf"
       {"current_class", METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,},
-#line 570 "metafns.gperf"
+#line 571 "metafns.gperf"
       {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 491 "metafns.gperf"
+#line 492 "metafns.gperf"
       {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
-#line 541 "metafns.gperf"
+#line 542 "metafns.gperf"
       {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
-#line 472 "metafns.gperf"
+#line 473 "metafns.gperf"
       {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 595 "metafns.gperf"
+#line 596 "metafns.gperf"
       {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 652 "metafns.gperf"
+#line 654 "metafns.gperf"
       {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
-#line 655 "metafns.gperf"
+#line 657 "metafns.gperf"
       {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 519 "metafns.gperf"
+#line 520 "metafns.gperf"
       {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 604 "metafns.gperf"
+#line 605 "metafns.gperf"
       {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 578 "metafns.gperf"
+#line 579 "metafns.gperf"
       {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
-#line 525 "metafns.gperf"
+#line 526 "metafns.gperf"
       {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 482 "metafns.gperf"
+#line 483 "metafns.gperf"
       {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
-#line 654 "metafns.gperf"
+#line 656 "metafns.gperf"
       {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 557 "metafns.gperf"
+#line 558 "metafns.gperf"
       {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 676 "metafns.gperf"
+#line 678 "metafns.gperf"
       {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 476 "metafns.gperf"
+#line 477 "metafns.gperf"
       {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
-#line 671 "metafns.gperf"
+#line 673 "metafns.gperf"
       {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
-#line 640 "metafns.gperf"
+#line 642 "metafns.gperf"
       {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 674 "metafns.gperf"
+#line 676 "metafns.gperf"
       {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
-#line 616 "metafns.gperf"
+#line 617 "metafns.gperf"
       {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 581 "metafns.gperf"
+#line 582 "metafns.gperf"
       {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 554 "metafns.gperf"
+#line 555 "metafns.gperf"
       {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 569 "metafns.gperf"
+#line 570 "metafns.gperf"
       {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 571 "metafns.gperf"
+#line 572 "metafns.gperf"
       {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
-#line 634 "metafns.gperf"
+#line 636 "metafns.gperf"
       {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 675 "metafns.gperf"
+#line 677 "metafns.gperf"
       {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 534 "metafns.gperf"
+#line 535 "metafns.gperf"
       {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 679 "metafns.gperf"
+#line 681 "metafns.gperf"
       {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
-#line 665 "metafns.gperf"
+#line 667 "metafns.gperf"
       {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 622 "metafns.gperf"
+#line 624 "metafns.gperf"
       {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 546 "metafns.gperf"
+#line 547 "metafns.gperf"
       {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 672 "metafns.gperf"
+#line 674 "metafns.gperf"
       {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
-#line 632 "metafns.gperf"
+#line 634 "metafns.gperf"
       {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 598 "metafns.gperf"
+#line 599 "metafns.gperf"
       {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 680 "metafns.gperf"
+#line 682 "metafns.gperf"
       {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
-#line 666 "metafns.gperf"
+#line 668 "metafns.gperf"
       {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 558 "metafns.gperf"
+#line 559 "metafns.gperf"
       {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 465 "metafns.gperf"
+#line 466 "metafns.gperf"
       {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
-#line 590 "metafns.gperf"
+#line 591 "metafns.gperf"
       {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 669 "metafns.gperf"
+#line 671 "metafns.gperf"
       {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
-#line 497 "metafns.gperf"
-      {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
 #line 498 "metafns.gperf"
+      {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
+#line 499 "metafns.gperf"
       {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 681 "metafns.gperf"
+#line 683 "metafns.gperf"
       {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
-#line 503 "metafns.gperf"
+#line 504 "metafns.gperf"
       {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 684 "metafns.gperf"
+#line 686 "metafns.gperf"
       {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
-#line 492 "metafns.gperf"
+#line 493 "metafns.gperf"
       {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
-#line 682 "metafns.gperf"
+#line 684 "metafns.gperf"
       {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 496 "metafns.gperf"
+#line 497 "metafns.gperf"
       {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
-#line 660 "metafns.gperf"
+#line 662 "metafns.gperf"
       {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 584 "metafns.gperf"
+#line 585 "metafns.gperf"
       {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
-#line 618 "metafns.gperf"
+#line 620 "metafns.gperf"
       {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 614 "metafns.gperf"
+#line 615 "metafns.gperf"
       {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 480 "metafns.gperf"
+#line 481 "metafns.gperf"
       {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 471 "metafns.gperf"
+#line 472 "metafns.gperf"
       {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 594 "metafns.gperf"
+#line 595 "metafns.gperf"
       {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 691 "metafns.gperf"
+#line 693 "metafns.gperf"
       {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 617 "metafns.gperf"
+#line 618 "metafns.gperf"
       {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 606 "metafns.gperf"
+#line 607 "metafns.gperf"
       {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 467 "metafns.gperf"
+#line 468 "metafns.gperf"
       {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
-#line 484 "metafns.gperf"
+#line 485 "metafns.gperf"
       {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
-#line 589 "metafns.gperf"
+#line 590 "metafns.gperf"
       {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 537 "metafns.gperf"
+#line 538 "metafns.gperf"
       {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 485 "metafns.gperf"
+#line 486 "metafns.gperf"
       {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
-#line 583 "metafns.gperf"
+#line 584 "metafns.gperf"
       {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
-#line 475 "metafns.gperf"
+#line 476 "metafns.gperf"
       {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
-#line 700 "metafns.gperf"
+#line 702 "metafns.gperf"
       {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
-#line 701 "metafns.gperf"
+#line 703 "metafns.gperf"
       {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
-#line 483 "metafns.gperf"
+#line 484 "metafns.gperf"
       {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
-#line 516 "metafns.gperf"
+#line 517 "metafns.gperf"
       {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
-#line 487 "metafns.gperf"
+#line 488 "metafns.gperf"
       {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
-#line 552 "metafns.gperf"
+#line 553 "metafns.gperf"
       {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
-#line 515 "metafns.gperf"
+#line 516 "metafns.gperf"
       {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 689 "metafns.gperf"
+#line 691 "metafns.gperf"
       {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
-#line 582 "metafns.gperf"
+#line 583 "metafns.gperf"
       {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 504 "metafns.gperf"
+#line 505 "metafns.gperf"
       {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 536 "metafns.gperf"
+#line 537 "metafns.gperf"
       {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 588 "metafns.gperf"
+#line 589 "metafns.gperf"
       {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 653 "metafns.gperf"
+#line 655 "metafns.gperf"
       {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
-#line 499 "metafns.gperf"
+#line 500 "metafns.gperf"
       {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 560 "metafns.gperf"
-      {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
 #line 561 "metafns.gperf"
+      {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 562 "metafns.gperf"
       {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 678 "metafns.gperf"
+#line 680 "metafns.gperf"
       {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
-#line 559 "metafns.gperf"
+#line 560 "metafns.gperf"
       {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 670 "metafns.gperf"
+#line 672 "metafns.gperf"
       {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 579 "metafns.gperf"
+#line 580 "metafns.gperf"
       {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 611 "metafns.gperf"
+#line 612 "metafns.gperf"
       {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 685 "metafns.gperf"
+#line 687 "metafns.gperf"
       {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 621 "metafns.gperf"
+#line 623 "metafns.gperf"
       {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 568 "metafns.gperf"
+#line 569 "metafns.gperf"
       {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 597 "metafns.gperf"
+#line 598 "metafns.gperf"
       {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 468 "metafns.gperf"
+#line 469 "metafns.gperf"
       {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
-#line 567 "metafns.gperf"
+#line 568 "metafns.gperf"
       {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 615 "metafns.gperf"
+#line 616 "metafns.gperf"
       {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 551 "metafns.gperf"
+#line 552 "metafns.gperf"
       {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
-#line 698 "metafns.gperf"
+#line 700 "metafns.gperf"
       {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
-#line 585 "metafns.gperf"
+#line 586 "metafns.gperf"
       {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 490 "metafns.gperf"
+#line 491 "metafns.gperf"
       {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
-#line 697 "metafns.gperf"
+#line 699 "metafns.gperf"
       {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 473 "metafns.gperf"
+#line 474 "metafns.gperf"
       {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
-#line 573 "metafns.gperf"
+#line 574 "metafns.gperf"
       {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 501 "metafns.gperf"
+#line 502 "metafns.gperf"
       {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 470 "metafns.gperf"
+#line 471 "metafns.gperf"
       {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 619 "metafns.gperf"
+#line 621 "metafns.gperf"
       {"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 486 "metafns.gperf"
+#line 487 "metafns.gperf"
       {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}
     };
 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
@@ -1108,50 +1111,50 @@ metafn_lookup::find (const char *str, size_t len)
        95,  96,  -1,  97,  98,  99,  -1,  -1, 100, 101,
       102,  -1,  -1,  -1,  -1,  -1,  -1, 103,  -1,  -1,
        -1, 104,  -1, 105,  -1, 106, 107,  -1, 108,  -1,
-      109, 110, 111,  -1,  -1,  -1, 112, 113,  -1, 114,
-       -1, 115,  -1, 116, 117,  -1, 118,  -1,  -1, 119,
-      120, 121, 122,  -1, 123,  -1,  -1,  -1, 124, 125,
-       -1,  -1,  -1,  -1,  -1,  -1, 126,  -1,  -1,  -1,
-       -1,  -1, 127, 128, 129,  -1, 130, 131,  -1,  -1,
-       -1,  -1,  -1, 132, 133,  -1,  -1, 134, 135, 136,
-       -1, 137, 138,  -1,  -1,  -1, 139, 140,  -1,  -1,
-       -1,  -1,  -1, 141,  -1,  -1, 142,  -1, 143,  -1,
-      144,  -1,  -1, 145, 146, 147, 148,  -1, 149,  -1,
-      150, 151, 152, 153,  -1,  -1, 154, 155, 156, 157,
-      158,  -1, 159, 160,  -1,  -1, 161,  -1,  -1, 162,
-       -1, 163,  -1,  -1, 164, 165, 166, 167, 168,  -1,
-       -1,  -1,  -1, 169,  -1, 170, 171,  -1,  -1,  -1,
-       -1, 172,  -1,  -1, 173,  -1, 174,  -1,  -1,  -1,
-       -1,  -1, 175,  -1,  -1, 176, 177,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 178, 179, 180,
-       -1,  -1,  -1,  -1, 181,  -1,  -1,  -1,  -1, 182,
-       -1,  -1,  -1,  -1,  -1, 183,  -1,  -1,  -1, 184,
-       -1, 185, 186, 187,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 188,  -1, 189,  -1,  -1, 190,
-       -1,  -1,  -1,  -1, 191, 192, 193,  -1,  -1, 194,
-       -1,  -1, 195,  -1,  -1,  -1, 196,  -1, 197,  -1,
-       -1, 198,  -1, 199,  -1,  -1,  -1,  -1,  -1, 200,
-      201, 202, 203,  -1, 204,  -1,  -1, 205,  -1,  -1,
-      206,  -1, 207,  -1,  -1,  -1,  -1,  -1, 208,  -1,
+      109, 110, 111, 112,  -1,  -1, 113, 114,  -1, 115,
+       -1, 116,  -1, 117, 118,  -1, 119,  -1,  -1, 120,
+      121, 122, 123,  -1, 124,  -1,  -1,  -1, 125, 126,
+       -1,  -1,  -1,  -1,  -1,  -1, 127,  -1,  -1,  -1,
+       -1,  -1, 128, 129, 130,  -1, 131, 132,  -1,  -1,
+       -1,  -1,  -1, 133, 134,  -1,  -1, 135, 136, 137,
+       -1, 138, 139,  -1,  -1,  -1, 140, 141,  -1,  -1,
+       -1,  -1,  -1, 142,  -1,  -1, 143,  -1, 144,  -1,
+      145,  -1,  -1, 146, 147, 148, 149,  -1, 150,  -1,
+      151, 152, 153, 154,  -1,  -1, 155, 156, 157, 158,
+      159,  -1, 160, 161,  -1,  -1, 162,  -1,  -1, 163,
+       -1, 164,  -1,  -1, 165, 166, 167, 168, 169,  -1,
+       -1,  -1,  -1, 170,  -1, 171, 172,  -1,  -1,  -1,
+       -1, 173,  -1,  -1, 174,  -1, 175,  -1,  -1,  -1,
+       -1,  -1, 176,  -1,  -1, 177, 178,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 179, 180, 181,
+       -1,  -1,  -1,  -1, 182,  -1,  -1,  -1,  -1, 183,
+       -1,  -1,  -1,  -1,  -1, 184,  -1,  -1,  -1, 185,
+       -1, 186, 187, 188,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 189,  -1, 190,  -1,  -1, 191,
+       -1,  -1,  -1,  -1, 192, 193, 194,  -1,  -1, 195,
+       -1,  -1, 196,  -1,  -1,  -1, 197,  -1, 198,  -1,
+       -1, 199,  -1, 200,  -1,  -1,  -1,  -1,  -1, 201,
+      202, 203, 204,  -1, 205,  -1,  -1, 206,  -1,  -1,
+      207,  -1, 208,  -1,  -1,  -1,  -1,  -1, 209,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 209,  -1,  -1,  -1,  -1,  -1, 210,
-       -1, 211,  -1,  -1,  -1,  -1,  -1,  -1, 212,  -1,
-       -1,  -1,  -1, 213,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 214,  -1,  -1,  -1, 215,  -1,  -1,  -1, 216,
-      217,  -1,  -1, 218,  -1,  -1,  -1,  -1, 219,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 220,  -1,  -1,
+       -1,  -1,  -1, 210,  -1,  -1,  -1,  -1,  -1, 211,
+       -1, 212,  -1,  -1,  -1,  -1,  -1,  -1, 213,  -1,
+       -1,  -1,  -1, 214,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 215,  -1,  -1,  -1, 216,  -1,  -1,  -1, 217,
+      218,  -1,  -1, 219,  -1,  -1,  -1,  -1, 220,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 221,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 221,  -1,  -1,  -1,  -1,
-      222,  -1,  -1,  -1,  -1, 223,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 224,  -1,
-       -1,  -1, 225, 226,  -1,  -1,  -1,  -1, 227,  -1,
-      228,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 229,  -1,
+       -1,  -1,  -1,  -1,  -1, 222,  -1,  -1,  -1,  -1,
+      223,  -1,  -1,  -1,  -1, 224,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 225,  -1,
+       -1,  -1, 226, 227,  -1,  -1,  -1,  -1, 228,  -1,
+      229,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 230,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 230,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 231,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 231,  -1,  -1, 232,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 233,  -1,  -1, 234,
+       -1,  -1, 232,  -1,  -1, 233,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 234,  -1,  -1, 235,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
@@ -1161,10 +1164,10 @@ metafn_lookup::find (const char *str, size_t len)
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 235,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 236,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      236
+      237
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc
index e4cef5228e3e..df7f0b54b5b5 100644
--- a/gcc/cp/reflect.cc
+++ b/gcc/cp/reflect.cc
@@ -4352,6 +4352,14 @@ eval_is_consteval_only_type (tree type)
     return boolean_false_node;
 }
 
+/* Process std::meta::is_structural_type.  */
+
+static tree
+eval_is_structural_type (location_t loc, tree type)
+{
+  return eval_type_trait (loc, type, CPTK_IS_STRUCTURAL);
+}
+
 /* Process std::meta::is_signed_type.  */
 
 static tree
@@ -7989,6 +7997,8 @@ process_metafunction (const constexpr_ctx *ctx, tree fun, tree call,
       return eval_is_aggregate_type (h);
     case METAFN_IS_CONSTEVAL_ONLY_TYPE:
       return eval_is_consteval_only_type (h);
+    case METAFN_IS_STRUCTURAL_TYPE:
+      return eval_is_structural_type (loc, h);
     case METAFN_IS_SIGNED_TYPE:
       return eval_is_signed_type (h);
     case METAFN_IS_UNSIGNED_TYPE:
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc
index ac08b598f3d0..abd1156a2dc1 100644
--- a/gcc/cp/semantics.cc
+++ b/gcc/cp/semantics.cc
@@ -14173,6 +14173,9 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2)
     case CPTK_IS_CONSTEVAL_ONLY:
       return consteval_only_p (type1);
 
+    case CPTK_IS_STRUCTURAL:
+      return structural_type_p (type1);
+
     /* __array_rank, __builtin_type_order and __builtin_structured_binding_size
        are handled in finish_trait_expr.  */
     case CPTK_RANK:
@@ -14354,6 +14357,7 @@ finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2)
     case CPTK_IS_TRIVIAL:
     case CPTK_IS_TRIVIALLY_COPYABLE:
     case CPTK_IS_CONSTEVAL_ONLY:
+    case CPTK_IS_STRUCTURAL:
     case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
       if (!check_trait_type (type1, /* kind = */ 2))
 	return error_mark_node;
diff --git a/gcc/testsuite/g++.dg/reflect/eh1.C b/gcc/testsuite/g++.dg/reflect/eh1.C
index 10eba7b2a8dd..ed4eeb087617 100644
--- a/gcc/testsuite/g++.dg/reflect/eh1.C
+++ b/gcc/testsuite/g++.dg/reflect/eh1.C
@@ -257,6 +257,9 @@ eval (int n)
     case 84:
       unwrap_ref_decay (^^n);
       break;
+    case 85:
+      is_structural_type (^^n);
+      break;
    default:
       break;
     }
@@ -353,3 +356,4 @@ static_assert (test (81));
 static_assert (test (82));
 static_assert (test (83));
 static_assert (test (84));
+static_assert (test (85));
diff --git a/gcc/testsuite/g++.dg/reflect/eh2.C b/gcc/testsuite/g++.dg/reflect/eh2.C
index 21f98796dfe3..bb601f186498 100644
--- a/gcc/testsuite/g++.dg/reflect/eh2.C
+++ b/gcc/testsuite/g++.dg/reflect/eh2.C
@@ -89,3 +89,4 @@ static_assert ((is_swappable_type (^^i), true)); // { dg-error "non-constant|unc
 static_assert ((is_nothrow_swappable_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((unwrap_reference (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((unwrap_ref_decay (^^i), true)); // { dg-error "non-constant|uncaught exception" }
+static_assert ((is_structural_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
diff --git a/gcc/testsuite/g++.dg/reflect/type_trait14.C b/gcc/testsuite/g++.dg/reflect/type_trait14.C
new file mode 100644
index 000000000000..7aa1d5f1dd36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/type_trait14.C
@@ -0,0 +1,61 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test reflection type traits [meta.reflection.traits], type properties.
+
+#include <meta>
+using namespace std::meta;
+
+struct A { constexpr A () : a (42) {} mutable int a; };
+struct B { constexpr B () {} A b; };
+struct C : public A { constexpr C () {} };
+struct D {};
+struct E : protected D { constexpr E () {} };
+struct F { constexpr F () : f (42) {} int f; };
+struct G { F a; int b[2]; constexpr G () : b{0,1} {} };
+enum EnumType { e0 };
+class ClassType { };
+struct NType { int i; int j; virtual ~NType (); };
+struct TType { int i; private: int j; };
+struct SLType { int i; int j; ~SLType (); };
+struct PODType { int i; int j; };
+struct LType { int _M_i; constexpr LType (int __i) : _M_i(__i) { } };
+struct LTypeDerived : public LType { constexpr LTypeDerived (int __i) : LType(__i) { } };
+struct NLType {
+  int _M_i;
+  NLType () : _M_i(0) { }
+  constexpr NLType (int __i) : _M_i(__i) { }
+  NLType (const NLType &__other) : _M_i(__other._M_i) { }
+  ~NLType () { _M_i = 0; }
+};
+
+static_assert (is_structural_type (^^int));
+static_assert (is_structural_type (^^float));
+static_assert (is_structural_type (^^const float));
+static_assert (is_structural_type (^^EnumType));
+static_assert (is_structural_type (^^int*));
+static_assert (is_structural_type (^^int(*)(int)));
+static_assert (is_structural_type (^^int (ClassType::*)));
+static_assert (is_structural_type (^^int (ClassType::*) (int)));
+static_assert (is_structural_type (^^std::nullptr_t));
+static_assert (is_structural_type (^^info));
+static_assert (is_structural_type (^^int&));
+static_assert (is_structural_type (^^NLType&));
+static_assert (is_structural_type (^^PODType));
+static_assert (is_structural_type (^^const LType));
+static_assert (is_structural_type (^^LTypeDerived));
+static_assert (is_structural_type (^^D));
+static_assert (is_structural_type (^^F));
+static_assert (is_structural_type (^^G));
+
+static_assert (!is_structural_type (^^int&&));
+static_assert (!is_structural_type (^^int[2]));
+static_assert (!is_structural_type (^^TType));
+static_assert (!is_structural_type (^^NType));
+static_assert (!is_structural_type (^^SLType));
+static_assert (!is_structural_type (^^LType[5]));
+static_assert (!is_structural_type (^^NLType));
+static_assert (!is_structural_type (^^NLType[5]));
+static_assert (!is_structural_type (^^A));
+static_assert (!is_structural_type (^^const B));
+static_assert (!is_structural_type (^^C));
+static_assert (!is_structural_type (^^E));
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 998223306e25..1265f01757c9 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2364,6 +2364,15 @@ ftms = {
   };
 };
 
+ftms = {
+  name = is_structural;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+    extra_cond = "__has_builtin(__builtin_is_structural)";
+  };
+};
+
 // Standard test specifications.
 stds[97] = ">= 199711L";
 stds[03] = ">= 199711L";
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index cb3b9b0997e8..00f352089f7a 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2635,4 +2635,14 @@
 #endif /* !defined(__cpp_lib_simd) */
 #undef __glibcxx_want_simd
 
+#if !defined(__cpp_lib_is_structural)
+# if (__cplusplus >  202302L) && (__has_builtin(__builtin_is_structural))
+#  define __glibcxx_is_structural 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_structural)
+#   define __cpp_lib_is_structural 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_is_structural) */
+#undef __glibcxx_want_is_structural
+
 #undef __glibcxx_want_all
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index 5b2dc58bdfe8..e855a31900e5 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -471,6 +471,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     consteval bool is_final_type(info);
     consteval bool is_aggregate_type(info);
     consteval bool is_consteval_only_type(info);
+#if __glibcxx_is_structural >= 202603L
+    consteval bool is_structural_type(info);
+#endif
     consteval bool is_signed_type(info);
     consteval bool is_unsigned_type(info);
     consteval bool is_bounded_array_type(info);
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index bba7a3fd03d2..38be1b0e09d3 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -55,6 +55,7 @@
 #define __glibcxx_want_is_null_pointer
 #define __glibcxx_want_is_pointer_interconvertible
 #define __glibcxx_want_is_scoped_enum
+#define __glibcxx_want_is_structural
 #define __glibcxx_want_is_swappable
 #define __glibcxx_want_is_virtual_base_of
 #define __glibcxx_want_logical_traits
@@ -3924,6 +3925,23 @@ template<typename _Ret, typename _Fn, typename... _Args>
       = __builtin_is_consteval_only(_Tp);
 #endif
 
+#if __cpp_lib_is_structural >= 202603L // C++ >= 26
+  /// is_structural - true if the type is a structural type.
+  /// @since C++26
+  template<typename _Tp>
+    struct is_structural
+    : bool_constant<__builtin_is_structural(_Tp)>
+    { };
+
+  /** is_structural_v - true if the type is a structural only type.
+   *  @ingroup variable_templates
+   *  @since C++26
+   */
+  template<typename _Tp>
+    inline constexpr bool is_structural_v
+      = __builtin_is_structural(_Tp);
+#endif
+
   /** * Remove references and cv-qualifiers.
    * @since C++20
    * @{
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index a7e88945c2f9..662f4405456e 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2255,6 +2255,9 @@ export namespace std
     using std::meta::is_final_type;
     using std::meta::is_aggregate_type;
     using std::meta::is_consteval_only_type;
+#if __glibcxx_is_structural >= 202603L
+    using std::meta::is_structural_type;
+#endif
     using std::meta::is_signed_type;
     using std::meta::is_unsigned_type;
     using std::meta::is_bounded_array_type;
@@ -3578,6 +3581,10 @@ export namespace std
   using std::is_consteval_only_v;
 #endif
 #endif
+#if __glibcxx_is_structural >= 202603L
+  using std::is_structural;
+  using std::is_structural_v;
+#endif
 }
 
 // <typeindex>
diff --git a/libstdc++-v3/testsuite/20_util/is_structural/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_structural/requirements/explicit_instantiation.cc
new file mode 100644
index 000000000000..a8d2545c2def
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_structural/requirements/explicit_instantiation.cc
@@ -0,0 +1,12 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+namespace std
+{
+  typedef short test_type;
+  template struct is_structural<test_type>;
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_structural/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_structural/requirements/typedefs.cc
new file mode 100644
index 000000000000..7ce089316653
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_structural/requirements/typedefs.cc
@@ -0,0 +1,16 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+// NB: This file is for testing type_traits with NO OTHER INCLUDES.
+
+#include <type_traits>
+
+void test01()
+{
+  // Check for required typedefs
+  typedef std::is_structural<int>             test_type;
+  typedef test_type::value_type               value_type;
+  typedef test_type::type                     type;
+  typedef test_type::type::value_type         type_value_type;
+  typedef test_type::type::type               type_type;
+}
diff --git a/libstdc++-v3/testsuite/20_util/is_structural/value.cc b/libstdc++-v3/testsuite/20_util/is_structural/value.cc
new file mode 100644
index 000000000000..b63d71043a09
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_structural/value.cc
@@ -0,0 +1,51 @@
+// { dg-do compile { target c++26 } }
+
+#include <type_traits>
+#include <testsuite_tr1.h>
+
+void test01()
+{
+  using std::is_structural;
+  using namespace __gnu_test;
+  struct A { constexpr A () : a (42) {} mutable int a; };
+  struct B { constexpr B () {} A b; };
+  struct C : public A { constexpr C () {} };
+  struct D {};
+  struct E : protected D { constexpr E () {} };
+  struct F { constexpr F () : f (42) {} int f; };
+  struct G { F a; int b[2]; constexpr G () : b{0,1} {} };
+
+  static_assert(test_category<is_structural, int>(true), "");
+  static_assert(test_category<is_structural, float>(true), "");
+  static_assert(test_category<is_structural, const float>(true), "");
+  static_assert(test_category<is_structural, EnumType>(true), "");
+  static_assert(test_category<is_structural, int*>(true), "");
+  static_assert(test_category<is_structural, int(*)(int)>(true), "");
+  static_assert(test_category<is_structural, int (ClassType::*)>(true), "");
+  static_assert(test_category<is_structural, int (ClassType::*) (int)>(true), "");
+  static_assert(test_category<is_structural, std::nullptr_t>(true), "");
+#if __cpp_impl_reflection >= 202506L
+  static_assert(test_category<is_structural, decltype(^^::)>(true), "");
+#endif
+  static_assert(test_category<is_structural, int&>(true), "");
+  static_assert(test_category<is_structural, NLType&>(true), "");
+  static_assert(test_category<is_structural, PODType>(true), "");
+  static_assert(test_category<is_structural, const LType>(true), "");
+  static_assert(test_category<is_structural, LTypeDerived>(true), "");
+  static_assert(test_category<is_structural, D>(true), "");
+  static_assert(test_category<is_structural, F>(true), "");
+  static_assert(test_category<is_structural, G>(true), "");
+
+  static_assert(test_category<is_structural, int&&>(false), "");
+  static_assert(test_category<is_structural, int[2]>(false), "");
+  static_assert(test_category<is_structural, TType>(false), "");
+  static_assert(test_category<is_structural, NType>(false), "");
+  static_assert(test_category<is_structural, SLType>(false), "");
+  static_assert(test_category<is_structural, LType[5]>(false), "");
+  static_assert(test_category<is_structural, NLType>(false), "");
+  static_assert(test_category<is_structural, NLType[5]>(false), "");
+  static_assert(test_category<is_structural, A>(false), "");
+  static_assert(test_category<is_structural, const B>(false), "");
+  static_assert(test_category<is_structural, C>(false), "");
+  static_assert(test_category<is_structural, E>(false), "");
+}
diff --git a/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
index eb440a097071..0ef2bc95f780 100644
--- a/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
+++ b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
@@ -340,6 +340,11 @@ static_assert(is_consteval_only_v<decltype(^^int)>
 static_assert(!is_consteval_only_v<int> && !is_consteval_only<int>::value, "");
 #endif
 
+#if __cpp_lib_is_structural >= 202603L
+static_assert(is_structural_v<int> && is_structural<int>::value, "");
+static_assert(!is_structural_v<int &&> && !is_structural<int &&>::value, "");
+#endif
+
 static_assert(negation_v<false_type>, "");
 static_assert(!negation_v<true_type>, "");
 static_assert(conjunction_v<>, "");

From gccadmin@gcc.gnu.org  Sat Apr  4 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat,  4 Apr 2026 00:16:54 +0000 (GMT)
Subject: [gcc r16-8453] Daily bump.
Message-ID: <20260404001654.81F534BA23F0@sourceware.org>

https://gcc.gnu.org/g:69b4da776140629247a6a09e5a7ee22ec86a156a

commit r16-8453-g69b4da776140629247a6a09e5a7ee22ec86a156a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Apr 4 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 33 ++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/ada/ChangeLog       |  6 +++++
 gcc/cp/ChangeLog        | 55 ++++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog   | 17 +++++++++++++
 gcc/testsuite/ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 28 +++++++++++++++++++++
 7 files changed, 207 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05008267962d..376f95759e6b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,36 @@
+2026-04-03  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR c/123234
+	* doc/extend.texi (Decimal Float): Clarify that GCC really does
+	support only the older N1312 draft as documented here, not the
+	standard C23 functionality yet.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124754
+	* tree-ssa-strlen.cc (strlen_pass::handle_builtin_strcpy): Make
+	sure both get_stridx calls are done before first get_strinfo call.
+	(strlen_pass::handle_builtin_memcpy): Likewise.
+	(strlen_pass::handle_builtin_strcat): Likewise.
+
+2026-04-03  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR debug/94491
+	* doc/invoke.texi (Debugging Options): Explicitly document what
+	-g2 does instead of just saying it's the default.
+
+2026-04-03  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/94182
+	* doc/implement-c.texi (Characters implementation): Add
+	cross-reference to more detailed discussion about signedness.
+	* doc/invoke.texi (C Dialect Options): Combine -fsigned-char
+	and -funsigned-char table entries since the following discussion
+	applies to both.  Add an anchor so other things can point at it.
+	(Warning Options): Add cross-references to the above two places.
+	Clarify that the warning is given regardless of whether char is
+	signed or unsigned.
+
 2026-04-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/124746
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index aa616bdb404b..05c465eb48c8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260403
+20260404
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a06721652b38..5edbfcdb1428 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-03  Tonu Naks  <naks@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst: Adjust rules for
+	structural generic instantiations.
+	* gnat_rm.texi: Regenerate.
+
 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* sem_attr.adb (Analyze_Attribute) <Attribute_Reduce>: Rewrite the
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index daeeb0e13f5a..dd4d9fe2425e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,58 @@
+2026-04-03  Alexandre Oliva  <oliva@adacore.com>
+
+	* coroutines.cc (cp_coroutine_transform::build_ramp_function):
+	Zero-initialize refcount.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* cp-trait.def (__builtin_is_structural): New trait.
+	* semantics.cc (trait_expr_value): Handle CPTK_IS_STRUCTURAL.
+	(finish_trait_expr): Likewise.
+	* constraint.cc (diagnose_trait_expr): Likewise.
+	* metafns.gperf (enum metafn_code): Add METAFN_IS_STRUCTURAL_TYPE.
+	(is_structural_type): New metafn.
+	* metafns.h: Regenerate.
+	* reflect.cc (eval_is_structural_type): New function.
+	(process_metafunction): Handle METAFN_IS_STRUCTURAL_TYPE.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* cp-tree.h (enum cp_built_in_function): Add
+	CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
+	* tree.cc (builtin_valid_in_constant_expr_p): Handle
+	those.
+	* decl.cc (cxx_init_decl_processing): Build
+	decls for CP_BUILT_IN_CURRENT_EXCEPTION and
+	CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
+	(require_deduced_type): Deduce CP_BUILT_IN_CURRENT_EXCEPTION
+	return type.
+	* cp-gimplify.cc (cp_gimplify_expr): Handle
+	CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
+	* constexpr.cc (enum cxa_builtin): Remove STD_UNCAUGHT_EXCEPTIONS
+	and STD_CURRENT_EXCEPTION, add BUILTIN_UNCAUGHT_EXCEPTIONS and
+	BUILTIN_CURRENT_EXCEPTION, renumber some enumerators.
+	(cxx_cxa_builtin_fn_p): Don't check for std::uncaught_exceptions
+	nor std::current_exception.
+	(cxx_eval_cxa_builtin_fn): Handle BUILTIN_UNCAUGHT_EXCEPTIONS
+	and BUILTIN_CURRENT_EXCEPTION instead of STD_UNCAUGHT_EXCEPTIONS
+	and STD_CURRENT_EXCEPTION.
+	(cxx_eval_builtin_function_call): Handle
+	CP_BUILT_IN_CURRENT_EXCEPTION and CP_BUILT_IN_UNCAUGHT_EXCEPTIONS.
+	Do just one fndecl_builtin_p check for BUILT_IN_FRONTEND and
+	switch on DECL_FE_FUNCTION_CODE.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (eval_data_member_spec): Implement C++26 LWG4517
+	- data_member_spec should throw for cv-qualified unnamed bit-fields.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124531
+	* init.cc (build_vec_init): Call braced_lists_to_strings for
+	array CONSTRUCTORs.  Handle RAW_DATA_CST and handle RANGE_EXPR
+	correctly.
+
 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR c++/124477
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index bc0fe0d5cf6e..dd7bec4a0e51 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,20 @@
+2026-04-03  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/124652
+	* trans-expr.cc (gfc_conv_procedure_call): Do not clobber a
+	procedure pointer intent(out) argument.
+	* trans-intrinsic.cc (conv_isocbinding_function): When passing to
+	C_FUNLOC a procedure pointer that is a dummy, dereference it.
+
+2026-04-03  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/100155
+	* trans-expr.cc (gfc_add_interface_mapping): 'new_sym' dummy
+	attribute set to zero.
+	(gfc_conv_procedure_call): Deallocate allocatable components of
+	a class argument, enclosed in parentheses,wrap up the parmse
+	and proceed to the next argument.
+
 2026-04-02  Christopher Albert  <albert@tugraz.at>
 	    Paul Thomas  <pault@gcc.gnu.org>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 00d22178d46a..6dcec995d3d9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,70 @@
+2026-04-03  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/123210
+	* gcc.target/i386/pr123210.c: New test.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124754
+	* g++.dg/tree-ssa/strlenopt-3.C: New test.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/type_trait14.C: New test.
+	* g++.dg/reflect/eh1.C: Add test for is_structural_type.
+	* g++.dg/reflect/eh2.C: Likewise.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/cpp26/constexpr-eh3.C: Use __builtin_current_exception()
+	instead of std::current_exception() and
+	__builttin_uncaught_exceptions() instead of
+	std::uncaught_exceptions().  Remove nested_exception related parts
+	of the test.
+	* g++.dg/cpp26/constexpr-eh8.C: Use __builtin_current_exception()
+	instead of std::current_exception().
+
+2026-04-03  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/124652
+	* gfortran.dg/c_funloc_tests_10.f90: New test.
+
+2026-04-03  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/98203
+	PR fortran/98203
+	* gfortran.dg/gomp/pr98203.f90: New test.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/data_member_spec2.C: Add tests for unnamed bit-fields
+	with const and/or volatile types.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/define_aggregate10.C: New test.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/lwg4556.C: New test.
+
+2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124531
+	* g++.dg/cpp/embed-29.C: New test.
+	* g++.dg/cpp0x/pr124531.C: New test.
+
+2026-04-03  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/95163
+	PR fortran/95163
+	* gfortran.dg/gomp/pr95163.f90: New test.
+
+2026-04-03  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/100155
+	* gfortran.dg/pr100155.f90: New test.
+
 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR c++/124477
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ab9e329ac406..96cad9a88eac 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,31 @@
+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'

From tkaminsk@gcc.gnu.org  Sat Apr  4 08:38:15 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Sat,  4 Apr 2026 08:38:15 +0000 (GMT)
Subject: [gcc r16-8460] libstdc++: Define foo() in optional/ref/access.cc test.
Message-ID: <20260404083815.31E0D4BA23C3@sourceware.org>

https://gcc.gnu.org/g:b0cf247799072ee46c3fa13b43529c505f378068

commit r16-8460-gb0cf247799072ee46c3fa13b43529c505f378068
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Sat Apr 4 10:33:36 2026 +0200

    libstdc++: Define foo() in optional/ref/access.cc test.
    
    Fix undefined reference error when compiling with -O0.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/20_util/optional/ref/access.cc: Provide
            definition for foo().

Diff:
---
 libstdc++-v3/testsuite/20_util/optional/ref/access.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/20_util/optional/ref/access.cc b/libstdc++-v3/testsuite/20_util/optional/ref/access.cc
index 37c8ff355a66..dcd16a24b3c0 100644
--- a/libstdc++-v3/testsuite/20_util/optional/ref/access.cc
+++ b/libstdc++-v3/testsuite/20_util/optional/ref/access.cc
@@ -100,7 +100,7 @@ static_assert(  has_value_or_for<int(*)()> );
 int i;
 NonMovable nm;
 int arr[2];
-int foo();
+int foo() { return 1; }
 
 int main()
 {

From mkretz@gcc.gnu.org  Sat Apr  4 09:20:56 2026
From: mkretz@gcc.gnu.org (Matthias Kretz)
Date: Sat,  4 Apr 2026 09:20:56 +0000 (GMT)
Subject: [gcc r16-8463] libstdc++: Guard use of float16_t and bfloat16_t
 [PR124722]
Message-ID: <20260404092056.E24C94BA23C2@sourceware.org>

https://gcc.gnu.org/g:1c719fd95799ad3599c46e504e5c2cc07a930e2f

commit r16-8463-g1c719fd95799ad3599c46e504e5c2cc07a930e2f
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Wed Apr 1 11:46:08 2026 +0200

    libstdc++: Guard use of float16_t and bfloat16_t [PR124722]
    
    The rest of this test is still relevant, thus only the (b)float16_t
    tests are made optional rather than skipping the whole test via
    dg-effective-target.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/124722
            * testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__
            and __STDCPP_BFLOAT16_T__ guards.
    
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

Diff:
---
 libstdc++-v3/testsuite/std/simd/traits_impl.cc | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
index a264bd5f1400..06bf6d5be256 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
@@ -9,7 +9,9 @@
 
 namespace simd = std::simd;
 
+#ifdef __STDCPP_FLOAT16_T__
 using std::float16_t;
+#endif
 using std::float32_t;
 using std::float64_t;
 
@@ -17,7 +19,11 @@ using namespace std::simd;
 
 void test()
 {
-  template for (auto t : {float(), double(), float16_t(), float32_t(), float64_t()})
+  template for (auto t : {float(), double(),
+#ifdef __STDCPP_FLOAT16_T__
+			  float16_t(),
+#endif
+			  float32_t(), float64_t()})
     {
       using T = decltype(t);
       static_assert(__vectorizable<T>);
@@ -25,7 +31,9 @@ void test()
 
   static_assert(!__vectorizable<const float>);
   static_assert(!__vectorizable<float&>);
+#ifdef __STDCPP_BFLOAT16_T__
   static_assert(!__vectorizable<std::bfloat16_t>);
+#endif
 
   template for (constexpr int N : {1, 2, 4, 8})
     {
@@ -82,8 +90,10 @@ void test()
   static_assert( __value_preserving_convertible_to<float, double>);
   static_assert(!__value_preserving_convertible_to<double, float>);
 
+#ifdef __STDCPP_FLOAT16_T__
   static_assert(__explicitly_convertible_to<float, float16_t>);
   static_assert(__explicitly_convertible_to<long, float16_t>);
+#endif
 
   static_assert(__constexpr_wrapper_like<std::constant_wrapper<2>>);
   static_assert(__constexpr_wrapper_like<std::integral_constant<int, 1>>);
@@ -95,7 +105,9 @@ void test()
   static_assert(!__broadcast_constructible<const int, float>);
 
   static_assert(__broadcast_constructible<decltype(std::cw<2>), float>);
+#ifdef __STDCPP_FLOAT16_T__
   static_assert(__broadcast_constructible<decltype(std::cw<0.f>), std::float16_t>);
+#endif
 
 
   static_assert(__higher_rank_than<long, int>);
@@ -112,7 +124,9 @@ void test()
   static_assert(__higher_rank_than<unsigned long, int>);
   static_assert(__higher_rank_than<unsigned long long, long>);
 
+#ifdef __STDCPP_FLOAT16_T__
   static_assert(__higher_rank_than<float, float16_t>);
+#endif
   static_assert(__higher_rank_than<float32_t, float>);
   static_assert(__higher_rank_than<double, float32_t>);
   static_assert(__higher_rank_than<double, float>);

From gccadmin@gcc.gnu.org  Sun Apr  5 00:16:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun,  5 Apr 2026 00:16:53 +0000 (GMT)
Subject: [gcc r16-8471] Daily bump.
Message-ID: <20260405001653.D5A894BA23C2@sourceware.org>

https://gcc.gnu.org/g:a34b142411d129828cc8e1c9a9f7b77072ee1f5f

commit r16-8471-ga34b142411d129828cc8e1c9a9f7b77072ee1f5f
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun Apr 5 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 70 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 29 ++++++++++++++++++++
 gcc/fortran/ChangeLog   |  7 +++++
 gcc/testsuite/ChangeLog | 35 +++++++++++++++++++++++++
 libgfortran/ChangeLog   |  6 +++++
 libstdc++-v3/ChangeLog  | 11 ++++++++
 7 files changed, 159 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 376f95759e6b..ada6c2359cfa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,73 @@
+2026-04-04  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* doc/invoke.texi (Picolibc Options): Copy-edit for markup, use
+	of proper names, etc.
+
+2026-04-04  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* doc/invoke.texi (GCC Command Options): Move Picolibc Options
+	section to Target-Specific Options.
+	(Option Summary): Likewise.
+
+2026-04-04  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* doc/extend.texi (Common Attributes): Fix cross-reference for
+	renamed "Submodel Options" -> "Target-Specific Options".
+	* doc/invoke.texi (Invoking GCC): Likewise for the menu.
+	(Option Summary): Likewise for the use here.
+	(Submodel Options): Rename to Target-Specific Options.  Leave
+	an anchor with the old name.  Add better index entries.  Rewrite
+	introductory text.
+	(Precompiled Headers): Fix another cross-reference.
+
+2026-04-04  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR target/107337
+	* doc/invoke.texi (x86 Options): Add CX16 feature to nocona,
+	alderlake, arrowlake, arrowlake-s, pantherlake, novalake,
+	bonnell, sierraforest, grandridge, clearwaterforest, and amdfam10
+	family processors.
+
+2026-04-04  Richard Biener  <rguenther@suse.de>
+
+	* doc/gccint.texi: Add named pattern index with @mdindex.
+	* doc/md.texi (Standard Pattern Names For Generation): Split
+	table into two using subsections, splitting out vectorizer
+	related standard patterns.  Use @mdindex for all standard
+	pattern names.
+
+2026-04-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc (xtensa_legitimize_address):
+	Add code to legitimize the displacement of 64 kilobytes before and
+	after using two ADDMI instructions.
+
+2026-04-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.md (negsf2):
+	Change define_insn to define_insn_and_split, and replace the
+	corresponding output template with the split pattern.
+
+2026-04-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc (TARGET_DIFFERENT_ADDR_DISPLACEMENT_P):
+	Remove.
+
+2026-04-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc (smalloffset_mem_p):
+	Rename it to smalloffset_address_p and remove the result check
+	of MEM_P().
+	(constantpool_address_p): Change from static scope to global.
+	* config/xtensa/xtensa-protos.h (smalloffset_mem_p):
+	Rename it to smalloffset_address_p.
+	(constantpool_address_p): New function prototype.
+	* config/xtensa/constraints.md (R):
+	Change the call in (match_test "...") from smalloffset_mem_p()
+	to smalloffset_address_p().
+	(T, U): Change the call in (match_test "...") from
+	constantpool_mem_p() to constantpool_address_p().
+
 2026-04-03  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR c/123234
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 05c465eb48c8..74f24011f1ba 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260404
+20260405
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index dd4d9fe2425e..27df3beae173 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,32 @@
+2026-04-04  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR c++/124573
+	* decl.cc (finish_enum_value_list): Defend against a DECL_INITIAL
+	being NULL during error recovery.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* parser.cc (cp_parser_expansion_statement): Temporarily set
+	in_expansion_stmt to true around cp_parser_simple_declaration
+	for range_decl.
+	(cp_parser_decomposition_declaration): Don't reject structured binding
+	packs if in_expansion_stmt is set.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle pack index
+	mangling unless (for now) PACK_INDEX_PACK is a TREE_VEC.
+	(write_expression): Handle PACK_INDEX_EXPR.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124198
+	* parser.cc (cp_parser_pack_index): If index is not type dependent,
+	call build_converted_constant_expr on it.  Return error_mark_node
+	if index is error_operand_p.
+	* pt.cc (tsubst_pack_index): Likewise.
+
 2026-04-03  Alexandre Oliva  <oliva@adacore.com>
 
 	* coroutines.cc (cp_coroutine_transform::build_ramp_function):
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index dd7bec4a0e51..4055003b0b35 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-04  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/66973
+	* interface.cc (gfc_compare_actual_formal): Check that C_LOC and
+	C_FUNLOC from ISO_C_BINDING as actual argument are passed to a
+	dummy argument of matching type C_PTR/C_FUNPTR.
+
 2026-04-03  Harald Anlauf  <anlauf@gmx.de>
 
 	PR fortran/124652
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6dcec995d3d9..c8191f12885a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,38 @@
+2026-04-04  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR c++/124573
+	* g++.dg/other/enum4.C: New test case.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/cpp26/expansion-stmt34.C: New test.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* g++.dg/cpp26/pack-indexing7.C: Don't xfail dg-bogus.
+	* g++.dg/cpp26/pack-indexing22.C: New test.
+
+2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124198
+	* g++.dg/cpp26/pack-indexing2.C (getT2, badtype4): Expect different
+	diagnostics.
+	* g++.dg/cpp26/pack-indexing20.C: New test.
+	* g++.dg/cpp26/pack-indexing21.C: New test.
+
+2026-04-04  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/66973
+	* gfortran.dg/generic_36-1.f90: New test.
+	* gfortran.dg/generic_36-2.f90: New test.
+
+2026-04-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/124543
+	* gfortran.dg/pr124543.f90: Set result to 'UNDEFINED' in two
+	places.
+
 2026-04-03  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR target/123210
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index a7040ff739d4..2174474fd120 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/124543
+	* io/inquire.c (inquire_via_unit): Adjust the logic to
+	treat formatted vs unformatted correctly.
+
 2026-03-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/124543
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 96cad9a88eac..d3a407872a27 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+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.

From mkretz@gcc.gnu.org  Mon Apr  6 18:12:21 2026
From: mkretz@gcc.gnu.org (Matthias Kretz)
Date: Mon,  6 Apr 2026 18:12:21 +0000 (GMT)
Subject: [gcc r16-8480] libstdc++: Require SSE2 for std::simd [PR124722]
Message-ID: <20260406181221.B10044BA2E1C@sourceware.org>

https://gcc.gnu.org/g:1cfdd868cea8583ba498fcc22690070d4cb24ee1

commit r16-8480-g1cfdd868cea8583ba498fcc22690070d4cb24ee1
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Sat Apr 4 11:40:38 2026 +0200

    libstdc++: Require SSE2 for std::simd [PR124722]
    
    Without SSE2 double precision uses excess precision, leading to test
    failures. For now, std::simd remains a tech preview that simply is
    disabled without SSE2.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

Diff:
---
 libstdc++-v3/include/bits/version.def                    | 2 +-
 libstdc++-v3/include/bits/version.h                      | 2 +-
 libstdc++-v3/testsuite/std/simd/arithmetic.cc            | 1 +
 libstdc++-v3/testsuite/std/simd/arithmetic_expensive.cc  | 1 +
 libstdc++-v3/testsuite/std/simd/creation.cc              | 1 +
 libstdc++-v3/testsuite/std/simd/creation_expensive.cc    | 1 +
 libstdc++-v3/testsuite/std/simd/loads.cc                 | 1 +
 libstdc++-v3/testsuite/std/simd/loads_expensive.cc       | 1 +
 libstdc++-v3/testsuite/std/simd/mask.cc                  | 1 +
 libstdc++-v3/testsuite/std/simd/mask2.cc                 | 1 +
 libstdc++-v3/testsuite/std/simd/mask2_expensive.cc       | 1 +
 libstdc++-v3/testsuite/std/simd/mask_expensive.cc        | 1 +
 libstdc++-v3/testsuite/std/simd/reductions.cc            | 1 +
 libstdc++-v3/testsuite/std/simd/reductions_expensive.cc  | 1 +
 libstdc++-v3/testsuite/std/simd/shift_left.cc            | 1 +
 libstdc++-v3/testsuite/std/simd/shift_left_expensive.cc  | 1 +
 libstdc++-v3/testsuite/std/simd/shift_right.cc           | 1 +
 libstdc++-v3/testsuite/std/simd/shift_right_expensive.cc | 1 +
 libstdc++-v3/testsuite/std/simd/simd_alg.cc              | 1 +
 libstdc++-v3/testsuite/std/simd/simd_alg_expensive.cc    | 1 +
 libstdc++-v3/testsuite/std/simd/sse_intrin.cc            | 1 +
 libstdc++-v3/testsuite/std/simd/stores.cc                | 1 +
 libstdc++-v3/testsuite/std/simd/stores_expensive.cc      | 1 +
 libstdc++-v3/testsuite/std/simd/traits_common.cc         | 1 +
 libstdc++-v3/testsuite/std/simd/traits_math.cc           | 1 +
 25 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 1265f01757c9..cfb90533ce45 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2359,7 +2359,7 @@ ftms = {
     cxxmin = 26;
     extra_cond = "__cpp_structured_bindings >= 202411L "
     "&& __cpp_expansion_statements >= 202411L "
-    "&& (__x86_64__ || __i386__)"; // TODO: lift initial restriction to x86
+    "&& __SSE2__"; // TODO: add more targets
     hosted = yes;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 00f352089f7a..22dd31b9d324 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2627,7 +2627,7 @@
 #undef __glibcxx_want_contracts
 
 #if !defined(__cpp_lib_simd)
-# if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (__cpp_structured_bindings >= 202411L && __cpp_expansion_statements >= 202411L && (__x86_64__ || __i386__))
+# if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (__cpp_structured_bindings >= 202411L && __cpp_expansion_statements >= 202411L && __SSE2__)
 #  define __glibcxx_simd 202506L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_simd)
 #  endif
diff --git a/libstdc++-v3/testsuite/std/simd/arithmetic.cc b/libstdc++-v3/testsuite/std/simd/arithmetic.cc
index 5d605255f5ca..e662a26866c6 100644
--- a/libstdc++-v3/testsuite/std/simd/arithmetic.cc
+++ b/libstdc++-v3/testsuite/std/simd/arithmetic.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/arithmetic_expensive.cc b/libstdc++-v3/testsuite/std/simd/arithmetic_expensive.cc
index 3a476058c7a0..e62fe53b5e15 100644
--- a/libstdc++-v3/testsuite/std/simd/arithmetic_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/arithmetic_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/creation.cc b/libstdc++-v3/testsuite/std/simd/creation.cc
index 905c09d6449d..f567281cdc99 100644
--- a/libstdc++-v3/testsuite/std/simd/creation.cc
+++ b/libstdc++-v3/testsuite/std/simd/creation.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/creation_expensive.cc b/libstdc++-v3/testsuite/std/simd/creation_expensive.cc
index cdb3eba5baf5..0f54f3d5d24d 100644
--- a/libstdc++-v3/testsuite/std/simd/creation_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/creation_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/loads.cc b/libstdc++-v3/testsuite/std/simd/loads.cc
index 8d48b8c55c8c..90790a46da3d 100644
--- a/libstdc++-v3/testsuite/std/simd/loads.cc
+++ b/libstdc++-v3/testsuite/std/simd/loads.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 #include <numeric>
diff --git a/libstdc++-v3/testsuite/std/simd/loads_expensive.cc b/libstdc++-v3/testsuite/std/simd/loads_expensive.cc
index 79ac8700b87e..f409d0b9c00d 100644
--- a/libstdc++-v3/testsuite/std/simd/loads_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/loads_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/mask.cc b/libstdc++-v3/testsuite/std/simd/mask.cc
index 9bfa356862c8..ebd9dc7728d3 100644
--- a/libstdc++-v3/testsuite/std/simd/mask.cc
+++ b/libstdc++-v3/testsuite/std/simd/mask.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 #include <utility>
diff --git a/libstdc++-v3/testsuite/std/simd/mask2.cc b/libstdc++-v3/testsuite/std/simd/mask2.cc
index 4e65eac4164f..d4345c12243d 100644
--- a/libstdc++-v3/testsuite/std/simd/mask2.cc
+++ b/libstdc++-v3/testsuite/std/simd/mask2.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 #include <utility>
diff --git a/libstdc++-v3/testsuite/std/simd/mask2_expensive.cc b/libstdc++-v3/testsuite/std/simd/mask2_expensive.cc
index d3943874f54a..c2a018badac0 100644
--- a/libstdc++-v3/testsuite/std/simd/mask2_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/mask2_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-require-effective-target run_expensive_tests }
 // { dg-timeout-factor 2 }
 
diff --git a/libstdc++-v3/testsuite/std/simd/mask_expensive.cc b/libstdc++-v3/testsuite/std/simd/mask_expensive.cc
index dadfd3df879e..3f3a89e1d4b9 100644
--- a/libstdc++-v3/testsuite/std/simd/mask_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/mask_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/reductions.cc b/libstdc++-v3/testsuite/std/simd/reductions.cc
index d40b01f509b1..b97eb1be6097 100644
--- a/libstdc++-v3/testsuite/std/simd/reductions.cc
+++ b/libstdc++-v3/testsuite/std/simd/reductions.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/reductions_expensive.cc b/libstdc++-v3/testsuite/std/simd/reductions_expensive.cc
index 52507c499d03..c4cab956aa37 100644
--- a/libstdc++-v3/testsuite/std/simd/reductions_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/reductions_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/shift_left.cc b/libstdc++-v3/testsuite/std/simd/shift_left.cc
index 1a7cc195851b..111643657e23 100644
--- a/libstdc++-v3/testsuite/std/simd/shift_left.cc
+++ b/libstdc++-v3/testsuite/std/simd/shift_left.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/shift_left_expensive.cc b/libstdc++-v3/testsuite/std/simd/shift_left_expensive.cc
index c0179503ce9e..b7fe4f2f5e69 100644
--- a/libstdc++-v3/testsuite/std/simd/shift_left_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/shift_left_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/shift_right.cc b/libstdc++-v3/testsuite/std/simd/shift_right.cc
index 99ae451ffd89..3adee7ffdbfa 100644
--- a/libstdc++-v3/testsuite/std/simd/shift_right.cc
+++ b/libstdc++-v3/testsuite/std/simd/shift_right.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/shift_right_expensive.cc b/libstdc++-v3/testsuite/std/simd/shift_right_expensive.cc
index 2171d8aea05c..8136224e491b 100644
--- a/libstdc++-v3/testsuite/std/simd/shift_right_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/shift_right_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/simd_alg.cc b/libstdc++-v3/testsuite/std/simd/simd_alg.cc
index 98da15e11e3d..03ba83de8d40 100644
--- a/libstdc++-v3/testsuite/std/simd/simd_alg.cc
+++ b/libstdc++-v3/testsuite/std/simd/simd_alg.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 #include <utility>
diff --git a/libstdc++-v3/testsuite/std/simd/simd_alg_expensive.cc b/libstdc++-v3/testsuite/std/simd/simd_alg_expensive.cc
index 066c3f43e878..6f162a4b23a4 100644
--- a/libstdc++-v3/testsuite/std/simd/simd_alg_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/simd_alg_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/sse_intrin.cc b/libstdc++-v3/testsuite/std/simd/sse_intrin.cc
index 7baa4118c0cf..483adb7dc2b9 100644
--- a/libstdc++-v3/testsuite/std/simd/sse_intrin.cc
+++ b/libstdc++-v3/testsuite/std/simd/sse_intrin.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/stores.cc b/libstdc++-v3/testsuite/std/simd/stores.cc
index d5721f7daa27..259b2a98f49c 100644
--- a/libstdc++-v3/testsuite/std/simd/stores.cc
+++ b/libstdc++-v3/testsuite/std/simd/stores.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include "test_setup.h"
 
diff --git a/libstdc++-v3/testsuite/std/simd/stores_expensive.cc b/libstdc++-v3/testsuite/std/simd/stores_expensive.cc
index 36ee941d85db..3244331210c3 100644
--- a/libstdc++-v3/testsuite/std/simd/stores_expensive.cc
+++ b/libstdc++-v3/testsuite/std/simd/stores_expensive.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 // { dg-require-effective-target run_expensive_tests }
 
diff --git a/libstdc++-v3/testsuite/std/simd/traits_common.cc b/libstdc++-v3/testsuite/std/simd/traits_common.cc
index 4ee126ccc973..ecbceef06bf3 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_common.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_common.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 // { dg-timeout-factor 2 }
 
 #include <simd>
diff --git a/libstdc++-v3/testsuite/std/simd/traits_math.cc b/libstdc++-v3/testsuite/std/simd/traits_math.cc
index 2e9339e918cb..fc71ff9e3590 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_math.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_math.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++26 } }
 // { dg-require-effective-target x86 }
+// { dg-additional-options "-msse2" }
 
 #include <simd>
 #include <stdfloat>

From gccadmin@gcc.gnu.org  Tue Apr  7 00:16:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  7 Apr 2026 00:16:53 +0000 (GMT)
Subject: [gcc r16-8489] Daily bump.
Message-ID: <20260407001653.1B5364BA5436@sourceware.org>

https://gcc.gnu.org/g:eba2859094ea787a0d50a80da2e102757581cc2e

commit r16-8489-geba2859094ea787a0d50a80da2e102757581cc2e
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Apr 7 00:16:25 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 14 +++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 66 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog   | 12 +++++++++
 gcc/testsuite/ChangeLog | 57 ++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 29 ++++++++++++++++++++++
 6 files changed, 179 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ada6c2359cfa..64a1f10c66fe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR libstdc++/124268
+	* doc/invoke.texi: Note that -Wexpose-global-module-tu-local
+	also applies to 'export using' declarations.
+
+2026-04-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* doc/install.texi (Specific, amd64-*-solaris2*, i?86-*-solaris2*)
+	(sparc-sun-solaris2*, sparc64-*-solaris2*, sparcv9-*-solaris2*)
+	(x86_64-*-solaris2*): Remove.  Fold into ...
+	(Specific, *-*-solaris2*): ... this.
+	Rewrite.
+
 2026-04-04  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	* doc/invoke.texi (Picolibc Options): Copy-edit for markup, use
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 5916d328fbf0..202774df35ab 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260406
+20260407
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e4c17f3b20b4..44dfe6d7e025 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,69 @@
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR libstdc++/124268
+	* module.cc (instantiating_tu_local_entity): Use pedwarn instead
+	of warning.
+	(depset::hash::add_binding_entity): Don't skip exported
+	using-decls as TU-local entities.
+	(depset::hash::finalize_dependencies): Don't attempt to complain
+	again about using-decls referencing TU-local entities.
+	* name-lookup.cc (check_can_export_using_decl): Demote the error
+	to a warning for using-decls of GMF vars or functions.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124735
+	* module.cc (trees_in::is_matching_decl): Handle importing
+	undeduced auto when existing is already deduced.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124781
+	* module.cc (set_originating_module): Add a function comment,
+	only set attachment/exporting for entities with non-NULL
+	DECL_CONTEXT.
+	(check_module_decl_linkage): Use decl_anon_ns_mem_p instead of
+	decl_internal_context_p.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124785
+	* module.cc (trees_in::is_matching_decl): Narrow condition for
+	when noexcept propagation occurs; assert that we don't propagate
+	noexcept-specs for TEMPLATE_DECLs.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/118630
+	* module.cc (depset::hash::add_dependency): Correct entry point
+	corection for recursive clusters.
+
+2026-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124488
+	* parser.cc (cp_parser_expansion_statement): Set
+	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P, DECL_DEPENDENT_INIT_P and
+	if maybe constant non-reference TREE_CONSTANT on range_decl.
+	* pt.cc (tsubst_stmt) <case TEMPLATE_FOR_STMT>: Set
+	DECL_DEPENDENT_INIT_P on decl.
+
+2026-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* decl.cc (grokfndecl): For -freflection mark annotations of
+	PARM_DECLs in a function definition.
+	* reflect.cc (eval_annotations_of): Allow annotations_of on
+	function parameters.  For r which is a PARM_DECL without REFLECT_PARM,
+	filter out annotations not marked by grokfndecl.
+	(reflection_mangle_prefix): Preserve the grokfndecl marking of
+	annotations during mangling.
+
+2026-04-06  Eczbek  <eczbek.void@gmail.com>
+
+	PR c++/123087
+	* typeck.cc (cp_build_unary_op): For TRUTH_NOT_EXPR, replace
+	call to perform_implicit_conversion with call to
+	contextual_conv_bool.
+
 2026-04-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/124689
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2bc8e7a9e8e6..26c23d8129ac 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-06  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/79524
+	PR fortran/79524
+	* decl.cc (discard_pending_charlens): New helper.
+	(add_init_expr_to_sym): Drop statement-local charlens when
+	rejecting variable-length parameter arrays.
+	(variable_decl, do_parm, enumerator_decl): Save the current
+	namespace charlen list before parsing declarations with
+	initializers.
+	(match_procedure_decl): Adjust call to add_init_expr_to_sym.
+
 2026-04-05  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/109788
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 94ee4c2dcece..a0e1eea42d9e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,60 @@
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR libstdc++/124268
+	* g++.dg/modules/using-34_a.C: New test.
+	* g++.dg/modules/using-34_b.C: New test.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124735
+	* g++.dg/modules/auto-8_a.H: New test.
+	* g++.dg/modules/auto-8_b.C: New test.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124781
+	* g++.dg/modules/export-7.C: New test.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124785
+	* g++.dg/modules/noexcept-5.h: New test.
+	* g++.dg/modules/noexcept-5_a.C: New test.
+	* g++.dg/modules/noexcept-5_b.C: New test.
+	* g++.dg/modules/noexcept-5_c.C: New test.
+
+2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/118630
+	* g++.dg/modules/late-ret-5.h: New test.
+	* g++.dg/modules/late-ret-5_a.H: New test.
+	* g++.dg/modules/late-ret-5_b.C: New test.
+
+2026-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124488
+	* g++.dg/cpp26/expansion-stmt33.C: New test.
+
+2026-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/annotations15.C: New test.
+
+2026-04-06  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/79524
+	PR fortran/79524
+	* gfortran.dg/pr79524.f90: New test.
+
+2026-04-06  Eczbek  <eczbek.void@gmail.com>
+
+	PR c++/123087
+	* g++.dg/DRs/dr1423.C: Additonal test.
+
+2026-04-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* lib/target-supports-dg.exp (dg-do-if): Don't strip line number
+	from args.
+
 2026-04-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/124689
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d3a407872a27..ec5c15fc2eba 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,32 @@
+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

From tkaminsk@gcc.gnu.org  Tue Apr  7 17:25:47 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  7 Apr 2026 17:25:47 +0000 (GMT)
Subject: [gcc r16-8510] libstdc++: Export explicit instantiations for C++20
 members of std::string
Message-ID: <20260407172547.E23AA4BA543C@sourceware.org>

https://gcc.gnu.org/g:395e5cef29d935052e5ebcab77f068f3596aa1a6

commit r16-8510-g395e5cef29d935052e5ebcab77f068f3596aa1a6
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 1 14:32:21 2026 +0200

    libstdc++: Export explicit instantiations for C++20 members of std::string
    
    The C++20 standard added new starts_with and ends_with members to
    std::basic_string, which were not previously instantiated in the library.
    This meant that the extern template declarations had to be disabled for
    C++20 mode. With this patch the new members are instantiated in the
    library and so the explicit instantiation declarations can be used for
    C++20.
    
    Furthermore, basic_string default constructor is now constrained with
    is_default_constructible_v<_Alloc> constrains, that is included in
    mangled name, so we also need to instantiate and export it.
    
    The new members added by C++23 are still not exported, and so the
    explicit instantiation declarations are still disabled for C++23.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver        | 31 +++++++++++++---
 libstdc++-v3/include/bits/basic_string.h   |  2 +-
 libstdc++-v3/include/bits/basic_string.tcc | 17 +++++----
 libstdc++-v3/include/bits/cow_string.h     |  4 +-
 libstdc++-v3/src/c++20/Makefile.am         | 16 +++++++-
 libstdc++-v3/src/c++20/Makefile.in         | 15 ++++++--
 libstdc++-v3/src/c++20/cow-string-inst.cc  | 34 +++++++++++++++++
 libstdc++-v3/src/c++20/string-inst.cc      | 59 ++++++++++++++++++++++++++++++
 8 files changed, 158 insertions(+), 20 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index fb968e122d8a..2ff2aa02383b 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -268,9 +268,11 @@ GLIBCXX_3.4 {
     _ZNSspLE[PRc]*;
     _ZNKSs[0-3][a-b]*;
     _ZNKSs[5-9][a-b]*;
-    _ZNKSs[0-9][d-e]*;
+    _ZNKSs[0-8][d-e]*;
     _ZNKSs[0-9][g-z]*;
-    _ZNKSs[0-9][0-9][a-z]*;
+    _ZNKSs11_[MS]_*;
+    _ZNKSs1[2-8][a-z]*;
+    _ZNKSs[2-9][0-9][a-z]*;
     _ZNKSs4find*;
     _ZNKSs[abd-z]*;
     _ZNKSs4_Rep12_M_is_leakedEv;
@@ -339,9 +341,11 @@ GLIBCXX_3.4 {
     _ZNSbIwSt11char_traitsIwESaIwEEpLE[PRw]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[0-3][a-b]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[5-9][a-b]*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][d-e]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[0-8][d-e]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][g-z]*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE11_[MS]_*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE1[2-8][a-z]*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE[2-9][0-9][a-z]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[abd-z]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE4find*;
     _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv;
@@ -1811,7 +1815,9 @@ GLIBCXX_3.4.21 {
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]Ev;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]I[PN]*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE[Daip]*;
-    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE[1-9]*;
+    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE11_[MS]_*;
+    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[2-9]*;
+    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE[2-8]*;
     _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EEixE[jmy];
 
     # operator+ for ABI-tagged std::basic_string
@@ -2587,6 +2593,21 @@ GLIBCXX_3.4.35 {
     _ZNSt12__cow_stringaSEOS_;
     _ZNKSt12__cow_string5c_strEv;
 
+    # basic_string::starts_with
+    _ZNKSs11starts_with*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE11starts_with*;
+    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE11starts_with*;
+
+    # basic_string::ends_with
+    _ZNKSs9ends_with*;
+    _ZNKSbIwSt11char_traitsIwESaIwEE9ends_with*;
+    _ZNKSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE9ends_with*;
+
+    # basic_string::basic_string() noexcept is_default_constructible<Allocator>;
+    _ZNSsC[12]EvQ26is_default_constructible_vIT1_E;
+    _ZNSbIwSt11char_traitsIwESaIwEEC[12]EvQ26is_default_constructible_vIT1_E;
+    _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EEC[1-2]EvQ26is_default_constructible_vIT1_E;
+
 #if defined (_WIN32) && !defined (__CYGWIN__)
     _ZSt19__get_once_callablev;
     _ZSt15__get_once_callv;
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 202a911f9ef3..af4e5d9486fb 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -1331,7 +1331,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       /**
        *  Equivalent to shrink_to_fit().
        */
-#if __cplusplus > 201703L
+#if __cplusplus >= 202002L
       [[deprecated("use shrink_to_fit() instead")]]
 #endif
       _GLIBCXX20_CONSTEXPR
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index a223edf67acc..b00dd550237b 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -1031,12 +1031,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // Inhibit implicit instantiations for required instantiations,
   // which are defined via explicit instantiations elsewhere.
 #if _GLIBCXX_EXTERN_TEMPLATE
-  // The explicit instantiation definitions in src/c++11/string-inst.cc and
-  // src/c++17/string-inst.cc only instantiate the members required for C++17
-  // and earlier standards (so not C++20's starts_with and ends_with).
-  // Suppress the explicit instantiation declarations for C++20, so C++20
+  // The explicit instantiation definitions in src/c++11/string-inst.cc,
+  // src/c++17/string-inst.cc and src/c++20/string-inst.cc only instantiate
+  // the members required for C++20 and earlier standards (so not C++23's
+  // contains).
+  // Suppress the explicit instantiation declarations for C++23, so C++23
   // code will implicitly instantiate std::string and std::wstring as needed.
-# if __cplusplus <= 201703L && _GLIBCXX_EXTERN_TEMPLATE > 0
+# if __cplusplus <= 202002L && _GLIBCXX_EXTERN_TEMPLATE > 0
   extern template class basic_string<char>;
 # elif ! _GLIBCXX_USE_CXX11_ABI
   // Still need to prevent implicit instantiation of the COW empty rep,
@@ -1044,7 +1045,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   extern template basic_string<char>::size_type
     basic_string<char>::_Rep::_S_empty_rep_storage[];
 # elif _GLIBCXX_EXTERN_TEMPLATE > 0
-  // Export _M_replace_cold even for C++20.
+  // Export _M_replace_cold even for C++23.
   extern template void
     basic_string<char>::_M_replace_cold(char *, size_type, const char*,
 					const size_type, const size_type);
@@ -1064,13 +1065,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     getline(basic_istream<char>&, string&);
 
 #ifdef _GLIBCXX_USE_WCHAR_T
-# if __cplusplus <= 201703L && _GLIBCXX_EXTERN_TEMPLATE > 0
+# if __cplusplus <= 202002L && _GLIBCXX_EXTERN_TEMPLATE > 0
   extern template class basic_string<wchar_t>;
 # elif ! _GLIBCXX_USE_CXX11_ABI
   extern template basic_string<wchar_t>::size_type
     basic_string<wchar_t>::_Rep::_S_empty_rep_storage[];
 # elif _GLIBCXX_EXTERN_TEMPLATE > 0
-  // Export _M_replace_cold even for C++20.
+  // Export _M_replace_cold even for C++23.
   extern template void
     basic_string<wchar_t>::_M_replace_cold(wchar_t*, size_type, const wchar_t*,
 					   const size_type, const size_type);
diff --git a/libstdc++-v3/include/bits/cow_string.h b/libstdc++-v3/include/bits/cow_string.h
index df71185e556d..7c945f6b9983 100644
--- a/libstdc++-v3/include/bits/cow_string.h
+++ b/libstdc++-v3/include/bits/cow_string.h
@@ -1080,7 +1080,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       reserve(size_type __res_arg);
 
       /// Equivalent to shrink_to_fit().
-#if __cplusplus > 201703L
+#if __cplusplus >= 202002L
       [[deprecated("use shrink_to_fit() instead")]]
 #endif
       void
@@ -3194,7 +3194,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	return __r;
       }
 
-#if __cplusplus > 201703L
+#if __cplusplus >= 202002L
       bool
       starts_with(basic_string_view<_CharT, _Traits> __x) const noexcept
       { return __sv_type(this->data(), this->size()).starts_with(__x); }
diff --git a/libstdc++-v3/src/c++20/Makefile.am b/libstdc++-v3/src/c++20/Makefile.am
index 0061678dc0f8..af5d2fa4057b 100644
--- a/libstdc++-v3/src/c++20/Makefile.am
+++ b/libstdc++-v3/src/c++20/Makefile.am
@@ -27,10 +27,19 @@ noinst_LTLIBRARIES = libc++20convenience.la
 
 headers =
 
+if ENABLE_DUAL_ABI
+extra_string_inst_sources = cow-string-inst.cc
+else
+extra_string_inst_sources =
+endif
+
+
 if ENABLE_EXTERN_TEMPLATE
 # XTEMPLATE_FLAGS = -fno-implicit-templates
 inst_sources = \
-	sstream-inst.cc
+	sstream-inst.cc \
+	string-inst.cc \
+	$(extra_string_inst_sources)
 else
 # XTEMPLATE_FLAGS =
 inst_sources =
@@ -40,6 +49,11 @@ sources = tzdb.cc format.cc atomic.cc clock.cc syncbuf.cc
 
 vpath % $(top_srcdir)/src/c++20
 
+if ENABLE_DUAL_ABI
+# These files should be rebuilt if the .cc prerequisite changes.
+cow-string-inst.lo cow-string-inst.o: string-inst.cc
+endif
+
 if USE_STATIC_TZDATA
 tzdata.zi.h: $(top_srcdir)/src/c++20/tzdata.zi
 	echo 'static const char tzdata_chars[] = R"__libstdcxx__(' > $@.tmp
diff --git a/libstdc++-v3/src/c++20/Makefile.in b/libstdc++-v3/src/c++20/Makefile.in
index f481ad08edbe..a2386ec7ee0c 100644
--- a/libstdc++-v3/src/c++20/Makefile.in
+++ b/libstdc++-v3/src/c++20/Makefile.in
@@ -124,9 +124,11 @@ CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libc__20convenience_la_LIBADD =
 am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo syncbuf.lo
-@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
+@ENABLE_DUAL_ABI_TRUE@am__objects_2 = cow-string-inst.lo
+@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_3 = sstream-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.lo $(am__objects_2)
 @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
-@GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
+@GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_3)
 libc__20convenience_la_OBJECTS = $(am_libc__20convenience_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -428,12 +430,16 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
 # Convenience library for C++20 runtime.
 noinst_LTLIBRARIES = libc++20convenience.la
 headers = 
+@ENABLE_DUAL_ABI_FALSE@extra_string_inst_sources = 
+@ENABLE_DUAL_ABI_TRUE@extra_string_inst_sources = cow-string-inst.cc
 # XTEMPLATE_FLAGS =
 @ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = 
 
 # XTEMPLATE_FLAGS = -fno-implicit-templates
 @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
-@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc
+@ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	$(extra_string_inst_sources)
 
 sources = tzdb.cc format.cc atomic.cc clock.cc syncbuf.cc
 @GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES = 
@@ -747,6 +753,9 @@ uninstall-am:
 
 vpath % $(top_srcdir)/src/c++20
 
+# These files should be rebuilt if the .cc prerequisite changes.
+@ENABLE_DUAL_ABI_TRUE@cow-string-inst.lo cow-string-inst.o: string-inst.cc
+
 @USE_STATIC_TZDATA_TRUE@tzdata.zi.h: $(top_srcdir)/src/c++20/tzdata.zi
 @USE_STATIC_TZDATA_TRUE@	echo 'static const char tzdata_chars[] = R"__libstdcxx__(' > $@.tmp
 @USE_STATIC_TZDATA_TRUE@	cat $^ >> $@.tmp
diff --git a/libstdc++-v3/src/c++20/cow-string-inst.cc b/libstdc++-v3/src/c++20/cow-string-inst.cc
new file mode 100644
index 000000000000..f3f411f5d0af
--- /dev/null
+++ b/libstdc++-v3/src/c++20/cow-string-inst.cc
@@ -0,0 +1,34 @@
+// Reference-counted COW string instantiations for C++20 -*- C++ -*-
+
+// Copyright (C) 2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:2020 21  Strings library
+//
+
+#define _GLIBCXX_USE_CXX11_ABI 0
+#include "string-inst.cc"
+
+#if ! _GLIBCXX_USE_DUAL_ABI
+# error This file should not be compiled for this configuration.
+#endif
diff --git a/libstdc++-v3/src/c++20/string-inst.cc b/libstdc++-v3/src/c++20/string-inst.cc
new file mode 100644
index 000000000000..2bdd77c78a4f
--- /dev/null
+++ b/libstdc++-v3/src/c++20/string-inst.cc
@@ -0,0 +1,59 @@
+// string instantiations for C++20 -*- C++ -*-
+
+// Copyright (C) 2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:2020 21  Strings library
+//
+
+#ifndef _GLIBCXX_USE_CXX11_ABI
+// Instantiations in this file use the new SSO std::string ABI unless included
+// by another file which defines _GLIBCXX_USE_CXX11_ABI=0.
+# define _GLIBCXX_USE_CXX11_ABI 1
+#endif
+
+#include <string>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+template basic_string<char>::basic_string() noexcept;
+template bool basic_string<char>::starts_with(string_view) const noexcept;
+template bool basic_string<char>::starts_with(char) const noexcept;
+template bool basic_string<char>::starts_with(const char*) const noexcept;
+template bool basic_string<char>::ends_with(string_view) const noexcept;
+template bool basic_string<char>::ends_with(char) const noexcept;
+template bool basic_string<char>::ends_with(const char*) const noexcept;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+template basic_string<wchar_t>::basic_string() noexcept;
+template bool basic_string<wchar_t>::starts_with(wstring_view) const noexcept;
+template bool basic_string<wchar_t>::starts_with(wchar_t) const noexcept;
+template bool basic_string<wchar_t>::starts_with(const wchar_t*) const noexcept;
+template bool basic_string<wchar_t>::ends_with(wstring_view) const noexcept;
+template bool basic_string<wchar_t>::ends_with(wchar_t) const noexcept;
+template bool basic_string<wchar_t>::ends_with(const wchar_t*) const noexcept;
+#endif
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std

From ppalka@gcc.gnu.org  Tue Apr  7 22:06:13 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Tue,  7 Apr 2026 22:06:13 +0000 (GMT)
Subject: [gcc r15-11051] libstdc++/ranges: Uglify 'sizes' function parameter
Message-ID: <20260407220613.C948B4BA540B@sourceware.org>

https://gcc.gnu.org/g:b488a58895409bf949eb2f9fd6c090592b2e6c4a

commit r15-11051-gb488a58895409bf949eb2f9fd6c090592b2e6c4a
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu Apr 2 16:51:09 2026 -0400

    libstdc++/ranges: Uglify 'sizes' function parameter
    
    libstdc++-v3/ChangeLog:
    
            * include/std/ranges (zip_view::size): Uglify 'sizes'
            parameter.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit d130e9bf3dc4b1f670340f8ae4a02419481fe982)

Diff:
---
 libstdc++-v3/include/std/ranges | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index bc9e4c6ca623..5954aa1b54b5 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -4691,18 +4691,18 @@ namespace views::__adaptor
     constexpr auto
     size() requires (sized_range<_Vs> && ...)
     {
-      return std::apply([](auto... sizes) {
-	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(sizes)...>>;
-	return ranges::min({_CT(sizes)...});
+      return std::apply([](auto... __sizes) {
+	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(__sizes)...>>;
+	return ranges::min({_CT(__sizes)...});
       }, __detail::__tuple_transform(ranges::size, _M_views));
     }
 
     constexpr auto
     size() const requires (sized_range<const _Vs> && ...)
     {
-      return std::apply([](auto... sizes) {
-	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(sizes)...>>;
-	return ranges::min({_CT(sizes)...});
+      return std::apply([](auto... __sizes) {
+	using _CT = __detail::__make_unsigned_like_t<common_type_t<decltype(__sizes)...>>;
+	return ranges::min({_CT(__sizes)...});
       }, __detail::__tuple_transform(ranges::size, _M_views));
     }
   };

From gccadmin@gcc.gnu.org  Wed Apr  8 00:16:58 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  8 Apr 2026 00:16:58 +0000 (GMT)
Subject: [gcc r16-8518] Daily bump.
Message-ID: <20260408001658.611464BA2E0D@sourceware.org>

https://gcc.gnu.org/g:2b49581351509c4dc93f74ea86a48f3b50caf128

commit r16-8518-g2b49581351509c4dc93f74ea86a48f3b50caf128
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 8 00:16:31 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  78 ++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |   5 ++
 gcc/c-family/ChangeLog  |   5 ++
 gcc/cp/ChangeLog        |  51 ++++++++++++++++++++
 gcc/d/ChangeLog         |   5 ++
 gcc/fortran/ChangeLog   |  54 +++++++++++++++++++++
 gcc/m2/ChangeLog        |   5 ++
 gcc/po/ChangeLog        |   4 ++
 gcc/testsuite/ChangeLog | 125 ++++++++++++++++++++++++++++++++++++++++++++++++
 libcpp/po/ChangeLog     |   4 ++
 libgfortran/ChangeLog   |   7 +++
 libstdc++-v3/ChangeLog  |  24 ++++++++++
 13 files changed, 368 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 64a1f10c66fe..bc84fed80f7d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,81 @@
+2026-04-07  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124759
+	PR target/124789
+	* config/i386/i386.cc (ix86_need_alignment_p_2): New function.
+	Exclude memory with SYMBOLIC_CONST.
+	(ix86_need_alignment_p_1): Call ix86_need_alignment_p_2.
+	(ix86_find_max_used_stack_alignment): Restore
+	hard_stack_slot_access handling.
+
+2026-04-07  H.J. Lu  <hjl.tools@gmail.com>
+
+	* config/i386/i386.cc (ix86_need_alignment_p_1): Replace
+	GET_MODE_ALIGNMENT with MEM_ALIGN.
+
+2026-04-07  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124802
+	* tree-vect-slp-patterns.cc (vect_match_expression_p): Fail
+	for SLP_TREE_PERMUTE_P.
+
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR sanitizer/124170
+	* doc/invoke.texi (Option Summary) <Linker Options>: Add
+	-static-libhwasan and fix alphabetization of similar options.
+	(Link Options): Likewise.
+	* common.opt.urls: Regenerated.
+
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* regenerate-opt-urls.py (canonicalize_option_name):  Remove one
+	of the dashes from option names starting with two dashes.
+	(test_parse_option_index): Add a self-test for this.
+	* common.opt.urls: Regenerated.
+	* config/picolibc.opt.urls: Regenerated.
+
+2026-04-07  Peter Damianov  <peter0x44@disroot.org>
+
+	* config/mingw/t-cygming: Remove obsolete STMP_FIXINC
+	override.
+
+2026-04-07  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124743
+	* tree-vect-slp.cc (vect_schedule_slp_node): Schedule
+	loop invariant operations in the loop preheader.
+
+2026-04-07  Avinash Jayakar  <avinashd@linux.ibm.com>
+	    Surya Kumari Jangala  <jskumari@linux.ibm.com>
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Add
+	logic to handle __builtin_ppc_atomic_cas_local.
+	* config/rs6000/rs6000-builtins.def: New builtins for
+	__builtin_ppc_atomic_cas_local with types.
+	* config/rs6000/rs6000-c.cc (altivec_build_resolved_builtin):
+	Handle builtins with up to 6 arguments.
+	* config/rs6000/rs6000-overload.def: Overload builtin for
+	signed/unsiged char, short, int, long, __int128.
+	* config/rs6000/rs6000-protos.h (rs6000_expand_atomic_compare_and_swap):
+	Add additional parameter 'local' to the prototype.
+	* config/rs6000/rs6000.cc (emit_load_locked): Add new parameter. Pass
+	new parameter to generate load-locked instruction.
+	(rs6000_expand_atomic_compare_and_swap): Add new parameter. Call
+	emit_load_locked() with additional parameter value of EH bit.
+	(rs6000_expand_atomic_exchange): Pass EH value 0 to emit_load_locked().
+	(rs6000_expand_atomic_op): Likewise.
+	* config/rs6000/sync.md (load_locked<mode>): Add new operand in RTL
+	template. Specify EH bit in the larx instruction.
+	(load_locked<QHI:mode>_si): Likewise.
+	(load_lockedpti): Likewise.
+	(load_lockedti): Add new operand in RTL template. Pass EH bit to
+	gen_load_lockedpti().
+	(atomic_compare_and_swap<mode>): Pass new parameter 'false' to
+	rs6000_expand_atomic_compare_and_swap.
+	(atomic_compare_and_swap_local<mode>): New define_expand.
+
 2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR libstdc++/124268
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 202774df35ab..875bc22c122b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260407
+20260408
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d9fd1615aaa4..159e50b7205b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* gcc-interface/lang.opt.urls: Regenerated.
+
 2026-04-05  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* exp_ch6.adb (Expand_Simple_Function_Return): Use a constant return
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 36767ba0a64d..7494e0588b06 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* c.opt.urls: Regenerated.
+
 2026-03-19  Jason Merrill  <jason@redhat.com>
 
 	* c-opts.cc (c_common_post_options): Enable -fcontracts
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 44dfe6d7e025..aa20b6ca6711 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,54 @@
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123700
+	* pt.cc (dependent_opaque_alias_p): Return true for a
+	template-id typedef with a lambda targ.
+
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* pt.cc (has_value_dependent_address): Correct context
+	dependence check for a static local variable.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* cp-tree.h: Implement C++26 CWG3140 - Allowing expansion over
+	non-constant std::array.
+	(cp_build_range_for_decls): Change last argument from bool to tree.
+	(build_range_temp): Likewise and default it to NULL_TREE rather than
+	false.
+	* parser.cc (build_range_temp): Remove expansion_stmt_p
+	argument, add expansion_stmt_decl.  Don't call cp_build_qualified_type
+	if expansion_stmt_decl was not declared constexpr.
+	(cp_build_range_for_decls): Remove expansion_stmt_p argument, add
+	expansion_stmt_decl.  Pass expansion_stmt_decl to build_range_temp.
+	Don't set TREE_STATIC, TREE_PUBLIC, DECL_COMMON, DECL_INTERFACE_KNOWN,
+	DECL_DECLARED_CONSTEXPR_P and TREE_READONLY on range_temp if
+	expansion_stmt_decl was not declared constexpr.  Don't call
+	cp_build_qualified_type on begin type nor set TREE_STATIC etc. on begin
+	if expansion_stmt_decl was not declared constexpr.  If
+	expansion_stmt_decl is non-NULL, don't build end at all, instead pass
+	begin_expr and end_expr in end_p[0] and end_p[1] to the caller.
+	(cp_convert_range_for): Adjust cp_build_range_for_decls caller.
+	* pt.cc (finish_expansion_stmt): Likewise.  Use begin_expr and end_expr
+	instead of begin and end variables from cp_build_range_for_decls,
+	make them non-constant and avoid spurious -Wunused-result/nodiscard
+	diagnostics.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle even
+	the case of partially substituted pack.
+	(write_expression): Similarly for PACK_INDEX_EXPR.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124790
+	* reflect.cc (get_reflection): When reflecting VAR_DECL or PARM_DECL,
+	call mark_exp_read on it.
+
 2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR libstdc++/124268
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 69c961be0a6a..a73a609d83e5 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* lang.opt.urls: Regenerated.
+
 2026-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* dmd/MERGE: Merge upstream dmd 55e64690bc.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 26c23d8129ac..85d1017e2d45 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,57 @@
+2026-04-07  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/102430
+	* openmp.cc (resolve_omp_clauses): Reject array/allocatable LINEAR on
+	worksharing-loop constructs.
+
+2026-04-07  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/103367
+	* trans-array.cc (gfc_conv_array_initializer): Return empty
+	constructor for unexpected expression types after parameter
+	substitution.
+
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* lang.opt.urls: Regenerated.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/85352
+	* resolve.cc (specification_expr_symbol): New variable.
+	(entry_dummy_seen_p): Return whether a dummy appears in an already
+	seen ENTRY.
+	(gfc_resolve_formal_arglist): Remember the dummy whose specification
+	expressions are being resolved.
+	(resolve_variable): Accept unresolved sibling ENTRY dummy arguments
+	while resolving the current dummy's specification expressions.
+	(resolve_fl_variable): Preserve specification_expr_symbol.
+	(resolve_symbol_array_spec): Likewise.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/107425
+	* trans-decl.cc (gfc_finish_var_decl): Check for
+	omp_affinity_iterators namespace before FL_LABEL BLOCK check.
+	Only route actual iterator variables through add_decl_as_local;
+	add other variables to the enclosing function.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124780
+	* resolve.cc (resolve_ordinary_assign): Do not add the class
+	data component to an operator expression.
+	* trans-expr.cc (gfc_trans_scalar_assign): If class to class
+	assignment uses ordinary scalar assignment and neither lhs or
+	rhs are class types, do a deep copy for allocatable components.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124598
+	* trans-expr.cc (gfc_conv_structure): Do not add parameterized
+	components to a structure constructor.
+
 2026-04-06  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/79524
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index b37ae0505983..3cd96e391767 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	PR other/124784
+	* lang.opt.urls: Regenerated.
+
 2026-01-25  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	* lang.opt.urls: Regenerated.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 84bc9a0b2908..dd28bf359652 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-07  Joseph Myers  <josmyers@redhat.com>
+
+	* sv.po, zh_CN.po: Update.
+
 2026-03-31  Joseph Myers  <josmyers@redhat.com>
 
 	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a0e1eea42d9e..9e9567b90938 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,128 @@
+2026-04-07  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/102430
+	* gfortran.dg/gomp/pr102430.f90: New test.
+
+2026-04-07  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124759
+	PR target/124789
+	* gcc.target/i386/pr124759.c: New test.
+
+2026-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/124543
+	* gfortran.dg/pr124543.f90: Add the dg-options "-O0" to
+	reduce testing time. Adjust test for the change above.
+
+2026-04-07  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124802
+	* gcc.dg/vect/vect-pr124802.c: New testcase.
+
+2026-04-07  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/103367
+	* gfortran.dg/pr103367.f90: New test.
+
+2026-04-07  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/104827
+	PR fortran/104827
+	* gfortran.dg/gomp/pr104827.f90: New test.
+
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123700
+	* g++.dg/cpp2a/lambda-targ24.C: New test.
+	* g++.dg/cpp2a/lambda-targ24a.C: New test.
+
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* g++.dg/cpp1z/nontype9.C: New test.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/cpp26/expansion-stmt11.C: Expect some extra diagnostics for
+	C++11.
+	* g++.dg/cpp26/expansion-stmt13.C: Likewise.  Make it dg-do compile
+	test for c++11_only and dg-do run only for c++14 and above.
+	* g++.dg/cpp26/expansion-stmt16.C: Adjust expected diagnostics.
+	* g++.dg/cpp26/expansion-stmt19.C: Expect some extra diagnostics for
+	C++11.  Make it dg-do compile test for c++11_only and dg-do run only
+	for c++14 and above.
+	* g++.dg/cpp26/expansion-stmt25.C (foo): Test both constexpr
+	range-for-decl and non-constexpr, adjust expected diagnostics.
+	* g++.dg/cpp26/expansion-stmt30.C: Adjust expected diagnostics.
+	* g++.dg/cpp26/expansion-stmt35.C: New test.
+	* g++.dg/cpp26/expansion-stmt36.C: New test.
+	* g++.dg/cpp26/expansion-stmt37.C: New test.
+	* g++.dg/cpp26/expansion-stmt38.C: New test.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* g++.dg/cpp26/pack-indexing9.C: Remove dg-sorry/dg-bogus, add
+	tests for mangled names and further test coverage.
+
+2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124790
+	* g++.dg/reflect/pr124790.C: New test.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/85352
+	* gfortran.dg/pr85352.f90: New test.
+
+2026-04-07  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* lib/target-supports.exp
+	(check_effective_target_recent_python3): Cache result of check.
+	(check_effective_target_python3_module): Likewise.
+	(check_effective_target_pytest3): Likewise.
+
+2026-04-07  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124704
+	* lib/target-supports.exp
+	(check_effective_target_vect_cmdline_neeed): Handle arm_mve
+	similarly to arm_neon.
+
+2026-04-07  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124743
+	* gcc.dg/vect/vect-pr124743.c: New testcase.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/107425
+	* gfortran.dg/gomp/pr107425.f90: New test.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124780
+	* gfortran.dg/pr124780.f90: New test.
+
+2026-04-07  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* lib/target-supports.exp (check_fork_runtime): New function to
+	check that target has a working fork() implementation.
+	* lib/target-supports-dg.exp (dg-require-fork): When test is
+	"run", then call check_fork_runtime, else check_fork_available.
+
+2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/124598
+	* gfortran.dg/pdt_91.f03: New test.
+
+2026-04-07  Avinash Jayakar  <avinashd@linux.ibm.com>
+	    Surya Kumari Jangala  <jskumari@linux.ibm.com>
+
+	* gcc.target/powerpc/acmp-tst.c: New test.
+
 2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR libstdc++/124268
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 46f26b8e63b5..38e10b6d70dd 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-07  Joseph Myers  <josmyers@redhat.com>
+
+	* sr.po: Update.
+
 2026-02-27  Joseph Myers  <josmyers@redhat.com>
 
 	* be.po, ca.po, da.po, de.po, el.po, eo.po, es.po, fi.po, fr.po,
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 2174474fd120..6103690279f2 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/124543
+	* io/inquire.c (inquire_via_unit): Change the returned
+	encoding value to 'DEFAULT' when not specified in the OPEN
+	statement.
+
 2026-04-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/124543
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ec5c15fc2eba..dcc265563302 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,27 @@
+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

From gccadmin@gcc.gnu.org  Wed Apr  8 00:20:04 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  8 Apr 2026 00:20:04 +0000 (GMT)
Subject: [gcc r15-11054] Daily bump.
Message-ID: <20260408002004.BD9824BA2E06@sourceware.org>

https://gcc.gnu.org/g:7a48f326ce80d15f18412d311dc1a1ba44cab7e6

commit r15-11054-g7a48f326ce80d15f18412d311dc1a1ba44cab7e6
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 8 00:19:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 14 ++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 56 ++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  8 +++++++
 5 files changed, 138 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c94d9c215180..339184218fe8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	Backported from master:
+	2026-04-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	PR target/124613
+	* config/riscv/riscv-vector-builtins.cc (rvv_switcher::rvv_switcher):
+	Add riscv_registering_builtins.
+	(rvv_switcher::~rvv_switcher): Set riscv_registering_builtins to
+	false.
+	* config/riscv/riscv.cc (riscv_vector_mode_supported_p): Use
+	riscv_registering_builtins.
+	* config/riscv/riscv.h: Declare.
+
 2026-04-01  Wu Haotian  <rigoligo03@gmail.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 202774df35ab..875bc22c122b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260407
+20260408
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7722262385e6..f7e66738fd0d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,62 @@
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123700
+	* pt.cc (dependent_opaque_alias_p): Return true for a
+	template-id typedef with a lambda targ.
+
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* pt.cc (has_value_dependent_address): Correct context
+	dependence check for a static local variable.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/118630
+	* module.cc (depset::hash::add_dependency): Correct entry point
+	corection for recursive clusters.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124735
+	* module.cc (trees_in::is_matching_decl): Handle importing
+	undeduced auto when existing is already deduced.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124781
+	* module.cc (set_originating_module): Add a function comment,
+	only set attachment/exporting for entities with non-NULL
+	DECL_CONTEXT.
+	(check_module_decl_linkage): Use decl_anon_ns_mem_p instead of
+	decl_internal_context_p.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124785
+	* module.cc (trees_in::is_matching_decl): Narrow condition for
+	when noexcept propagation occurs; assert that we don't propagate
+	noexcept-specs for TEMPLATE_DECLs.
+
 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8a00d94b2796..fe3a5870ed9b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,59 @@
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123700
+	* g++.dg/cpp2a/lambda-targ24.C: New test.
+	* g++.dg/cpp2a/lambda-targ24a.C: New test.
+
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* g++.dg/cpp1z/nontype9.C: New test.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/118630
+	* g++.dg/modules/late-ret-5.h: New test.
+	* g++.dg/modules/late-ret-5_a.H: New test.
+	* g++.dg/modules/late-ret-5_b.C: New test.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124735
+	* g++.dg/modules/auto-8_a.H: New test.
+	* g++.dg/modules/auto-8_b.C: New test.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124781
+	* g++.dg/modules/export-7.C: New test.
+
+2026-04-07  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2026-04-06  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/124785
+	* g++.dg/modules/noexcept-5.h: New test.
+	* g++.dg/modules/noexcept-5_a.C: New test.
+	* g++.dg/modules/noexcept-5_b.C: New test.
+	* g++.dg/modules/noexcept-5_c.C: New test.
+
 2026-04-06  Harald Anlauf  <anlauf@gmx.de>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 93200b16024f..4910ec9119e8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-02  Patrick Palka  <ppalka@redhat.com>
+
+	* include/std/ranges (zip_view::size): Uglify 'sizes'
+	parameter.
+
 2026-03-31  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From jakub@gcc.gnu.org  Wed Apr  8 05:51:44 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Wed,  8 Apr 2026 05:51:44 +0000 (GMT)
Subject: [gcc r16-8521] c++, libstdc++: Remove is_consteval_only* traits
Message-ID: <20260408055144.1D9814BA5436@sourceware.org>

https://gcc.gnu.org/g:219f801ef0001ce959ba231b975752f95a626e68

commit r16-8521-g219f801ef0001ce959ba231b975752f95a626e68
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 8 07:50:45 2026 +0200

    c++, libstdc++: Remove is_consteval_only* traits
    
    The following patch implements LWG4555.
    
    2026-04-08  Jakub Jelinek  <jakub@redhat.com>
    
    gcc/cp/
            * constraint.cc (diagnose_trait_expr): Remove CPTK_IS_CONSTEVAL_ONLY
            handling.
            * metafns.gperf (enum metafn_code): Remove
            METAFN_IS_CONSTEVAL_ONLY_TYPE.
            (is_consteval_only_type): Remove.
            * semantics.cc (trait_expr_value, finish_trait_expr): Remove
            CPTK_IS_CONSTEVAL_ONLY handling.
            * cp-trait.def (__builtin_is_consteval_only): Remove.
            * metafns.h: Regenerate.
            * reflect.cc (eval_is_consteval_only_type): Remove.
            (process_metafunction): Don't handle METAFN_IS_CONSTEVAL_ONLY_TYPE.
    gcc/testsuite/
            * g++.dg/reflect/is_consteval_only1.C: Remove.
            * g++.dg/reflect/eh1.C: Remove is_consteval_only_type tests.
            * g++.dg/reflect/eh2.C: Likewise.
            * g++.dg/reflect/type_trait5.C: Likewise.
    libstdc++-v3/
            * 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.
    
    Reviewed-by: Jason Merrill <jason@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/cp/constraint.cc                               |   3 -
 gcc/cp/cp-trait.def                                |   1 -
 gcc/cp/metafns.gperf                               |   2 -
 gcc/cp/metafns.h                                   | 755 ++++++++++-----------
 gcc/cp/reflect.cc                                  |  13 -
 gcc/cp/semantics.cc                                |   4 -
 gcc/testsuite/g++.dg/reflect/eh1.C                 |   4 -
 gcc/testsuite/g++.dg/reflect/eh2.C                 |   1 -
 gcc/testsuite/g++.dg/reflect/is_consteval_only1.C  |  83 ---
 gcc/testsuite/g++.dg/reflect/type_trait5.C         |  18 -
 libstdc++-v3/include/std/meta                      |   1 -
 libstdc++-v3/include/std/type_traits               |  18 -
 libstdc++-v3/src/c++23/std.cc.in                   |   5 -
 .../requirements/explicit_instantiation.cc         |  12 -
 .../is_consteval_only/requirements/typedefs.cc     |  16 -
 .../testsuite/20_util/is_consteval_only/value.cc   |  30 -
 .../20_util/variable_templates_for_traits.cc       |   3 -
 17 files changed, 376 insertions(+), 593 deletions(-)

diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc
index 0e0bcb2c90fc..6fe75b6b8f0e 100644
--- a/gcc/cp/constraint.cc
+++ b/gcc/cp/constraint.cc
@@ -3354,9 +3354,6 @@ diagnose_trait_expr (location_t loc, tree expr, tree args)
     case CPTK_IS_VOLATILE:
       inform (loc, "%qT is not a volatile type", t1);
       break;
-    case CPTK_IS_CONSTEVAL_ONLY:
-      inform (decl_loc, "%qT is not consteval-only", t1);
-      break;
     case CPTK_IS_STRUCTURAL:
       inform (decl_loc, "%qT is not a structural type", t1);
       structural_type_p (t1, /*explain=*/true);
diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def
index f1b40f2a6d87..73cb8fbb8639 100644
--- a/gcc/cp/cp-trait.def
+++ b/gcc/cp/cp-trait.def
@@ -69,7 +69,6 @@ DEFTRAIT_EXPR (IS_BASE_OF, "__is_base_of", 2)
 DEFTRAIT_EXPR (IS_BOUNDED_ARRAY, "__is_bounded_array", 1)
 DEFTRAIT_EXPR (IS_CLASS, "__is_class", 1)
 DEFTRAIT_EXPR (IS_CONST, "__is_const", 1)
-DEFTRAIT_EXPR (IS_CONSTEVAL_ONLY, "__builtin_is_consteval_only", 1)
 DEFTRAIT_EXPR (IS_CONSTRUCTIBLE, "__is_constructible", -1)
 DEFTRAIT_EXPR (IS_CONVERTIBLE, "__is_convertible", 2)
 DEFTRAIT_EXPR (IS_DESTRUCTIBLE, "__is_destructible", 1)
diff --git a/gcc/cp/metafns.gperf b/gcc/cp/metafns.gperf
index 7fd6a6a3dd80..7e766c0a3188 100644
--- a/gcc/cp/metafns.gperf
+++ b/gcc/cp/metafns.gperf
@@ -174,7 +174,6 @@ enum metafn_code {
   METAFN_IS_ABSTRACT_TYPE,
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
-  METAFN_IS_CONSTEVAL_ONLY_TYPE,
   METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
@@ -623,7 +622,6 @@ is_polymorphic_type, METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,
 is_abstract_type, METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,
 is_final_type, METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_aggregate_type, METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,
-is_consteval_only_type, METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,
 is_structural_type, METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_signed_type, METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
 is_unsigned_type, METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
diff --git a/gcc/cp/metafns.h b/gcc/cp/metafns.h
index c9644edb99ef..f62f39f90fd7 100644
--- a/gcc/cp/metafns.h
+++ b/gcc/cp/metafns.h
@@ -202,7 +202,6 @@ enum metafn_code {
   METAFN_IS_ABSTRACT_TYPE,
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
-  METAFN_IS_CONSTEVAL_ONLY_TYPE,
   METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
@@ -486,7 +485,7 @@ enum metafn_kind {
     = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
       | METAFN_KIND_RET_U8STRING_VIEW
 };
-#line 462 "metafns.gperf"
+#line 461 "metafns.gperf"
 struct metafn_info
 {
   /* A name within "std::meta::" (or "std::meta::access_context::").  */
@@ -522,10 +521,10 @@ metafn_lookup::hash (const char *str, size_t len)
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
-      821, 821, 821, 821, 821,   5,  45, 145,  10,  45,
-      190,   5,  55,  35, 115,  20, 346,   0,  60, 110,
-        0, 219,   0,  40,  35,  20,  25, 160,   5,  80,
-        0, 183,  45, 821, 821, 821, 821, 821, 821, 821,
+      821, 821, 821, 821, 821,   5,  10, 145,  10,  45,
+      190,   5,  55,  35, 154,  20, 253,   0,  60, 110,
+        0, 219,   0,  40,  35,  20,  25, 160,   5, 253,
+        0, 200,  20, 821, 821, 821, 821, 821, 821, 821,
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
       821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
@@ -597,7 +596,7 @@ metafn_lookup::find (const char *str, size_t len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 238,
+      TOTAL_KEYWORDS = 237,
       MIN_WORD_LENGTH = 4,
       MAX_WORD_LENGTH = 40,
       MIN_HASH_VALUE = 39,
@@ -610,481 +609,479 @@ metafn_lookup::find (const char *str, size_t len)
 #endif
   static const struct metafn_info wordlist[] =
     {
-#line 666 "metafns.gperf"
+#line 664 "metafns.gperf"
       {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
-#line 595 "metafns.gperf"
+#line 594 "metafns.gperf"
       {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 600 "metafns.gperf"
+#line 599 "metafns.gperf"
       {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 503 "metafns.gperf"
+#line 502 "metafns.gperf"
       {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
-#line 549 "metafns.gperf"
+#line 548 "metafns.gperf"
       {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
-#line 556 "metafns.gperf"
+#line 555 "metafns.gperf"
       {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
-#line 488 "metafns.gperf"
+#line 487 "metafns.gperf"
       {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
-#line 517 "metafns.gperf"
+#line 516 "metafns.gperf"
       {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
-#line 672 "metafns.gperf"
+#line 670 "metafns.gperf"
       {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 651 "metafns.gperf"
+#line 649 "metafns.gperf"
       {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 677 "metafns.gperf"
+#line 675 "metafns.gperf"
       {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 656 "metafns.gperf"
+#line 654 "metafns.gperf"
       {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 678 "metafns.gperf"
+#line 676 "metafns.gperf"
       {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 653 "metafns.gperf"
+#line 651 "metafns.gperf"
       {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 669 "metafns.gperf"
+#line 667 "metafns.gperf"
       {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 657 "metafns.gperf"
+#line 655 "metafns.gperf"
       {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 668 "metafns.gperf"
+#line 666 "metafns.gperf"
       {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 654 "metafns.gperf"
+#line 652 "metafns.gperf"
       {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 541 "metafns.gperf"
+#line 540 "metafns.gperf"
       {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 596 "metafns.gperf"
+#line 702 "metafns.gperf"
+      {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
+#line 595 "metafns.gperf"
       {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 655 "metafns.gperf"
+#line 653 "metafns.gperf"
       {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 660 "metafns.gperf"
+#line 517 "metafns.gperf"
+      {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
+#line 658 "metafns.gperf"
       {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 486 "metafns.gperf"
+#line 485 "metafns.gperf"
       {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
-#line 498 "metafns.gperf"
+#line 497 "metafns.gperf"
       {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
-#line 584 "metafns.gperf"
+#line 583 "metafns.gperf"
       {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
-#line 705 "metafns.gperf"
+#line 703 "metafns.gperf"
       {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 622 "metafns.gperf"
+#line 704 "metafns.gperf"
+      {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
+#line 621 "metafns.gperf"
       {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 522 "metafns.gperf"
+#line 521 "metafns.gperf"
       {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 519 "metafns.gperf"
+#line 518 "metafns.gperf"
       {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
-#line 475 "metafns.gperf"
+#line 474 "metafns.gperf"
       {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
-#line 674 "metafns.gperf"
+#line 672 "metafns.gperf"
       {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 630 "metafns.gperf"
+#line 628 "metafns.gperf"
       {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 704 "metafns.gperf"
-      {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 502 "metafns.gperf"
+#line 580 "metafns.gperf"
+      {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
+#line 501 "metafns.gperf"
       {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
-#line 548 "metafns.gperf"
+#line 547 "metafns.gperf"
       {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
-#line 518 "metafns.gperf"
-      {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 575 "metafns.gperf"
+#line 482 "metafns.gperf"
+      {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
+#line 574 "metafns.gperf"
       {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 540 "metafns.gperf"
+#line 539 "metafns.gperf"
       {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 523 "metafns.gperf"
+#line 522 "metafns.gperf"
       {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 638 "metafns.gperf"
+#line 636 "metafns.gperf"
       {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 671 "metafns.gperf"
+#line 669 "metafns.gperf"
       {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 661 "metafns.gperf"
+#line 659 "metafns.gperf"
       {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 706 "metafns.gperf"
-      {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
-#line 539 "metafns.gperf"
+#line 519 "metafns.gperf"
+      {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
+#line 538 "metafns.gperf"
       {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 652 "metafns.gperf"
+#line 650 "metafns.gperf"
       {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 585 "metafns.gperf"
+#line 584 "metafns.gperf"
       {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_BOOL_INFO_REFLECTION_RANGE,},
-#line 544 "metafns.gperf"
+#line 543 "metafns.gperf"
       {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 532 "metafns.gperf"
+#line 531 "metafns.gperf"
       {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 635 "metafns.gperf"
-      {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 581 "metafns.gperf"
-      {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 483 "metafns.gperf"
-      {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 520 "metafns.gperf"
-      {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
 #line 633 "metafns.gperf"
+      {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 631 "metafns.gperf"
       {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 641 "metafns.gperf"
+#line 639 "metafns.gperf"
       {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 511 "metafns.gperf"
-      {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 538 "metafns.gperf"
+#line 537 "metafns.gperf"
       {"is_vararg_function", METAFN_IS_VARARG_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 529 "metafns.gperf"
+#line 528 "metafns.gperf"
       {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 702 "metafns.gperf"
+#line 700 "metafns.gperf"
       {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 565 "metafns.gperf"
+#line 564 "metafns.gperf"
       {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
-#line 609 "metafns.gperf"
+#line 608 "metafns.gperf"
       {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 583 "metafns.gperf"
+#line 582 "metafns.gperf"
       {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 612 "metafns.gperf"
+#line 611 "metafns.gperf"
       {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 673 "metafns.gperf"
+#line 671 "metafns.gperf"
       {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 709 "metafns.gperf"
+#line 707 "metafns.gperf"
       {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
-#line 571 "metafns.gperf"
+#line 570 "metafns.gperf"
       {"current_function", METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,},
-#line 547 "metafns.gperf"
+#line 546 "metafns.gperf"
       {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 696 "metafns.gperf"
+#line 694 "metafns.gperf"
       {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 639 "metafns.gperf"
+#line 637 "metafns.gperf"
       {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 697 "metafns.gperf"
+#line 695 "metafns.gperf"
       {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 703 "metafns.gperf"
+#line 701 "metafns.gperf"
       {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 589 "metafns.gperf"
+#line 588 "metafns.gperf"
       {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 509 "metafns.gperf"
-      {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 533 "metafns.gperf"
+#line 510 "metafns.gperf"
+      {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 532 "metafns.gperf"
       {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 527 "metafns.gperf"
+#line 526 "metafns.gperf"
       {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 558 "metafns.gperf"
-      {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
-#line 636 "metafns.gperf"
+#line 634 "metafns.gperf"
       {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 659 "metafns.gperf"
+#line 657 "metafns.gperf"
       {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 619 "metafns.gperf"
+#line 618 "metafns.gperf"
       {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 610 "metafns.gperf"
+#line 609 "metafns.gperf"
       {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 602 "metafns.gperf"
-      {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 658 "metafns.gperf"
+#line 656 "metafns.gperf"
       {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 643 "metafns.gperf"
+#line 641 "metafns.gperf"
       {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 640 "metafns.gperf"
-      {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 648 "metafns.gperf"
+#line 646 "metafns.gperf"
       {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 698 "metafns.gperf"
+#line 696 "metafns.gperf"
       {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
-#line 645 "metafns.gperf"
+#line 643 "metafns.gperf"
       {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 616 "metafns.gperf"
+#line 615 "metafns.gperf"
       {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 586 "metafns.gperf"
+#line 585 "metafns.gperf"
       {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 564 "metafns.gperf"
+#line 563 "metafns.gperf"
       {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 530 "metafns.gperf"
+#line 529 "metafns.gperf"
       {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 557 "metafns.gperf"
-      {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
-#line 526 "metafns.gperf"
+#line 525 "metafns.gperf"
       {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 621 "metafns.gperf"
-      {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 637 "metafns.gperf"
+#line 635 "metafns.gperf"
       {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 601 "metafns.gperf"
-      {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 537 "metafns.gperf"
-      {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
-#line 700 "metafns.gperf"
+#line 508 "metafns.gperf"
+      {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
+#line 698 "metafns.gperf"
       {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 531 "metafns.gperf"
+#line 530 "metafns.gperf"
       {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 618 "metafns.gperf"
-      {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 552 "metafns.gperf"
+#line 557 "metafns.gperf"
+      {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
+#line 551 "metafns.gperf"
       {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 611 "metafns.gperf"
+#line 610 "metafns.gperf"
       {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 553 "metafns.gperf"
+#line 552 "metafns.gperf"
       {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 574 "metafns.gperf"
+#line 573 "metafns.gperf"
       {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 487 "metafns.gperf"
+#line 620 "metafns.gperf"
+      {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 486 "metafns.gperf"
       {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
-#line 514 "metafns.gperf"
-      {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 478 "metafns.gperf"
+#line 617 "metafns.gperf"
+      {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 477 "metafns.gperf"
       {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 687 "metafns.gperf"
+#line 685 "metafns.gperf"
       {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 562 "metafns.gperf"
+#line 561 "metafns.gperf"
       {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
-#line 521 "metafns.gperf"
+#line 520 "metafns.gperf"
       {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 667 "metafns.gperf"
+#line 556 "metafns.gperf"
+      {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
+#line 665 "metafns.gperf"
       {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
-#line 605 "metafns.gperf"
+#line 604 "metafns.gperf"
       {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 542 "metafns.gperf"
+#line 541 "metafns.gperf"
       {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 627 "metafns.gperf"
+#line 625 "metafns.gperf"
       {"is_structural_type", METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 617 "metafns.gperf"
-      {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 573 "metafns.gperf"
+#line 572 "metafns.gperf"
       {"current_namespace", METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,},
-#line 497 "metafns.gperf"
-      {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
-#line 693 "metafns.gperf"
+#line 536 "metafns.gperf"
+      {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
+#line 691 "metafns.gperf"
       {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 649 "metafns.gperf"
+#line 647 "metafns.gperf"
       {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 515 "metafns.gperf"
-      {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 646 "metafns.gperf"
+#line 644 "metafns.gperf"
       {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 614 "metafns.gperf"
+#line 613 "metafns.gperf"
       {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 490 "metafns.gperf"
+#line 489 "metafns.gperf"
       {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 535 "metafns.gperf"
+#line 534 "metafns.gperf"
       {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 516 "metafns.gperf"
+#line 515 "metafns.gperf"
       {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 608 "metafns.gperf"
-      {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 559 "metafns.gperf"
+#line 616 "metafns.gperf"
+      {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 496 "metafns.gperf"
+      {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
+#line 558 "metafns.gperf"
       {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
-#line 554 "metafns.gperf"
+#line 553 "metafns.gperf"
       {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 551 "metafns.gperf"
+#line 513 "metafns.gperf"
+      {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 514 "metafns.gperf"
+      {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
+#line 550 "metafns.gperf"
       {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
-#line 504 "metafns.gperf"
+#line 607 "metafns.gperf"
+      {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 503 "metafns.gperf"
       {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 647 "metafns.gperf"
+#line 645 "metafns.gperf"
       {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 634 "metafns.gperf"
+#line 632 "metafns.gperf"
       {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 536 "metafns.gperf"
-      {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 683 "metafns.gperf"
-      {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 572 "metafns.gperf"
+#line 571 "metafns.gperf"
       {"current_class", METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,},
-#line 579 "metafns.gperf"
+#line 578 "metafns.gperf"
       {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 500 "metafns.gperf"
+#line 499 "metafns.gperf"
       {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
-#line 550 "metafns.gperf"
+#line 549 "metafns.gperf"
       {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
-#line 481 "metafns.gperf"
+#line 480 "metafns.gperf"
       {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 604 "metafns.gperf"
+#line 603 "metafns.gperf"
       {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 662 "metafns.gperf"
-      {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
-#line 665 "metafns.gperf"
-      {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 528 "metafns.gperf"
+#line 535 "metafns.gperf"
+      {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
+#line 527 "metafns.gperf"
       {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 613 "metafns.gperf"
+#line 687 "metafns.gperf"
+      {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
+#line 668 "metafns.gperf"
+      {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 612 "metafns.gperf"
       {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 587 "metafns.gperf"
+#line 586 "metafns.gperf"
       {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
-#line 534 "metafns.gperf"
+#line 533 "metafns.gperf"
       {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 491 "metafns.gperf"
-      {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
-#line 664 "metafns.gperf"
-      {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 566 "metafns.gperf"
+#line 626 "metafns.gperf"
+      {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 663 "metafns.gperf"
+      {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 565 "metafns.gperf"
       {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 686 "metafns.gperf"
+#line 684 "metafns.gperf"
       {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 485 "metafns.gperf"
+#line 484 "metafns.gperf"
       {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
-#line 681 "metafns.gperf"
-      {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
-#line 650 "metafns.gperf"
+#line 488 "metafns.gperf"
+      {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
+#line 648 "metafns.gperf"
       {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 684 "metafns.gperf"
+#line 682 "metafns.gperf"
       {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
-#line 625 "metafns.gperf"
-      {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 590 "metafns.gperf"
+#line 589 "metafns.gperf"
       {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 563 "metafns.gperf"
+#line 562 "metafns.gperf"
       {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 578 "metafns.gperf"
+#line 577 "metafns.gperf"
       {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 580 "metafns.gperf"
+#line 579 "metafns.gperf"
       {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
-#line 644 "metafns.gperf"
+#line 642 "metafns.gperf"
       {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 685 "metafns.gperf"
-      {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 543 "metafns.gperf"
+#line 662 "metafns.gperf"
+      {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 542 "metafns.gperf"
       {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 689 "metafns.gperf"
-      {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
-#line 675 "metafns.gperf"
+#line 673 "metafns.gperf"
       {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 632 "metafns.gperf"
+#line 630 "metafns.gperf"
       {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 555 "metafns.gperf"
+#line 554 "metafns.gperf"
       {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 682 "metafns.gperf"
+#line 680 "metafns.gperf"
       {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
-#line 642 "metafns.gperf"
+#line 640 "metafns.gperf"
       {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 607 "metafns.gperf"
-      {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 690 "metafns.gperf"
-      {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
-#line 676 "metafns.gperf"
+#line 545 "metafns.gperf"
+      {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
+#line 601 "metafns.gperf"
+      {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 674 "metafns.gperf"
       {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 567 "metafns.gperf"
+#line 638 "metafns.gperf"
+      {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 566 "metafns.gperf"
       {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 474 "metafns.gperf"
+#line 473 "metafns.gperf"
       {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
-#line 599 "metafns.gperf"
+#line 624 "metafns.gperf"
+      {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 606 "metafns.gperf"
+      {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 491 "metafns.gperf"
+      {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
+#line 524 "metafns.gperf"
+      {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
+#line 600 "metafns.gperf"
+      {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 598 "metafns.gperf"
       {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 679 "metafns.gperf"
-      {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
-#line 506 "metafns.gperf"
-      {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
-#line 507 "metafns.gperf"
-      {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 691 "metafns.gperf"
-      {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
-#line 512 "metafns.gperf"
-      {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 694 "metafns.gperf"
-      {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
-#line 501 "metafns.gperf"
+#line 500 "metafns.gperf"
       {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
-#line 692 "metafns.gperf"
-      {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 505 "metafns.gperf"
-      {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
-#line 670 "metafns.gperf"
-      {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 593 "metafns.gperf"
+#line 592 "metafns.gperf"
       {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
-#line 628 "metafns.gperf"
-      {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 623 "metafns.gperf"
-      {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 489 "metafns.gperf"
-      {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 480 "metafns.gperf"
+#line 506 "metafns.gperf"
+      {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
+#line 591 "metafns.gperf"
+      {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
+#line 479 "metafns.gperf"
       {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 603 "metafns.gperf"
+#line 602 "metafns.gperf"
       {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 701 "metafns.gperf"
-      {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 626 "metafns.gperf"
-      {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 615 "metafns.gperf"
-      {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 476 "metafns.gperf"
-      {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
-#line 493 "metafns.gperf"
+#line 511 "metafns.gperf"
+      {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 622 "metafns.gperf"
+      {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 492 "metafns.gperf"
       {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
-#line 598 "metafns.gperf"
+#line 597 "metafns.gperf"
       {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 546 "metafns.gperf"
-      {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 494 "metafns.gperf"
+#line 587 "metafns.gperf"
+      {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
+#line 699 "metafns.gperf"
+      {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
+#line 493 "metafns.gperf"
       {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
-#line 592 "metafns.gperf"
-      {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
-#line 484 "metafns.gperf"
+#line 661 "metafns.gperf"
+      {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
+#line 614 "metafns.gperf"
+      {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 483 "metafns.gperf"
       {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
-#line 710 "metafns.gperf"
-      {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
-#line 711 "metafns.gperf"
-      {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
-#line 492 "metafns.gperf"
-      {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
-#line 525 "metafns.gperf"
-      {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
-#line 496 "metafns.gperf"
+#line 681 "metafns.gperf"
+      {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
+#line 475 "metafns.gperf"
+      {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
+#line 568 "metafns.gperf"
+      {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 569 "metafns.gperf"
+      {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 495 "metafns.gperf"
       {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
-#line 561 "metafns.gperf"
-      {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
-#line 524 "metafns.gperf"
+#line 523 "metafns.gperf"
       {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 699 "metafns.gperf"
+#line 697 "metafns.gperf"
       {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
-#line 591 "metafns.gperf"
-      {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 513 "metafns.gperf"
-      {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 545 "metafns.gperf"
+#line 708 "metafns.gperf"
+      {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
+#line 709 "metafns.gperf"
+      {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
+#line 567 "metafns.gperf"
+      {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 544 "metafns.gperf"
       {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 597 "metafns.gperf"
+#line 490 "metafns.gperf"
+      {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
+#line 686 "metafns.gperf"
+      {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
+#line 590 "metafns.gperf"
+      {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
+#line 679 "metafns.gperf"
+      {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
+#line 575 "metafns.gperf"
+      {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
+#line 559 "metafns.gperf"
+      {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
+#line 560 "metafns.gperf"
+      {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
+#line 683 "metafns.gperf"
+      {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
+#line 660 "metafns.gperf"
+      {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
+#line 596 "metafns.gperf"
       {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 663 "metafns.gperf"
-      {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
-#line 508 "metafns.gperf"
-      {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 569 "metafns.gperf"
-      {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 570 "metafns.gperf"
-      {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 512 "metafns.gperf"
+      {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 498 "metafns.gperf"
+      {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
+#line 623 "metafns.gperf"
+      {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
 #line 688 "metafns.gperf"
-      {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
-#line 568 "metafns.gperf"
-      {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 680 "metafns.gperf"
-      {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 588 "metafns.gperf"
-      {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 620 "metafns.gperf"
-      {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 695 "metafns.gperf"
+      {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
+#line 476 "metafns.gperf"
+      {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
+#line 693 "metafns.gperf"
       {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 631 "metafns.gperf"
+#line 619 "metafns.gperf"
+      {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 677 "metafns.gperf"
+      {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
+#line 505 "metafns.gperf"
+      {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
+#line 507 "metafns.gperf"
+      {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
+#line 689 "metafns.gperf"
+      {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
+#line 629 "metafns.gperf"
       {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 577 "metafns.gperf"
+#line 692 "metafns.gperf"
+      {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
+#line 690 "metafns.gperf"
+      {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
+#line 504 "metafns.gperf"
+      {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
+#line 576 "metafns.gperf"
       {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 606 "metafns.gperf"
+#line 605 "metafns.gperf"
       {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 477 "metafns.gperf"
-      {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
-#line 576 "metafns.gperf"
-      {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 624 "metafns.gperf"
-      {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 560 "metafns.gperf"
-      {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
-#line 708 "metafns.gperf"
+#line 706 "metafns.gperf"
       {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
-#line 594 "metafns.gperf"
+#line 593 "metafns.gperf"
       {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 499 "metafns.gperf"
-      {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
-#line 707 "metafns.gperf"
+#line 509 "metafns.gperf"
+      {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 705 "metafns.gperf"
       {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 482 "metafns.gperf"
+#line 481 "metafns.gperf"
       {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
-#line 582 "metafns.gperf"
+#line 581 "metafns.gperf"
       {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 510 "metafns.gperf"
-      {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 479 "metafns.gperf"
+#line 478 "metafns.gperf"
       {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 629 "metafns.gperf"
+#line 678 "metafns.gperf"
+      {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
+#line 627 "metafns.gperf"
       {"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 495 "metafns.gperf"
+#line 494 "metafns.gperf"
       {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}
     };
 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
@@ -1100,82 +1097,82 @@ metafn_lookup::find (const char *str, size_t len)
        -1,  -1,   1,  -1,  -1,   2,   3,  -1,   4,  -1,
        -1,  -1,   5,  -1,  -1,   6,   7,   8,  -1,   9,
        10,  11,  12,  -1,  13,  14,  15,  16,  -1,  17,
-       18,  -1,  -1,  -1,  -1,  19,  20,  -1,  21,  22,
-       -1,  23,  24,  -1,  25,  -1,  -1,  -1,  -1,  26,
-       -1,  27,  28,  -1,  29,  30,  31,  32,  33,  -1,
-       34,  -1,  35,  36,  -1,  -1,  -1,  -1,  -1,  -1,
-       37,  -1,  38,  39,  40,  41,  -1,  -1,  -1,  -1,
-       42,  43,  44,  -1,  45,  -1,  46,  -1,  47,  -1,
-       -1,  48,  49,  -1,  -1,  -1,  -1,  50,  -1,  -1,
-       -1,  -1,  -1,  51,  -1,  -1,  52,  53,  54,  -1,
-       -1,  -1,  -1,  55,  56,  57,  58,  -1,  59,  -1,
-       -1,  60,  -1,  -1,  61,  62,  -1,  63,  -1,  -1,
-       -1,  64,  -1,  65,  -1,  -1,  66,  -1,  67,  -1,
-       -1,  68,  -1,  69,  -1,  -1,  70,  -1,  -1,  -1,
-       71,  -1,  -1,  72,  73,  74,  75,  -1,  -1,  -1,
-       76,  77,  78,  -1,  79,  80,  81,  82,  83,  -1,
-       84,  85,  86,  -1,  -1,  87,  -1,  -1,  88,  89,
-       90,  91,  -1,  -1,  -1,  -1,  92,  -1,  93,  94,
-       95,  96,  -1,  97,  98,  99,  -1,  -1, 100, 101,
-      102,  -1,  -1,  -1,  -1,  -1,  -1, 103,  -1,  -1,
-       -1, 104,  -1, 105,  -1, 106, 107,  -1, 108,  -1,
-      109, 110, 111, 112,  -1,  -1, 113, 114,  -1, 115,
-       -1, 116,  -1, 117, 118,  -1, 119,  -1,  -1, 120,
-      121, 122, 123,  -1, 124,  -1,  -1,  -1, 125, 126,
-       -1,  -1,  -1,  -1,  -1,  -1, 127,  -1,  -1,  -1,
-       -1,  -1, 128, 129, 130,  -1, 131, 132,  -1,  -1,
-       -1,  -1,  -1, 133, 134,  -1,  -1, 135, 136, 137,
-       -1, 138, 139,  -1,  -1,  -1, 140, 141,  -1,  -1,
-       -1,  -1,  -1, 142,  -1,  -1, 143,  -1, 144,  -1,
-      145,  -1,  -1, 146, 147, 148, 149,  -1, 150,  -1,
-      151, 152, 153, 154,  -1,  -1, 155, 156, 157, 158,
-      159,  -1, 160, 161,  -1,  -1, 162,  -1,  -1, 163,
-       -1, 164,  -1,  -1, 165, 166, 167, 168, 169,  -1,
-       -1,  -1,  -1, 170,  -1, 171, 172,  -1,  -1,  -1,
-       -1, 173,  -1,  -1, 174,  -1, 175,  -1,  -1,  -1,
-       -1,  -1, 176,  -1,  -1, 177, 178,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 179, 180, 181,
-       -1,  -1,  -1,  -1, 182,  -1,  -1,  -1,  -1, 183,
-       -1,  -1,  -1,  -1,  -1, 184,  -1,  -1,  -1, 185,
-       -1, 186, 187, 188,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 189,  -1, 190,  -1,  -1, 191,
-       -1,  -1,  -1,  -1, 192, 193, 194,  -1,  -1, 195,
-       -1,  -1, 196,  -1,  -1,  -1, 197,  -1, 198,  -1,
-       -1, 199,  -1, 200,  -1,  -1,  -1,  -1,  -1, 201,
-      202, 203, 204,  -1, 205,  -1,  -1, 206,  -1,  -1,
-      207,  -1, 208,  -1,  -1,  -1,  -1,  -1, 209,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 210,  -1,  -1,  -1,  -1,  -1, 211,
-       -1, 212,  -1,  -1,  -1,  -1,  -1,  -1, 213,  -1,
-       -1,  -1,  -1, 214,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 215,  -1,  -1,  -1, 216,  -1,  -1,  -1, 217,
-      218,  -1,  -1, 219,  -1,  -1,  -1,  -1, 220,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 221,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 222,  -1,  -1,  -1,  -1,
-      223,  -1,  -1,  -1,  -1, 224,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 225,  -1,
-       -1,  -1, 226, 227,  -1,  -1,  -1,  -1, 228,  -1,
-      229,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 230,  -1,
+       18,  -1,  19,  -1,  -1,  20,  21,  22,  23,  24,
+       -1,  25,  26,  -1,  27,  28,  -1,  -1,  -1,  29,
+       -1,  30,  31,  -1,  32,  33,  34,  35,  36,  -1,
+       37,  -1,  38,  39,  -1,  -1,  -1,  -1,  -1,  -1,
+       40,  -1,  41,  42,  43,  44,  -1,  -1,  45,  -1,
+       -1,  46,  47,  -1,  48,  -1,  49,  -1,  50,  -1,
+       -1,  51,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  52,  53,  -1,  -1,
+       -1,  -1,  -1,  54,  55,  56,  57,  -1,  58,  -1,
+       -1,  59,  -1,  -1,  60,  61,  -1,  62,  -1,  -1,
+       -1,  63,  -1,  64,  -1,  -1,  65,  -1,  66,  -1,
+       -1,  67,  -1,  68,  -1,  -1,  69,  70,  -1,  -1,
+       -1,  -1,  -1,  71,  72,  -1,  73,  -1,  -1,  -1,
+       74,  75,  76,  -1,  -1,  77,  78,  -1,  79,  -1,
+       80,  81,  82,  -1,  -1,  83,  -1,  -1,  84,  85,
+       -1,  86,  -1,  -1,  -1,  -1,  -1,  -1,  87,  88,
+       -1,  89,  -1,  90,  91,  92,  -1,  -1,  93,  94,
+       95,  -1,  -1,  96,  -1,  -1,  -1,  97,  -1,  -1,
+       -1,  98,  -1,  99,  -1, 100, 101,  -1, 102, 103,
+      104, 105, 106, 107,  -1,  -1,  -1, 108,  -1, 109,
+       -1, 110,  -1, 111,  -1,  -1, 112,  -1,  -1, 113,
+      114, 115, 116, 117,  -1,  -1, 118,  -1, 119, 120,
+      121, 122,  -1,  -1,  -1,  -1, 123,  -1,  -1,  -1,
+       -1, 124, 125, 126, 127,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 128, 129,  -1,  -1, 130, 131, 132,
+       -1, 133,  -1, 134,  -1,  -1,  -1, 135, 136,  -1,
+       -1, 137,  -1, 138,  -1,  -1, 139,  -1, 140,  -1,
+       -1,  -1, 141, 142, 143, 144, 145,  -1, 146,  -1,
+      147, 148,  -1, 149,  -1,  -1, 150, 151, 152, 153,
+      154,  -1, 155,  -1,  -1,  -1, 156,  -1,  -1, 157,
+       -1, 158,  -1,  -1, 159, 160, 161, 162, 163,  -1,
+      164,  -1,  -1, 165,  -1, 166,  -1,  -1,  -1,  -1,
+       -1, 167,  -1, 168,  -1,  -1, 169, 170,  -1,  -1,
+       -1,  -1, 171, 172,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 173,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 174,
+       -1,  -1,  -1,  -1,  -1, 175,  -1,  -1,  -1,  -1,
+       -1, 176, 177, 178, 179,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 180,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1, 181, 182, 183,  -1,  -1,
+       -1, 184, 185,  -1,  -1, 186, 187,  -1, 188,  -1,
+      189, 190,  -1,  -1, 191,  -1,  -1,  -1,  -1, 192,
+       -1, 193,  -1,  -1, 194,  -1,  -1, 195, 196,  -1,
+      197, 198,  -1,  -1,  -1,  -1,  -1,  -1, 199,  -1,
+       -1,  -1,  -1, 200,  -1,  -1, 201, 202,  -1,  -1,
+       -1, 203,  -1,  -1,  -1, 204,  -1,  -1,  -1,  -1,
+      205, 206,  -1, 207, 208,  -1,  -1,  -1,  -1,  -1,
+      209, 210,  -1,  -1,  -1, 211, 212,  -1,  -1,  -1,
+      213, 214,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+      215,  -1,  -1, 216, 217,  -1,  -1, 218,  -1,  -1,
+      219,  -1,  -1,  -1,  -1, 220,  -1, 221,  -1, 222,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 223, 224,  -1,  -1, 225,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 231,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 226,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 227,  -1,
+      228,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 229,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 232,  -1,  -1, 233,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 234,  -1,  -1, 235,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 230,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 231,  -1,  -1, 232,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 233,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 234,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 236,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      237
+      235,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+      236
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc
index 127438019130..93d2affbd194 100644
--- a/gcc/cp/reflect.cc
+++ b/gcc/cp/reflect.cc
@@ -4384,17 +4384,6 @@ eval_is_aggregate_type (tree type)
     return boolean_false_node;
 }
 
-/* Process std::meta::is_consteval_only_type.  */
-
-static tree
-eval_is_consteval_only_type (tree type)
-{
-  if (consteval_only_p (type))
-    return boolean_true_node;
-  else
-    return boolean_false_node;
-}
-
 /* Process std::meta::is_structural_type.  */
 
 static tree
@@ -8192,8 +8181,6 @@ process_metafunction (const constexpr_ctx *ctx, tree fun, tree call,
       return eval_is_final_type (loc, h);
     case METAFN_IS_AGGREGATE_TYPE:
       return eval_is_aggregate_type (h);
-    case METAFN_IS_CONSTEVAL_ONLY_TYPE:
-      return eval_is_consteval_only_type (h);
     case METAFN_IS_STRUCTURAL_TYPE:
       return eval_is_structural_type (loc, h);
     case METAFN_IS_SIGNED_TYPE:
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc
index abd1156a2dc1..5fddd771991c 100644
--- a/gcc/cp/semantics.cc
+++ b/gcc/cp/semantics.cc
@@ -14170,9 +14170,6 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2)
     case CPTK_IS_DEDUCIBLE:
       return type_targs_deducible_from (type1, type2);
 
-    case CPTK_IS_CONSTEVAL_ONLY:
-      return consteval_only_p (type1);
-
     case CPTK_IS_STRUCTURAL:
       return structural_type_p (type1);
 
@@ -14356,7 +14353,6 @@ finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2)
     case CPTK_IS_STD_LAYOUT:
     case CPTK_IS_TRIVIAL:
     case CPTK_IS_TRIVIALLY_COPYABLE:
-    case CPTK_IS_CONSTEVAL_ONLY:
     case CPTK_IS_STRUCTURAL:
     case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
       if (!check_trait_type (type1, /* kind = */ 2))
diff --git a/gcc/testsuite/g++.dg/reflect/eh1.C b/gcc/testsuite/g++.dg/reflect/eh1.C
index ed4eeb087617..00c9c43e021d 100644
--- a/gcc/testsuite/g++.dg/reflect/eh1.C
+++ b/gcc/testsuite/g++.dg/reflect/eh1.C
@@ -146,9 +146,6 @@ eval (int n)
     case 46:
       is_aggregate_type (^^n);
       break;
-    case 47:
-      is_consteval_only_type (^^n);
-      break;
     case 48:
       is_signed_type (^^n);
       break;
@@ -319,7 +316,6 @@ static_assert (test (43));
 static_assert (test (44));
 static_assert (test (45));
 static_assert (test (46));
-static_assert (test (47));
 static_assert (test (48));
 static_assert (test (49));
 static_assert (test (50));
diff --git a/gcc/testsuite/g++.dg/reflect/eh2.C b/gcc/testsuite/g++.dg/reflect/eh2.C
index bb601f186498..dde5e5b6ad5a 100644
--- a/gcc/testsuite/g++.dg/reflect/eh2.C
+++ b/gcc/testsuite/g++.dg/reflect/eh2.C
@@ -52,7 +52,6 @@ static_assert ((is_polymorphic_type (^^i), true)); // { dg-error "non-constant|u
 static_assert ((is_abstract_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_final_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_aggregate_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
-static_assert ((is_consteval_only_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_signed_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_unsigned_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_bounded_array_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
diff --git a/gcc/testsuite/g++.dg/reflect/is_consteval_only1.C b/gcc/testsuite/g++.dg/reflect/is_consteval_only1.C
deleted file mode 100644
index 268aaaa72dce..000000000000
--- a/gcc/testsuite/g++.dg/reflect/is_consteval_only1.C
+++ /dev/null
@@ -1,83 +0,0 @@
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-// Test std::meta::is_consteval_only.
-
-#include <meta>
-using namespace std::meta;
-
-struct A {
-  info i;
-};
-struct B : A { };
-struct C : virtual A { };
-struct D : B { };
-struct E { };
-struct F : E {
-  info i;
-};
-template<typename T>
-struct G {
-  T t;
-  using size_type = int;
-};
-struct H {
-  G<info>::size_type sz;
-};
-struct I {
-  std::initializer_list<std::meta::info>::size_type sz;
-};
-template<typename T>
-struct J : T { };
-
-template<typename T>
-using U = J<T>;
-
-template<typename T>
-struct K {
-  J<T> j;
-};
-
-template<typename T>
-struct L {
-  U<T> u;
-};
-
-template<typename T>
-struct M : J<T> { };
-
-template<typename>
-struct N { };
-
-static_assert (is_consteval_only_type (^^A));
-static_assert (is_consteval_only_type (^^B));
-static_assert (is_consteval_only_type (^^C));
-static_assert (is_consteval_only_type (^^D));
-static_assert (!is_consteval_only_type (^^E));
-static_assert (is_consteval_only_type (^^F));
-static_assert (!is_consteval_only_type (^^G<int>));
-static_assert (is_consteval_only_type (^^G<info>));
-static_assert (!is_consteval_only_type (^^H));
-static_assert (!is_consteval_only_type (^^I));
-static_assert (!is_consteval_only_type (^^J<E>));
-static_assert (is_consteval_only_type (^^J<A>));
-static_assert (!is_consteval_only_type (^^U<E>));
-static_assert (is_consteval_only_type (^^U<A>));
-static_assert (!is_consteval_only_type (^^K<E>));
-static_assert (is_consteval_only_type (^^K<A>));
-static_assert (!is_consteval_only_type (^^L<E>));
-static_assert (is_consteval_only_type (^^L<A>));
-static_assert (!is_consteval_only_type (^^M<E>));
-static_assert (is_consteval_only_type (^^M<A>));
-static_assert (!is_consteval_only_type (^^N<E>));
-static_assert (!is_consteval_only_type (^^N<A>));
-
-static_assert (is_consteval_only_type (^^std::meta::exception));
-static_assert (is_consteval_only_type (^^std::meta::access_context));
-static_assert (!is_consteval_only_type (^^std::meta::member_offset));
-static_assert (is_consteval_only_type (^^std::meta::data_member_options));
-static_assert (is_consteval_only_type (type_of (^^std::meta::data_member_options::name)));
-
-struct O;
-static_assert (!is_consteval_only_type (^^O));
-struct O { info i; };
-static_assert (is_consteval_only_type (^^O));
diff --git a/gcc/testsuite/g++.dg/reflect/type_trait5.C b/gcc/testsuite/g++.dg/reflect/type_trait5.C
index ff025882b4fc..19132b5c9215 100644
--- a/gcc/testsuite/g++.dg/reflect/type_trait5.C
+++ b/gcc/testsuite/g++.dg/reflect/type_trait5.C
@@ -207,13 +207,6 @@ namespace N
   void foo ();
 }
 
-int v = 1;
-struct S1 { decltype (^^long) a; };
-union U2 { int a; decltype (^^N::foo) b; };
-struct S3 { const decltype (^^N) *c; };
-struct S4 : public S3 {};
-struct S5 { int a; long *b; };
-
 static_assert (is_const_type (^^const int));
 static_assert (is_const_type (^^const volatile int));
 static_assert (is_const_type (^^cClassType));
@@ -339,17 +332,6 @@ static_assert (!is_aggregate_type (^^EnumType));
 static_assert (!is_aggregate_type (^^void));
 static_assert (!is_aggregate_type (^^NoexceptMoveAssignClass));
 
-static_assert (is_consteval_only_type (^^decltype (^^long)));
-static_assert (is_consteval_only_type (^^const decltype (^^N::foo)));
-static_assert (is_consteval_only_type (^^volatile decltype (^^N)));
-static_assert (is_consteval_only_type (^^const volatile decltype (^^v)));
-static_assert (is_consteval_only_type (^^const S1));
-static_assert (is_consteval_only_type (^^U2));
-static_assert (is_consteval_only_type (^^S3));
-static_assert (is_consteval_only_type (^^S4));
-static_assert (!is_consteval_only_type (^^int));
-static_assert (!is_consteval_only_type (^^S5));
-
 static_assert (!is_signed_type (^^void));
 static_assert (char (-1) < char (0) ? is_signed_type (^^char) : !is_signed_type (^^char));
 static_assert (is_signed_type (^^signed char));
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index e855a31900e5..86c15bbaa216 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -470,7 +470,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     consteval bool is_abstract_type(info);
     consteval bool is_final_type(info);
     consteval bool is_aggregate_type(info);
-    consteval bool is_consteval_only_type(info);
 #if __glibcxx_is_structural >= 202603L
     consteval bool is_structural_type(info);
 #endif
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 38be1b0e09d3..30214194da03 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -3907,24 +3907,6 @@ template<typename _Ret, typename _Fn, typename... _Args>
 # endif
 #endif
 
-#if __cpp_impl_reflection >= 202506L \
-    && _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only) // C++ >= 26
-  /// is_consteval_only - true if the type is consteval-only.
-  /// @since C++26
-  template<typename _Tp>
-    struct is_consteval_only
-    : bool_constant<__builtin_is_consteval_only(_Tp)>
-    { };
-
-  /** is_consteval_only_v - true if the type is consteval-only.
-   *  @ingroup variable_templates
-   *  @since C++26
-   */
-  template<typename _Tp>
-    inline constexpr bool is_consteval_only_v
-      = __builtin_is_consteval_only(_Tp);
-#endif
-
 #if __cpp_lib_is_structural >= 202603L // C++ >= 26
   /// is_structural - true if the type is a structural type.
   /// @since C++26
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 662f4405456e..db66677d55ba 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2254,7 +2254,6 @@ export namespace std
     using std::meta::is_abstract_type;
     using std::meta::is_final_type;
     using std::meta::is_aggregate_type;
-    using std::meta::is_consteval_only_type;
 #if __glibcxx_is_structural >= 202603L
     using std::meta::is_structural_type;
 #endif
@@ -3576,10 +3575,6 @@ export namespace std
 #if __cpp_impl_reflection >= 202506L
   using std::is_reflection;
   using std::is_reflection_v;
-#if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only)
-  using std::is_consteval_only;
-  using std::is_consteval_only_v;
-#endif
 #endif
 #if __glibcxx_is_structural >= 202603L
   using std::is_structural;
diff --git a/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc
deleted file mode 100644
index d890f144ef92..000000000000
--- a/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc
+++ /dev/null
@@ -1,12 +0,0 @@
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-namespace std
-{
-  typedef short test_type;
-  template struct is_consteval_only<test_type>;
-}
diff --git a/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc
deleted file mode 100644
index 29fb44c0dc1b..000000000000
--- a/libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-void test01()
-{
-  // Check for required typedefs
-  typedef std::is_consteval_only<decltype (^^int)> test_type;
-  typedef test_type::value_type               value_type;
-  typedef test_type::type                     type;
-  typedef test_type::type::value_type         type_value_type;
-  typedef test_type::type::type               type_type;
-}
diff --git a/libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc b/libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc
deleted file mode 100644
index 7852a618d316..000000000000
--- a/libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-#include <type_traits>
-#include <testsuite_tr1.h>
-
-void test01()
-{
-  using std::is_consteval_only;
-  using namespace __gnu_test;
-  int v = 1;
-  struct S1 { decltype(^^long) a; };
-  union U2 { int a; decltype(^^test01) b; };
-  struct S3 { const decltype(^^__gnu_test) *c; };
-  struct S4 : public S3 {};
-  struct S5 { int a; long *b; };
-
-  static_assert(test_category<is_consteval_only, decltype(^^long)>(true), "");
-  static_assert(test_category<is_consteval_only, const decltype(^^test01)>(true), "");
-  static_assert(test_category<is_consteval_only, volatile decltype(^^__gnu_test)>(true), "");
-  static_assert(test_category<is_consteval_only, const volatile decltype(^^v)>(true), "");
-  static_assert(test_category<is_consteval_only, const S1>(true), "");
-  static_assert(test_category<is_consteval_only, U2>(true), "");
-  static_assert(test_category<is_consteval_only, S3>(true), "");
-  static_assert(test_category<is_consteval_only, S4>(true), "");
-
-  // Sanity check.
-  static_assert(test_category<is_consteval_only, int>(false), "");
-  static_assert(test_category<is_consteval_only, S5>(false), "");
-}
diff --git a/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
index 0ef2bc95f780..19cb43aa0994 100644
--- a/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
+++ b/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
@@ -335,9 +335,6 @@ static_assert(!is_convertible_v<const int&, int&>
 static_assert(is_reflection_v<decltype(^^int)>
 	      && is_reflection<decltype(^^int)>::value, "");
 static_assert(!is_reflection_v<int> && !is_reflection<int>::value, "");
-static_assert(is_consteval_only_v<decltype(^^int)>
-	      && is_consteval_only<decltype(^^int)>::value, "");
-static_assert(!is_consteval_only_v<int> && !is_consteval_only<int>::value, "");
 #endif
 
 #if __cpp_lib_is_structural >= 202603L

From tkaminsk@gcc.gnu.org  Wed Apr  8 06:47:38 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  8 Apr 2026 06:47:38 +0000 (GMT)
Subject: [gcc r16-8523] libstdc++: Move constant_wrapper from <type_traits> to
 <utility>
Message-ID: <20260408064738.B3B824BA5439@sourceware.org>

https://gcc.gnu.org/g:58564c85c5dd221b26c65a26b4bd0a6ccb6e3178

commit r16-8523-g58564c85c5dd221b26c65a26b4bd0a6ccb6e3178
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 7 13:19:20 2026 +0200

    libstdc++: Move constant_wrapper from <type_traits> to <utility>
    
    Change placement of constant_wrapper and related classes per
    P3978R3: constant_wrapper should unwrap on call and subscript.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/utility.h                | 325 ++++++++++++++++++++
 libstdc++-v3/include/std/type_traits               | 326 ---------------------
 libstdc++-v3/include/std/utility                   |   1 +
 .../testsuite/20_util/constant_wrapper/adl.cc      |   2 +-
 .../testsuite/20_util/constant_wrapper/ex.cc       |   2 +-
 .../testsuite/20_util/constant_wrapper/generic.cc  |   1 -
 .../20_util/constant_wrapper/instantiate.cc        |   1 -
 .../20_util/constant_wrapper/op_comma_neg.cc       |   2 +-
 .../20_util/constant_wrapper/other_wrappers.cc     |   2 +-
 .../testsuite/20_util/constant_wrapper/version.cc  |   4 +-
 10 files changed, 332 insertions(+), 334 deletions(-)

diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index bd6b18d54dd3..970e63e81706 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -137,6 +137,331 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     using tuple_element_t = typename tuple_element<__i, _Tp>::type;
 #endif
 
+#ifdef __glibcxx_constant_wrapper // C++ >= 26
+  template<typename _Tp>
+    struct _CwFixedValue
+    {
+      using __type = _Tp;
+
+      constexpr
+      _CwFixedValue(__type __v) noexcept
+      : _M_data(__v) { }
+
+      __type _M_data;
+    };
+
+  template<typename _Tp, size_t _Extent>
+    struct _CwFixedValue<_Tp[_Extent]>
+    {
+      using __type = _Tp[_Extent];
+
+      constexpr
+      _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
+        : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
+      { }
+
+      template<size_t... _Indices>
+	constexpr
+	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
+	  : _M_data{__arr[_Indices]...}
+	{ }
+
+      _Tp _M_data[_Extent];
+    };
+
+  template<typename _Tp, size_t _Extent>
+    _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
+
+  template<_CwFixedValue _Xv,
+	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
+    struct constant_wrapper;
+
+  template<typename _Tp>
+    concept _ConstExprParam = requires
+    {
+      typename constant_wrapper<_Tp::value>;
+    };
+
+  struct _CwOperators
+  {
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator+(_Tp) noexcept -> constant_wrapper<(+_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator-(_Tp) noexcept -> constant_wrapper<(-_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator~(_Tp) noexcept -> constant_wrapper<(~_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator!(_Tp) noexcept -> constant_wrapper<(!_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator&(_Tp) noexcept -> constant_wrapper<(&_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      friend constexpr auto
+      operator*(_Tp) noexcept -> constant_wrapper<(*_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator+(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value + _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator-(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value - _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator*(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value * _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator/(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value / _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator%(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value % _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator<<(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value << _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator>>(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value >> _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator&(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value & _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator|(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value | _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator^(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value ^ _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      requires (!is_constructible_v<bool, decltype(_Left::value)>
+		|| !is_constructible_v<bool, decltype(_Right::value)>)
+      friend constexpr auto
+      operator&&(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value && _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      requires (!is_constructible_v<bool, decltype(_Left::value)>
+		|| !is_constructible_v<bool, decltype(_Right::value)>)
+      friend constexpr auto
+      operator||(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value || _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator<=>(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value <=> _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator<(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value < _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator<=(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value <= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator==(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value == _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator!=(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value != _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator>(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value > _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator>=(_Left, _Right) noexcept
+	-> constant_wrapper<(_Left::value >= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator,(_Left, _Right) noexcept = delete;
+
+    template<_ConstExprParam _Left, _ConstExprParam _Right>
+      friend constexpr auto
+      operator->*(_Left, _Right) noexcept
+	-> constant_wrapper<_Left::value->*(_Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
+      constexpr auto
+      operator()(this _Tp, _Args...) noexcept
+      requires
+	requires(_Args...) { constant_wrapper<_Tp::value(_Args::value...)>(); }
+      { return constant_wrapper<_Tp::value(_Args::value...)>{}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
+      constexpr auto
+      operator[](this _Tp, _Args...) noexcept
+	-> constant_wrapper<(_Tp::value[_Args::value...])>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      constexpr auto
+      operator++(this _Tp) noexcept
+ 	-> constant_wrapper<(++_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      constexpr auto
+      operator++(this _Tp, int) noexcept
+ 	-> constant_wrapper<(_Tp::value++)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      constexpr auto
+      operator--(this _Tp) noexcept
+ 	-> constant_wrapper<(--_Tp::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp>
+      constexpr auto
+      operator--(this _Tp, int) noexcept
+ 	-> constant_wrapper<(_Tp::value--)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator+=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value += _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator-=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value -= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator*=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value *= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator/=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value /= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator%=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value %= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator&=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value &= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator|=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value |= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator^=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value ^= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator<<=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value <<= _Right::value)>
+      { return {}; }
+
+    template<_ConstExprParam _Tp, _ConstExprParam _Right>
+      constexpr auto
+      operator>>=(this _Tp, _Right) noexcept
+  	-> constant_wrapper<(_Tp::value >>= _Right::value)>
+      { return {}; }
+  };
+
+  template<_CwFixedValue _Xv, typename>
+  struct constant_wrapper : _CwOperators
+  {
+    static constexpr const auto& value = _Xv._M_data;
+    using type = constant_wrapper;
+    using value_type = typename decltype(_Xv)::__type;
+
+    template<_ConstExprParam _Right>
+      constexpr auto
+      operator=(_Right) const noexcept
+  	-> constant_wrapper<(value = _Right::value)>
+      { return {}; }
+
+    constexpr
+    operator decltype(value)() const noexcept
+    { return value; }
+  };
+
+  template<_CwFixedValue _Tp>
+    constexpr auto cw = constant_wrapper<_Tp>{};
+#endif
+
 #ifdef __glibcxx_integer_sequence // C++ >= 14
 
   /// Class template integer_sequence
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 30214194da03..59be925e10a6 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -42,7 +42,6 @@
 #define __glibcxx_want_bool_constant
 #define __glibcxx_want_bounded_array_traits
 #define __glibcxx_want_common_reference
-#define __glibcxx_want_constant_wrapper
 #define __glibcxx_want_has_unique_object_representations
 #define __glibcxx_want_integral_constant_callable
 #define __glibcxx_want_is_aggregate
@@ -4385,331 +4384,6 @@ template<typename _Ret, typename _Fn, typename... _Args>
     };
 #endif // C++11
 
-#ifdef __cpp_lib_constant_wrapper // C++ >= 26
-  template<typename _Tp>
-    struct _CwFixedValue
-    {
-      using __type = _Tp;
-
-      constexpr
-      _CwFixedValue(__type __v) noexcept
-      : _M_data(__v) { }
-
-      __type _M_data;
-    };
-
-  template<typename _Tp, size_t _Extent>
-    struct _CwFixedValue<_Tp[_Extent]>
-    {
-      using __type = _Tp[_Extent];
-
-      constexpr
-      _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
-        : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
-      { }
-
-      template<size_t... _Indices>
-	constexpr
-	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
-	  : _M_data{__arr[_Indices]...}
-	{ }
-
-      _Tp _M_data[_Extent];
-    };
-
-  template<typename _Tp, size_t _Extent>
-    _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
-
-  template<_CwFixedValue _Xv,
-	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
-    struct constant_wrapper;
-
-  template<typename _Tp>
-    concept _ConstExprParam = requires
-    {
-      typename constant_wrapper<_Tp::value>;
-    };
-
-  struct _CwOperators
-  {
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator+(_Tp) noexcept -> constant_wrapper<(+_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator-(_Tp) noexcept -> constant_wrapper<(-_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator~(_Tp) noexcept -> constant_wrapper<(~_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator!(_Tp) noexcept -> constant_wrapper<(!_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator&(_Tp) noexcept -> constant_wrapper<(&_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      friend constexpr auto
-      operator*(_Tp) noexcept -> constant_wrapper<(*_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator+(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value + _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator-(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value - _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator*(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value * _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator/(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value / _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator%(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value % _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator<<(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value << _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator>>(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value >> _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator&(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value & _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator|(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value | _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator^(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value ^ _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      requires (!is_constructible_v<bool, decltype(_Left::value)>
-		|| !is_constructible_v<bool, decltype(_Right::value)>)
-      friend constexpr auto
-      operator&&(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value && _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      requires (!is_constructible_v<bool, decltype(_Left::value)>
-		|| !is_constructible_v<bool, decltype(_Right::value)>)
-      friend constexpr auto
-      operator||(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value || _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator<=>(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value <=> _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator<(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value < _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator<=(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value <= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator==(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value == _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator!=(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value != _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator>(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value > _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator>=(_Left, _Right) noexcept
-	-> constant_wrapper<(_Left::value >= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator,(_Left, _Right) noexcept = delete;
-
-    template<_ConstExprParam _Left, _ConstExprParam _Right>
-      friend constexpr auto
-      operator->*(_Left, _Right) noexcept
-	-> constant_wrapper<_Left::value->*(_Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
-      constexpr auto
-      operator()(this _Tp, _Args...) noexcept
-      requires
-	requires(_Args...) { constant_wrapper<_Tp::value(_Args::value...)>(); }
-      { return constant_wrapper<_Tp::value(_Args::value...)>{}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
-      constexpr auto
-      operator[](this _Tp, _Args...) noexcept
-	-> constant_wrapper<(_Tp::value[_Args::value...])>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      constexpr auto
-      operator++(this _Tp) noexcept
- 	-> constant_wrapper<(++_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      constexpr auto
-      operator++(this _Tp, int) noexcept
- 	-> constant_wrapper<(_Tp::value++)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      constexpr auto
-      operator--(this _Tp) noexcept
- 	-> constant_wrapper<(--_Tp::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp>
-      constexpr auto
-      operator--(this _Tp, int) noexcept
- 	-> constant_wrapper<(_Tp::value--)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator+=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value += _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator-=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value -= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator*=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value *= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator/=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value /= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator%=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value %= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator&=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value &= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator|=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value |= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator^=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value ^= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator<<=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value <<= _Right::value)>
-      { return {}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam _Right>
-      constexpr auto
-      operator>>=(this _Tp, _Right) noexcept
-  	-> constant_wrapper<(_Tp::value >>= _Right::value)>
-      { return {}; }
-  };
-
-  template<_CwFixedValue _Xv, typename>
-  struct constant_wrapper : _CwOperators
-  {
-    static constexpr const auto& value = _Xv._M_data;
-    using type = constant_wrapper;
-    using value_type = typename decltype(_Xv)::__type;
-
-    template<_ConstExprParam _Right>
-      constexpr auto
-      operator=(_Right) const noexcept
-  	-> constant_wrapper<(value = _Right::value)>
-      { return {}; }
-
-    constexpr
-    operator decltype(value)() const noexcept
-    { return value; }
-  };
-
-  template<_CwFixedValue _Tp>
-    constexpr auto cw = constant_wrapper<_Tp>{};
-#endif
-
   /// @} group metaprogramming
 
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index 7d9d3653cd00..2e1775bf6b3d 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -87,6 +87,7 @@
 
 #define __glibcxx_want_addressof_constexpr
 #define __glibcxx_want_as_const
+#define __glibcxx_want_constant_wrapper
 #define __glibcxx_want_constexpr_algorithms
 #define __glibcxx_want_constexpr_utility
 #define __glibcxx_want_exchange_function
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
index 3cdc09c1eb74..3629e4fc5597 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
@@ -1,5 +1,5 @@
 // { dg-do compile { target c++26 } }
-#include <type_traits>
+#include <utility>
 #include <concepts>
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
index a4d967b96340..a5d19fd81324 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
@@ -1,5 +1,5 @@
 // { dg-do compile { target c++26 } }
-#include <type_traits>
+#include <utility>
 #include <iostream>
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
index de4334b64f5b..1c7770d7a899 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
@@ -1,5 +1,4 @@
 // { dg-do run { target c++26 } }
-#include <type_traits>
 #include <utility>
 #include <string_view>
 
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
index 5adf6fda5a38..452f01fadcdc 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
@@ -1,5 +1,4 @@
 // { dg-do run { target c++26 } }
-#include <type_traits>
 #include <utility>
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
index 4384e920ea58..2fc8c78c2da0 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
@@ -1,5 +1,5 @@
 // { dg-do compile { target c++26 } }
-#include <type_traits>
+#include <utility>
 
 constexpr void
 test_comma_same_types()
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
index 3c3cfafd6ed3..fe45c5a85162 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
@@ -1,5 +1,5 @@
 // { dg-do run { target c++26 } }
-#include <type_traits>
+#include <utility>
 #include <concepts>
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
index 4fee6159141d..776d80c576a3 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
@@ -1,10 +1,10 @@
 // { dg-do preprocess { target c++26 } }
 // { dg-add-options no_pch }
 
-#include <type_traits>
+#include <utility>
 
 #ifndef __cpp_lib_constant_wrapper
-#error "Feature test macro __cpp_lib_constant_wrapper is missing for <type_traits>"
+#error "Feature test macro __cpp_lib_constant_wrapper is missing for <utility>"
 #if __cpp_lib_constant_wrapper < 202506L
 #error "Feature test macro __cpp_lib_constant_wrapper has the wrong value"
 #endif

From tkaminsk@gcc.gnu.org  Wed Apr  8 11:33:09 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  8 Apr 2026 11:33:09 +0000 (GMT)
Subject: [gcc r16-8526] libstdc++: Remove non_type and replace it with
 constant_wrapper in function_ref
Message-ID: <20260408113309.EC61B4BA2E08@sourceware.org>

https://gcc.gnu.org/g:52b44d966edc34611e01e505fee92f924a213df2

commit r16-8526-g52b44d966edc34611e01e505fee92f924a213df2
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Tue Nov 11 16:27:34 2025 +0100

    libstdc++: Remove non_type and replace it with constant_wrapper in function_ref
    
    This implements P3948R1: constant_wrapper is the only tool needed
    for passing constant expressions via function arguments.
    
    This changes function_ref from nontype_t to constant_wrapper and
    implements the ambiguity check (static_asert in function_ref
    from constant_wrapper constructor).
    
    In addition to P3948R1 this also includes the (forgotten) deduction
    guide changes suggested in the draft PR [1].
    
    [1] https://github.com/cplusplus/draft/pull/8878
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Co-authored-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/funcref_impl.h           | 36 ++++++----
 libstdc++-v3/include/bits/funcwrap.h               | 13 ++--
 libstdc++-v3/include/bits/utility.h                | 23 ++----
 libstdc++-v3/src/c++23/std.cc.in                   |  4 --
 .../testsuite/20_util/function_ref/assign.cc       | 27 ++++---
 .../testsuite/20_util/function_ref/call.cc         | 51 +++++++------
 .../testsuite/20_util/function_ref/cons.cc         | 83 +++++++++++-----------
 .../testsuite/20_util/function_ref/cons_neg.cc     | 17 +++--
 .../testsuite/20_util/function_ref/cw_cons_neg.cc  | 35 +++++++++
 .../testsuite/20_util/function_ref/dangling.cc     |  2 +-
 .../testsuite/20_util/function_ref/deduction.cc    | 48 ++++++-------
 .../testsuite/20_util/function_ref/mutation.cc     |  9 ++-
 12 files changed, 185 insertions(+), 163 deletions(-)

diff --git a/libstdc++-v3/include/bits/funcref_impl.h b/libstdc++-v3/include/bits/funcref_impl.h
index 3d55c8406b09..9fcab570803f 100644
--- a/libstdc++-v3/include/bits/funcref_impl.h
+++ b/libstdc++-v3/include/bits/funcref_impl.h
@@ -129,12 +129,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 4256. Incorrect constrains for function_ref constructors from nontype
       /// Target object is __fn. There is no bound object.
-      template<auto __fn>
-	requires __is_invocable_using<const decltype(__fn)&>
+      template<auto __cwfn, typename _Fn>
+	requires __is_invocable_using<const _Fn&>
 	constexpr
-	function_ref(nontype_t<__fn>) noexcept
+	function_ref(constant_wrapper<__cwfn, _Fn>) noexcept
 	{
-	  using _Fn = remove_cv_t<decltype(__fn)>;
+	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
+	  if constexpr (sizeof...(_ArgTypes) > 0)
+	    if constexpr ((... && _ConstExprParam<remove_cvref_t<_ArgTypes>>))
+	      static_assert(!requires {
+	        typename constant_wrapper<
+		  std::__invoke(__fn, remove_cvref_t<_ArgTypes>::value...)>;
+	      }, "cw<fn>(args...) should be equivalent to fn(args...)");
+
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 
@@ -144,13 +151,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
       /// Bound object is object referenced by second parameter.
-      template<auto __fn, typename _Up, typename _Td = remove_reference_t<_Up>>
+      template<auto __cwfn, typename _Fn, typename _Up,
+	       typename _Td = remove_reference_t<_Up>>
 	requires (!is_rvalue_reference_v<_Up&&>)
-	  && __is_invocable_using<const decltype(__fn)&, _Td _GLIBCXX_MOF_CV&>
+		 && __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV&>
 	constexpr
-	function_ref(nontype_t<__fn>, _Up&& __ref) noexcept
+	function_ref(constant_wrapper<__cwfn, _Fn>, _Up&& __ref) noexcept
 	{
-	  using _Fn = remove_cv_t<decltype(__fn)>;
+	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 
@@ -166,12 +174,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(__ptr).
       /// Bound object is object pointed by second parameter (if any).
-      template<auto __fn, typename _Td>
-	requires __is_invocable_using<const decltype(__fn)&, _Td _GLIBCXX_MOF_CV*>
+      template< auto __cwfn, typename _Fn, typename _Td>
+	requires __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV*>
 	constexpr
-	function_ref(nontype_t<__fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
+	function_ref(constant_wrapper<__cwfn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
 	{
-	  using _Fn = remove_cv_t<decltype(__fn)>;
+	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 	  if constexpr (is_member_pointer_v<_Fn>)
@@ -182,8 +190,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
 
       template<typename _Tp>
-	requires (!is_same_v<_Tp, function_ref>)
-	       && (!is_pointer_v<_Tp>) && (!__is_nontype_v<_Tp>)
+	requires (!is_same_v<_Tp, function_ref>) && (!is_pointer_v<_Tp>)
+		 && (!__is_constant_wrapper_v<_Tp>)
 	function_ref&
 	operator=(_Tp) = delete;
 
diff --git a/libstdc++-v3/include/bits/funcwrap.h b/libstdc++-v3/include/bits/funcwrap.h
index 6441893d2135..b835e075295b 100644
--- a/libstdc++-v3/include/bits/funcwrap.h
+++ b/libstdc++-v3/include/bits/funcwrap.h
@@ -573,15 +573,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     requires is_function_v<_Fn>
     function_ref(_Fn*) -> function_ref<_Fn>;
 
-  template<auto __f, class _Fn = remove_pointer_t<decltype(__f)>>
-    requires is_function_v<_Fn>
-    function_ref(nontype_t<__f>) -> function_ref<_Fn>;
+  template<auto __cwfn, typename _Fn>
+    requires is_function_v<remove_pointer_t<_Fn>>
+    function_ref(constant_wrapper<__cwfn, _Fn>)
+      -> function_ref<remove_pointer_t<_Fn>>;
 
-  template<auto __f, typename _Tp,
+  template<auto __cwfn, typename _Fn, typename _Tp,
 	   typename _SignaturePtr =
-	     decltype(__polyfunc::__deduce_funcref<decltype(__f), _Tp&>())>
+	     decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>
     requires (!is_void_v<_SignaturePtr>)
-    function_ref(nontype_t<__f>, _Tp&&)
+    function_ref(constant_wrapper<__cwfn, _Fn>, _Tp&&)
       -> function_ref<remove_pointer_t<_SignaturePtr>>;
 
 #endif // __glibcxx_function_ref
diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index 970e63e81706..93e9e9f9dba2 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -458,6 +458,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { return value; }
   };
 
+  template<typename>
+    constexpr bool __is_constant_wrapper_v = false;
+
+  template<auto __cw, typename _Fn>
+    constexpr bool __is_constant_wrapper_v<constant_wrapper<__cw, _Fn>> = true;
+
   template<_CwFixedValue _Tp>
     constexpr auto cw = constant_wrapper<_Tp>{};
 #endif
@@ -637,23 +643,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline constexpr sorted_equivalent_t sorted_equivalent{};
 #endif
 
-#if __glibcxx_function_ref // >= C++26
-  template<auto>
-    struct nontype_t
-    {
-      explicit nontype_t() = default;
-    };
-
-  template<auto __val>
-    constexpr nontype_t<__val> nontype{};
-
-  template<typename>
-    inline constexpr bool __is_nontype_v = false;
-
-  template<auto __val>
-    inline constexpr bool __is_nontype_v<nontype_t<__val>> = true;
-#endif
-
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index db66677d55ba..3ac198716924 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -3651,10 +3651,6 @@ export namespace std
   using std::make_integer_sequence;
   using std::move;
   using std::move_if_noexcept;
-#if __cpp_lib_function_ref
-  using std::nontype_t;
-  using std::nontype;
-#endif
   using std::pair;
   using std::swap;
   using std::operator==;
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/assign.cc b/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
index 9b02dc49c2a3..521a35fc11e0 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
@@ -8,8 +8,7 @@
 # error "Feature-test macro for function_ref has wrong value in <functional>"
 #endif
 
-using std::nontype;
-using std::nontype_t;
+using std::constant_wrapper;
 using std::function_ref;
 
 using std::is_nothrow_move_assignable_v;
@@ -55,13 +54,13 @@ static_assert( ! is_assignable_v<function_ref<int(S)>, decltype(&S::x)> );
 static_assert( ! is_assignable_v<function_ref<int(S)>, decltype(&S::f)> );
 
 static_assert( is_nothrow_assignable_v<function_ref<int(S)>,
-				       nontype_t<funS>> );
+				       constant_wrapper<funS>> );
 static_assert( is_nothrow_assignable_v<function_ref<int(S)>,
-				       nontype_t<&funS>> );
+				       constant_wrapper<&funS>> );
 static_assert( is_nothrow_assignable_v<function_ref<int(S)>,
-				       nontype_t<&S::x>> );
+				       constant_wrapper<&S::x>> );
 static_assert( is_nothrow_assignable_v<function_ref<int(S)>,
-				       nontype_t<&S::f>> );
+				       constant_wrapper<&S::f>> );
 struct Q
 {
   void operator()() const;
@@ -75,22 +74,22 @@ static_assert( ! is_assignable_v<function_ref<void() const>, Q&> );
 static_assert( ! is_assignable_v<function_ref<void() const>, const Q&> );
 
 static_assert( is_nothrow_assignable_v<function_ref<void()>,
-				       nontype_t<Q{}>> );
+				       constant_wrapper<Q{}>> );
 static_assert( is_nothrow_assignable_v<function_ref<void() const>,
-				       nontype_t<Q{}>> );
+				       constant_wrapper<Q{}>> );
 
 constexpr bool
 test_constexpr()
 {
-  function_ref<void(S)> fp(nontype<funS>);
-  fp = nontype<funS>;
-  fp = nontype<&funS>;
-  fp = nontype<&S::x>;
-  fp = nontype<&S::f>;
+  function_ref<void(S)> fp(std::cw<funS>);
+  fp = std::cw<funS>;
+  fp = std::cw<&funS>;
+  fp = std::cw<&S::x>;
+  fp = std::cw<&S::f>;
 
   constexpr Q cq;
   function_ref<void() const> fq(cq);
-  fq = nontype<cq>;
+  fq = std::cw<cq>;
   return true;
 }
 static_assert( test_constexpr() );
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/call.cc b/libstdc++-v3/testsuite/20_util/function_ref/call.cc
index 49c6030b221a..386c8de790ab 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/call.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/call.cc
@@ -4,7 +4,6 @@
 #include <utility>
 #include <testsuite_hooks.h>
 
-using std::nontype;
 using std::function_ref;
 
 using std::is_same_v;
@@ -43,7 +42,7 @@ test01()
   VERIFY( f0() == 0 );
   VERIFY( std::move(f0)() == 0 );
 
-  function_ref<int()> f1{nontype<F{}>};
+  function_ref<int()> f1{std::cw<F{}>};
   VERIFY( f1() == 1 );
   VERIFY( std::move(f1)() == 1 );
 
@@ -53,7 +52,7 @@ test01()
   VERIFY( std::move(f2)() == 1 );
   VERIFY( std::move(std::as_const(f2))() == 1 );
 
-  function_ref<int() const> f3{nontype<F{}>};
+  function_ref<int() const> f3{std::cw<F{}>};
   VERIFY( f3() == 1 );
   VERIFY( std::as_const(f3)() == 1 );
   VERIFY( std::move(f3)() == 1 );
@@ -71,11 +70,11 @@ test02()
   };
   F::Arg arg;
 
-  function_ref<int()> f0{std::nontype<F{}>, arg};
+  function_ref<int()> f0{std::cw<F{}>, arg};
   VERIFY( f0() == 0 );
   VERIFY( std::move(f0)() == 0 );
 
-  function_ref<int() const> f1{std::nontype<F{}>, arg};
+  function_ref<int() const> f1{std::cw<F{}>, arg};
   VERIFY( f1() == 1 );
   VERIFY( std::as_const(f1)() == 1 );
 }
@@ -91,11 +90,11 @@ test03()
   };
   F::Arg arg;
 
-  function_ref<int()> f0{std::nontype<F{}>, &arg};
+  function_ref<int()> f0{std::cw<F{}>, &arg};
   VERIFY( f0() == 0 );
   VERIFY( std::move(f0)() == 0 );
 
-  function_ref<int() const> f1{std::nontype<F{}>, &arg};
+  function_ref<int() const> f1{std::cw<F{}>, &arg};
   VERIFY( f1() == 1 );
   VERIFY( std::as_const(f1)() == 1 );
 }
@@ -108,7 +107,7 @@ test04()
   VERIFY( f0() == 0 );
   VERIFY( std::move(f0)() == 0 );
 
-  function_ref<int()> f1{nontype<fp>};
+  function_ref<int()> f1{std::cw<fp>};
   VERIFY( f1() == 0 );
   VERIFY( std::move(f1)() == 0 );
 
@@ -116,7 +115,7 @@ test04()
   VERIFY( f2() == 0 );
   VERIFY( std::move(f2)() == 0 );
 
-  const function_ref<int() const> f3{nontype<fp>};
+  const function_ref<int() const> f3{std::cw<fp>};
   VERIFY( f2() == 0 );
   VERIFY( std::move(f2)() == 0 );
 }
@@ -130,14 +129,14 @@ int callback_ref(ftype& f, int x) { return f(x); }
 void
 test05()
 {
-  function_ref<int(int)> r1(nontype<&callback_ptr>, &twice);
+  function_ref<int(int)> r1(std::cw<&callback_ptr>, &twice);
   VERIFY( r1(2) == 4 );
-  function_ref<int(int)> r2(nontype<&callback_ptr>, cube);
+  function_ref<int(int)> r2(std::cw<&callback_ptr>, cube);
   VERIFY( r2(2) == 8 );
 
-  function_ref<int(int)> r3(nontype<&callback_ref>, twice);
+  function_ref<int(int)> r3(std::cw<&callback_ref>, twice);
   VERIFY( r3(3) == 6 );
-  function_ref<int(int)> r4(nontype<&callback_ref>, cube);
+  function_ref<int(int)> r4(std::cw<&callback_ref>, cube);
   VERIFY( r4(3) == 27 );
 }
 
@@ -174,37 +173,37 @@ test06()
   std::function_ref<const int&(int, int) const> e8(std::as_const(csr));
   VERIFY( &e8(0, 0) == &s.v );
 
-  std::function_ref<int&()> f1(std::nontype<&S::v>, sr);
+  std::function_ref<int&()> f1(std::cw<&S::v>, sr);
   VERIFY( &f1() == &s.v );
-  std::function_ref<const int&()> f2(std::nontype<&S::v>, sr);
+  std::function_ref<const int&()> f2(std::cw<&S::v>, sr);
   VERIFY( &f2() == &s.v );
-  std::function_ref<int&()> f3(std::nontype<&S::m>, sr);
+  std::function_ref<int&()> f3(std::cw<&S::m>, sr);
   VERIFY( &f3() == &s.v );
-  std::function_ref<const int&()> f4(std::nontype<&S::c>, sr);
+  std::function_ref<const int&()> f4(std::cw<&S::c>, sr);
   VERIFY( &f4() == &s.v );
 
-  std::function_ref<const int&()> f5(std::nontype<&S::v>, csr);
+  std::function_ref<const int&()> f5(std::cw<&S::v>, csr);
   VERIFY( &f5() == &s.v );
-  std::function_ref<const int&()> f6(std::nontype<&S::c>, sr);
+  std::function_ref<const int&()> f6(std::cw<&S::c>, sr);
   VERIFY( &f6() == &s.v );
   static_assert( !std::is_constructible_v<
     std::function_ref<int&()>,
-    std::nontype_t<&S::c>, std::reference_wrapper<S>&>
+    std::constant_wrapper<&S::c>, std::reference_wrapper<S>&>
    );
 
-  std::function_ref<int&()> f7(std::nontype<&S::v>, std::as_const(sr));
+  std::function_ref<int&()> f7(std::cw<&S::v>, std::as_const(sr));
   VERIFY( &f7() == &s.v );
-  std::function_ref<const int&()> f8(std::nontype<&S::m>, std::as_const(sr));
+  std::function_ref<const int&()> f8(std::cw<&S::m>, std::as_const(sr));
   VERIFY( &f8() == &s.v );
 
   // No rvalue reference_wrapper support
   static_assert( !std::is_constructible_v<
     std::function_ref<int&()>,
-    std::nontype_t<&S::v>, std::reference_wrapper<S>>
+    std::constant_wrapper<&S::v>, std::reference_wrapper<S>>
   );
   static_assert( !std::is_constructible_v<
     std::function_ref<int&()>,
-    std::nontype_t<&S::v>, std::reference_wrapper<const S>>
+    std::constant_wrapper<&S::v>, std::reference_wrapper<const S>>
   );
 
   // reference to reference_wrapper are bound, so mutation are visible
@@ -232,9 +231,9 @@ test06()
   { return &x; };
 
   // identity of reference_wrapper is preserved
-  std::function_ref<const std::reference_wrapper<S>*()> g1(std::nontype<id>, sr);
+  std::function_ref<const std::reference_wrapper<S>*()> g1(std::cw<id>, sr);
   VERIFY( g1() == &sr );
-  std::function_ref<const std::reference_wrapper<const S>*()> g2(std::nontype<id>, csr);
+  std::function_ref<const std::reference_wrapper<const S>*()> g2(std::cw<id>, csr);
   VERIFY( g2() == &csr );
 }
 
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
index a91f5ba3dab2..78aebd38a074 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
@@ -9,8 +9,7 @@
 # error "Feature-test macro for function_ref has wrong value in <functional>"
 #endif
 
-using std::nontype;
-using std::nontype_t;
+using std::constant_wrapper;
 using std::function_ref;
 
 using std::is_default_constructible_v;
@@ -60,31 +59,31 @@ static_assert( ! is_constructible_v<function_ref<int(S)>,
 				    decltype(&S::f)> );
 
 static_assert( is_nothrow_constructible_v<function_ref<int(S)>,
-					  nontype_t<funS>> );
+					  constant_wrapper<funS>> );
 static_assert( is_nothrow_constructible_v<function_ref<int(S)>,
-					  nontype_t<&funS>> );
+					  constant_wrapper<&funS>> );
 static_assert( is_nothrow_constructible_v<function_ref<int(S)>,
-					  nontype_t<&S::x>> );
+					  constant_wrapper<&S::x>> );
 static_assert( is_nothrow_constructible_v<function_ref<int(S)>,
-					  nontype_t<&S::f>> );
+					  constant_wrapper<&S::f>> );
 
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<funS>, S&> );
+					  constant_wrapper<funS>, S&> );
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<&funS>, S&> );
+					  constant_wrapper<&funS>, S&> );
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<&S::x>, S&> );
+					  constant_wrapper<&S::x>, S&> );
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<&S::f>, S&> );
+					  constant_wrapper<&S::f>, S&> );
 
 static_assert( ! is_constructible_v<function_ref<int()>,
-				    nontype_t<funS>, S*> );
+				    constant_wrapper<funS>, S*> );
 static_assert( ! is_constructible_v<function_ref<int()>,
-				    nontype_t<&funS>, S*> );
+				    constant_wrapper<&funS>, S*> );
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<&S::x>, S*> );
+					  constant_wrapper<&S::x>, S*> );
 static_assert( is_nothrow_constructible_v<function_ref<int()>,
-					  nontype_t<&S::f>, S*> );
+					  constant_wrapper<&S::f>, S*> );
 
 struct M
 {
@@ -98,9 +97,9 @@ static_assert( ! is_constructible_v<function_ref<void()>, const M&> );
 static_assert( ! is_constructible_v<function_ref<void() const>, M> );
 static_assert( ! is_constructible_v<function_ref<void() const>, const M&> );
 static_assert( ! is_constructible_v<function_ref<void()>,
-				    nontype_t<M{}>> );
+				    constant_wrapper<M{}>> );
 static_assert( ! is_constructible_v<function_ref<void() const>,
-				    nontype_t<M{}>> );
+				    constant_wrapper<M{}>> );
 struct Q
 {
   void operator()(int) const;
@@ -115,22 +114,22 @@ static_assert( is_nothrow_constructible_v<function_ref<void(int) const>, Q&> );
 static_assert( is_nothrow_constructible_v<function_ref<void(int) const>, const Q&> );
 
 static_assert( is_nothrow_constructible_v<function_ref<void(int)>,
-					  nontype_t<Q{}>> );
+					  constant_wrapper<Q{}>> );
 static_assert( is_nothrow_constructible_v<function_ref<void(int) const>,
-					  nontype_t<Q{}>> );
+					  constant_wrapper<Q{}>> );
 static_assert( is_nothrow_constructible_v<function_ref<void()>,
-					  nontype_t<Q{}>, int&> );
+					  constant_wrapper<Q{}>, int&> );
 static_assert( is_nothrow_constructible_v<function_ref<void() const>,
-					  nontype_t<Q{}>, int&> );
+					  constant_wrapper<Q{}>, int&> );
 static_assert( ! is_constructible_v<function_ref<void()>,
-				    nontype_t<Q{}>, int> );
+				    constant_wrapper<Q{}>, int> );
 static_assert( ! is_constructible_v<function_ref<void() const>,
-				    nontype_t<Q{}>, int> );
+				    constant_wrapper<Q{}>, int> );
 
 static_assert( is_nothrow_constructible_v<function_ref<void()>,
-					  nontype_t<Q{}>, int*> );
+					  constant_wrapper<Q{}>, int*> );
 static_assert( ! is_constructible_v<function_ref<void() const>,
-				    nontype_t<Q{}>, int*> );
+				    constant_wrapper<Q{}>, int*> );
 
 struct L
 {
@@ -143,9 +142,9 @@ static_assert( ! is_constructible_v<function_ref<void()>, const L&> );
 static_assert( ! is_constructible_v<function_ref<void() const>, L> );
 static_assert( ! is_constructible_v<function_ref<void() const>, const L&> );
 static_assert( ! is_constructible_v<function_ref<void()>,
-				    nontype_t<L{}>> );
+				    constant_wrapper<L{}>> );
 static_assert( ! is_constructible_v<function_ref<void() const>,
-				    nontype_t<L{}>> );
+				    constant_wrapper<L{}>> );
 
 struct R
 {
@@ -159,24 +158,24 @@ static_assert( ! is_constructible_v<function_ref<void(float) const>, R&> );
 static_assert( ! is_constructible_v<function_ref<void(float) const>, const R&> );
 
 static_assert( ! is_constructible_v<function_ref<void(float)>,
-						 nontype_t<R{}>> );
+				    constant_wrapper<R{}>> );
 static_assert( ! is_constructible_v<function_ref<void(float) const>,
-						 nontype_t<R{}>> );
+				    constant_wrapper<R{}>> );
 
 constexpr bool
 test_constexpr()
 {
-  function_ref<void(S)> fp1(nontype<funS>);
-  function_ref<void(S)> fp3(nontype<&funS>);
-  function_ref<void(S)> fp4(nontype<&S::x>);
-  function_ref<void(S)> fp5(nontype<&S::f>);
+  function_ref<void(S)> fp1(std::cw<funS>);
+  function_ref<void(S)> fp3(std::cw<&funS>);
+  function_ref<void(S)> fp4(std::cw<&S::x>);
+  function_ref<void(S)> fp5(std::cw<&S::f>);
 
   S s;
-  function_ref<void()> fp6(nontype<&funS>, s);
-  function_ref<void()> fp7(nontype<&S::x>, s);
-  function_ref<void()> fp8(nontype<&S::x>, &s);
-  function_ref<void()> fp9(nontype<&S::f>, s);
-  function_ref<void()> fp10(nontype<&S::f>, &s);
+  function_ref<void()> fp6(std::cw<&funS>, s);
+  function_ref<void()> fp7(std::cw<&S::x>, s);
+  function_ref<void()> fp8(std::cw<&S::x>, &s);
+  function_ref<void()> fp9(std::cw<&S::f>, s);
+  function_ref<void()> fp10(std::cw<&S::f>, &s);
 
   M m;
   function_ref<void()> fm1(m);
@@ -190,13 +189,13 @@ test_constexpr()
 
   function_ref<void(int)> fcq1(cq);
   function_ref<void(int) const> f(cq);
-  function_ref<void(int)> fcq3(nontype<cq>);
-  function_ref<void(int) const> fcq4(nontype<cq>);
+  function_ref<void(int)> fcq3(std::cw<cq>);
+  function_ref<void(int) const> fcq4(std::cw<cq>);
 
   int i = 0;
-  function_ref<void()> fcq5(nontype<cq>, i);
-  function_ref<void() const> fcq6(nontype<cq>, i);
-  function_ref<void()> fcq7(nontype<cq>, &i);
+  function_ref<void()> fcq5(std::cw<cq>, i);
+  function_ref<void() const> fcq6(std::cw<cq>, i);
+  function_ref<void()> fcq7(std::cw<cq>, &i);
 
   L l;
   function_ref<void()> fl1(l);
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc b/libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
index 050090df3704..a426ac64cd53 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
@@ -2,7 +2,6 @@
 
 #include <functional>
 
-using std::nontype;
 using std::function_ref;
 
 struct S
@@ -16,15 +15,15 @@ constexpr int(*fp)(S) = nullptr;
 constexpr int S::*mdp = nullptr;
 constexpr int (S::*mfp)() = nullptr;
 
-function_ref<int(S)> fd1(nontype<fp>);  // { dg-error "from here" }
-function_ref<int(S)> fd2(nontype<mdp>); // { dg-error "from here" }
-function_ref<int(S)> fd3(nontype<mfp>); // { dg-error "from here" }
+function_ref<int(S)> fd1(std::cw<fp>);  // { dg-error "from here" }
+function_ref<int(S)> fd2(std::cw<mdp>); // { dg-error "from here" }
+function_ref<int(S)> fd3(std::cw<mfp>); // { dg-error "from here" }
 
-function_ref<int()> br4(nontype<fp>, s);  // { dg-error "from here" }
-function_ref<int()> br5(nontype<mdp>, s); // { dg-error "from here" }
-function_ref<int()> br6(nontype<mfp>, s); // { dg-error "from here" }
+function_ref<int()> br4(std::cw<fp>, s);  // { dg-error "from here" }
+function_ref<int()> br5(std::cw<mdp>, s); // { dg-error "from here" }
+function_ref<int()> br6(std::cw<mfp>, s); // { dg-error "from here" }
 
-function_ref<int()> bp7(nontype<mdp>, &s); // { dg-error "from here" }
-function_ref<int()> bp8(nontype<mfp>, &s); // { dg-error "from here" }
+function_ref<int()> bp7(std::cw<mdp>, &s); // { dg-error "from here" }
+function_ref<int()> bp8(std::cw<mfp>, &s); // { dg-error "from here" }
 
 // { dg-prune-output "static assertion failed" }
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/cw_cons_neg.cc b/libstdc++-v3/testsuite/20_util/function_ref/cw_cons_neg.cc
new file mode 100644
index 000000000000..a295bc2ce31d
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/function_ref/cw_cons_neg.cc
@@ -0,0 +1,35 @@
+// { dg-do compile { target c++26 } }
+
+#include <functional>
+
+using std::function_ref;
+using std::constant_wrapper;
+
+struct S
+{
+  int operator()() const { return 1; }
+
+  // Non-constant, so cw<S{}>(cw<1>) call never unwrapps
+  int operator()(int) const { return 1; }
+  template<auto __cw>
+    int operator()(constant_wrapper<__cw, int>) const { return 1; }
+
+  // Constant, cw<S{}>(cw<1>, cw<2>) calls int overload
+  // while S{}(cw<1>, cw<1>) calls constant_wrapper overload
+  constexpr int operator()(int, int) const { return 1; }
+  template<auto __cw1, auto __cw2>
+    constexpr int operator()(constant_wrapper<__cw1, int>,
+			     constant_wrapper<__cw2, int>)
+    { return 1; }
+};
+
+function_ref<int()> f0a(S{});
+
+function_ref<int(int)> f1a(S{});
+function_ref<int(constant_wrapper<2>)> f1b(std::cw<S{}>);
+
+function_ref<int(int, int)> f2a(std::cw<S{}>); // OK, runtime
+function_ref<int(constant_wrapper<1>, int)> f2b(std::cw<S{}>); // OK, still runtime
+function_ref<int(constant_wrapper<2>, constant_wrapper<3>)> f2c(std::cw<S{}>); // { dg-error "from here" }
+
+// { dg-prune-output "static assertion failed" }
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc b/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
index 3cc782524f6e..4ef5d067555d 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
@@ -46,7 +46,7 @@ struct NonStatic {
   { return x + y + v; }
 };
 
-constexpr auto vNonType = create(std::nontype<NonStatic{3}>);
+constexpr auto vNonType = create(std::cw<NonStatic{3}>);
 
 struct StaticWins {
   static int
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc b/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
index b034c7af0725..63c3f6ea7e3c 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
@@ -4,15 +4,13 @@
 #include <type_traits>
 
 using std::is_same_v;
-using std::nontype;
-using std::nontype_t;
 using std::function_ref;
 
 int i = 0;
 
 template<auto f, class... Args>
   concept deductible = requires (Args&... args) 
-  { std::function_ref(std::nontype<f>, args...); };
+  { std::function_ref(std::cw<f>, args...); };
 
 static_assert( !deductible<1> );
 static_assert( !deductible<1, int> );
@@ -24,9 +22,9 @@ static_assert( is_same_v<decltype(function_ref(f0)),
 			 function_ref<void()>> );
 static_assert( is_same_v<decltype(function_ref(f0n)),
 			 function_ref<void() noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f0>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f0>)),
 			 function_ref<void()>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f0n>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f0n>)),
 			 function_ref<void() noexcept>> );
 static_assert( !deductible<f0, char*> );
 static_assert( !deductible<f0n, char*> );
@@ -38,13 +36,13 @@ static_assert( is_same_v<decltype(function_ref(f1)),
 			 function_ref<void(int)>> );
 static_assert( is_same_v<decltype(function_ref(f1n)),
 			 function_ref<void(int) noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f1>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f1>)),
 			 function_ref<void(int)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f1n>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f1n>)),
 			 function_ref<void(int) noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f1>, i)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f1>, i)),
 			 function_ref<void()>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f1n>, i)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f1n>, i)),
 			 function_ref<void() noexcept>> );
 static_assert( !deductible<f1, char*> );
 static_assert( !deductible<f1n, char*> );
@@ -56,13 +54,13 @@ static_assert( is_same_v<decltype(function_ref(f2)),
 			 function_ref<void(int*, int)>> );
 static_assert( is_same_v<decltype(function_ref(f2n)),
 			 function_ref<void(int*, int) noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f2>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f2>)),
 			 function_ref<void(int*, int)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f2n>)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f2n>)),
 			 function_ref<void(int*, int) noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f2>, &i)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f2>, &i)),
 			 function_ref<void(int)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<f2n>, &i)),
+static_assert( is_same_v<decltype(function_ref(std::cw<f2n>, &i)),
 			 function_ref<void(int) noexcept>> );
 static_assert( !deductible<f2, char*> );
 static_assert( !deductible<f2n, char*> );
@@ -88,40 +86,40 @@ struct S
 S s{};
 const S cs{};
 
-static_assert( is_same_v<decltype(function_ref(nontype<&S::mem>, s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::mem>, s)),
 			 function_ref<int&() noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::mem>, cs)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::mem>, cs)),
 			 function_ref<const int&() noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::mem>, &s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::mem>, &s)),
 			 function_ref<int&() noexcept>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::mem>, &cs)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::mem>, &cs)),
 			 function_ref<const int&() noexcept>> );
 static_assert( !deductible<&S::mem, int> );
 
-static_assert( is_same_v<decltype(function_ref(nontype<&S::f>, s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::f>, s)),
 			 function_ref<int()>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fn>, &s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fn>, &s)),
 			 function_ref<int() noexcept>> );
 static_assert( !deductible<&S::f, char*> );
 static_assert( !deductible<&S::fn, char*> );
 static_assert( !deductible<&S::f, const S> );
 static_assert( !deductible<&S::fn, const S> );
 
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fc>, &s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fc>, &s)),
 			 function_ref<int(int)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fcn>, s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fcn>, s)),
 			 function_ref<int(int) noexcept>> );
 static_assert( !deductible<&S::fc, char*> );
 static_assert( !deductible<&S::fcn, char*> );
 
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fl>, &s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fl>, &s)),
 			 function_ref<int(int)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fln>, s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fln>, s)),
 			 function_ref<int(int) noexcept>> );
 
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fcl>, s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fcl>, s)),
 			 function_ref<int(float)>> );
-static_assert( is_same_v<decltype(function_ref(nontype<&S::fcln>, &s)),
+static_assert( is_same_v<decltype(function_ref(std::cw<&S::fcln>, &s)),
 			 function_ref<int(float) noexcept>> );
 
 static_assert( !deductible<&S::fr, char*> );
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/mutation.cc b/libstdc++-v3/testsuite/20_util/function_ref/mutation.cc
index 32c6931e9a80..d55f4facbda1 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/mutation.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/mutation.cc
@@ -3,7 +3,6 @@
 #include <functional>
 #include <testsuite_hooks.h>
 
-using std::nontype;
 using std::function_ref;
 
 void
@@ -55,8 +54,8 @@ test02()
   };
   S s{10};
 
-  function_ref<int()> r1(nontype<&S::x>, s);
-  function_ref<long()> r2(nontype<&S::x>, &s);
+  function_ref<int()> r1(std::cw<&S::x>, s);
+  function_ref<long()> r2(std::cw<&S::x>, &s);
 
   VERIFY( r1() == 10 );
   VERIFY( r2() == 10 );
@@ -66,8 +65,8 @@ test02()
   VERIFY( r1() == 20 );
   VERIFY( r2() == 20 );
 
-  r1 = function_ref<int()>(nontype<&S::f>, &s);
-  r2 = function_ref<long()>(nontype<&S::f>, s);
+  r1 = function_ref<int()>(std::cw<&S::f>, &s);
+  r2 = function_ref<long()>(std::cw<&S::f>, s);
 
   VERIFY( r1() == 20 );
   VERIFY( r2() == 20 );

From gccadmin@gcc.gnu.org  Thu Apr  9 00:16:57 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu,  9 Apr 2026 00:16:57 +0000 (GMT)
Subject: [gcc r16-8540] Daily bump.
Message-ID: <20260409001657.F38174BA2E08@sourceware.org>

https://gcc.gnu.org/g:6d093fe7019f8350e8cf01d7bc6285335c1fdae4

commit r16-8540-g6d093fe7019f8350e8cf01d7bc6285335c1fdae4
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 9 00:16:29 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 12 ++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog   | 12 ++++++++
 gcc/po/ChangeLog        |  4 +++
 gcc/testsuite/ChangeLog | 56 +++++++++++++++++++++++++++++++++++++
 libphobos/ChangeLog     | 18 ++++++++++++
 libstdc++-v3/ChangeLog  | 57 +++++++++++++++++++++++++++++++++++++
 8 files changed, 234 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bc84fed80f7d..14725f9275c7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124810
+	* cfgloopmanip.cc (fix_loop_placements): Do not stop
+	iterating when an inner loop didn't get re-parented.
+	Compute the outermost loop we have to consider re-parenting.
+
+2026-04-08  Prathamesh Kulkarni  <prathameshk@nvidia.com>
+
+	* auto-profile.cc (function_instance::merge): Set other->timestamp() if it's
+	lesser than timestamp() and greater than zero or if timestamp() is zero.
+
 2026-04-07  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR target/124759
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 875bc22c122b..1255a0d42f7a 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260408
+20260409
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index aa20b6ca6711..0630e2488078 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,77 @@
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+	    Boris Staletic  <boris.staletic@protonmail.com>
+
+	PR c++/123726
+	* reflect.cc (check_splice_expr): Detect accessing a class template
+	or alias template with . or ->.
+	* typeck.cc (finish_class_member_access_expr): Check if the scope of
+	the spliced entity in a member access expression is of a class type.
+	Allow variable_template_p for context_for_name_lookup.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124457
+	* parser.cc (cp_parser_reflect_expression): Check is_auto here
+	instead of...
+	* reflect.cc (get_reflection): ...here.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+	    Boris Staletic  <boris.staletic@protonmail.com>
+
+	PR c++/124177
+	* tree.cc (handle_annotation_attribute): Decay annotation
+	values.  Turn if !type_dependent_expression_p into an assert.
+
+2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* pt.cc (tsubst_expr): Use gcc_unreachable, not gcc_assert.
+	* parser.cc (cp_parser_template_id): Likewise.
+	* reflect.cc (eval_template_of): Likewise.
+
+2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* reflect.cc (eval_current_function): Add missing return.
+	(eval_current_class): Likewise.
+
+2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* reflect.cc (eval_display_string_of): Fix copy-paste error in exception
+	messages.
+
+2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* parser.cc (cp_parser_omp_loop_nest): Write orig_declv, not incrv.
+
+2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* parser.cc (cp_parser_omp_clause_proc_bind): Fix error message
+	(cp_parser_omp_clause_device_type): Likewise.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124617
+	* parser.cc (cp_parser_reflect_expression): Call baselink_for_fns.
+
+2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* constraint.cc (diagnose_trait_expr): Remove CPTK_IS_CONSTEVAL_ONLY
+	handling.
+	* metafns.gperf (enum metafn_code): Remove
+	METAFN_IS_CONSTEVAL_ONLY_TYPE.
+	(is_consteval_only_type): Remove.
+	* semantics.cc (trait_expr_value, finish_trait_expr): Remove
+	CPTK_IS_CONSTEVAL_ONLY handling.
+	* cp-trait.def (__builtin_is_consteval_only): Remove.
+	* metafns.h: Regenerate.
+	* reflect.cc (eval_is_consteval_only_type): Remove.
+	(process_metafunction): Don't handle METAFN_IS_CONSTEVAL_ONLY_TYPE.
+
+2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* decl.cc (cp_finish_decomp): Implement CWG3135 - constexpr structured
+	bindings with prvalues from tuples (as a DR).  Don't call
+	cp_build_reference_type if init is prvalue.
+
 2026-04-07  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/123700
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 85d1017e2d45..e79804529bd6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* resolve.cc (resolve_global_procedure): Move entry symbol
+	lookup outside the resolved != -1 block.
+
+2026-04-08  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/93715
+	* trans-decl.cc (gfc_trans_deferred_vars): Skip auto array
+	allocation for scalar coarrays.
+
 2026-04-07  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/102430
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index dd28bf359652..68b2091ab961 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-08  Joseph Myers  <josmyers@redhat.com>
+
+	* zh_CN.po: Update.
+
 2026-04-07  Joseph Myers  <josmyers@redhat.com>
 
 	* sv.po, zh_CN.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9e9567b90938..1c6cf8eab41c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,59 @@
+2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* gfortran.dg/pr96986.f90: New test.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+	    Boris Staletic  <boris.staletic@protonmail.com>
+
+	PR c++/123726
+	* g++.dg/reflect/member1.C: Adjust dg-error.
+	* g++.dg/reflect/member22.C: New test.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124457
+	* g++.dg/reflect/concept1.C: New test.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+	    Boris Staletic  <boris.staletic@protonmail.com>
+
+	PR c++/124177
+	* g++.dg/reflect/annotations18.C: New test.
+
+2026-04-08  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124617
+	* g++.dg/reflect/dep12.C: New test.
+	* g++.dg/reflect/dep13.C: New test.
+
+2026-04-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124810
+	* gcc.dg/torture/pr124810.c: New testcase.
+
+2026-04-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* g++.dg/modules/modules.exp: Use "@nul" for Windows,
+	"@/dev/null" for other environments.
+
+2026-04-08  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/93715
+	* gfortran.dg/pr93715.f90: New test.
+
+2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/is_consteval_only1.C: Remove.
+	* g++.dg/reflect/eh1.C: Remove is_consteval_only_type tests.
+	* g++.dg/reflect/eh2.C: Likewise.
+	* g++.dg/reflect/type_trait5.C: Likewise.
+
+2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/cpp26/decomp30.C: New test.
+	* g++.dg/gomp/pr108503.C: Adjust expected diagnostic locations.
+
 2026-04-07  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/102430
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index fde7f1c2e0df..41de699dcba8 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,21 @@
+2026-04-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR d/88150
+	* testsuite/lib/libphobos.exp (libphobos_skipped_test_p): Extract
+	filename from $test.
+	* testsuite/libphobos.shared/shared.exp (libphobos_skip_tests):
+	Skip libphobos.shared/finalize.d etc. on Solaris.
+
+2026-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/123202
+	* testsuite/lib/libphobos.exp
+	(check_effective_target_phobos_ieee_flags_support): New proc.
+	* testsuite/libphobos.phobos/phobos.exp: Skip math/hardware.d tests if
+	target does not have phobos_iee_flags_support.
+	* testsuite/libphobos.phobos/shared/phobos-shared.exp: Likewise.
+	* testsuite/libphobos.phobos/static/phobos-static.exp: Likewise.
+
 2026-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* libdruntime/MERGE: Merge upstream druntime 55e64690bc.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index dcc265563302..f5c478a18612 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,60 @@
+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

From aoliva@gcc.gnu.org  Thu Apr  9 02:58:31 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Thu,  9 Apr 2026 02:58:31 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: map 64-bit
 long double to double on sse [PR124657]
Message-ID: <20260409025831.3AD384BA2E0F@sourceware.org>

https://gcc.gnu.org/g:c8772d623d1764a9b41cce1b70369a51aa87faee

commit c8772d623d1764a9b41cce1b70369a51aa87faee
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Apr 8 23:43:25 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h (__intrinsic_type::type):
            Map long double to double.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..8c30c8af2688 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE

From aoliva@gcc.gnu.org  Thu Apr  9 02:58:36 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Thu,  9 Apr 2026 02:58:36 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: accept 64-bit
 long double as double in _S_*_of [PR124657]
Message-ID: <20260409025836.557174BA2E15@sourceware.org>

https://gcc.gnu.org/g:e59ea3b6cbd840e453b6af5d4baf69cd9c524961

commit e59ea3b6cbd840e453b6af5d4baf69cd9c524961
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Apr 8 23:43:53 2026 -0300

    libstdc++: simd: accept 64-bit long double as double in _S_*_of [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    This patch deals with _S_*_of, to test the concept.
    
    There are many occurrences of double in simd_x86.h file, and we
    probably have to adjust them all.  But this is more than enough to get
    pr109261_constexpr_simd.cc to compile with -mlong-double-64.
    
    We probably need a better abstraction.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd_x86.h (_S_all_of): Handle
            long double like double.
            (_S_any_of, _S_none_of, _S_some_of): Likewise.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..400b56e40b33 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -5024,7 +5024,9 @@ template <typename _Abi, typename>
 	    else if constexpr (is_same_v<_Tp, float>)
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_same_v<_Tp, double>
+			       || (sizeof (long double) == sizeof (double)
+				   && is_same_v<_Tp, long double>))
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5086,7 +5088,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (is_same_v<_Tp, float>)
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_same_v<_Tp, double>
+			       || (sizeof (long double) == sizeof (double)
+				   && is_same_v<_Tp, long double>))
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5122,7 +5126,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (is_same_v<_Tp, float>)
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_same_v<_Tp, double>
+			       || (sizeof (long double) == sizeof (double)
+				   && is_same_v<_Tp, long double>))
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5156,7 +5162,9 @@ template <typename _Abi, typename>
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_same_v<_Tp, double>
+			       || (sizeof (long double) == sizeof (double)
+				   && is_same_v<_Tp, long double>))
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From aoliva@gcc.gnu.org  Fri Apr 10 03:49:13 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Fri, 10 Apr 2026 03:49:13 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: follow std in
 numeric_limits<bool>::traps
Message-ID: <20260410034913.71B624BA2E0D@sourceware.org>

https://gcc.gnu.org/g:65ebe02ab0bffa4797c99d4034dc17aae63de2c5

commit 65ebe02ab0bffa4797c99d4034dc17aae63de2c5
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 9 18:54:35 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false.  I suppose whatever DR that
    comment referred to must have long been resolved in favor of what's in
    these much newer releases of the standard.  So align it with the
    standards, and drop the comment.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/limits (numeric_limits<bool>::traps): Set to
            false.

Diff:
---
 libstdc++-v3/include/std/limits | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..c160503e0a82 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -446,10 +446,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
-      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      static _GLIBCXX_USE_CONSTEXPR bool traps = false;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
        = round_toward_zero;

From aoliva@gcc.gnu.org  Fri Apr 10 03:49:18 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Fri, 10 Apr 2026 03:49:18 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260410034918.8AE214BA23C5@sourceware.org>

https://gcc.gnu.org/g:c540ece09c8db360a1d6c0e3826a0e942b7e95c7

commit c540ece09c8db360a1d6c0e3826a0e942b7e95c7
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 9 18:55:41 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnosis.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 15 ++++++++++--
 .../logical_traits/requirements/junction_neg.cc    | 27 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..238450518c08 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -241,10 +241,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   } // namespace __detail
   /// @endcond
 
+  template<typename _From, typename _To>
+    struct is_convertible;
+
   template<typename... _Bn>
     struct conjunction
     : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__conjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct conjunction<>
@@ -254,7 +261,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename... _Bn>
     struct disjunction
     : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__disjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct disjunction<>
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..eb0f246367f1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,27 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctTtf; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfTtf;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfTtf; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtTtf;
+
+// { dg-prune-output "not convertible to bool|evaluates to false" }

From tkaminsk@gcc.gnu.org  Fri Apr 10 06:00:49 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 10 Apr 2026 06:00:49 +0000 (GMT)
Subject: [gcc r16-8555] libstdc++: Add default template parameters for
 uninitialized_fill(_n).
Message-ID: <20260410060049.B0EAF4BA2E0F@sourceware.org>

https://gcc.gnu.org/g:c6a542431315881707bac6666ee37af7b624453f

commit r16-8555-gc6a542431315881707bac6666ee37af7b624453f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 9 16:54:10 2026 +0200

    libstdc++: Add default template parameters for uninitialized_fill(_n).
    
    This implements P3217R0 and adds default argument for the value type
    templater parameter for uninitialized_fill, uninitialized_fill_n and
    their ranges counterpart.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/ranges_uninitialized.h          |  9 ++++++---
 libstdc++-v3/include/bits/stl_uninitialized.h             |  6 ++++--
 libstdc++-v3/include/bits/version.def                     |  5 ++++-
 libstdc++-v3/include/bits/version.h                       |  4 ++--
 libstdc++-v3/include/pstl/glue_memory_defs.h              |  5 +++--
 .../testsuite/25_algorithms/default_template_value.cc     | 15 ++++++++++++++-
 6 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_uninitialized.h b/libstdc++-v3/include/bits/ranges_uninitialized.h
index 6e307ea43c64..f7845abd3f37 100644
--- a/libstdc++-v3/include/bits/ranges_uninitialized.h
+++ b/libstdc++-v3/include/bits/ranges_uninitialized.h
@@ -458,7 +458,8 @@ namespace ranges
   struct __uninitialized_fill_fn
   {
     template<__detail::__nothrow_forward_iterator _Iter,
-	     __detail::__nothrow_sentinel<_Iter> _Sent, typename _Tp>
+	     __detail::__nothrow_sentinel<_Iter> _Sent,
+	     typename _Tp _GLIBCXX26_DEF_VAL_T(iter_value_t<_Iter>)>
       requires constructible_from<iter_value_t<_Iter>, const _Tp&>
       _GLIBCXX26_CONSTEXPR
       _Iter
@@ -478,7 +479,8 @@ namespace ranges
 	  }
       }
 
-    template<__detail::__nothrow_forward_range _Range, typename _Tp>
+    template<__detail::__nothrow_forward_range _Range,
+	     typename _Tp _GLIBCXX26_DEF_VAL_T(range_value_t<_Range>)>
       requires constructible_from<range_value_t<_Range>, const _Tp&>
       _GLIBCXX26_CONSTEXPR
       borrowed_iterator_t<_Range>
@@ -492,7 +494,8 @@ namespace ranges
 
   struct __uninitialized_fill_n_fn
   {
-    template<__detail::__nothrow_forward_iterator _Iter, typename _Tp>
+    template<__detail::__nothrow_forward_iterator _Iter,
+	     typename _Tp _GLIBCXX26_DEF_VAL_T(iter_value_t<_Iter>)>
       requires constructible_from<iter_value_t<_Iter>, const _Tp&>
       _GLIBCXX26_CONSTEXPR
       _Iter
diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h
index 1c1fcfd62a4d..ae4442f38581 100644
--- a/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -406,7 +406,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  Like std::fill, but does not require an initialized output range.
   */
-  template<typename _ForwardIterator, typename _Tp>
+  template<typename _ForwardIterator,
+	   typename _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
     _GLIBCXX26_CONSTEXPR
     inline void
     uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
@@ -542,7 +543,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  Like std::fill_n, but does not require an initialized output range.
   */
-  template<typename _ForwardIterator, typename _Size, typename _Tp>
+  template<typename _ForwardIterator, typename _Size,
+	   typename _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
     _GLIBCXX26_CONSTEXPR
     inline _ForwardIterator
     uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index cfb90533ce45..9a3b3655974c 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2086,8 +2086,11 @@ ftms = {
 
 ftms = {
   name = algorithm_default_value_type;
+  // 202403 P2248R8 Enabling list-initialization for algorithms
+  //        P3787R2 Adjoints to "Enabling ...": find_last
+  // 202603 P3787R2 Adjoints to "Enabling ...": uninitialized_fill
   values = {
-    v = 202403;
+    v = 202603;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 22dd31b9d324..8f541fc389ec 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2328,9 +2328,9 @@
 
 #if !defined(__cpp_lib_algorithm_default_value_type)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_algorithm_default_value_type 202403L
+#  define __glibcxx_algorithm_default_value_type 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_algorithm_default_value_type)
-#   define __cpp_lib_algorithm_default_value_type 202403L
+#   define __cpp_lib_algorithm_default_value_type 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_algorithm_default_value_type) */
diff --git a/libstdc++-v3/include/pstl/glue_memory_defs.h b/libstdc++-v3/include/pstl/glue_memory_defs.h
index 6729319a51b6..2eb4e5dca6b5 100644
--- a/libstdc++-v3/include/pstl/glue_memory_defs.h
+++ b/libstdc++-v3/include/pstl/glue_memory_defs.h
@@ -10,6 +10,7 @@
 #ifndef _PSTL_GLUE_MEMORY_DEFS_H
 #define _PSTL_GLUE_MEMORY_DEFS_H
 
+#include <bits/stl_iterator_base_types.h>
 #include "execution_defs.h"
 
 namespace std
@@ -37,11 +38,11 @@ uninitialized_move_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __
 
 // [uninitialized.fill]
 
-template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
+template <class _ExecutionPolicy, class _ForwardIterator, class _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
 __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
 uninitialized_fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
 
-template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp>
+template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
 __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
 uninitialized_fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, const _Tp& __value);
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/default_template_value.cc b/libstdc++-v3/testsuite/25_algorithms/default_template_value.cc
index b05234e1f8df..60f3d95ddb3e 100644
--- a/libstdc++-v3/testsuite/25_algorithms/default_template_value.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/default_template_value.cc
@@ -4,12 +4,14 @@
 
 #if !defined(__cpp_lib_algorithm_default_value_type)
 #error "Feature test macro for default template type for algorithms' values is missing"
-#elif __cpp_lib_algorithm_default_value_type < 202403L
+#elif __cpp_lib_algorithm_default_value_type < 202603L
 #error "Feature test macro for default template type for algorithms' values is wrong"
 #endif
 
 #include <execution>
+#include <memory>
 #include <ranges>
+#include <span>
 #include <iterator>
 #include <vector>
 
@@ -139,4 +141,15 @@ test()
   // [alg.find.last]
   (void) std::ranges::find_last(in.begin(), in.end(), INPUT_VAL);
   (void) std::ranges::find_last(in, INPUT_VAL);
+
+  extern std::span<Input> unin;
+  // [uninitialized.fill]
+  (void) std::uninitialized_fill(unin.begin(), unin.end(), INPUT_VAL);
+  (void) std::uninitialized_fill(std::execution::seq, unin.begin(), unin.end(), INPUT_VAL);
+  (void) std::ranges::uninitialized_fill(unin.begin(), unin.end(), INPUT_VAL);
+  (void) std::ranges::uninitialized_fill(unin, INPUT_VAL);
+
+  (void) std::uninitialized_fill_n(unin.begin(), unin.size(), INPUT_VAL);
+  (void) std::uninitialized_fill_n(std::execution::seq, unin.begin(), unin.size(), INPUT_VAL);
+  (void) std::ranges::uninitialized_fill_n(unin.begin(), unin.size(), INPUT_VAL);
 }

From tkaminsk@gcc.gnu.org  Fri Apr 10 06:06:42 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 10 Apr 2026 06:06:42 +0000 (GMT)
Subject: [gcc r16-8556] libstdc++: Remove span constructor from
 initializer_list.
Message-ID: <20260410060642.DE1364BA5436@sourceware.org>

https://gcc.gnu.org/g:bd29a35496cf377c98bebdc3b3a9d8bc2772009b

commit r16-8556-gbd29a35496cf377c98bebdc3b3a9d8bc2772009b
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 8 17:29:07 2026 +0200

    libstdc++: Remove span constructor from initializer_list.
    
    Following LWG4520 resolution from paper
    P4144R1 Remove span?s initializer_list constructor for C++26.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |  8 ---
 libstdc++-v3/include/bits/version.h                | 10 ----
 libstdc++-v3/include/std/span                      | 16 +-----
 .../testsuite/23_containers/inplace_vector/copy.cc |  2 +-
 .../23_containers/inplace_vector/erasure.cc        | 11 +---
 .../testsuite/23_containers/inplace_vector/move.cc |  2 +-
 .../testsuite/23_containers/span/init_list_cons.cc | 65 ----------------------
 .../23_containers/span/init_list_cons_neg.cc       | 36 ------------
 8 files changed, 6 insertions(+), 144 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 9a3b3655974c..059c38c6c13d 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2171,14 +2171,6 @@ ftms = {
   };
 };
 
-ftms = {
-  name = span_initializer_list;
-  values = {
-    v = 202311;
-    cxxmin = 26;
-  };
-};
-
 ftms = {
   name = text_encoding;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 8f541fc389ec..f806e8f3f9c0 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2426,16 +2426,6 @@
 #endif /* !defined(__cpp_lib_saturation_arithmetic) */
 #undef __glibcxx_want_saturation_arithmetic
 
-#if !defined(__cpp_lib_span_initializer_list)
-# if (__cplusplus >  202302L)
-#  define __glibcxx_span_initializer_list 202311L
-#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_span_initializer_list)
-#   define __cpp_lib_span_initializer_list 202311L
-#  endif
-# endif
-#endif /* !defined(__cpp_lib_span_initializer_list) */
-#undef __glibcxx_want_span_initializer_list
-
 #if !defined(__cpp_lib_text_encoding)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (_GLIBCXX_USE_NL_LANGINFO_L)
 #  define __glibcxx_text_encoding 202306L
diff --git a/libstdc++-v3/include/std/span b/libstdc++-v3/include/std/span
index a2f338449c8a..a5f5bf48f90e 100644
--- a/libstdc++-v3/include/std/span
+++ b/libstdc++-v3/include/std/span
@@ -47,9 +47,7 @@
 #include <cstddef>
 #include <bits/stl_iterator.h>
 #include <bits/ranges_base.h>
-#ifdef __cpp_lib_span_initializer_list
-# include <initializer_list>
-#endif
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -232,18 +230,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _M_ptr(ranges::data(__range)), _M_extent(ranges::size(__range))
 	{ }
 
-#if __cpp_lib_span_initializer_list >= 202311L // >= C++26
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Winit-list-lifetime"
-      constexpr
-      explicit(extent != dynamic_extent)
-      span(initializer_list<value_type> __il)
-      requires (is_const_v<_Type>)
-      : _M_ptr(__il.begin()), _M_extent(__il.size())
-      { }
-#pragma GCC diagnostic pop
-#endif
-
       constexpr
       span(const span&) noexcept = default;
 
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
index 917eebd80f7c..11260c63313c 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
@@ -138,7 +138,7 @@ static_assert(std::is_trivially_copy_assignable_v<std::inplace_vector<Z, 0>>);
 
 template<typename T, size_t N>
 constexpr bool
-eq(const std::inplace_vector<T, N>& s, std::span<const T> o)
+eq(const std::inplace_vector<T, N>& s, std::initializer_list<std::type_identity_t<T>> o)
 { return std::ranges::equal(s, o); }
 
 constexpr void
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc
index 8fb56e906234..a019dc0a1f15 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc
@@ -1,18 +1,13 @@
 // { dg-do run { target c++26 } }
 
 #include <inplace_vector>
+#include <ranges>
 #include <testsuite_hooks.h>
-#include <span>
 
 template<typename T, size_t N>
 constexpr bool
-eq(const std::inplace_vector<T, N>& l, std::span<const T> r) {
-  if (l.size() != r.size())
-    return false;
-  for (auto i = 0u; i < l.size(); ++i)
-    if (l[i] != r[i])
-      return false;
-  return true;
+eq(const std::inplace_vector<T, N>& l, std::initializer_list<std::type_identity_t<T>> r) {
+  return std::ranges::equal(l, r);
 };
 
 constexpr void
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
index e8703e027fe3..8b5c3e9f247f 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
@@ -177,7 +177,7 @@ static_assert(std::is_nothrow_swappable_v<std::inplace_vector<Z, 0>>);
 
 template<typename T, size_t N>
 constexpr bool
-eq(const std::inplace_vector<T, N>& s, std::span<const T> o)
+eq(const std::inplace_vector<T, N>& s, std::initializer_list<std::type_identity_t<T>> o)
 { return std::ranges::equal(s, o); }
 
 constexpr void
diff --git a/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc b/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc
deleted file mode 100644
index 1dc30ab1a50b..000000000000
--- a/libstdc++-v3/testsuite/23_containers/span/init_list_cons.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// { dg-do compile { target c++26 } }
-
-#include <span>
-#include <type_traits>
-
-#if !defined(__cpp_lib_span_initializer_list)
-# error "__cpp_lib_span_initializer_list should be defined"
-#elif __cpp_lib_span_initializer_list < 202311L
-# error "Wrong value for __cpp_lib_span_initializer_list (should be >= 202311L)"
-#endif
-
-// Check the constraint on the initializer_list constructor
-static_assert( std::is_const_v<std::span<const int>::element_type>);
-static_assert(!std::is_const_v<std::span<      int>::element_type>);
-
-static_assert( std::is_constructible_v<std::span<const int    >, std::initializer_list<      int>>);
-static_assert( std::is_constructible_v<std::span<const int    >, std::initializer_list<const int>>);
-static_assert( std::is_constructible_v<std::span<const int, 42>, std::initializer_list<      int>>);
-static_assert( std::is_constructible_v<std::span<const int, 42>, std::initializer_list<const int>>);
-static_assert(!std::is_constructible_v<std::span<      int    >, std::initializer_list<      int>>);
-static_assert(!std::is_constructible_v<std::span<      int    >, std::initializer_list<const int>>);
-static_assert(!std::is_constructible_v<std::span<      int, 42>, std::initializer_list<      int>>);
-static_assert(!std::is_constructible_v<std::span<      int, 42>, std::initializer_list<const int>>);
-
-// Check the explicit-ness on the initializer_list constructor
-static_assert( std::is_convertible_v<std::initializer_list<      int>, std::span<const int    >>);
-static_assert( std::is_convertible_v<std::initializer_list<const int>, std::span<const int    >>);
-static_assert(!std::is_convertible_v<std::initializer_list<      int>, std::span<const int, 42>>);
-static_assert(!std::is_convertible_v<std::initializer_list<const int>, std::span<const int, 42>>);
-static_assert(!std::is_convertible_v<std::initializer_list<      int>, std::span<      int    >>);
-static_assert(!std::is_convertible_v<std::initializer_list<const int>, std::span<      int    >>);
-static_assert(!std::is_convertible_v<std::initializer_list<      int>, std::span<      int, 42>>);
-static_assert(!std::is_convertible_v<std::initializer_list<const int>, std::span<      int, 42>>);
-
-constexpr size_t fun1(std::span<const int> s)
-{
-  return s.size();
-}
-
-static_assert(fun1({}) == 0);
-static_assert(fun1({1, 2, 3}) == 3);
-static_assert(fun1(std::initializer_list<int>{1, 2, 3}) == 3);
-
-// Stress-test array->pointer decays
-struct decayer {
-  constexpr decayer() = default;
-  constexpr decayer(decayer *) {}
-};
-
-constexpr size_t fun2(std::span<const decayer> s)
-{
-  return s.size();
-}
-
-void test01()
-{
-  int intArray[42];
-  static_assert(fun1(intArray) == 42);
-
-  decayer decArray[42];
-  static_assert(fun2(decArray) == 42);
-  static_assert(fun2({decArray}) == 1); // decayer[] -> decayer* -> decayer(decayer*) -> init_list<decayer> of 1 element
-  static_assert(fun2({decArray, decArray + 42}) == 2); // does not select span(iterator, iterator)
-  static_assert(fun2({decArray, decArray, decArray}) == 3);
-}
diff --git a/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc b/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc
deleted file mode 100644
index 6b78156ad5df..000000000000
--- a/libstdc++-v3/testsuite/23_containers/span/init_list_cons_neg.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-// { dg-do run { target { c++20 && c++23_down } } }
-// { dg-do compile { target c++26 } }
-
-#include <span>
-#include <utility>
-
-#include <testsuite_hooks.h>
-
-struct Any {
-  constexpr Any() { }
-  template<typename T> constexpr Any(T) { }
-};
-
-// Examples from P2447R4
-void one(std::pair<int, int>) {}
-void one(std::span<const int>) {}
-void two(std::span<const int, 2>) {}
-constexpr std::size_t three(std::span<void * const> v) { return v.size(); }
-constexpr std::size_t four(std::span<const Any> v) { return v.size(); }
-
-void *array3[10];
-Any array4[10];
-
-int main()
-{
-  one({1, 2}); // { dg-error "call of overloaded" "should be ambiguous with the one(std::pair) overload" { target c++26 } }
-  two({{1, 2}}); // { dg-error "would use explicit constructor" "should prefer the initializer_list constructor, which is explicit" { target c++26 } }
-
-#if __cpp_lib_span_initializer_list
-  static_assert(three({array3, 0}) == 2);
-  static_assert(four({array4, array4 + 10}) == 2);
-#else
-  static_assert(three({array3, 0}) == 0);
-  static_assert(four({array4, array4 + 10}) == 10);
-#endif
-}

From tkaminsk@gcc.gnu.org  Fri Apr 10 06:08:59 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 10 Apr 2026 06:08:59 +0000 (GMT)
Subject: [gcc r16-8557] libstdc++: Rename views::to_input to views::as_input.
Message-ID: <20260410060859.B06FD4BA2E04@sourceware.org>

https://gcc.gnu.org/g:30e3fa619177674d94689d11e4bf67a158e69869

commit r16-8557-g30e3fa619177674d94689d11e4bf67a158e69869
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 9 14:34:35 2026 +0200

    libstdc++: Rename views::to_input to views::as_input.
    
    This patch implements P3828R1: Rename the to_input view to as_input.
    
    The paper suggest renaming the feature test macro without changing the
    value and this patch follows.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/reflect/range_args.C: Replace views::to_input with
            views::as_input.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 gcc/testsuite/g++.dg/reflect/range_args.C          |  6 ++---
 libstdc++-v3/include/bits/version.def              |  2 +-
 libstdc++-v3/include/bits/version.h                | 12 +++++-----
 libstdc++-v3/include/std/ranges                    | 28 +++++++++++-----------
 libstdc++-v3/src/c++23/std.cc.in                   |  6 ++---
 libstdc++-v3/testsuite/25_algorithms/contains/1.cc | 18 +++++++-------
 .../ranges/adaptors/{to_input => as_input}/1.cc    | 12 +++++-----
 7 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/gcc/testsuite/g++.dg/reflect/range_args.C b/gcc/testsuite/g++.dg/reflect/range_args.C
index fa06cf0ebc7e..df9b5e42359f 100644
--- a/gcc/testsuite/g++.dg/reflect/range_args.C
+++ b/gcc/testsuite/g++.dg/reflect/range_args.C
@@ -45,7 +45,7 @@ test_type_range(Rg&& rg)
 constexpr info vt[] = {^^int, ^^int, ^^float, ^^int, ^^float, ^^double};
 static_assert (test_type_range (vt | std::views::filter (is_integral_type))); // bidirectional
 static_assert (test_type_range (vt | std::views::take_while (is_integral_type))); // non-common
-static_assert (test_type_range (vt | std::views::to_input)); // input
+static_assert (test_type_range (vt | std::views::as_input)); // input
 static_assert (test_type_range (vt | std::views::cache_latest)); // input, move-only
 
 template<typename Rg>
@@ -74,7 +74,7 @@ constexpr bool not_digit(char c) {
 
 static_assert (test_value_range (vv | std::views::filter (not_digit))); // bidirectional
 static_assert (test_value_range (vv | std::views::take_while (not_digit))); // non-common
-static_assert (test_value_range (vv | std::views::to_input)); // input
+static_assert (test_value_range (vv | std::views::as_input)); // input
 static_assert (test_value_range (vv | std::views::cache_latest)); // input, move-only
 								 
 template<int> struct Aggr;
@@ -91,6 +91,6 @@ consteval bool of_int_type(info dm) {
 consteval {
   define_aggregate (^^Aggr<0>, dmt | std::views::filter (of_int_type)); // bidirectional
   define_aggregate (^^Aggr<1>, dmt | std::views::take_while (of_int_type)); // non-common
-  define_aggregate (^^Aggr<2>, dmt | std::views::to_input); // input
+  define_aggregate (^^Aggr<2>, dmt | std::views::as_input); // input
   define_aggregate (^^Aggr<3>, dmt | std::views::cache_latest); // input, move-only
 }
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 059c38c6c13d..0142251ef936 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2191,7 +2191,7 @@ ftms = {
 };
 
 ftms = {
-  name = ranges_to_input;
+  name = ranges_as_input;
   values = {
     v = 202502;
     cxxmin = 26;
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index f806e8f3f9c0..cf78137c9d1a 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2446,15 +2446,15 @@
 #endif /* !defined(__cpp_lib_ranges_filter) */
 #undef __glibcxx_want_ranges_filter
 
-#if !defined(__cpp_lib_ranges_to_input)
+#if !defined(__cpp_lib_ranges_as_input)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_ranges_to_input 202502L
-#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_to_input)
-#   define __cpp_lib_ranges_to_input 202502L
+#  define __glibcxx_ranges_as_input 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_input)
+#   define __cpp_lib_ranges_as_input 202502L
 #  endif
 # endif
-#endif /* !defined(__cpp_lib_ranges_to_input) */
-#undef __glibcxx_want_ranges_to_input
+#endif /* !defined(__cpp_lib_ranges_as_input) */
+#undef __glibcxx_want_ranges_as_input
 
 #if !defined(__cpp_lib_to_string)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (__glibcxx_to_chars)
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 0aa4191e04f6..ca91e081ad4d 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -72,7 +72,7 @@
 #define __glibcxx_want_ranges_slide
 #define __glibcxx_want_ranges_stride
 #define __glibcxx_want_ranges_to_container
-#define __glibcxx_want_ranges_to_input
+#define __glibcxx_want_ranges_as_input
 #define __glibcxx_want_ranges_zip
 #include <bits/version.h>
 
@@ -10537,12 +10537,12 @@ namespace ranges
 } // namespace ranges
 #endif // __cpp_lib_ranges_cache_latest
 
-#if __cpp_lib_ranges_to_input // C++ >= 26
+#if __cpp_lib_ranges_as_input // C++ >= 26
 namespace ranges
 {
   template<input_range _Vp>
     requires view<_Vp>
-  class to_input_view : public view_interface<to_input_view<_Vp>>
+  class as_input_view : public view_interface<as_input_view<_Vp>>
   {
     _Vp _M_base = _Vp();
 
@@ -10550,10 +10550,10 @@ namespace ranges
     class _Iterator;
 
   public:
-    to_input_view() requires default_initializable<_Vp> = default;
+    as_input_view() requires default_initializable<_Vp> = default;
 
     constexpr explicit
-    to_input_view(_Vp __base)
+    as_input_view(_Vp __base)
     : _M_base(std::move(__base))
     { }
 
@@ -10591,12 +10591,12 @@ namespace ranges
   };
 
   template<typename _Range>
-    to_input_view(_Range&&) -> to_input_view<views::all_t<_Range>>;
+    as_input_view(_Range&&) -> as_input_view<views::all_t<_Range>>;
 
   template<input_range _Vp>
     requires view<_Vp>
   template<bool _Const>
-  class to_input_view<_Vp>::_Iterator
+  class as_input_view<_Vp>::_Iterator
   {
     using _Base = __maybe_const_t<_Const, _Vp>;
 
@@ -10607,7 +10607,7 @@ namespace ranges
     : _M_current(std::move(__current))
     { }
 
-    friend to_input_view;
+    friend as_input_view;
     friend _Iterator<!_Const>;
 
   public:
@@ -10680,13 +10680,13 @@ namespace ranges
     namespace __detail
     {
       template<typename _Tp>
-	concept __can_to_input = requires { to_input_view(std::declval<_Tp>()); };
+	concept __can_as_input = requires { as_input_view(std::declval<_Tp>()); };
     }
 
-    struct _ToInput : __adaptor::_RangeAdaptorClosure<_ToInput>
+    struct _AsInput : __adaptor::_RangeAdaptorClosure<_AsInput>
     {
       template<viewable_range _Range>
-	requires __detail::__can_to_input<_Range>
+	requires __detail::__can_as_input<_Range>
 	constexpr auto
 	operator() [[nodiscard]] (_Range&& __r) const
 	{
@@ -10695,16 +10695,16 @@ namespace ranges
 			&& !forward_range<_Range>)
 	    return views::all(std::forward<_Range>(__r));
 	  else
-	    return to_input_view(std::forward<_Range>(__r));
+	    return as_input_view(std::forward<_Range>(__r));
 	}
 
       static constexpr bool _S_has_simple_call_op = true;
     };
 
-    inline constexpr _ToInput to_input;
+    inline constexpr _AsInput as_input;
   }
 } // namespace ranges
-#endif // __cpp_lib_ranges_to_input
+#endif // __cpp_lib_ranges_as_input
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 3ac198716924..ad249cb3348e 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2800,9 +2800,9 @@ export namespace std
     using ranges::cache_latest_view;
     namespace views { using views::cache_latest; }
 #endif
-#if __glibcxx_ranges_to_input // C++ >= 26
-    using ranges::to_input_view;
-    namespace views { using views::to_input; }
+#if __glibcxx_ranges_as_input // C++ >= 26
+    using ranges::as_input_view;
+    namespace views { using views::as_input; }
 #endif
 #ifdef __cpp_lib_ranges_indices // C++ >= 26
     namespace views { using views::indices; }
diff --git a/libstdc++-v3/testsuite/25_algorithms/contains/1.cc b/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
index b44c06032e8a..aaf81f85a0a6 100644
--- a/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/contains/1.cc
@@ -14,17 +14,17 @@ void
 test01()
 {
   int x[] = {1,2,3};
-  using to_input = __gnu_test::test_input_range<int>;
-  VERIFY( ranges::contains(to_input(x), 1) );
-  VERIFY( ranges::contains(to_input(x), 2) );
-  VERIFY( ranges::contains(to_input(x), 3) );
-  VERIFY( !ranges::contains(to_input(x), 4) );
+  using as_input = __gnu_test::test_input_range<int>;
+  VERIFY( ranges::contains(as_input(x), 1) );
+  VERIFY( ranges::contains(as_input(x), 2) );
+  VERIFY( ranges::contains(as_input(x), 3) );
+  VERIFY( !ranges::contains(as_input(x), 4) );
   VERIFY( !ranges::contains(x, x+2, 3) );
   auto neg = [](int n) { return -n; };
-  VERIFY( ranges::contains(to_input(x), -1, neg) );
-  VERIFY( ranges::contains(to_input(x), -2, neg) );
-  VERIFY( ranges::contains(to_input(x), -3, neg) );
-  VERIFY( !ranges::contains(to_input(x), -4, neg) );
+  VERIFY( ranges::contains(as_input(x), -1, neg) );
+  VERIFY( ranges::contains(as_input(x), -2, neg) );
+  VERIFY( ranges::contains(as_input(x), -3, neg) );
+  VERIFY( !ranges::contains(as_input(x), -4, neg) );
 
   VERIFY( !ranges::contains(x, x+2, -3, neg) );
 }
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
similarity index 78%
rename from libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
rename to libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
index cde368a2f64d..8bd1a82a7b7f 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/as_input/1.cc
@@ -2,8 +2,8 @@
 
 #include <ranges>
 
-#if __cpp_lib_ranges_to_input != 202502L
-# error "Feature-test macro __cpp_lib_ranges_to_input has wrong value in <ranges>"
+#if __cpp_lib_ranges_as_input != 202502L
+# error "Feature-test macro __cpp_lib_ranges_as_input has wrong value in <ranges>"
 #endif
 
 #include <algorithm>
@@ -18,7 +18,7 @@ void
 test01()
 {
   std::vector<int> r{1,2,3};
-  auto v = r | views::to_input;
+  auto v = r | views::as_input;
   using type = decltype(v);
   static_assert( ranges::input_range<type> && !ranges::forward_range<type> );
 
@@ -45,10 +45,10 @@ test02()
   int x[] = {1,2,3};
   __gnu_test::test_input_range<int> rx(x);
   static_assert( !ranges::common_range<decltype(rx)> );
-  auto v = rx | views::to_input;
+  auto v = rx | views::as_input;
   static_assert( std::same_as<decltype(v), decltype(views::all(rx))> );
-  static_assert( std::same_as<decltype(x | views::to_input),
-			      decltype(x | views::to_input | views::to_input)> );
+  static_assert( std::same_as<decltype(x | views::as_input),
+			      decltype(x | views::as_input | views::as_input)> );
 }
 
 int

From ppalka@gcc.gnu.org  Fri Apr 10 14:15:12 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Fri, 10 Apr 2026 14:15:12 +0000 (GMT)
Subject: [gcc r16-8563] libstdc++/ranges: Implement LWG 3599 change to
 lazy_split_view
Message-ID: <20260410141512.8FC344BA2E10@sourceware.org>

https://gcc.gnu.org/g:8c46c7d647bf42aafab17f7e3dd4c2e18722241f

commit r16-8563-g8c46c7d647bf42aafab17f7e3dd4c2e18722241f
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Apr 10 10:14:47 2026 -0400

    libstdc++/ranges: Implement LWG 3599 change to lazy_split_view
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges                          |  7 ++++++-
 libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc | 10 ++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index ca91e081ad4d..4f2082487d1d 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -3807,8 +3807,12 @@ namespace views::__adaptor
 	  }
       }
 
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 3599. The const overload of lazy_split_view::begin should be
+      // constrained by const Pattern
       constexpr auto
       begin() const requires forward_range<_Vp> && forward_range<const _Vp>
+	&& forward_range<const _Pattern>
       {
 	return _OuterIter<true>{this, ranges::begin(_M_base)};
       }
@@ -3826,7 +3830,8 @@ namespace views::__adaptor
       {
 	if constexpr (forward_range<_Vp>
 		      && forward_range<const _Vp>
-		      && common_range<const _Vp>)
+		      && common_range<const _Vp>
+		      && forward_range<const _Pattern>)
 	  return _OuterIter<true>{this, ranges::end(_M_base)};
 	else
 	  return default_sentinel;
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
index 60ee7d70580e..1c69b8f27cfd 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
@@ -239,6 +239,15 @@ test13()
   constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;
 }
 
+void
+test14()
+{
+  // LWG 3599
+  auto p = views::iota(0) | views::take(1) | views::reverse;
+  auto r = views::single(42) | views::lazy_split(p);
+  auto f = r.front();
+}
+
 int
 main()
 {
@@ -255,4 +264,5 @@ main()
   test11();
   static_assert(test12());
   test13();
+  test14();
 }

From gccadmin@gcc.gnu.org  Sat Apr 11 00:16:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 11 Apr 2026 00:16:53 +0000 (GMT)
Subject: [gcc r16-8567] Daily bump.
Message-ID: <20260411001653.8C8624BA2E08@sourceware.org>

https://gcc.gnu.org/g:6915a121b9699f8fff44acdb471f3337638fb693

commit r16-8567-g6915a121b9699f8fff44acdb471f3337638fb693
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Apr 11 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 19 +++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 13 ++++++++++++
 gcc/fortran/ChangeLog   |  8 ++++++++
 gcc/m2/ChangeLog        |  5 +++++
 gcc/testsuite/ChangeLog | 44 ++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 144 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a60db582785..eb934ab2e9be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,22 @@
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/124827
+	* gimple-ssa-warn-access.cc (xchg_models): Remove.
+	(pass_waccess::check_atomic_builtin): Fix up sucs_arg for
+	BUILT_IN_ATOMIC_EXCHAGE_* and use all_models instead of xchg_models.
+	Handle BUILT_IN_TSAN_ATOMIC*.  Formatting fixes.
+
+2026-04-10  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* configure: Regenerate.
+
+2026-04-10  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Set
+	__riscv_v_intrinsic to v1.0.
+	* doc/extend.texi (RISC-V Vector Intrinsics): Document the
+	ratified v1.0 RVV intrinsic specification and update the link.
+
 2026-04-09  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR c++/124773
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 238dd7b92476..7359c4fd2c04 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260410
+20260411
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ce7eae96ad7d..fedd56a9f6d0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,16 @@
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124831
+	* reflect.cc (namespace_members_of): Append reflection of anon unions
+	when we see it first time as CP_DECL_CONTEXT of some CONST_DECL in
+	the namespace.
+
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124792
+	* pt.cc (get_template_parm_object): Call unshare_expr_without_location
+	on expr if check_init.
+
 2026-04-09  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/123998
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c90cfc7ddd2b..53e092bfb444 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-10  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/94978
+	* frontend-passes.cc (evaluate_loop_bound): New helper.
+	(inner_loop_may_be_skipped): New helper.
+	(do_subscript): Skip outer-loop bound warnings when nested inner loops
+	may be zero-trip for the substituted bound.
+
 2026-04-09  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/103367
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 3cd96e391767..eb1112339237 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-10  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/124840
+	* gm2-libs/BinDict.mod (Key): Return field key.
+
 2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR other/124784
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b9eca4bf27b2..3547578f21af 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,47 @@
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124844
+	* g++.dg/reflect/type_trait14.C (NLType::~NLType): Move definition out
+	of the class.
+
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124831
+	* g++.dg/reflect/members_of13.C: New test.
+
+2026-04-10  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/94978
+	* gfortran.dg/pr94978.f90: New test.
+
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/124827
+	* gcc.dg/tsan/atomic-invalid.c: New test.
+
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR lto/124828
+	* g++.dg/lto/20091022-2_0.C (_GLIBCXX_SYSHDR): Define before including
+	<string>.
+
+2026-04-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124792
+	* g++.dg/reflect/pr124792.C: New test.
+
+2026-04-10  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	* g++.dg/reflect/range_args.C: Replace views::to_input with
+	views::as_input.
+
+2026-04-10  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* gcc.target/riscv/predef-__riscv_v_intrinsic.c: Update expected
+	__riscv_v_intrinsic value.
+	* gcc.target/riscv/rvv/base/pr114017-1.c: Update version check and
+	expected warning text to v1.0.
+
 2026-04-09  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/123998
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f5c478a18612..eb821efef1be 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,57 @@
+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>

From tkaminsk@gcc.gnu.org  Mon Apr 13 09:49:45 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 13 Apr 2026 09:49:45 +0000 (GMT)
Subject: [gcc r16-8579] libstdc++: Update __cpp_lib_function_ref value for
 P3948R1.
Message-ID: <20260413094945.A3DFD4BA2E09@sourceware.org>

https://gcc.gnu.org/g:2979e67af19d5c199a60b852efa8214131ba53ad

commit r16-8579-g2979e67af19d5c199a60b852efa8214131ba53ad
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 8 17:35:46 2026 +0200

    libstdc++: Update __cpp_lib_function_ref value for P3948R1.
    
    SG-10 agreed on using 202604L value for paper P3961R0 that
    also updates __cpp_lib_function_ref macro.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def                 | 5 ++++-
 libstdc++-v3/include/bits/version.h                   | 4 ++--
 libstdc++-v3/testsuite/20_util/function_ref/assign.cc | 6 ------
 libstdc++-v3/testsuite/20_util/function_ref/cons.cc   | 2 +-
 4 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 0142251ef936..3b4a0d4fdc05 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1959,9 +1959,12 @@ ftms = {
 };
 
 ftms = {
+  // 202306 P0792R14 function_ref: a non-owning reference to a Callable
+  // 202511 P3774R1  Rename std::nontype, and make it broadly useful
+  // 202603 P3948R1  constant_wrapper is the only tool needed for passing...
   name = function_ref;
   values = {
-    v = 202306;
+    v = 202603;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index cf78137c9d1a..59719b4f8116 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2183,9 +2183,9 @@
 
 #if !defined(__cpp_lib_function_ref)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_function_ref 202306L
+#  define __glibcxx_function_ref 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_function_ref)
-#   define __cpp_lib_function_ref 202306L
+#   define __cpp_lib_function_ref 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_function_ref) */
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/assign.cc b/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
index 521a35fc11e0..eafea9aac241 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/assign.cc
@@ -2,12 +2,6 @@
 
 #include <functional>
 
-#ifndef __cpp_lib_function_ref
-# error "Feature-test macro for function_ref missing in <functional>"
-#elif __cpp_lib_function_ref != 202306L
-# error "Feature-test macro for function_ref has wrong value in <functional>"
-#endif
-
 using std::constant_wrapper;
 using std::function_ref;
 
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
index 78aebd38a074..e6c13e3e538c 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
@@ -5,7 +5,7 @@
 
 #ifndef __cpp_lib_function_ref
 # error "Feature-test macro for function_ref missing in <functional>"
-#elif __cpp_lib_function_ref != 202306L
+#elif __cpp_lib_function_ref != 202603L
 # error "Feature-test macro for function_ref has wrong value in <functional>"
 #endif

From tkaminsk@gcc.gnu.org  Mon Apr 13 10:55:22 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 13 Apr 2026 10:55:22 +0000 (GMT)
Subject: [gcc r16-8582] libstdc++: Fix duplicated export on
 basic_string::_M_disjunct on Solaris.
Message-ID: <20260413105522.A19214BA23D2@sourceware.org>

https://gcc.gnu.org/g:7762443b9e6f82b4b6fd7aa8b5c1e83e7e5b4066

commit r16-8582-g7762443b9e6f82b4b6fd7aa8b5c1e83e7e5b4066
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 8 22:42:12 2026 +0200

    libstdc++: Fix duplicated export on basic_string::_M_disjunct on Solaris.
    
    The patterns for cow_string that were split to exclude starts_with,
    ends_with, did not include name starting with _:
     _ZNKSs[0-9][0-9][a-z]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*;
    
    This was not caught on x86_64-linux as _M_disjunt was already exported
    in 3.4 version (when HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT
    is defined).
    
    libstdc++-v3/ChangeLog:
    
            * config/abi/pre/gnu.ver (GLIBCXX_3.4): Remove _ZNKSs11_[MS]_*
            and _ZNKSbIwSt11char_traitsIwESaIwEE11_[MS]_* patterns.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver | 2 --
 1 file changed, 2 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 2ff2aa02383b..624de951d415 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -270,7 +270,6 @@ GLIBCXX_3.4 {
     _ZNKSs[5-9][a-b]*;
     _ZNKSs[0-8][d-e]*;
     _ZNKSs[0-9][g-z]*;
-    _ZNKSs11_[MS]_*;
     _ZNKSs1[2-8][a-z]*;
     _ZNKSs[2-9][0-9][a-z]*;
     _ZNKSs4find*;
@@ -343,7 +342,6 @@ GLIBCXX_3.4 {
     _ZNKSbIwSt11char_traitsIwESaIwEE[5-9][a-b]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[0-8][d-e]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][g-z]*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE11_[MS]_*;
     _ZNKSbIwSt11char_traitsIwESaIwEE1[2-8][a-z]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[2-9][0-9][a-z]*;
     _ZNKSbIwSt11char_traitsIwESaIwEE[abd-z]*;

From tkaminsk@gcc.gnu.org  Mon Apr 13 11:07:02 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 13 Apr 2026 11:07:02 +0000 (GMT)
Subject: [gcc r16-8583] libstdc++: Define
 __cpp_lib_replaceable_contract_violation_handler.
Message-ID: <20260413110702.40AAD4BA5436@sourceware.org>

https://gcc.gnu.org/g:8beabc8851568da82781ed2a47ef0a08f585fddd

commit r16-8583-g8beabc8851568da82781ed2a47ef0a08f585fddd
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 8 15:46:28 2026 +0200

    libstdc++: Define __cpp_lib_replaceable_contract_violation_handler.
    
    This implements P3886R0: Wording for AT1-057, by defining the
    __cpp_lib_replaceable_contract_violation_handler. The macro is defined
    only if contracts are supported (i.e. under same conditions as
    __cpp_lib_contracts).
    
    GCC supports providing custom violation handler by providing an separate
    defintion of handle_contract_violation. This is supported on the targets
    that uses ELF format, so the macro is defined for with non-zero value
    for them.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def | 15 +++++++++++++++
 libstdc++-v3/include/bits/version.h   | 15 +++++++++++++++
 libstdc++-v3/include/std/contracts    |  1 +
 3 files changed, 31 insertions(+)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 3b4a0d4fdc05..b88d9c3483f8 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2349,6 +2349,21 @@ ftms = {
   };
 };
 
+ftms = {
+  name = replaceable_contract_violation_handler;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+    extra_cond = "__cpp_contracts >= 202502L "
+    "&& __ELF__";
+  };
+  values = {
+    v = 0;
+    cxxmin = 26;
+    extra_cond = "__cpp_contracts >= 202502L";
+  };
+};
+
 ftms = {
   name = simd;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 59719b4f8116..24ec0175e1e4 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2616,6 +2616,21 @@
 #endif /* !defined(__cpp_lib_contracts) */
 #undef __glibcxx_want_contracts
 
+#if !defined(__cpp_lib_replaceable_contract_violation_handler)
+# if (__cplusplus >  202302L) && (__cpp_contracts >= 202502L && __ELF__)
+#  define __glibcxx_replaceable_contract_violation_handler 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_replaceable_contract_violation_handler)
+#   define __cpp_lib_replaceable_contract_violation_handler 202603L
+#  endif
+# elif (__cplusplus >  202302L) && (__cpp_contracts >= 202502L)
+#  define __glibcxx_replaceable_contract_violation_handler 0L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_replaceable_contract_violation_handler)
+#   define __cpp_lib_replaceable_contract_violation_handler 0L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_replaceable_contract_violation_handler) */
+#undef __glibcxx_want_replaceable_contract_violation_handler
+
 #if !defined(__cpp_lib_simd)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED && (__cpp_structured_bindings >= 202411L && __cpp_expansion_statements >= 202411L && __SSE2__)
 #  define __glibcxx_simd 202506L
diff --git a/libstdc++-v3/include/std/contracts b/libstdc++-v3/include/std/contracts
index c1fe54750af9..a0575fbefd93 100644
--- a/libstdc++-v3/include/std/contracts
+++ b/libstdc++-v3/include/std/contracts
@@ -33,6 +33,7 @@
 #pragma GCC system_header
 
 #define __glibcxx_want_contracts
+#define __glibcxx_want_replaceable_contract_violation_handler
 #include <bits/version.h>
 
 #ifdef __cpp_lib_contracts

From fdumont@gcc.gnu.org  Mon Apr 13 20:30:21 2026
From: fdumont@gcc.gnu.org (Francois Dumont)
Date: Mon, 13 Apr 2026 20:30:21 +0000 (GMT)
Subject: [gcc r16-8589] libstdc++: [_Hashtable] Use std::addressof in
 post-C++11 code
Message-ID: <20260413203021.9D4CF4BA2E09@sourceware.org>

https://gcc.gnu.org/g:f1561d35696a77b968fd0c29bc5c9d9019c7059d

commit r16-8589-gf1561d35696a77b968fd0c29bc5c9d9019c7059d
Author: Fran?ois Dumont <frs.dumont@gmail.com>
Date:   Mon Apr 13 19:30:28 2026 +0200

    libstdc++: [_Hashtable] Use std::addressof in post-C++11 code
    
    There is no need to use std::__addressof in post-C++11 code.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/hashtable.h: Replace usages of std::__addressof with
            std::addressof.
            * include/bits/hashtable_policy.h: Likewise.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/hashtable.h        | 8 ++++----
 libstdc++-v3/include/bits/hashtable_policy.h | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index f4211eba516f..eff6c31d8272 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -1716,7 +1716,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	       _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::
     _M_move_assign(_Hashtable&& __ht, true_type)
     {
-      if (__builtin_expect(std::__addressof(__ht) == this, false))
+      if (__builtin_expect(std::addressof(__ht) == this, false))
 	return;
 
       this->_M_deallocate_nodes(_M_begin());
@@ -2345,7 +2345,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    if constexpr (__is_key_type<_Args...>)
 	      {
 		const auto& __key = _ExtractKey{}(__args...);
-		__kp = std::__addressof(__key);
+		__kp = std::addressof(__key);
 	      }
 	  }
 	else if constexpr (sizeof...(_Args) == 2)
@@ -2354,7 +2354,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      {
 		pair<const _Args&...> __refs(__args...);
 		const auto& __key = _ExtractKey{}(__refs);
-		__kp = std::__addressof(__key);
+		__kp = std::addressof(__key);
 	      }
 	  }
 
@@ -2368,7 +2368,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    __node._M_node
 		  = this->_M_allocate_node(std::forward<_Args>(__args)...);
 	    const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
-	    __kp = std::__addressof(__key);
+	    __kp = std::addressof(__key);
 	  }
 
 	if (auto __loc = _M_locate(*__kp))
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 79c36e4a02bf..6e4b365d5925 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -777,7 +777,7 @@ namespace __detail
       typename _RehashPolicy::_State _M_prev_state;
 
       _RehashStateGuard(_RehashPolicy& __policy)
-      : _M_guarded_obj(std::__addressof(__policy))
+      : _M_guarded_obj(std::addressof(__policy))
       , _M_prev_state(__policy._M_state())
       { }
       _RehashStateGuard(const _RehashStateGuard&) = delete;
@@ -1252,7 +1252,7 @@ namespace __detail
 
       void
       _M_init(const _Hash& __h)
-      { std::_Construct(std::__addressof(__hash_obj_storage::_M_u._M_h), __h); }
+      { std::_Construct(std::addressof(__hash_obj_storage::_M_u._M_h), __h); }
 
       void
       _M_destroy() { __hash_obj_storage::_M_u._M_h.~_Hash(); }

From tkaminsk@gcc.gnu.org  Tue Apr 14 10:56:20 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 14 Apr 2026 10:56:20 +0000 (GMT)
Subject: [gcc r16-8602] libstdc++: Implement structured binding support for
 integer_sequence
Message-ID: <20260414105620.C79C84BA2E08@sourceware.org>

https://gcc.gnu.org/g:6159bfcf8b5852417519cf4181bf0ff8907ac0ca

commit r16-8602-g6159bfcf8b5852417519cf4181bf0ff8907ac0ca
Author: Matthias Wippich <mfwippich@gmail.com>
Date:   Thu Apr 9 04:41:31 2026 +0200

    libstdc++: Implement structured binding support for integer_sequence
    
    This implements P1789R3 Library Support for Expansion Statements.
    https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p1789r3.pdf
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Co-authored-by: Ivan Lazaric <ivan.lazaric1@gmail.com>
    Signed-off-by: Matthias Wippich <mfwippich@gmail.com>

Diff:
---
 libstdc++-v3/include/bits/utility.h                |  36 ++++++
 libstdc++-v3/include/bits/version.def              |   5 +
 libstdc++-v3/include/bits/version.h                |   7 +-
 .../20_util/integer_sequence/tuple_access.cc       | 143 +++++++++++++++++++++
 .../20_util/integer_sequence/tuple_access_neg.cc   |  22 ++++
 libstdc++-v3/testsuite/experimental/feat-cxx14.cc  |   4 +-
 6 files changed, 214 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index 93e9e9f9dba2..74ae04d6bd2e 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -481,6 +481,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr size_t size() noexcept { return sizeof...(_Idx); }
     };
 
+#if __glibcxx_integer_sequence >= 202511L // C++ >= 26
+  /** @brief Structured binding support for `integer_sequence`
+
+    * @since C++26
+    * @{
+    */
+  /// Structured binding support
+  template<typename _Tp, _Tp... _Idx>
+    struct tuple_size<integer_sequence<_Tp, _Idx...>>
+    : integral_constant<size_t, sizeof...(_Idx)> { };
+
+  template<size_t __i, class _Tp, _Tp... _Idx>
+    struct tuple_element<__i, integer_sequence<_Tp, _Idx...>>
+    {
+      static_assert(__i < sizeof...(_Idx));
+      using type = _Tp;
+    };
+
+  template<size_t __i, class _Tp, _Tp... _Idx>
+    struct tuple_element<__i, const integer_sequence<_Tp, _Idx...>>
+    {
+      static_assert(__i < sizeof...(_Idx));
+      using type = _Tp;
+    };
+
+  template<size_t __i, class _Tp, _Tp... _Idx>
+    [[nodiscard]]
+    constexpr _Tp
+    get(integer_sequence<_Tp, _Idx...>) noexcept
+    {
+      static_assert(__i < sizeof...(_Idx));
+      return _Idx...[__i];
+    }
+    /// @}
+#endif // __glibcxx_integer_sequence >= 202511L
+
   /// Alias template make_integer_sequence
   template<typename _Tp, _Tp _Num>
     using make_integer_sequence
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index b88d9c3483f8..7aaf150d0875 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -184,6 +184,11 @@ ftms = {
 
 ftms = {
   name = integer_sequence;
+  values = {
+    v = 202511;
+    cxxmin = 26;
+    extra_cond = "__cpp_pack_indexing";
+  };
   values = {
     v = 201304;
     cxxmin = 14;
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 24ec0175e1e4..b247662f089e 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -186,7 +186,12 @@
 #undef __glibcxx_want_exchange_function
 
 #if !defined(__cpp_lib_integer_sequence)
-# if (__cplusplus >= 201402L)
+# if (__cplusplus >  202302L) && (__cpp_pack_indexing)
+#  define __glibcxx_integer_sequence 202511L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_integer_sequence)
+#   define __cpp_lib_integer_sequence 202511L
+#  endif
+# elif (__cplusplus >= 201402L)
 #  define __glibcxx_integer_sequence 201304L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_integer_sequence)
 #   define __cpp_lib_integer_sequence 201304L
diff --git a/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access.cc b/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access.cc
new file mode 100644
index 000000000000..afa644e7dab7
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access.cc
@@ -0,0 +1,143 @@
+// { dg-do compile { target c++26 } }
+
+#include <utility>
+#include <tuple>
+#include <testsuite_hooks.h>
+
+#if __cpp_lib_integer_sequence < 202511L
+# error "Feature-test macro __cpp_lib_integer_sequence is incorrect"
+#endif
+
+constexpr auto
+destructure_sum(auto seq)
+{
+  auto [...elems] = seq;
+  return (0 + ... + elems);
+}
+
+using IS1 = std::make_index_sequence<10>;
+static_assert( std::tuple_size_v<IS1> == 10 );
+static_assert( std::is_same_v<std::tuple_element_t<3, IS1>, std::size_t> );
+static_assert( std::get<7>(IS1{}) == 7 );
+static_assert( destructure_sum(IS1{}) == 45 );
+static_assert( noexcept(get<0>(IS1{})) );
+
+using IS2 = std::integer_sequence<int, 42, 101, -13>;
+static_assert( std::tuple_size_v<IS2> == 3 );
+static_assert( std::is_same_v<std::tuple_element_t<1, IS2>, int> );
+static_assert( std::get<2>(IS2{}) == -13 );
+static_assert( destructure_sum(IS2{}) == 130 );
+static_assert( noexcept(get<0>(IS2{})) );
+
+using IS3 = std::integer_sequence<char>;
+static_assert( std::tuple_size_v<IS3> == 0 );
+
+using IS4 = std::integer_sequence<int, 1, 2>;
+static_assert( !std::is_constructible_v<std::pair<int, int>, IS4> );
+static_assert( !std::is_constructible_v<std::tuple<int, int>, IS4> );
+
+template<typename = void>
+constexpr bool
+test_basic()
+{
+  {
+    auto [...elems] = std::make_index_sequence<0>{};
+    static_assert( sizeof...(elems) == 0 );
+  }
+
+  {
+    auto [...elems] = std::integer_sequence<int, 3, 5, 7, 11>{};
+
+    static_assert( sizeof...(elems) == 4 );
+
+    VERIFY( elems...[0] == 3 );
+    VERIFY( elems...[1] == 5 );
+    VERIFY( elems...[2] == 7 );
+    VERIFY( elems...[3] == 11 );
+  }
+
+  {
+    static constexpr auto [...elems] = std::integer_sequence<short, 2, 4, 8, 16>{};
+
+    static_assert( sizeof...(elems) == 4 );
+
+    static_assert( elems...[0] == 2 );
+    static_assert( elems...[1] == 4 );
+    static_assert( elems...[2] == 8 );
+    static_assert( elems...[3] == 16 );
+  }
+
+  {
+    constexpr auto [...elems] = std::integer_sequence<int, 1, 8, 2, 11>{};
+
+    static_assert( sizeof...(elems) == 4 );
+
+    static_assert( elems...[0] == 1 );
+    static_assert( elems...[1] == 8 );
+    static_assert( elems...[2] == 2 );
+    static_assert( elems...[3] == 11 );
+  }
+
+  {
+    static constexpr auto&& [...elems] = std::integer_sequence<short, 2, 4, 8, 16>{};
+
+    static_assert( sizeof...(elems) == 4 );
+
+    static_assert( elems...[0] == 2 );
+    static_assert( elems...[1] == 4 );
+    static_assert( elems...[2] == 8 );
+    static_assert( elems...[3] == 16 );
+  }
+
+  /* Unimplemented, see PR117784
+  {
+    constexpr auto&& [...elems] = std::integer_sequence<int, 1, 8, 2, 11>{};
+
+    static_assert( sizeof...(elems) == 4 );
+
+    static_assert( elems...[0] == 1 );
+    static_assert( elems...[1] == 8 );
+    static_assert( elems...[2] == 2 );
+    static_assert( elems...[3] == 11 );
+  }
+  */
+
+  {
+    auto idx = 0;
+    static constexpr auto seq = std::make_index_sequence<4>{};
+    template for (constexpr auto elem : seq)
+      {
+	VERIFY( elem == idx );
+	++idx;
+      }
+    VERIFY( idx == 4 );
+  }
+
+
+  /* Unimplemented, see PR117784
+  {
+    auto idx = 0;
+    constexpr auto seq = std::make_index_sequence<4>{};
+    template for (constexpr auto elem : seq)
+      {
+	VERIFY( elem == idx );
+	++idx;
+      }
+    VERIFY( idx == 4 );
+  }
+   
+  {
+    auto idx = 0;
+    template for (constexpr auto elem : std::make_index_sequence<4>{})
+      {
+	VERIFY( elem == idx );
+	++idx;
+      }
+    VERIFY( idx == 4 );
+  }
+  */
+
+  return true;
+}
+
+static_assert( test_basic() );
diff --git a/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access_neg.cc b/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access_neg.cc
new file mode 100644
index 000000000000..8640114e7d3d
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/integer_sequence/tuple_access_neg.cc
@@ -0,0 +1,22 @@
+// { dg-do compile { target c++26 } }
+
+#include <utility>
+
+using empty = std::integer_sequence<int>;
+static_assert( std::is_same_v<std::tuple_element_t<0, empty>, int> ); // { dg-error "here" }
+static_assert( std::is_same_v<std::tuple_element_t<0, const empty>, int> ); // { dg-error "here" }
+
+using size4 = std::integer_sequence<int, 1, 9, 7, 15>;
+static_assert( std::is_same_v<std::tuple_element_t<4, size4>, int> ); // { dg-error "here" }
+static_assert( std::is_same_v<std::tuple_element_t<4, const size4>, int> ); // { dg-error "here" }
+
+void
+test()
+{
+  (void)std::get<0>(empty{}); // { dg-error "here" }
+  (void)std::get<4>(size4{}); // { dg-error "here" }
+}
+
+// { dg-error "static assertion failed" "" { target *-*-* } 0 }
+// { dg-error "cannot index an empty pack" "" { target *-*-* } 0 }
+// { dg-error "pack index '.' is out of range for pack of length" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
index c009062b55cd..4cc56c5f76ec 100644
--- a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
+++ b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
@@ -18,8 +18,8 @@
 
 #ifndef  __cpp_lib_integer_sequence
 #  error "__cpp_lib_integer_sequence"
-#elif  __cpp_lib_integer_sequence != 201304
-#  error "__cpp_lib_integer_sequence != 201304"
+#elif  __cpp_lib_integer_sequence < 201304
+#  error "__cpp_lib_integer_sequence < 201304"
 #endif
 
 #ifndef  __cpp_lib_exchange_function

From tkaminsk@gcc.gnu.org  Tue Apr 14 12:21:33 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 14 Apr 2026 12:21:33 +0000 (GMT)
Subject: [gcc r16-8603] libstdc++: Runtime fallback for constant_wrapper
 subscript and call operators.
Message-ID: <20260414122133.305DE4BA2E09@sourceware.org>

https://gcc.gnu.org/g:9c0a9b700e5b8c1fbd09cfab7f8d268195aeebfe

commit r16-8603-g9c0a9b700e5b8c1fbd09cfab7f8d268195aeebfe
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 7 17:03:25 2026 +0200

    libstdc++: Runtime fallback for constant_wrapper subscript and call operators.
    
    This implements P3978R3: constant_wrapper should unwrap on call and subscript.
    
    The operator() and operator[] are now fallback to calling corresponding
    operation on value, if either arguments are not constant_wrapper like, or
    the result of the invocation is not usable as non-type template argument
    (non-constant). The call operator is also now defined in terms of invoke,
    to support member pointers.
    
    The noexcept specification is simplified, by observing that creating a
    default constructed (constant_wrapper<value(....)>{}) is never throwing
    operation. Nested requires expr is used for short-circuting, and thus
    avoid checking viability of the operation on the value with
    constant_wrapper only (see PoisonedAdd, PoisonedIndex in tests).
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/utility.h                |  52 +++-
 libstdc++-v3/include/bits/version.def              |   4 +-
 libstdc++-v3/include/bits/version.h                |   4 +-
 .../testsuite/20_util/constant_wrapper/generic.cc  | 342 +++++++++++++++++----
 .../testsuite/20_util/constant_wrapper/version.cc  |   2 +-
 5 files changed, 334 insertions(+), 70 deletions(-)

diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index 74ae04d6bd2e..dac02e4a479d 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -41,6 +41,9 @@
 
 #include <type_traits>
 #include <bits/move.h>
+#ifdef __glibcxx_constant_wrapper // C++ >= 26
+#  include <bits/invoke.h>
+#endif
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -342,19 +345,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	-> constant_wrapper<_Left::value->*(_Right::value)>
       { return {}; }
 
-    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
-      constexpr auto
-      operator()(this _Tp, _Args...) noexcept
-      requires
-	requires(_Args...) { constant_wrapper<_Tp::value(_Args::value...)>(); }
-      { return constant_wrapper<_Tp::value(_Args::value...)>{}; }
-
-    template<_ConstExprParam _Tp, _ConstExprParam... _Args>
-      constexpr auto
-      operator[](this _Tp, _Args...) noexcept
-	-> constant_wrapper<(_Tp::value[_Args::value...])>
-      { return {}; }
-
     template<_ConstExprParam _Tp>
       constexpr auto
       operator++(this _Tp) noexcept
@@ -453,6 +443,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   	-> constant_wrapper<(value = _Right::value)>
       { return {}; }
 
+    template<typename... _Args,
+	     bool _ConstExprInvocable = requires {
+	       requires (_ConstExprParam<remove_cvref_t<_Args>> && ...);
+	       typename constant_wrapper<std::__invoke(value, remove_cvref_t<_Args>::value...)>;
+	     }>
+      requires _ConstExprInvocable || is_invocable_v<const value_type&, _Args...>
+      static constexpr decltype(auto)
+      operator()(_Args&&... __args)
+      noexcept(requires {
+	requires _ConstExprInvocable || is_nothrow_invocable_v<const value_type&, _Args...>;
+      })
+      {
+	if constexpr (_ConstExprInvocable)
+	  return constant_wrapper<std::__invoke(value, remove_cvref_t<_Args>::value...)>{};
+	else
+	  return std::__invoke(value, std::forward<_Args>(__args)...);
+      }
+
+    template<typename... _Args,
+	     bool _ConstExprSubscriptable = requires {
+	       requires (_ConstExprParam<remove_cvref_t<_Args>> && ...);
+	       typename constant_wrapper<value[remove_cvref_t<_Args>::value...]>;
+	     }>
+      requires _ConstExprSubscriptable || requires { value[std::declval<_Args>()...]; }
+      static constexpr decltype(auto)
+      operator[](_Args&&... __args)
+      noexcept(requires {
+	requires _ConstExprSubscriptable || noexcept(value[std::declval<_Args>()...]);
+      })
+      {
+	if constexpr (_ConstExprSubscriptable)
+	  return constant_wrapper<value[remove_cvref_t<_Args>::value...]>{};
+	else
+	  return value[std::forward<_Args>(__args)...];
+      }
+
     constexpr
     operator decltype(value)() const noexcept
     { return value; }
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 7aaf150d0875..94fc1f859932 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -408,8 +408,10 @@ ftms = {
 
 ftms = {
   name = constant_wrapper;
+  // 202506 P2781R9 std::constexpr_wrapper 
+  // 202603 P3978R3 constant_wrapper should unwrap on call and subscript
   values = {
-    v = 202506;
+    v = 202603;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index b247662f089e..402e67580eb3 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -447,9 +447,9 @@
 
 #if !defined(__cpp_lib_constant_wrapper)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_constant_wrapper 202506L
+#  define __glibcxx_constant_wrapper 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
-#   define __cpp_lib_constant_wrapper 202506L
+#   define __cpp_lib_constant_wrapper 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_constant_wrapper) */
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
index 1c7770d7a899..7538efead49d 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
@@ -1,6 +1,8 @@
 // { dg-do run { target c++26 } }
+#include <functional>
 #include <utility>
 #include <string_view>
+#include <stdexcept>
 
 #include <testsuite_hooks.h>
 
@@ -20,9 +22,9 @@ test_c_arrays()
   auto access = [](auto x, size_t i)
   { return x[i]; };
 
-  check_same(access(std::cw<x>, 0), x[0]);
-  check_same(access(std::cw<x>, 1), x[1]);
-  check_same(access(std::cw<x>, 2), x[2]);
+  check_same(std::cw<x>[0], x[0]);
+  check_same(std::cw<x>[1], x[1]);
+  check_same(std::cw<x>[2], x[2]);
 
   check_same(cx[std::cw<0>], std::cw<x[0]>);
   check_same(cx[std::cw<1>], std::cw<x[1]>);
@@ -96,76 +98,302 @@ constexpr int
 add(int i, int j)
 { return i + j; }
 
-struct Add
+template<bool Noexcept>
+struct CAdd
 {
   constexpr int
-  operator()(int i, int j) const noexcept
+  operator()(int i, int j) const noexcept(Noexcept)
   { return i + j; }
 };
 
-constexpr void
-test_function_object()
+template<bool Noexcept>
+struct RAdd
+{
+  int
+  operator()(int i, int j) const noexcept(Noexcept)
+  { return i + j; }
+};
+
+struct CMixedAdd
+{
+  static constexpr int
+  operator()(int i, int j)
+  { return i + j; }
+
+  template <auto N1, auto N2>
+    static constexpr int operator()
+    (std::constant_wrapper<N1, int> i, std::constant_wrapper<N2, int> j)
+    { return 100 + i + j; }
+};
+
+struct RMixedAdd
+{
+  static int
+  operator()(int i, int j)
+  { return i + j; }
+
+  template <auto N1, auto N2>
+    static int operator()
+    (std::constant_wrapper<N1, int> i, std::constant_wrapper<N2, int> j)
+    { return 100 + i + j; }
+};
+
+template<typename T1, typename T2>
+struct AtLeastOneInt
+{
+  static_assert(std::is_same_v<T1, int> || std::is_same_v<T2, int>);
+  using type = int;
+};
+
+struct PoisonedAdd
 {
-  auto check = [](auto cfo)
+  template<typename T1, typename T2>
+  constexpr static
+  typename AtLeastOneInt<T1, T2>::type 
+  operator()(T1 i, T2 j) noexcept
+  { return i + j; }
+};
+
+struct MoveOnly
+{
+  constexpr explicit
+  MoveOnly(int p) : v(p)
+  { }
+
+  MoveOnly(MoveOnly&&) = default;
+
+  int v;
+};
+
+struct MoveArgFunc
+{
+  constexpr int
+  operator()(MoveOnly arg) const
+  { return arg.v; }
+};
+
+struct ThrowFunc
+{
+  static constexpr int
+  operator()(int i, int j)
+  {
+    if (i < 0 || j < 0)
+      throw std::invalid_argument("negative");
+    return i + j;
+  }
+};
+
+template<bool Constexpr, auto functor>
+  constexpr void
+  check_invoke()
   {
     auto ci = std::cw<2>;
     auto cj = std::cw<3>;
+    auto cfo = std::cw<functor>;
 
-    VERIFY(cfo(ci, cj) == 5);
-    static_assert(std::same_as<decltype(cfo(ci, cj)), std::constant_wrapper<5>>);
+    if constexpr (Constexpr)
+      check_same(cfo(ci, cj), std::cw<5>);
+    else
+      check_same(cfo(ci, cj), 5);
 
-    static_assert(std::invocable<decltype(cfo), decltype(ci), decltype(cj)>);
-    static_assert(!std::invocable<decltype(cfo), int, decltype(cj)>);
-    static_assert(!std::invocable<decltype(cfo), int, int>);
-  };
+    check_same(cfo(2, cj), 5);
+    check_same(cfo(2, 3), 5);
+
+    constexpr bool Noexcept = noexcept(functor(2, 3));
+    static_assert(noexcept(cfo(ci, cj)) == Constexpr || Noexcept);
+    static_assert(noexcept(cfo(2, cj)) == Noexcept);
+    static_assert(noexcept(cfo(2, 3)) == Noexcept);
+  }
 
-  check(std::cw<Add{}>);
-  check(std::cw<[](int i, int j){ return i + j; }>);
-  check(std::cw<[](auto i, auto j){ return i + j; }>);
+constexpr void
+test_function_object()
+{
+  check_invoke<true, CAdd<true>{}>();
+  check_invoke<true, CAdd<false>{}>();
+  check_invoke<true, [](int i, int j) { return i + j; }>();
+  check_invoke<true, [](auto i, auto j) noexcept { return i + j; }>();
+  if !consteval {
+    check_invoke<false, RAdd<true>{}>();
+    check_invoke<false, RAdd<false>{}>();
+  }
+
+  // Check if constant_wrappers are not passed to value,
+  // if they can be unwrapped.
+  check_invoke<true, PoisonedAdd{}>();
+
+  // Prefer unwrapping constant_wrappers, so calls (int, int)
+  check_same(CMixedAdd{}(2, 3), 5);
+  check_same(CMixedAdd{}(std::cw<2>, std::cw<3>), 105);
+  check_same(std::cw<CMixedAdd{}>(std::cw<2>, std::cw<3>), std::cw<5>);
+  check_invoke<true, CMixedAdd{}>();
+  if !consteval {
+    // Cannot return value wrapped in constant_wrapper because operator
+    // is not constexpr, fallbacks to runtime call, that selects
+    // (constant_wrapper, constant_wrapper) overload
+    check_same(RMixedAdd{}(2, 3), 5);
+    check_same(RMixedAdd{}(std::cw<2>, std::cw<3>), 105);
+    check_same(std::cw<RMixedAdd{}>(std::cw<2>, std::cw<3>), 105);
+    check_same(std::cw<RMixedAdd{}>(std::cw<2>, 3), 5);
+    check_same(std::cw<RMixedAdd{}>(2, 3), 5);
+  }
+
+  // Test if arguments are fowarded
+  std::cw<MoveArgFunc{}>(MoveOnly{10});
+
+  // For positive arguments call do not throw, constant_wrapper type is valid.
+  check_invoke<true, ThrowFunc{}>();
+  // For negative arguments, the call exits via exception, and constant_wrapper 
+  // type is invalid, so we fallback to runtime.
+  static_assert(std::is_same_v<int, decltype(std::cw<ThrowFunc{}>(std::cw<-1>, std::cw<1>))>);
+  static_assert(!noexcept(std::cw<ThrowFunc{}>(std::cw<-1>, std::cw<1>)));
+  try {
+    std::cw<ThrowFunc{}>(std::cw<-1>, std::cw<1>);
+    VERIFY(false);
+  } catch (const std::invalid_argument&) {
+    VERIFY(true);
+  }
 }
 
 constexpr void
 test_function_pointer()
 {
-  auto cptr = std::cw<add>;
-  auto ci = std::cw<2>;
-  auto cj = std::cw<3>;
+  check_invoke<true, add>();
+}
 
-  VERIFY(cptr(ci, cj) == 5);
-  static_assert(std::same_as<decltype(cptr(ci, cj)), std::constant_wrapper<5>>);
+template<bool Noexcept>
+struct CIndex
+{
+  constexpr int
+  operator[](int i, int j) const noexcept(Noexcept)
+  { return i*j; }
+};
 
-  VERIFY(cptr(2, cj) == 5);
-  static_assert(std::same_as<decltype(cptr(2, cj)), int>);
+template<bool Noexcept>
+struct RIndex
+{
+  int
+  operator[](int i, int j) const noexcept(Noexcept)
+  { return i*j; }
+};
 
-  VERIFY(cptr(2, 3) == 5);
-  static_assert(std::same_as<decltype(cptr(2, 3)), int>);
-}
+struct CMixedIndex
+{
+  static constexpr int
+  operator[](int i, int j)
+  { return i * j; }
+
+  template <auto N1, auto N2>
+    static constexpr int operator[]
+    (std::constant_wrapper<N1, int> i, std::constant_wrapper<N2, int> j)
+    { return 100 + i * j; }
+};
+
+struct RMixedIndex
+{
+  static int
+  operator[](int i, int j)
+  { return i * j; }
+
+  template <auto N1, auto N2>
+    static int operator[]
+    (std::constant_wrapper<N1, int> i, std::constant_wrapper<N2, int> j)
+    { return 100 + i * j; }
+};
 
-struct Indexable1
+struct PoisonedIndex
+{
+  template<typename T1, typename T2>
+  constexpr static
+  typename AtLeastOneInt<T1, T2>::type 
+  operator[](T1 i, T2 j) noexcept
+  { return i * j; }
+};
+
+struct MoveArgIndex
 {
   constexpr int
-  operator[](int i, int j) const noexcept
-  { return i*j; }
+  operator[](MoveOnly arg) const
+  { return arg.v; }
 };
 
-template<typename Obj, typename... Args>
-  concept indexable = requires (Obj obj, Args... args)
+struct ThrowIndex
+{
+  static constexpr int
+  operator[](int i, int j)
   {
-    obj[args...];
-  };
+    if (i < 0 || j < 0)
+      throw std::invalid_argument("negative");
+    return i * j;
+  }
+};
+
+template<bool Constexpr, auto index>
+  constexpr void
+  check_subscript()
+  {
+    auto ci = std::cw<2>;
+    auto cj = std::cw<3>;
+    auto cio = std::cw<index>;
+
+    if constexpr (Constexpr)
+      check_same(cio[ci, cj], std::cw<6>);
+    else
+      check_same(cio[ci, cj], 6);
+
+    check_same(cio[2, cj], 6);
+    check_same(cio[2, 3], 6);
+
+    constexpr bool Noexcept = noexcept(index[2, 3]);
+    static_assert(noexcept(cio[ci, cj]) == Constexpr || Noexcept);
+    static_assert(noexcept(cio[2, cj]) == Noexcept);
+    static_assert(noexcept(cio[2, 3]) == Noexcept);
+  }
 
 constexpr void
 test_indexable1()
 {
-  auto cind = std::cw<Indexable1{}>;
-  auto ci = std::cw<2>;
-  auto cj = std::cw<3>;
-  VERIFY(cind[ci, cj] == ci*cj);
-  static_assert(std::same_as<decltype(cind[ci, cj]), std::constant_wrapper<6>>);
-
-  static_assert(indexable<decltype(cind), decltype(ci), decltype(cj)>);
-  static_assert(!indexable<decltype(cind), int, decltype(cj)>);
-  static_assert(!indexable<decltype(cind), int, int>);
+  check_subscript<true, CIndex<true>{}>();
+  check_subscript<true, CIndex<false>{}>();
+  if !consteval {
+    check_subscript<false, RIndex<true>{}>();
+    check_subscript<false, RIndex<false>{}>();
+  }
+
+  // Check if constant_wrappers are not passed to value,
+  // if they can be unwrapped.
+  check_subscript<true, PoisonedIndex{}>();
+
+  // Prefer unwrapping constant_wrappers, so calls (int, int)
+  check_same(CMixedIndex{}[2, 3], 6);
+  check_same(CMixedIndex{}[std::cw<2>, std::cw<3>], 106);
+  check_same(std::cw<CMixedIndex{}>[std::cw<2>, std::cw<3>], std::cw<6>);
+  check_subscript<true, CMixedIndex{}>();
+  if !consteval {
+    // Cannot return value wrapped in constant_wrapper because operator
+    // is not constexpr, fallbacks to runtime call, that selects
+    // (constant_wrapper, constant_wrapper) overload
+    check_same(RMixedIndex{}[2, 3], 6);
+    check_same(RMixedIndex{}[std::cw<2>, std::cw<3>], 106);
+    check_same(std::cw<RMixedIndex{}>[std::cw<2>, std::cw<3>], 106);
+    check_same(std::cw<RMixedIndex{}>[std::cw<2>, 3], 6);
+    check_same(std::cw<RMixedIndex{}>[2, 3], 6);
+  }
+
+  // Test if arguments are fowarded
+  std::cw<MoveArgIndex{}>[MoveOnly{10}];
+
+  // For positive arguments subscript do not throw, constant_wrapper type is valid.
+  check_subscript<true, ThrowIndex{}>();
+  // For negative arguments, the subscript exits via exception, and constant_wrapper 
+  // type is invalid, so we fallback to runtime.
+  static_assert(std::is_same_v<int, decltype(std::cw<ThrowIndex{}>[std::cw<-1>, std::cw<1>])>);
+  static_assert(!noexcept(std::cw<ThrowIndex{}>[std::cw<-1>, std::cw<1>]));
+  try {
+    std::cw<ThrowIndex{}>[std::cw<-1>, std::cw<1>];
+    VERIFY(false);
+  } catch (const std::invalid_argument&) {
+    VERIFY(true);
+  }
 }
 
 struct Indexable2
@@ -182,12 +410,9 @@ test_indexable2()
   auto cind = std::cw<Indexable2{}>;
   auto ci = std::cw<2>;
   auto cj = std::cw<3>;
-  VERIFY(cind[ci, cj] == ci*cj);
-  static_assert(std::same_as<decltype(cind[ci, cj]), std::constant_wrapper<6>>);
-
-  static_assert(indexable<decltype(cind), decltype(ci), decltype(cj)>);
-  static_assert(!indexable<decltype(cind), int, decltype(cj)>);
-  static_assert(!indexable<decltype(cind), int, int>);
+  check_same(cind[ci, cj], std::cw<6>);
+  check_same(cind[ci, 3], 6);
+  check_same(cind[2, 3], 6);
 }
 
 struct Indexable3
@@ -234,10 +459,21 @@ test_member_pointer()
   check_same((&co)->*(&Divide::value), nom);
   check_same(&(co.value)->*cvalue, nom);
 
-  auto expect_unwrapped = nom / denom;
-  check_same(((&co)->*(&Divide::divide))(denom), expect_unwrapped);
-  check_same((&(co.value)->*cdiv)(denom), expect_unwrapped);
-  check_same(((&decltype(co)::value)->*cdiv)(denom), expect_unwrapped);
+  check_same(cvalue(co), std::cw<nom>);
+  check_same(cvalue(co.value), nom);
+  check_same(cvalue(&co.value), nom);
+  check_same(cvalue(std::ref(co.value)), nom);
+
+  auto cresult = std::cw<nom / denom>;
+  check_same(((&co)->*(&Divide::divide))(denom), cresult.value);
+  check_same((&(co.value)->*cdiv)(denom), cresult.value);
+  check_same(((&decltype(co)::value)->*cdiv)(denom), cresult.value);
+
+  check_same(cdiv(co, std::cw<denom>), cresult); 
+  check_same(cdiv(co.value, std::cw<denom>), cresult.value); 
+  check_same(cdiv(co.value, denom), cresult.value); 
+  check_same(cdiv(&co.value, denom), cresult.value); 
+  check_same(cdiv(std::ref(co.value), denom), cresult.value); 
 }
 
 struct Truthy
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
index 776d80c576a3..7a620994e1f4 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
@@ -5,7 +5,7 @@
 
 #ifndef __cpp_lib_constant_wrapper
 #error "Feature test macro __cpp_lib_constant_wrapper is missing for <utility>"
-#if __cpp_lib_constant_wrapper < 202506L
+#if __cpp_lib_constant_wrapper < 202603L
 #error "Feature test macro __cpp_lib_constant_wrapper has the wrong value"
 #endif
 #endif

From tkaminsk@gcc.gnu.org  Tue Apr 14 12:35:08 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 14 Apr 2026 12:35:08 +0000 (GMT)
Subject: [gcc r16-8604] libstdc++: Fix constant_wrapper compile-time test for
 COW strings.
Message-ID: <20260414123508.0E79E4BA2E09@sourceware.org>

https://gcc.gnu.org/g:2ffbf69999b1a0e49362aa4c687eb176675a2e53

commit r16-8604-g2ffbf69999b1a0e49362aa4c687eb176675a2e53
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 14 14:31:24 2026 +0200

    libstdc++: Fix constant_wrapper compile-time test for COW strings.
    
    Throwing std::invalid_argument at compile time is only supported for
    SSO strings, replaced with custom class.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/20_util/constant_wrapper/generic.cc: Replace
            std::std::invalid_argument with NegativeArgument and
            removed <stdexcept> include.

Diff:
---
 libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
index 7538efead49d..bd41fc4ca3a1 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
@@ -2,7 +2,6 @@
 #include <functional>
 #include <utility>
 #include <string_view>
-#include <stdexcept>
 
 #include <testsuite_hooks.h>
 
@@ -172,13 +171,15 @@ struct MoveArgFunc
   { return arg.v; }
 };
 
+struct NegativeArgument {};
+
 struct ThrowFunc
 {
   static constexpr int
   operator()(int i, int j)
   {
     if (i < 0 || j < 0)
-      throw std::invalid_argument("negative");
+      throw NegativeArgument();
     return i + j;
   }
 };
@@ -249,7 +250,7 @@ test_function_object()
   try {
     std::cw<ThrowFunc{}>(std::cw<-1>, std::cw<1>);
     VERIFY(false);
-  } catch (const std::invalid_argument&) {
+  } catch (const NegativeArgument&) {
     VERIFY(true);
   }
 }
@@ -322,7 +323,7 @@ struct ThrowIndex
   operator[](int i, int j)
   {
     if (i < 0 || j < 0)
-      throw std::invalid_argument("negative");
+      throw NegativeArgument();
     return i * j;
   }
 };
@@ -391,7 +392,7 @@ test_indexable1()
   try {
     std::cw<ThrowIndex{}>[std::cw<-1>, std::cw<1>];
     VERIFY(false);
-  } catch (const std::invalid_argument&) {
+  } catch (const NegativeArgument&) {
     VERIFY(true);
   }
 }

From tkaminsk@gcc.gnu.org  Tue Apr 14 14:19:05 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 14 Apr 2026 14:19:05 +0000 (GMT)
Subject: [gcc r16-8606] libstdc++: Test for using non-ascii unicode fill with
 non-unicode encoding.
Message-ID: <20260414141905.349804BA23CE@sourceware.org>

https://gcc.gnu.org/g:9184dd174635b0ec54e97d1f794ef0c3d5147f80

commit r16-8606-g9184dd174635b0ec54e97d1f794ef0c3d5147f80
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 10 10:24:19 2026 +0200

    libstdc++: Test for using non-ascii unicode fill with non-unicode encoding.
    
    This checks if format string using as fill character an Unicode code-point,
    that is encoded as multiple code units, is rejected when literal encoding
    is not Unicode.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/format/fill.cc: New test.
            * testsuite/std/format/fill_nonunicode.cc: New test.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/testsuite/std/format/fill.cc          | 56 ++++++++++++++++++++++
 .../testsuite/std/format/fill_nonunicode.cc        |  5 ++
 2 files changed, 61 insertions(+)

diff --git a/libstdc++-v3/testsuite/std/format/fill.cc b/libstdc++-v3/testsuite/std/format/fill.cc
new file mode 100644
index 000000000000..d281ec1080a2
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/format/fill.cc
@@ -0,0 +1,56 @@
+// { dg-options "-fexec-charset=UTF-8 -DUNICODE_ENC" }
+// { dg-do run { target c++20 } }
+
+#include <format>
+#include <testsuite_hooks.h>
+
+template<typename... Args>
+bool
+is_format_string_for(const char* str, Args&&... args)
+{
+  try {
+    (void) std::vformat(str, std::make_format_args(args...));
+    return true;
+  } catch (const std::format_error&) {
+    return false;
+  }
+}
+
+template<typename T>
+void
+test_fill(T t)
+{
+  constexpr bool accept_utf8_nonascii
+#ifdef UNICODE_ENC
+   = true;
+#else
+   = false;
+#endif
+
+   VERIFY(is_format_string_for("{: <}", t));
+   VERIFY(is_format_string_for("{:?<}", t));
+   // U+0119 Latin Small Letter E with Ogonek
+   VERIFY(is_format_string_for("{:\xC4\x99<}", t) == accept_utf8_nonascii);
+   // U+2705 White Heavy Check Mark
+   VERIFY(is_format_string_for("{:\xE2\x9C\x85<}", t) == accept_utf8_nonascii);
+   // U+1F602 Face with Tears of Joy
+   VERIFY(is_format_string_for("{:\xF0\x9F\x98\x82<}", t) == accept_utf8_nonascii);
+}
+
+struct MyStringView : std::string_view
+{
+  using std::string_view::string_view;
+};
+
+template<>
+struct std::formatter<MyStringView, char>
+  : std::formatter<std::string_view, char>
+{};
+
+int main()
+{
+  test_fill(10);
+  test_fill(std::string_view("test"));
+  // Test with type stored by handle
+  test_fill(MyStringView("test"));
+}
diff --git a/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc b/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
new file mode 100644
index 000000000000..1370cf57ccdc
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
@@ -0,0 +1,5 @@
+// { dg-options "-fexec-charset=ISO8859-1" }
+// { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
+
+#include "fill.cc"

From tkaminsk@gcc.gnu.org  Tue Apr 14 15:19:22 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 14 Apr 2026 15:19:22 +0000 (GMT)
Subject: [gcc r16-8608] libstdc++: Define __cpp_lib_stdbit_h and
 __cpp_lib_stdckdint_h feature test macros.
Message-ID: <20260414151922.A6CA14BA2E31@sourceware.org>

https://gcc.gnu.org/g:62d243c91c05b13490aac10b4faad81e86ea6bbf

commit r16-8608-g62d243c91c05b13490aac10b4faad81e86ea6bbf
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 14 16:30:36 2026 +0200

    libstdc++: Define __cpp_lib_stdbit_h and __cpp_lib_stdckdint_h feature test macros.
    
    This implements LWG4550: Need new feature test macros for <stdckdint.h>
    and <stdbit.h>.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def            | 16 ++++++++++++++++
 libstdc++-v3/include/bits/version.h              | 20 ++++++++++++++++++++
 libstdc++-v3/include/c_compatibility/stdbit.h    |  8 ++++++--
 libstdc++-v3/include/c_compatibility/stdckdint.h |  8 ++++++--
 4 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 94fc1f859932..13dba4d63789 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1871,6 +1871,22 @@ ftms = {
   };
 };
 
+ftms = {
+  name = stdbit_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
+ftms = {
+  name = stdckdint_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
 ftms = {
   name = adaptor_iterator_pair_constructor;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 402e67580eb3..743f7e29fe29 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2076,6 +2076,26 @@
 #endif /* !defined(__cpp_lib_stdatomic_h) */
 #undef __glibcxx_want_stdatomic_h
 
+#if !defined(__cpp_lib_stdbit_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdbit_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdbit_h)
+#   define __cpp_lib_stdbit_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdbit_h) */
+#undef __glibcxx_want_stdbit_h
+
+#if !defined(__cpp_lib_stdckdint_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdckdint_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdckdint_h)
+#   define __cpp_lib_stdckdint_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdckdint_h) */
+#undef __glibcxx_want_stdckdint_h
+
 #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)
 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
 #  define __glibcxx_adaptor_iterator_pair_constructor 202106L
diff --git a/libstdc++-v3/include/c_compatibility/stdbit.h b/libstdc++-v3/include/c_compatibility/stdbit.h
index 1fb691e36c18..fa4ec0414c6e 100644
--- a/libstdc++-v3/include/c_compatibility/stdbit.h
+++ b/libstdc++-v3/include/c_compatibility/stdbit.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDBIT_H
 #define _GLIBCXX_STDBIT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdbit_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdbit_h // C++ >= 26
+
 #include <bit>
 
 #define __STDC_VERSION_STDBIT_H__ 202311L
@@ -577,6 +581,6 @@ _GLIBCXX_STDBIT_FUNC(stdc_bit_floor);
 _GLIBCXX_STDBIT_FUNC(stdc_bit_ceil);
 #undef _GLIBCXX_STDBIT_FUNC
 #endif // !DOXYGEN
-#endif // C++26
+#endif // __cpp_lib_stdbit_h
 
 #endif // _GLIBCXX_STDBIT_H
diff --git a/libstdc++-v3/include/c_compatibility/stdckdint.h b/libstdc++-v3/include/c_compatibility/stdckdint.h
index 5bdf4dc7b24b..0f0b30cc8997 100644
--- a/libstdc++-v3/include/c_compatibility/stdckdint.h
+++ b/libstdc++-v3/include/c_compatibility/stdckdint.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDCKDINT_H
 #define _GLIBCXX_STDCKDINT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdckdint_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdckdint_h // C++ >= 26
+
 #include <type_traits>
 #include <concepts>
 
@@ -96,6 +100,6 @@ using __gnu_cxx::ckd_sub;
 using __gnu_cxx::ckd_mul;
 #endif
 
-#endif // C++26
+#endif // __cpp_lib_stdckdint_h
 
 #endif // _GLIBCXX_STDCKDINT_H

From jakub@gcc.gnu.org  Wed Apr 15 06:53:43 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Wed, 15 Apr 2026 06:53:43 +0000 (GMT)
Subject: [gcc r16-8662] c++,
 libstdc++: Implement LWG4483 - Multidimensional arrays are not
 supported by meta::reflect_const
Message-ID: <20260415065343.50E074BA2E07@sourceware.org>

https://gcc.gnu.org/g:2cdd7831e31601c640bec01a1240cbcb6a72b5c4

commit r16-8662-g2cdd7831e31601c640bec01a1240cbcb6a72b5c4
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 15 08:52:17 2026 +0200

    c++, libstdc++: Implement LWG4483 - Multidimensional arrays are not supported by meta::reflect_constant_array and related functions
    
    The following patch attempts to implement LWG4483.  As written in the
    approved resolution, some checks are done on strip_array_types (valuet)
    rather than on valuet and one is skipped.  Tomasz on IRC reasoned why
    input_range should otherwise already ensure we see similar type, so just
    for the possibility of fuzzed <meta> the patch adds some verification.
    And as the array cases are contiguous, instead of actually recursing (for
    which we'd need to have lvalue of the *it rather than prvalue) it just
    walks the CONSTRUCTORs for the arrays and handles the elts in there
    recursively.
    The <meta> changes do exactly what the LWG4483 change says to do.
    
    2026-04-15  Jakub Jelinek  <jakub@redhat.com>
    
            * reflect.cc (adjust_array_elt): New function.
            (get_range_elts): Implement LWG4483 - Multidimensional arrays are not
            supported by meta::reflect_constant_array and related functions.
            Handle ARRAY_TYPE valuet.  Don't unshare_expr in the class valuet case,
            get_template_param_object will unshare.
    
            * g++.dg/reflect/reflect_constant_array9.C: New test.
            * g++.dg/reflect/reflect_constant_array10.C: New test.
            * g++.dg/reflect/reflect_constant_array11.C: New test.
            * g++.dg/reflect/define_static_array6.C: New test.
            * g++.dg/reflect/define_static_object2.C: Uncomment older tests and
            fix them, add tests for unions.
    
            * include/std/meta (define_static_object): Adjust for LWG4483 changes
            - handle unions and arrays differently.
    
    Reviewed-by: Jason Merrill <jason@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/cp/reflect.cc                                  | 73 +++++++++++++++++++---
 .../g++.dg/reflect/define_static_array6.C          | 27 ++++++++
 .../g++.dg/reflect/define_static_object2.C         | 23 ++++---
 .../g++.dg/reflect/reflect_constant_array10.C      | 57 +++++++++++++++++
 .../g++.dg/reflect/reflect_constant_array11.C      | 18 ++++++
 .../g++.dg/reflect/reflect_constant_array9.C       | 28 +++++++++
 libstdc++-v3/include/std/meta                      |  7 ++-
 7 files changed, 217 insertions(+), 16 deletions(-)

diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc
index 2bbab5e183b8..f06353305a5f 100644
--- a/gcc/cp/reflect.cc
+++ b/gcc/cp/reflect.cc
@@ -394,6 +394,40 @@ replace_parm_r (tree *tp, int *walk_subtrees, void *data)
 static tree throw_exception (location_t, const constexpr_ctx *, const char *,
 			     tree, bool *, tree *);
 
+/* Helper function for get_range_elts, handle adjustment of ARRAY_TYPE elts
+   of a retvec.  */
+
+static tree
+adjust_array_elt (location_t loc, const constexpr_ctx *ctx, tree valuet,
+		  tree expr, tree fun, bool *non_constant_p, tree *jump_target)
+{
+  if (TREE_CODE (valuet) == ARRAY_TYPE)
+    {
+      if (TREE_CODE (expr) != CONSTRUCTOR
+	  || TREE_CODE (TREE_TYPE (expr)) != ARRAY_TYPE)
+	return throw_exception (loc, ctx, "reflect_constant_array failed",
+				fun, non_constant_p, jump_target);
+      unsigned int i;
+      tree val;
+      FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (expr), i, val)
+	{
+	  CONSTRUCTOR_ELT (expr, i)->value
+	    = adjust_array_elt (loc, ctx, TREE_TYPE (valuet), val, fun,
+				non_constant_p, jump_target);
+	  if (*jump_target || *non_constant_p)
+	    return NULL_TREE;
+	}
+      return expr;
+    }
+  expr = convert_reflect_constant_arg (valuet, expr);
+  if (expr == error_mark_node)
+    return throw_exception (loc, ctx, "reflect_constant failed",
+			    fun, non_constant_p, jump_target);
+  if (VAR_P (expr))
+    expr = DECL_INITIAL (expr);
+  return expr;
+}
+
 /* Kinds for get_range_elts.  */
 
 enum get_range_elts_kind {
@@ -513,23 +547,24 @@ get_range_elts (location_t loc, const constexpr_ctx *ctx, tree call, int n,
 	}
       if (kind == REFLECT_CONSTANT_ARRAY)
 	{
-	  if (!structural_type_p (valuet))
+	  tree valuete = strip_array_types (valuet);
+	  if (!structural_type_p (valuete))
 	    {
 	      if (!cxx_constexpr_quiet_p (ctx))
 		{
 		  auto_diagnostic_group d;
 		  error_at (loc, "%<reflect_constant_array%> argument with "
 				 "%qT which is not a structural type", inst);
-		  structural_type_p (valuet, true);
+		  structural_type_p (valuete, true);
 		}
 	      *non_constant_p = true;
 	      return NULL_TREE;
 	    }
 	  TREE_VEC_ELT (args, 0)
-	    = build_stub_type (valuet,
-			       cp_type_quals (valuet) | TYPE_QUAL_CONST,
+	    = build_stub_type (valuete,
+			       cp_type_quals (valuete) | TYPE_QUAL_CONST,
 			       false);
-	  if (!is_xible (INIT_EXPR, valuet, args))
+	  if (!is_xible (INIT_EXPR, valuete, args))
 	    {
 	      if (!cxx_constexpr_quiet_p (ctx))
 		error_at (loc, "%<reflect_constant_array%> argument with %qT "
@@ -551,7 +586,21 @@ get_range_elts (location_t loc, const constexpr_ctx *ctx, tree call, int n,
 	    }
 	  tree referencet = TYPE_MAIN_VARIANT (instr);
 	  TREE_VEC_ELT (args, 0) = referencet;
-	  if (!is_xible (INIT_EXPR, valuet, args))
+	  if (valuete != valuet)
+	    {
+	      tree rt = non_reference (referencet);
+	      if (!same_type_ignoring_top_level_qualifiers_p (valuet, rt))
+		{
+		  if (!cxx_constexpr_quiet_p (ctx))
+		    error_at (loc, "%<reflect_constant_array%> argument with "
+				   "%qT which is not compatible with %qT "
+				   "%<std::ranges::range_reference_t%>",
+			      inst, referencet);
+		  *non_constant_p = true;
+		  return NULL_TREE;
+		}
+	    }
+	  else if (!is_xible (INIT_EXPR, valuet, args))
 	    {
 	      if (!cxx_constexpr_quiet_p (ctx))
 		error_at (loc, "%<reflect_constant_array%> argument with %qT "
@@ -595,12 +644,22 @@ get_range_elts (location_t loc, const constexpr_ctx *ctx, tree call, int n,
 	else
 	  {
 	    gcc_assert (kind == REFLECT_CONSTANT_ARRAY);
+	    if (TREE_CODE (valuet) == ARRAY_TYPE)
+	      {
+		retvec[i]
+		  = adjust_array_elt (loc, ctx, valuet,
+				      unshare_expr (retvec[i]), fun,
+				      non_constant_p, jump_target);
+		if (*jump_target || *non_constant_p)
+		  return NULL_TREE;
+		continue;
+	      }
 	    tree expr = convert_reflect_constant_arg (valuet, retvec[i]);
 	    if (expr == error_mark_node)
 	      return throw_exception (loc, ctx, "reflect_constant failed",
 				      fun, non_constant_p, jump_target);
 	    if (VAR_P (expr))
-	      expr = unshare_expr (DECL_INITIAL (expr));
+	      expr = DECL_INITIAL (expr);
 	    retvec[i] = expr;
 	  }
       }
diff --git a/gcc/testsuite/g++.dg/reflect/define_static_array6.C b/gcc/testsuite/g++.dg/reflect/define_static_array6.C
new file mode 100644
index 000000000000..aea12f866f9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/define_static_array6.C
@@ -0,0 +1,27 @@
+// LWG4483 - Multidimensional arrays are not supported by
+// meta::reflect_constant_array and related functions.
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <meta>
+
+consteval auto
+foo ()
+{
+  int a[3][3][3];
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	a[i][j][k] = i + j + k;
+  return std::define_static_array (a);
+}
+
+static_assert (foo ().size () == 3);
+constexpr auto *m = foo ().data ();
+consteval {
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	if (m[i][j][k] != i + j + k)
+	  throw 1;
+}
diff --git a/gcc/testsuite/g++.dg/reflect/define_static_object2.C b/gcc/testsuite/g++.dg/reflect/define_static_object2.C
index f1a70d34840c..04beabdf3748 100644
--- a/gcc/testsuite/g++.dg/reflect/define_static_object2.C
+++ b/gcc/testsuite/g++.dg/reflect/define_static_object2.C
@@ -1,3 +1,5 @@
+// LWG4483 - Multidimensional arrays are not supported by
+// meta::reflect_constant_array and related functions.
 // { dg-do compile { target c++26 } }
 // { dg-additional-options "-freflection" }
 // Test std::define_static_object.
@@ -5,14 +7,19 @@
 #include <meta>
 
 constexpr int arr[]{1, 2, 3};
-// LWG4483 use extract(reflect_constant_array())
-// constexpr const int(*ptr)[3] = std::define_static_object(arr);
-// static_assert( *ptr == std::define_static_array(arr).data() );
-// static_assert( ptr = &std::meta::constant_of(arr) );
+constexpr const int (*ptr)[3] = std::define_static_object (arr);
+static_assert (*ptr == std::define_static_array (arr).data ());
+static_assert (ptr == &[: std::meta::constant_of (^^arr) :]);
 
 constexpr int marr[3][3]{1, 2, 3};
-// LWG4483 array are not structural so this fail
-// constexpr const int(*mptr)[3][3] = std::define_static_object(marr);
-// static_assert( *mptr == std::define_static_array(marr).data() );
-// static_assert( mptr = &std::meta::constant_of(marr) );
+constexpr const int (*mptr)[3][3] = std::define_static_object (marr);
+static_assert (*mptr == std::define_static_array (marr).data ());
+static_assert (mptr == &[: std::meta::constant_of (^^marr) :]);
 
+union U { int a; long long b; };
+constexpr U u = { .a = 42 };
+constexpr const U *up = std::define_static_object (u);
+static_assert (up->a == 42);
+constexpr U v = { .b = 43LL };
+constexpr const U *vp = std::define_static_object (v);
+static_assert (vp->b == 43LL);
diff --git a/gcc/testsuite/g++.dg/reflect/reflect_constant_array10.C b/gcc/testsuite/g++.dg/reflect/reflect_constant_array10.C
new file mode 100644
index 000000000000..3605173f1109
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/reflect_constant_array10.C
@@ -0,0 +1,57 @@
+// LWG4483 - Multidimensional arrays are not supported by
+// meta::reflect_constant_array and related functions.
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <ranges>
+#include <meta>
+
+consteval auto
+foo ()
+{
+  int a[3][3][3];
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	a[i][j][k] = i + 3 * j + 9 * k;
+  std::span <int[3][3]> b = a;
+  return std::meta::reflect_constant_array (b);
+}
+
+static_assert (foo () == foo ());
+static_assert (type_of (foo ()) == ^^const int [3][3][3]);
+constexpr auto &m = [: foo () :];
+static_assert (foo () == std::meta::reflect_constant_array (m));
+static_assert (foo () == std::meta::reflect_constant_array (std::span <const int[3][3]> (m)));
+consteval {
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	if (m[i][j][k] != i + 3 * j + 9 * k)
+	  throw 1;
+}
+
+consteval auto
+bar ()
+{
+  int a[3][3][3];
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	a[i][j][k] = i + 3 * j + 9 * k;
+  std::span <int[3][3]> b = a;
+  return std::meta::reflect_constant_array (b | std::views::reverse);
+}
+
+static_assert (bar () == bar ());
+static_assert (type_of (bar ()) == ^^const int [3][3][3]);
+constexpr auto &n = [: bar () :];
+static_assert (bar () == std::meta::reflect_constant_array (n));
+static_assert (bar () == std::meta::reflect_constant_array (std::span <const int[3][3]> (n)));
+consteval {
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	if (n[i][j][k] != (2 - i) + 3 * j + 9 * k)
+	  throw 1;
+}
diff --git a/gcc/testsuite/g++.dg/reflect/reflect_constant_array11.C b/gcc/testsuite/g++.dg/reflect/reflect_constant_array11.C
new file mode 100644
index 000000000000..044a2a0d2a65
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/reflect_constant_array11.C
@@ -0,0 +1,18 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::reflect_constant_string.
+
+#include <meta>
+#include <ranges>
+#include <span>
+
+using namespace std::meta;
+
+struct A { int a, b; mutable int c; };
+constexpr A aa[2] = { { 1, 2, 3 }, { 4, 5, 6 } };
+constexpr auto a = reflect_constant_array (aa);
+// { dg-error "'reflect_constant_array' argument with 'std::ranges::range_value_t<const A \\\[2\\\]>' \\\{aka 'A'\\\} which is not a structural type" "" { target *-*-* } .-1 }
+struct B { constexpr B (int x, int y) : a (x), b (y) {} constexpr ~B () {} B (const B &) = delete; int a, b; };
+constexpr B b[2][2] = { { { 1, 2 }, { 2, 3 } }, { { 3, 4 }, { 4, 5 } } };
+constexpr auto c = reflect_constant_array (b);
+// { dg-error "'reflect_constant_array' argument with 'std::ranges::range_value_t<const B \\\[2\\\]\\\[2\\\]>' \\\{aka 'B \\\[2\\\]'\\\} which is not copy constructible" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/reflect/reflect_constant_array9.C b/gcc/testsuite/g++.dg/reflect/reflect_constant_array9.C
new file mode 100644
index 000000000000..ea4dd8c3987e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/reflect_constant_array9.C
@@ -0,0 +1,28 @@
+// LWG4483 - Multidimensional arrays are not supported by
+// meta::reflect_constant_array and related functions.
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <meta>
+
+consteval auto
+foo ()
+{
+  int a[3][3][3];
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	a[i][j][k] = i + j + k;
+  return std::meta::reflect_constant_array (a);
+}
+
+static_assert (foo () == foo ());
+static_assert (type_of (foo ()) == ^^const int [3][3][3]);
+constexpr auto &m = [: foo () :];
+consteval {
+  for (int i = 0; i < 3; ++i)
+    for (int j = 0; j < 3; ++j)
+      for (int k = 0; k < 3; ++k)
+	if (m[i][j][k] != i + j + k)
+	  throw 1;
+}
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index 86c15bbaa216..22b4da44cdd7 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -682,11 +682,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     define_static_object(_Tp&& __t)
     {
       using _Up = remove_cvref_t<_Tp>;
-      if constexpr (meta::is_class_type(^^_Up))
+      if constexpr (meta::is_class_type(^^_Up) || meta::is_union_type(^^_Up))
 	{
 	  auto __cst = meta::reflect_constant(std::forward<_Tp>(__t));
 	  return std::addressof(meta::extract<const _Up&>(__cst));
 	}
+      else if constexpr (meta::is_array_type(^^_Up))
+	{
+	  auto __cst = meta::reflect_constant_array(std::forward<_Tp>(__t));
+	  return std::addressof(meta::extract<const _Up&>(__cst));
+	}
       else
 	return std::define_static_array(span(std::addressof(__t), 1)).data();
     }

From mkretz@gcc.gnu.org  Wed Apr 15 07:43:29 2026
From: mkretz@gcc.gnu.org (Matthias Kretz)
Date: Wed, 15 Apr 2026 07:43:29 +0000 (GMT)
Subject: [gcc r16-8667] libstdc++: Implement LWG4403: CTAD misses difference
 type casting
Message-ID: <20260415074329.1A96E4BA2E04@sourceware.org>

https://gcc.gnu.org/g:17e0482487914380a63b8b716aa2863a35b18d80

commit r16-8667-g17e0482487914380a63b8b716aa2863a35b18d80
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Tue Apr 14 14:54:03 2026 +0200

    libstdc++: Implement LWG4403: CTAD misses difference type casting
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/simd_vec.h (basic_vec deduction guide): Explicit
            cast to simd-size-type from range size type.
    
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

Diff:
---
 libstdc++-v3/include/bits/simd_vec.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/simd_vec.h b/libstdc++-v3/include/bits/simd_vec.h
index da194824e724..2574bf7c3ad7 100644
--- a/libstdc++-v3/include/bits/simd_vec.h
+++ b/libstdc++-v3/include/bits/simd_vec.h
@@ -2264,9 +2264,9 @@ namespace simd
     -> basic_vec<ranges::range_value_t<_Rg>,
 		 __deduce_abi_t<ranges::range_value_t<_Rg>,
 #if 0 // PR117849
-				ranges::size(__r)>>;
+				static_cast<__simd_size_type>(ranges::size(__r))>>;
 #else
-				decltype(std::span(__r))::extent>>;
+				static_cast<__simd_size_type>(decltype(std::span(__r))::extent)>>;
 #endif
 
   template <size_t _Bytes, typename _Ap>

From gccadmin@gcc.gnu.org  Wed Apr 15 08:17:16 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 15 Apr 2026 08:17:16 +0000 (GMT)
Subject: [gcc r16-8673] Daily bump.
Message-ID: <20260415081716.8F9594BA5436@sourceware.org>

https://gcc.gnu.org/g:b1fb2157605cd7729ca7e38b1851e4997ab8e74c

commit r16-8673-gb1fb2157605cd7729ca7e38b1851e4997ab8e74c
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 15 08:16:45 2026 +0000

    Daily bump.

Diff:
---
 config/ChangeLog        |   6 +
 contrib/ChangeLog       |  16 ++
 gcc/ChangeLog           | 118 ++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |  12 ++
 gcc/cp/ChangeLog        |  96 +++++++++
 gcc/d/ChangeLog         |   4 +
 gcc/fortran/ChangeLog   |  14 ++
 gcc/m2/ChangeLog        |  36 ++++
 gcc/rust/ChangeLog      | 502 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 292 ++++++++++++++++++++++++++++
 libgcc/ChangeLog        |   5 +
 libphobos/ChangeLog     |   4 +
 libstdc++-v3/ChangeLog  |  85 ++++++++
 14 files changed, 1191 insertions(+), 1 deletion(-)

diff --git a/config/ChangeLog b/config/ChangeLog
index 16adb71e88d0..92b186f0d7b0 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-13  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR target/69639
+	* mh-cygwin: Increase to 64MB stack reserve.
+	* mh-mingw: Likewise.
+
 2026-02-04  Prachi Godbole  <pgodbole@nvidia.com>
 
 	* bootstrap-lto-locality.mk (STAGEprofile_CFLAGS): Remove
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 855838f099f0..e1da606fd276 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,19 @@
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py: Add
+	9df40f1f4bec855da864f535e242308ceb1cd5ad and
+	d5fb79718b22207253d62c92dcf8b1c16e1ea370 to ignored_commits.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py: Add
+	eec8da328cf1f91db302ab4cee803e269e68ad33 to ignored_commits.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py: Add
+	69a2c243dd2cf9f77150c0eb86dfbc0931876bc1 to ignored_commits.
+
 2026-03-14  Jakub Jelinek  <jakub@redhat.com>
 
 	PR other/124508
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51f9c66b0715..4b916a7c74c3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,121 @@
+2026-04-15  H.J. Lu  <hjl.tools@gmail.com>
+
+	* config/i386/i386.cc
+	(x86_64_preserve_none_int_parameter_registers): Replace
+	ix86_function_value_regno_p with ix86_function_arg_regno_p in
+	comments.
+
+2026-04-14  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/aarch64-cores.def (armagicpu): New.
+	* config/aarch64/aarch64-tune.md: Renegerate
+	* doc/invoke.texi: Document it.
+
+2026-04-14  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/124809
+	* value-relation.cc (equiv_oracle::equiv_oracle): Allocate lhs
+	equivalence bitmap.
+	(relation_oracle::record): Check if LHS has already created an
+	equivalence record.
+	* value-relation.h (relation_oracle::relation_oracle): New.
+	(relation_oracle::m_lhs_equiv_set_p): New.
+
+2026-04-14  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR target/123102
+	* config/arm/arm.md (*cmp_ite0): Apply stricter checks on the
+	comparison mode.
+	(*cmp_ite1, *cmp_and, *cmp_ior): Likewise.
+
+2026-04-14  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/124777
+	* ipa-cp.h (ipacp_value_safe_for_type): Declare.
+	* ipa-cp.cc (ipacp_value_safe_for_type): Make public.
+	* ipa-prop.cc (ipa_set_jf_cst_copy): Fix comment.
+	(ipa_convert_prop_cst_jf): New function.
+	(update_jump_functions_after_inlining): Handle the constant to
+	pass-through case by calling ipa_convert_prop_cst_jf.
+
+2026-04-14  Soumya AR  <soumyaa@nvidia.com>
+
+	* config/aarch64/aarch64.opt.urls: Regenerate.
+
+2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124875
+	* tree-ssa-pre.cc (prefer): Also compare TBAA set and base_set.
+	Refactor computing the final prefered expression, do early outs
+	and allow same prefered expressions.
+	(sorted_array_from_bitmap_set): Fix thinko that prevented
+	the last expression in the set of being excluded.
+
+2026-04-14  Soumya AR  <soumyaa@nvidia.com>
+	    Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	* config.gcc: Add aarch64-narrow-gp-writes.o.
+	* config/aarch64/aarch64-passes.def (INSERT_PASS_BEFORE): Insert
+	pass_narrow_gp_writes before pass_cleanup_barriers.
+	* config/aarch64/aarch64-protos.h (make_pass_narrow_gp_writes): Declare.
+	* config/aarch64/aarch64-tuning-flags.def
+	(AARCH64_EXTRA_TUNING_OPTION): Add NARROW_GP_WRITES.
+	* config/aarch64/aarch64.opt (mnarrow-gp-writes): New option.
+	* config/aarch64/t-aarch64: Add aarch64-narrow-gp-writes.o rule.
+	* config/aarch64/tuning_models/olympus.h: Add
+	AARCH64_EXTRA_TUNE_NARROW_GP_WRITES to tune_flags.
+	* doc/invoke.texi: Document -mnarrow-gp-writes.
+	* config/aarch64/aarch64-narrow-gp-writes.cc: New file.
+
+2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gimple-lower-bitint.cc (bitint_large_huge::handle_load): Look through
+	BIT_FIELD_REF with zero bit offset.
+
+2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* cgraphunit.cc (process_symver_attribute): Fix comment typo,
+	bintuils -> binutils.
+
+2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124868
+	* gimple-ssa-isolate-paths.cc (handle_return_addr_local_phi_arg):
+	Do not diagnose returns in blocks not dominated by the PHI.
+	(find_implicit_erroneous_behavior): Do two sweeps over PHIs,
+	first for NULL dereferences and then for local address returns.
+
+2026-04-14  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124876
+	* config/i386/i386.cc (ix86_zero_call_used_regs): Zero ZMM16-31
+	if needed.
+
+2026-04-13  Josef Melcr  <josef.melcr@suse.com>
+
+	PR ipa/124700
+	* cgraph.cc (cgraph_node::is_clone_of): New method, determines
+	whether a node is a descendant of another in the clone tree.
+	* cgraph.h (struct cgraph_node): Add decl of is_clone_of.
+	* cgraphbuild.cc (mark_address): Fix reference creation for
+	cloned callback functions.
+
+2026-04-13  Hu, Lin1  <lin1.hu@intel.com>
+
+	PR target/124710
+	* config/i386/sse.md (iptrps2qq): New mode attribute for
+	ps2qq Intel syntax memory operand size override.
+	(avx10_2_vcvttps2<sat_cvt_sign_prefix>qqs<mode><mask_name><round_saeonly_name>):
+	Use %<iptrps2qq>1 in Intel syntax to emit qword ptr for V2DI (128-bit)
+	memory operands.
+	(avx10_2_vcvttsd2<sat_cvt_sign_prefix>sis<mode><round_saeonly_name>):
+	Use %q1 in Intel syntax to emit qword ptr for scalar double memory
+	operands.
+	(avx10_2_vcvttss2<sat_cvt_sign_prefix>sis<mode><round_saeonly_name>):
+	Use %k1 in Intel syntax to emit dword ptr for scalar single memory
+	operands.
+
 2026-04-11  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/93554
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a1b35b3687d1..3bd3150050a5 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260413
+20260415
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index c991efcafbd8..504f4f16c15c 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/95452
+	* libgnat/g-heasor.adb (Sort.Sift): Add guard against overflow.
+	* libgnat/g-hesorg.adb (Sort.Sift): Likewise.
+	* libgnat/g-hesora.adb (Sort.Sift): Likewise.  Restore consistency.
+
+2026-04-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/77535
+	* libgnat/s-pehage.adb (New_Word): Rebase the input.
+
 2026-04-12  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/124836
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index fedd56a9f6d0..bd7fe0eb2017 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,99 @@
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* pt.cc (finish_expansion_stmt): Implement CWG3149 - Rvalues in
+	destructuring expansion statements.  For esk_destructuring, if
+	expansion_init is not lvalue_p, wrap init into a static_cast
+	to decltype of destruct_decls[i].
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* mangle.cc (write_reflection): Adjust grammar for type alias
+	reflections.  Don't use write_prefix on arg, instead
+	write_prefix its mangling context, write_unqualified_name of
+	the alias, optionally write_template_args, append underscore
+	and write_type the original type.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124862
+	* decl.cc (cp_decomp_size): If btype is different from type,
+	check if it is accessible.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* typeck.cc (cxx_mark_addressable): For DECL_ANON_UNION_VAR_P vars
+	also mark their DECL_VALUE_EXPR.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (adjust_array_elt): New function.
+	(get_range_elts): Implement LWG4483 - Multidimensional arrays are not
+	supported by meta::reflect_constant_array and related functions.
+	Handle ARRAY_TYPE valuet.  Don't unshare_expr in the class valuet case,
+	get_template_param_object will unshare.
+
+2026-04-14  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124544
+	* tree.cc (strip_typedefs_expr) <case REFLECT_EXPR>: Don't
+	recurse into a type operand.
+	(cp_tree_equal) <case REFLECT_EXPR>: For a reflection of an
+	alias, also compare TYPE_NAMEs directly.
+
+2026-04-14  Marek Polacek  <polacek@redhat.com>
+
+	* cp-tree.h (reflection_function_template_p): Declare.
+	* parser.cc (cp_parser_splice_expression): Use
+	reflection_function_template_p instead of really_overloaded_fn.
+	* reflect.cc (check_splice_expr): Likewise.
+	(reflection_function_template_p): New.
+
+2026-04-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123237
+	PR c++/124771
+	PR c++/124842
+	* mangle.cc (write_splice): New.
+	(write_prefix): Call write_splice for SPLICE_SCOPE.
+	(write_type): Likewise.
+	(write_expression): Call write_splice for dependent_splice_p.
+	(write_reflection): Handle the "tt" and "de" prefixes.
+	* reflect.cc (reflection_mangle_prefix): For
+	DECL_TEMPLATE_TEMPLATE_PARM_P, use the prefix "tt".  For
+	dependent reflections, use "de".
+
+2026-04-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124835
+	* parser.cc (cp_parser_decltype_expr): Check that [: :] is
+	followed by a close paren before declaring it an unparenthesized
+	splice-expression.
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/103901
+	PR c++/123566
+	* pt.cc (push_template_decl): Sorry on local class in lambda in
+	template parm list.
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/122632
+	* pt.cc (tsubst_exception_specification): Add cp_unevaluated.
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/122884
+	* pt.cc (reconstruct_lambda_capture_pack): New.
+	(tsubst_pack_expansion): Use it.
+	(tsubst_decl): Handle capture proxy.
+	(tsubst): Handle lambda closure.
+	(tsubst_expr): Handle closure field.
+	(tsubst_lambda_expr): Copy closure location.
+	* constraint.cc (satisfy_declaration_constraints): Set up
+	local_specializations for a lambda.
+
 2026-04-10  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/124831
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index a73a609d83e5..bae93b196183 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* dmd/MERGE: Merge upstream dmd e145b91245.
+
 2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR other/124784
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2b690d885737..e3de8ff2620f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-14  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/124807
+	* decl.cc (add_init_expr_to_sym): Suggested by Coverity:
+	Check sym->as != NULL before dereferencing it.
+
+2026-04-13  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/101760
+	PR fortran/102314
+	* trans-openmp.cc (gfc_omp_finish_clause): Compute OMP_CLAUSE_SIZE
+	from the array domain bounds and element size for VLA types instead
+	of using TYPE_SIZE_UNIT directly, to avoid corrupting the type.
+
 2026-04-11  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/93814
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index eb1112339237..60564c3df380 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,39 @@
+2026-04-14  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/105408
+	* Make-lang.in (GM2-COMP-BOOT-MODS): Remove duplicate NameKey.mod.
+	* gm2-compiler/M2GenGCC.mod (import): Remove BuildAssignmentTree.
+	Add CopyMemcpy.
+	(IsSystemTypeBecomes): New procedure function.
+	(CodeAssignment): Rewrite using CopyMemcpy and IsSystemTypeBecomes.
+	* gm2-gcc/m2convert.cc (const_to_ISO_aggregate_type): Reverse
+	array elements if BYTES_BIG_ENDIAN.
+	* gm2-gcc/m2pp.cc (ps): New function.
+	* gm2-gcc/m2pp.h (pf): Added comment.
+	(pe): Ditto.
+	(pt): Ditto.
+	(ptl): Ditto.
+	(pv): Ditto.
+	(ptcl): Ditto.
+	* gm2-gcc/m2statement.cc (copy_memcpy): Replace with ...
+	(m2statement_CopyMemcpy): ... this.
+	(CopyByField_Lower): Call m2statement_CopyMemcpy instead of copy_memcpy.
+	(m2statement_BuildAssignmentTree): Tidied up comment.
+	Add test for ARRAY_TYPE CONSTRUCTOR expr and use
+	m2statement_CopyMemcpy.
+	Return type changed to void.
+	* gm2-gcc/m2statement.def (BuildAssignmentTree): Rewrite declaration.
+	(CopyMemcpy): New procedure declaration.
+	* gm2-gcc/m2statement.h (m2statement_BuildAssignmentTree): Replace
+	return type with void.
+	(m2statement_CopyMemcpy): New function declaration.
+	* gm2-gcc/m2type.cc (m2type_ReverseArrayConstructorElements): New
+	function.
+	* gm2-gcc/m2type.def (ReverseArrayConstructorElements): New
+	procedure function declaration.
+	* gm2-gcc/m2type.h (m2type_ReverseArrayConstructorElements): New
+	function declaration.
+
 2026-04-10  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/124840
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 2784e84a396d..10dcdb27a0c3 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,505 @@
+2026-04-14  jayant chauhan  <0001jayant@gmail.com>
+
+	* backend/rust-compile-item.cc (CompileItem::visit): Do not insert
+	const_expr into the context if it is an error_mark_node.
+	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.
+
+2026-04-14  AhmedSaid3617  <said.ahmed3617@gmail.com>
+
+	* ast/rust-item.h:(PathType::get_glob_type): Added const qualifier to allow
+	function call from const objects.
+	* resolve/rust-forever-stack.hxx:
+	(ForeverStack<N>::resolve_path): Check for empty segments vector and
+	return starting point.
+	* resolve/rust-toplevel-name-resolver-2.0.cc (flatten_glob): Preserve the
+	opening scope resolution property of the use statement.
+
+2026-04-14  Islam-Imad  <islamimad404@gmail.com>
+
+	* backend/rust-compile-expr.cc (CompileExpr::visit): set unit type.
+
+2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>
+
+	* backend/rust-compile-intrinsic.cc: Register cttz and cttz_nonzero intrinsics.
+	* backend/rust-intrinsic-handlers.cc (cttz_handler): Implemnt cttz_handler.
+	(cttz_nonzero_handler): Implemnt cttz_nonzero_handler.
+	* backend/rust-intrinsic-handlers.h (cttz_handler): Add decl for cttz_handler.
+	(cttz_nonzero_handler): Add decl for cttz_handler.
+	* util/rust-intrinsic-values.h: map cttz_nonzero to its name.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* backend/rust-compile-asm.cc: Include "rust-ggc.h".
+	(chain_asm_operand): Use GGC::ChainList.
+	(CompileAsm::asm_construct_outputs): Likewise.
+	(CompileAsm::asm_construct_inputs): Likewise.
+	(CompileLlvmAsm::construct_operands): Likewise.
+	(CompileLlvmAsm::construct_clobbers): Likewise.
+	* util/rust-ggc.h (class ChainList): New class.
+
+2026-04-14  Philipp Gesang  <phg@phi-gamma.net>
+
+	* parse/rust-parse-impl.hxx: Refactor qualifier parsing
+	* parse/rust-parse.h: (parse_function_qualifiers) Likewise
+
+2026-04-14  Philipp Gesang  <phg@phi-gamma.net>
+
+	* parse/rust-parse-impl.hxx (parse_function_qualifiers)
+	Collect qualifiers into vector before generating the
+	error message
+	* parse/rust-parse.h: (parse_function_qualifiers) Make
+	function fallible
+
+2026-04-14  Kushal Pal  <kushalpal109@gmail.com>
+
+	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
+	Add error for functions with `default` qualifier outside of impl
+	blocks.
+	* parse/rust-parse-impl.hxx (Parser::parse_item):
+	Allow parsing of functions with `default` qualifier.
+	(Parser::parse_vis_item): Likewise.
+
+2026-04-14  Kushal Pal  <kushalpal109@gmail.com>
+
+	* ast/rust-ast-builder.cc (AstBuilder::fn_qualifiers):
+	Add new parameter.
+	* ast/rust-ast-builder.h: Likewise.
+	* ast/rust-ast.cc (Function::Function):
+	Remove current default parameter.
+	(Function::operator=):
+	Remove current default parameter.
+	* ast/rust-item.h (class FunctionQualifiers):
+	Add data member to represent defaultness of a function.
+	(class Function):
+	Remove current default parameter.
+	* parse/rust-parse-impl.hxx (Parser::parse_function_qualifiers):
+	Parse function qualifiers in order.
+	* util/rust-common.h (enum class): Create enum to represent
+	defaultness of a function.
+
+2026-04-14  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options):
+	Allow parsing of AttrInputMetaItemContainer.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* Make-lang.in: Add a new rust-attribute-checker file.
+	* checks/errors/rust-builtin-attribute-checker.h (check_valid_attribute_for_item):
+	Change BuiltinAttributeChecker doc comment.
+	* rust-session-manager.cc: Include the new rust-attribute-checker
+	header.
+	* util/rust-attributes.cc (AttributeChecker::AttributeChecker): Move to
+	rust-attribute-checker.cc.
+	(AttributeChecker::go): Likewise.
+	(is_proc_macro_type): Likewise.
+	(check_proc_macro_non_function): Likewise.
+	(check_proc_macro_non_root): Likewise.
+	(AttributeChecker::visit): Likewise.
+	* util/rust-attributes.h (class AttributeChecker): Move to
+	rust-attribute-checker.h.
+	* checks/errors/rust-attribute-checker.cc: New file.
+	* checks/errors/rust-attribute-checker.h: New file.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* checks/errors/rust-builtin-attribute-checker.cc (std::function<void):
+	Use the new attribute value variables instead of raw values.
+	* util/rust-attribute-values.h: Add deny, warn and forbid values.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* checks/errors/rust-builtin-attribute-checker.cc (check_doc_attribute):
+	Move from here...
+	(doc): ...to here.
+	(check_deprecated_attribute): Move from here...
+	(deprecated): ...to here.
+	(check_link_section_attribute): Move from here...
+	(link_section): ... to here.
+	(check_export_name_attribute): Move from here...
+	(export_name): ... to here.
+	(check_no_mangle_function): Remove internal structure checking and move
+	it to no_mangle handler.
+	(check_lint_attribute): Move from here...
+	(lint): ... to here.
+	(link_name): Likewise with link_name.
+	(check_crate_type): Move to anonymous namespace within the handler
+	namespace.
+	(proc_macro_derive): Add proc macro specific handler.
+	(proc_macro): Likewise.
+	(target_feature): Likewise.
+	(no_mangle): Add specific handler for no_mangler attribute internal
+	structure checking.
+	(std::function<void): Add map with attribute name to handler matching.
+	(tl::optional<std::function<void): Likewise.
+	(lookup_handler): Add an helper function to retrieve the handler of any
+	builtin attribute.
+	(BuiltinAttributeChecker::visit): Change attribute visitor call with
+	new handler call.
+	* checks/errors/rust-builtin-attribute-checker.h (check_valid_attribute_for_item):
+	Add prototype.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* checks/errors/rust-builtin-attribute-checker.cc (BuiltinAttributeChecker::visit):
+	Deduplicate lines using the new templated function within the visitor
+	functions.
+	* checks/errors/rust-builtin-attribute-checker.h (class BuiltinAttributeChecker):
+	Create a new templated function that achieves the default attribute
+	checking operations.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Flatten
+	AttrInputExpr containing a literal to an AttrInputLiteral.
+	* expand/rust-expand-visitor.h: Add function prototype.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* ast/rust-ast.h: Add helper to set a new attribute input.
+	* expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
+	Visit builtin attributes.
+	(ExpandVisitor::visit): Likewise.
+	* resolve/rust-early-name-resolver-2.0.cc (Early::visit): Expand
+	attribute input expr.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* Make-lang.in: Add file for builtin attribute checking.
+	* hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_doc_item_attribute):
+	Remove error emission and replace it with an assert. The error message
+	will now be emitted from the builtin attribute checking pass.
+	* rust-session-manager.cc (Session::compile_crate): Add builtin
+	attribute checking step after expansion.
+	* util/rust-attributes.cc (Attributes::is_known): Move down.
+	(Attributes::extract_string_literal): Likewise.
+	(Attributes::valid_outer_attribute): Add a function to retrieve outer/
+	inner status for a given builtin attribute value.
+	(AttributeChecker::visit): Move some checking to builtin attribute
+	checker.
+	(identify_builtin): Rename function from here ...
+	(lookup_builtin): ... to here.
+	(check_doc_alias): Move to builtin attribute checker.
+	(check_doc_attribute): Likewise.
+	(check_deprecated_attribute): Likewise.
+	(check_valid_attribute_for_item): Likewise.
+	(AttributeChecker::check_inner_attribute): Likewise.
+	(check_link_section_attribute): Likewise.
+	(check_export_name_attribute): Likewise.
+	(check_lint_attribute): Likewise.
+	(check_no_mangle_function): Likewise.
+	(is_proc_macro_type): Update function call name.
+	* util/rust-attributes.h (identify_builtin): Update prototype.
+	(lookup_builtin): Likewise.
+	* checks/errors/rust-builtin-attribute-checker.cc: New file.
+	* checks/errors/rust-builtin-attribute-checker.h: New file.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* ast/rust-ast-collector.cc (TokenCollector::visit): Remove
+	AttrInputMacro handling.
+	* ast/rust-ast-collector.h: Remove function prototype.
+	* ast/rust-ast-full-decls.h (class AttrInputMacro): Remove forward
+	declaration.
+	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Remove function.
+	* ast/rust-ast-visitor.h: Remove function prototypes.
+	* ast/rust-ast.cc (Attribute::get_traits_to_derive): Remove handling of
+	macros.
+	(AttrInputMacro::as_string): Remove function.
+	(AttrInputMacro::AttrInputMacro): Likewise.
+	(AttrInputMacro::operator=): Likewise.
+	(AttrInputMacro::accept_vis): Likewise.
+	* ast/rust-ast.h: Remove MACRO kind.
+	* ast/rust-expr.h (class AttrInputMacro): Add getter for expr pointer.
+	Remove AttrInputMacro class.
+	* expand/rust-derive.h: Remove function prototype.
+	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change function
+	to AttrInputExpr.
+	* expand/rust-expand-visitor.h: Update prototype.
+	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Remove function.
+	* hir/rust-ast-lower-base.h: Remove function prototype.
+	* parse/rust-parse-impl-attribute.hxx: Parse the attribute content as
+	AttrInputExpr instead.
+	* util/rust-attributes.cc (check_doc_attribute): Remove MACRO kind
+	handling.
+	(check_export_name_attribute): Remove switch and only handle literals.
+	(AttributeChecker::visit): Remove function.
+	* util/rust-attributes.h: Remove function prototype.
+
+2026-04-14  Egas Ribeiro  <egas.g.ribeiro@tecnico.ulisboa.pt>
+
+	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): added
+	refutable pattern checks for function params.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* Make-lang.in (GRS_OBJS): Add rust-identifier-path.o.
+	* resolve/rust-early-name-resolver-2.0.cc: Include
+	"rust-identifier-path.h".
+	(Early::go): Use IdentifierPathPass.
+	(Early::visit): Handle identifier patterns which should be path
+	patterns.
+	* resolve/rust-early-name-resolver-2.0.h: Include
+	"rust-pattern.h".
+	(Early::visit): Add visiting function declaration for
+	IdentifierPattern.
+	(Early::ident_path_to_convert): New member variable.
+	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
+	Call Mappings::add_function_node.
+	* util/rust-hir-map.cc (Mappings::add_function_node): New
+	member function definition.
+	(Mappings::is_function_node): Likewise.
+	* util/rust-hir-map.h (Mappings::add_function_node): New
+	member function declaration.
+	(Mappings::is_function_node): Likewise.
+	(Mappings::function_nodes): New member variable.
+	* resolve/rust-identifier-path.cc: New file.
+	* resolve/rust-identifier-path.h: New file.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* ast/rust-ast-pointer-visitor.cc (PointerVisitor::visit): Remove
+	duplicated functions.
+	* ast/rust-ast-pointer-visitor.h: Remove duplicated function
+	prototypes.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* expand/rust-macro-expand.cc (MacroExpander::expand_crate):
+	Remove usage of Resolver::get_macro_scope.
+	* resolve/rust-name-resolver.cc (Resolver::Resolver): Handle
+	removal of member variables.
+	(Resolver::push_new_name_rib): Remove function definition.
+	(Resolver::push_new_type_rib): Likewise.
+	(Resolver::push_new_label_rib): Likewise.
+	(Resolver::push_new_macro_rib): Likewise.
+	(Resolver::find_name_rib): Likewise.
+	(Resolver::find_type_rib): Likewise.
+	(Resolver::find_macro_rib): Likewise.
+	(Resolver::insert_builtin_types): Likewise.
+	(Resolver::get_builtin_types): Likewise.
+	(Resolver::generate_builtins): Likewise.
+	(Resolver::setup_builtin): Likewise.
+	(Resolver::insert_resolved_label): Likewise.
+	(Resolver::lookup_resolved_label): Likewise.
+	(Resolver::insert_resolved_macro): Likewise.
+	(Resolver::lookup_resolved_macro): Likewise.
+	(Resolver::push_closure_context): Likewise.
+	(Resolver::pop_closure_context): Likewise.
+	(Resolver::insert_captured_item): Likewise.
+	(Resolver::decl_needs_capture): Likewise.
+	(Resolver::get_captures): Likewise.
+	(Resolver::insert_resolved_name): Replace function
+	implementation with rust_unreachable call.
+	(Resolver::lookup_resolved_name): Likewise.
+	(Resolver::insert_resolved_type): Likewise.
+	(Resolver::lookup_resolved_type): Likewise.
+	(Resolver::insert_resolved_misc): Likewise.
+	(Resolver::lookup_resolved_misc): Likewise.
+	* resolve/rust-name-resolver.h (Resolver::insert_builtin_types):
+	Remove member function declaration.
+	(Resolver::get_builtin_types): Likewise.
+	(Resolver::push_new_name_rib): Likewise.
+	(Resolver::push_new_type_rib): Likewise.
+	(Resolver::push_new_label_rib): Likewise.
+	(Resolver::push_new_macro_rib): Likewise.
+	(Resolver::find_name_rib): Likewise.
+	(Resolver::find_type_rib): Likewise.
+	(Resolver::find_label_rib): Likewise.
+	(Resolver::find_macro_rib): Likewise.
+	(Resolver::insert_resolved_label): Likewise.
+	(Resolver::lookup_resolved_label): Likewise.
+	(Resolver::insert_resolved_macro): Likewise.
+	(Resolver::lookup_resolved_macro): Likewise.
+	(Resolver::get_name_scope): Likewise.
+	(Resolver::get_type_scope): Likewise.
+	(Resolver::get_label_scope): Likewise.
+	(Resolver::get_macro_scope): Likewise.
+	(Resolver::get_global_type_node_id): Likewise.
+	(Resolver::set_unit_type_node_id): Likewise.
+	(Resolver::get_unit_type_node_id): Likewise.
+	(Resolver::set_never_type_node_id): Likewise.
+	(Resolver::get_never_type_node_id): Likewise.
+	(Resolver::push_new_module_scope): Likewise.
+	(Resolver::pop_module_scope): Likewise.
+	(Resolver::peek_current_module_scope): Likewise.
+	(Resolver::peek_crate_module_scope): Likewise.
+	(Resolver::peek_parent_module_scope): Likewise.
+	(Resolver::push_closure_context): Likewise.
+	(Resolver::pop_closure_context): Likewise.
+	(Resolver::insert_captured_item): Likewise.
+	(Resolver::get_captures): Likewise.
+	(Resolver::as_debug_string): Likewise.
+	(Resolver::decl_needs_capture): Likewise.
+	(Resolver::generate_builtins): Likewise.
+	(Resolver::setup_builtin): Likewise.
+	(Resolver::mappings): Remove member variable.
+	(Resolver::tyctx): Likewise.
+	(Resolver::builtins): Likewise.
+	(Resolver::name_scope): Likewise.
+	(Resolver::type_scope): Likewise.
+	(Resolver::label_scope): Likewise.
+	(Resolver::macro_scope): Likewise.
+	(Resolver::global_type_node_id): Likewise.
+	(Resolver::unit_ty_node_id): Likewise.
+	(Resolver::never_ty_node_id): Likewise.
+	(Resolver::name_ribs): Likewise.
+	(Resolver::type_ribs): Likewise.
+	(Resolver::label_ribs): Likewise.
+	(Resolver::macro_ribs): Likewise.
+	(Resolver::resolved_names): Likewise.
+	(Resolver::resolved_types): Likewise.
+	(Resolver::resolved_labels): Likewise.
+	(Resolver::resolved_macros): Likewise.
+	(Resolver::misc_resolved_items): Likewise.
+	(Resolver::current_module_stack): Likewise.
+	(Resolver::closure_context): Likewise.
+	(Resolver::closures_capture_mappings): Likewise.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* checks/errors/rust-const-checker.cc: Remove inclusion of
+	"options.h".
+	(ConstChecker::ConstChecker): Initialize 2.0 resolver.
+	(ConstChecker::visit): Assume nr2.0 is enabled.
+	* checks/errors/rust-const-checker.h: Adjust includes.
+	(ConstChecker::resolver): Change type to 2.0 resolver.
+	* checks/errors/rust-unsafe-checker.cc: Remove inclusion of
+	"options.h".
+	(UnsafeChecker::UnsafeChecker): Initialize 2.0 resolver.
+	(UnsafeChecker::visit): Assume nr2.0 is enabled.
+	* checks/errors/rust-unsafe-checker.h: Adjust includes.
+	(UnsafeChecker::resolver): Change type to 2.0 resolver.
+	* checks/lints/rust-lint-marklive.cc
+	(MarkLive::visit_path_segment): Assume nr2.0 is enabled.
+	(MarkLive::visit): Likewise.
+	(MarkLive::find_ref_node_id): Likewise.
+	* checks/lints/rust-lint-marklive.h: Include
+	"rust-immutable-name-resolution-context.h".
+	(MarkLive::resolver): Change type to 2.0 resolver, as a
+	reference instead of a pointer.
+	(MarkLive::MarkLive): Initialize 2.0 resolver.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Remove
+	some redundant function overloads.
+	* expand/rust-expand-visitor.h (ExpandVisitor::visit): Likewise.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* util/rust-attribute-values.h: Add "no_builtins"
+	attribute value.
+	* util/rust-attributes.cc: Add "no_builtins" to
+	the list of builtin attributes.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit):
+	Rework visit to avoid multiple iterations. Add check for
+	"compiler_builtins" attribute.
+	(FeatureGate::check_no_core_attribute): Remove loop.
+	* checks/errors/feature/rust-feature-gate.h: Update function prototype.
+	* util/rust-attribute-values.h: Add "compiler_builtins" attribute
+	value.
+	* util/rust-attributes.cc: Add "compiler_builtins" to the list of
+	builtin attributes.
+
+2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>
+
+	* backend/rust-compile-intrinsic.cc: Register ctlz and ctlz_nonzero intrinsics.
+	* backend/rust-intrinsic-handlers.cc (ctlz_handler): Implement ctlz_handler.
+	(ctlz_nonzero_handler): Implement ctlz_nonzero_handler.
+	* backend/rust-intrinsic-handlers.h (ctlz_handler): Add decl for ctlz_handler.
+	(ctlz_nonzero_handler): Add decl for ctlz_nonzero_handler.
+	* util/rust-intrinsic-values.h: map ctlz_nonzero to its name.
+
+2026-04-14  Enes Cevik  <nsvke@proton.me>
+
+	* lex/rust-lex.cc (Lexer::parse_non_decimal_int_literal): Use GMP
+	for base conversion to support 128-bit literals. Remove existent_str
+	parameter.
+	(Lexer::parse_non_decimal_int_literals): Remove prefix string
+	initialization and update function calls.
+	* lex/rust-lex.h (Lexer::parse_non_decimal_int_literal): Update
+	function signature to remove existent_str.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* checks/errors/rust-hir-pattern-analysis.cc
+	(PlaceInfo::specialize): Handle VariantType::UNIT.
+	(WitnessPat::to_string): Likewise.
+	(WitnessMatrix::apply_constructor): Likewise.
+	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
+	Conditionally create VariantType::UNIT variants.
+	* typecheck/rust-hir-type-check-pattern.cc
+	(TypeCheckPattern::visit): Fix typo, handle VariantType::UNIT.
+	* typecheck/rust-tyty-variance-analysis.cc
+	(GenericTyVisitorCtx::process_type): Handle VariantType::UNIT.
+	* typecheck/rust-tyty.cc (BaseType::contains_infer): Likewise.
+	(BaseType::is_concrete): Likewise.
+	(VariantDef::variant_type_string): Likewise.
+	(VariantDef::VariantDef): Likewise.
+	* typecheck/rust-tyty.h (VariantDef::VariantType::UNIT): New
+	enumerator.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* resolve/rust-finalize-imports-2.0.cc
+	(GlobbingVisitor::visit_enum_container): Conditionally insert
+	into value namespace as well.
+	* resolve/rust-forever-stack.hxx (ForeverStack::insert_variant):
+	Add template specialization for value namespace.
+	* resolve/rust-name-resolution-context.cc
+	(NameResolutionContext::insert_variant): Allow insertion into
+	value namespace.
+	* resolve/rust-name-resolution-context.h
+	(NameResolutionContext::insert_variant): Likewise.
+	* resolve/rust-toplevel-name-resolver-2.0.cc
+	(TopLevel::insert_enum_variant_or_error_out): Likewise.
+	(TopLevel::visit): Use tweaked insert_enum_variant_or_error_out
+	properly for all enum item kinds.
+	* resolve/rust-toplevel-name-resolver-2.0.h
+	(TopLevel::insert_enum_variant_or_error_out): Tweak function
+	signature.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* typecheck/rust-hir-type-check-pattern.cc
+	(TypeCheckPattern::visit): Fix typo "constatnt".
+
+2026-04-14  hriztam  <hritamstark05@gmail.com>
+
+	* ast/rust-fmt.h: Explicitly instantiate FFIVec<Piece>.
+
+2026-04-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* typecheck/rust-tyty.cc (generate_tree_str): Remove opem_memstream
+	and print_generic_stmt call with call to dump_generic_node.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* resolve/rust-forever-stack.h: Include more headers.
+	(class ResolutionPath): New class for representing paths.
+	(ForeverStack::resolve_path): Change function signature.
+	(ForeverStack::find_starting_point): Likewise.
+	(ForeverStack::resolve_segments): Likewise.
+	(ForeverStack::SegIterator): Change type alias.
+	* resolve/rust-forever-stack.hxx (check_leading_kw_at_start):
+	Change function signature.
+	(ForeverStack::find_starting_point): Likewise.
+	(ForeverStack::resolve_segments): Likewise.
+	(ForeverStack::resolve_path): Likewise.
+	* resolve/rust-name-resolution-context.h: Tweak include guard,
+	include "rust-name-resolution.h".
+	(NameResolutionContext::resolve_path): Use ResolutionPath and
+	ResolutionBuilder.
+	(class NameResolutionContext::ResolutionBuilder): New class.
+	(class Usage): Move this...
+	(class Definition): ...and this...
+	* resolve/rust-name-resolution.h: ...to new file.
+	* util/rust-unwrap-segment.h: Add include guard.
+
 2026-03-20  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
 
 	* rust-session-manager.cc (Session::compile_crate): Use additional
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 14820bfe8fb4..349043df2dc4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,295 @@
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/mangle2.C: Expect \[jmy] instead of just m for size_t
+	mangling.
+	* g++.dg/reflect/mangle3.C: Expect \[ilx] instead of just l for
+	ptrdiff_t mangling.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/bitint-31.c: Require hard_float effective target, add
+	-frounding-math to dg-options.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/cpp26/expansion-stmt39.C: New test.
+	* g++.dg/reflect/cwg3149.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/mangle1.C: Adjust expected mangling of type
+	aliases.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124862
+	* g++.dg/ext/builtin-structured-binding-size5.C: New test.
+	* g++.dg/ext/builtin-structured-binding-size6.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* g++.dg/other/anon-union8.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/reflect_constant_array9.C: New test.
+	* g++.dg/reflect/reflect_constant_array10.C: New test.
+	* g++.dg/reflect/reflect_constant_array11.C: New test.
+	* g++.dg/reflect/define_static_array6.C: New test.
+	* g++.dg/reflect/define_static_object2.C: Uncomment older tests and
+	fix them, add tests for unions.
+
+2026-04-15  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* gcc.dg/plugin/analyzer_known_fns_plugin.cc: Add missing
+	override to member function.
+
+2026-04-15  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* gcc.dg/plugin/diagnostic_plugin_test_paths.cc: Compare with
+	NULL in if statement.
+
+2026-04-14  jayant chauhan  <0001jayant@gmail.com>
+
+	* rust/compile/issue-3910.rs: New test.
+
+2026-04-14  AhmedSaid3617  <said.ahmed3617@gmail.com>
+
+	* rust/compile/glob-import-all.rs: New test.
+
+2026-04-14  Islam-Imad  <islamimad404@gmail.com>
+
+	* rust/compile/issue-4517.rs: New test.
+
+2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>
+
+	* rust/compile/cttz.rs: New test.
+	* rust/compile/cttz_nonzero.rs: New test.
+	* rust/execute/torture/cttz.rs: New test.
+	* rust/execute/torture/cttz_nonzero.rs: New test.
+
+2026-04-14  Philipp Gesang  <phg@phi-gamma.net>
+
+	* rust/compile/func-qualifier-default.rs:
+	Adapt to change in compiler messages
+	* rust/compile/func-qualifier-order.rs: Renamed existing
+	test file for clarity (from)
+	* rust/compile/func-qualifier-order-1.rs: Renamed existing
+	test file (to)
+	* rust/compile/func-qualifier-order-2.rs: New test file
+	* rust/compile/func-qualifier-order-3.rs: New test file
+
+2026-04-14  Philipp Gesang  <phg@phi-gamma.net>
+
+	* rust/compile/func-qualifier-order.rs: New test file
+	* rust/compile/func-qualifier-default.rs: New test file
+
+2026-04-14  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* rust/compile/issue-3550.rs: New file.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/doc_macro.rs: Add macro_export on macro.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/doc_macro.rs: Add concat builtin macro definition.
+	* rust/compile/early_feature_gate_in_macro.rs: Add stringify builtin
+	macro definition.
+	* rust/compile/issue-3661.rs: Likewise.
+	* rust/compile/parse_time_feature_gate.rs: Add concat and stringify
+	builtin macro definition.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/issue-4226.rs: Update text to match error message from
+	attribute checking pass that was not triggered before.
+
+2026-04-14  Egas Ribeiro  <egas.g.ribeiro@tecnico.ulisboa.pt>
+
+	* rust/compile/issue-3919-ice-func-parms.rs: New test.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* rust/execute/ident_pat_vs_path_1.rs: New test.
+	* rust/execute/ident_pat_vs_path_2.rs: New test.
+
+2026-04-14  Jayant Chauhan  <0001jayant@gmail.com>
+
+	* rust/compile/issue-3875.rs: New test.
+
+2026-04-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/compiler_builtins_gate.rs: New test.
+
+2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>
+
+	* rust/execute/torture/ctlz_i16.rs: New test.
+	* rust/execute/torture/ctlz_i32.rs: New test.
+	* rust/execute/torture/ctlz_i64.rs: New test.
+	* rust/execute/torture/ctlz_i8.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_i16.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_i32.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_i64.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_i8.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_u16.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_u32.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_u64.rs: New test.
+	* rust/execute/torture/ctlz_nonzero_u8.rs: New test.
+	* rust/execute/torture/ctlz_u16.rs: New test.
+	* rust/execute/torture/ctlz_u32.rs: New test.
+	* rust/execute/torture/ctlz_u64.rs: New test.
+	* rust/execute/torture/ctlz_u8.rs: New test.
+
+2026-04-14  Mohamed Ali  <mohmedali1462005@gmail.com>
+
+	* rust/compile/ctlz.rs: New test.
+	* rust/compile/ctlz_nonzero.rs: New test.
+	* rust/execute/torture/ctlz.rs: New test.
+	* rust/execute/torture/ctlz_nonzero.rs: New test.
+
+2026-04-14  Enes Cevik  <nsvke@proton.me>
+
+	* rust/execute/non_decimal_128_saturation.rs: New test.
+
+2026-04-14  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* rust/compile/match-struct-path.rs: Increase test coverage.
+
+2026-04-14  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* rust/compile/issue-3555.rs: New test case.
+	* rust/compile/issue-3591.rs: New test case.
+	* rust/compile/issue-3597.rs: New test case.
+	* rust/compile/issue-3651.rs: New test case.
+	* rust/compile/issue-3670.rs: New test case.
+	* rust/compile/issue-3672.rs: New test case.
+
+2026-04-14  Harishankar  <harishankarpp7@gmail.com>
+
+	* rust/compile/issue-3931.rs: New test.
+
+2026-04-14  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124544
+	* g++.dg/reflect/alias1.C: New test.
+	* g++.dg/reflect/alias2.C: New test.
+
+2026-04-14  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/124809
+	* gcc.dg/pr124809.c: New.
+
+2026-04-14  Martin Jambor  <mjambor@suse.cz>
+
+	PR ipa/124777
+	* gcc.dg/ipa/pr124777.c: New test.
+
+2026-04-14  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/105408
+	* gm2/iso/run/pass/testgeneric.mod: Corrected printf arguments.
+	* gm2/iso/run/pass/printsize.mod: New test.
+	* gm2/iso/run/pass/testgeneric2.mod: New test.
+	* gm2/iso/run/pass/testgeneric3.mod: New test.
+	* gm2/iso/run/pass/testgeneric4.mod: New test.
+	* gm2/iso/run/pass/testgeneric5.mod: New test.
+
+2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124875
+	* g++.dg/torture/pr124875.C: New testcase.
+
+2026-04-14  Soumya AR  <soumyaa@nvidia.com>
+	    Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	* gcc.target/aarch64/narrow-gp-writes-1.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-2.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-3.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-4.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-5.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-6.c: New test.
+	* gcc.target/aarch64/narrow-gp-writes-7.c: New test.
+
+2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gcc.dg/bitint-128.c: New test.
+
+2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124868
+	* gcc.dg/torture/pr124868.c: New testcase.
+
+2026-04-14  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124876
+	* gcc.target/i386/zero-scratch-regs-23.c: Scan vpxord on ZMM16-31.
+	* gcc.target/i386/zero-scratch-regs-33.c: New test.
+
+2026-04-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123237
+	PR c++/124771
+	PR c++/124842
+	* g++.dg/reflect/mangle2.C: New test.
+	* g++.dg/reflect/mangle3.C: New test.
+	* g++.dg/reflect/mangle4.C: New test.
+	* g++.dg/reflect/mangle5.C: New test.
+
+2026-04-13  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/101760
+	PR fortran/102314
+	* gfortran.dg/gomp/pr101760.f90: New test.
+	* gfortran.dg/gomp/pr102314.f90: New test.
+
+2026-04-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124835
+	* g++.dg/reflect/decltype2.C: New test.
+
+2026-04-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR target/123238
+	* gcc.target/aarch64/pr123238.c:
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/103901
+	PR c++/123566
+	* g++.dg/cpp2a/lambda-targ25.C: New test.
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/122632
+	* g++.dg/cpp23/lambda-scope11.C: New test.
+
+2026-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124246
+	* g++.dg/reflect/type_trait13.C: Uncomment commented out is_swappable_type and
+	is_nothrow_swappable_type assertions with std::priority_queue.
+
+2026-04-13  Josef Melcr  <josef.melcr@suse.com>
+
+	PR ipa/124700
+	* g++.dg/gomp/pr124700.C: New test.
+
+2026-04-13  Hu, Lin1  <lin1.hu@intel.com>
+
+	PR target/124710
+	* gcc.target/i386/pr124710-1.c: New test.
+	* gcc.target/i386/pr124710-2.c: Ditto.
+
+2026-04-13  Jason Merrill  <jason@redhat.com>
+
+	PR c++/122884
+	* g++.dg/cpp23/lambda-scope10.C: New test.
+	* g++.dg/cpp23/lambda-scope10a.C: New test.
+
 2026-04-11  Christopher Albert  <albert@tugraz.at>
 
 	PR fortran/93554
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 730417053429..efba86e010cf 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-15  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* libgcov-driver-system.c (gcov_exit_open_gcda_file): Handle
+	potential NULL value from malloc.
+
 2026-03-30  Saurabh Jha  <saurabh.jha@arm.com>
 	    Evgeny Karpov  <evgeny.karpov@arm.com>
 
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 41de699dcba8..e2c238d03ed4 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* libdruntime/MERGE: Merge upstream druntime e145b91245.
+
 2026-04-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	PR d/88150
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index eb821efef1be..7f9d58af2180 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,88 @@
+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

From redi@gcc.gnu.org  Wed Apr 15 16:54:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 15 Apr 2026 16:54:07 +0000 (GMT)
Subject: [gcc r16-8682] libstdc++: Fix philox2x64 case for 32-bit targets
Message-ID: <20260415165407.1D5E14BA2E28@sourceware.org>

https://gcc.gnu.org/g:caeab8f3594f0a34a840999b2ae05dcea518fb9c

commit r16-8682-gcaeab8f3594f0a34a840999b2ae05dcea518fb9c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 15 17:37:29 2026 +0100

    libstdc++: Fix philox2x64 case for 32-bit targets
    
    While testing a patch for std::philox_engine I noticed that
    instantiating std::philox_engine with n=2 and w=64 fails on targets
    without __int128, because it relies on an implicit conversion from the
    intermediate counter type to the result type. When w=64 and the target
    doesn't support __int128, we use the __rand_uint128 class type for the
    intermediate counter values, but that does not support implicit
    conversion to integral types.
    
    This adds the necessary casts to make the conversions explicit.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/random.tcc (philox_engine::_M_transition): Cast
            intermediate values to result_type for n=2 case.

Diff:
---
 libstdc++-v3/include/bits/random.tcc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index 7a63e868a895..bc3393d35a89 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -966,8 +966,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __type __num =
 		  (static_cast<__type>(_M_x[1]) << __w)
 		  | (static_cast<__type>(_M_x[0]) + 1);
-	  _M_x[0] = __num & max();
-	  _M_x[1] = (__num >> __w) & max();
+	  _M_x[0] = static_cast<_UIntType>(__num & max());
+	  _M_x[1] = static_cast<_UIntType>((__num >> __w) & max());
 	}
       _M_i = 0;
     }

From redi@gcc.gnu.org  Wed Apr 15 16:54:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 15 Apr 2026 16:54:12 +0000 (GMT)
Subject: [gcc r16-8683] libstdc++: Fix philox_engine counter increment carry
Message-ID: <20260415165412.407364BA2E32@sourceware.org>

https://gcc.gnu.org/g:1bb8dc29aab17d29a7ab10ffb3e96900b580671a

commit r16-8683-g1bb8dc29aab17d29a7ab10ffb3e96900b580671a
Author: Elena Tyuleneva <elena.tyuleneva@intel.com>
Date:   Wed Apr 15 15:54:51 2026 +0100

    libstdc++: Fix philox_engine counter increment carry
    
    The philox counter increment that happens in
    philox_engine::_M_transition(), applies +1 to _M_x[0] before the bitwise
    OR with (_M_x[1] << __w), so the carry from _M_x[0] is merged into the
    _M_x[1] portion rather than being added to it. This causes the counter
    to cycle prematurely and never advance past {0, 0, 1, 2^w - 1}.
    
    Fix by changing operations order, which results in forming the
    full-width value from _M_x[1]:_M_x[0] and then adding 1 on both the n ==
    4 and n == 2 paths.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Signed-off-by: Elena Tyuleneva <elena.tyuleneva@intel.com>
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Patrick Palka <ppalka@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/random.tcc               | 10 +--
 .../philox_engine/operators/counter_carry.cc       | 81 ++++++++++++++++++++++
 2 files changed, 87 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index bc3393d35a89..4475e365c2d7 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -945,7 +945,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  __type __uh
 	    = (static_cast<__type>(_M_x[1]) << __w)
-		| (static_cast<__type>(_M_x[0]) + 1);
+		| static_cast<__type>(_M_x[0]);
+	  ++__uh;
 	  __type __lh
 	    = (static_cast<__type>(_M_x[3]) << __w)
 		| static_cast<__type>(_M_x[2]);
@@ -963,9 +964,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
       else
 	{
-	  __type __num =
-		  (static_cast<__type>(_M_x[1]) << __w)
-		  | (static_cast<__type>(_M_x[0]) + 1);
+	  __type __num
+	    = (static_cast<__type>(_M_x[1]) << __w)
+		| static_cast<__type>(_M_x[0]);
+	  ++__num;
 	  _M_x[0] = static_cast<_UIntType>(__num & max());
 	  _M_x[1] = static_cast<_UIntType>((__num >> __w) & max());
 	}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/counter_carry.cc b/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/counter_carry.cc
new file mode 100644
index 000000000000..a0270eedb5d0
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/counter_carry.cc
@@ -0,0 +1,81 @@
+// { dg-do run { target c++26 } }
+// N5014 29.5.4.5 Class Template philox_engine
+
+#include <random>
+#include <array>
+
+#include <testsuite_hooks.h>
+
+// Helper: set counter, skip one block (n outputs), then compare
+// the next block against a reference engine at the expected counter.
+template<typename Engine, std::size_t N>
+void
+verify_carry(const std::array<typename Engine::result_type, N>& current_counter,
+	     const std::array<typename Engine::result_type, N>& expected_incremented_counter)
+{
+  Engine eng_a;
+  eng_a.set_counter(current_counter);
+  // Skip the block produced from current_counter
+  eng_a.discard(N);
+
+  Engine eng_b;
+  eng_b.set_counter(expected_incremented_counter);
+  // Both engines should now produce identical output
+  for (std::size_t i = 0; i < N; ++i)
+    VERIFY( eng_a() == eng_b() );
+}
+
+int main()
+{
+  // philox4x32 (n=4, w=32)
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0, 0, 0, 5},
+				   std::array<std::philox4x32::result_type, 4>{0, 0, 0, 6});
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0, 0, 0, 0xFFFFFFFF},
+				   std::array<std::philox4x32::result_type, 4>{0, 0, 1, 0});
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0, 0, 1, 0xFFFFFFFF},
+				   std::array<std::philox4x32::result_type, 4>{0, 0, 2, 0});
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0, 0, 0xFFFFFFFF, 0xFFFFFFFF},
+				   std::array<std::philox4x32::result_type, 4>{0, 1, 0, 0});
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0, 1, 0xFFFFFFFF, 0xFFFFFFFF},
+				   std::array<std::philox4x32::result_type, 4>{0, 2, 0, 0});
+  verify_carry<std::philox4x32, 4>(std::array<std::philox4x32::result_type, 4>{0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF},
+				   std::array<std::philox4x32::result_type, 4>{0, 0, 0, 0});
+
+  // philox4x64 (n=4, w=64)
+  constexpr auto philox4x64_max = std::philox4x64::max();
+  verify_carry<std::philox4x64, 4>(std::array<std::philox4x64::result_type, 4>{0, 0, 0, philox4x64_max},
+				   std::array<std::philox4x64::result_type, 4>{0, 0, 1, 0});
+  verify_carry<std::philox4x64, 4>(std::array<std::philox4x64::result_type, 4>{0, 0, 1, philox4x64_max},
+				   std::array<std::philox4x64::result_type, 4>{0, 0, 2, 0});
+  verify_carry<std::philox4x64, 4>(std::array<std::philox4x64::result_type, 4>{0, 0, philox4x64_max, philox4x64_max},
+				   std::array<std::philox4x64::result_type, 4>{0, 1, 0, 0});
+  verify_carry<std::philox4x64, 4>(std::array<std::philox4x64::result_type, 4>{0, 1, philox4x64_max, philox4x64_max},
+				   std::array<std::philox4x64::result_type, 4>{0, 2, 0, 0});
+  verify_carry<std::philox4x64, 4>(std::array<std::philox4x64::result_type, 4>{philox4x64_max, philox4x64_max, philox4x64_max, philox4x64_max},
+				   std::array<std::philox4x64::result_type, 4>{0, 0, 0, 0});
+
+  // philox2x32 (n=2, w=32)
+  using philox2x32 = std::philox_engine<std::uint_fast32_t,
+        32, 2, 10, 0xCD9E8D57, 0x9E3779B9>;
+  verify_carry<philox2x32, 2>(std::array<philox2x32::result_type, 2>{0, 5},
+			      std::array<philox2x32::result_type, 2>{0, 6});
+  verify_carry<philox2x32, 2>(std::array<philox2x32::result_type, 2>{0, 0xFFFFFFFF},
+			      std::array<philox2x32::result_type, 2>{1, 0});
+  verify_carry<philox2x32, 2>(std::array<philox2x32::result_type, 2>{1, 0xFFFFFFFF},
+			      std::array<philox2x32::result_type, 2>{2, 0});
+  verify_carry<philox2x32, 2>(std::array<philox2x32::result_type, 2>{0xFFFFFFFF, 0xFFFFFFFF},
+			      std::array<philox2x32::result_type, 2>{0, 0});
+
+  // philox2x64 (n=2, w=64)
+  using philox2x64 = std::philox_engine<std::uint_fast64_t,
+        64, 2, 10, 0xCD9E8D57, 0x9E3779B9>;
+  constexpr auto philox2x64_max = philox2x64::max();
+  verify_carry<philox2x64, 2>(std::array<philox2x64::result_type, 2>{0, 5},
+			      std::array<philox2x64::result_type, 2>{0, 6});
+  verify_carry<philox2x64, 2>(std::array<philox2x64::result_type, 2>{0, philox2x64_max},
+			      std::array<philox2x64::result_type, 2>{1, 0});
+  verify_carry<philox2x64, 2>(std::array<philox2x64::result_type, 2>{1, philox2x64_max},
+			      std::array<philox2x64::result_type, 2>{2, 0});
+  verify_carry<philox2x64, 2>(std::array<philox2x64::result_type, 2>{philox2x64_max, philox2x64_max},
+			      std::array<philox2x64::result_type, 2>{0, 0});
+}

From gccadmin@gcc.gnu.org  Thu Apr 16 00:16:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 16 Apr 2026 00:16:53 +0000 (GMT)
Subject: [gcc r16-8690] Daily bump.
Message-ID: <20260416001653.9E8D74BA2E10@sourceware.org>

https://gcc.gnu.org/g:f3c25c51cb93763049093d97476d18691ab44c27

commit r16-8690-gf3c25c51cb93763049093d97476d18691ab44c27
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 16 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 42 ++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/ada/ChangeLog       | 12 ++++++++
 gcc/cp/ChangeLog        | 48 ++++++++++++++++++++++++++++++++
 gcc/m2/ChangeLog        |  8 ++++++
 gcc/testsuite/ChangeLog | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 12 ++++++++
 7 files changed, 197 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ed6e3dcf87fa..5e5896054c74 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,45 @@
+2026-04-15  Martin Jambor  <mjambor@suse.cz>
+
+	PR tree-optimization/122976
+	* tree-sra.cc (path_comparable_for_same_access): Return false if the
+	base is a MEM_REF with a different underlying type.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* target.h (enum bitint_ext): New.
+	(struct bitint_info): Change extend type from bool to enum bitint_ext
+	and document it.
+	* gimple-lower-bitint.cc (bitint_extended): Change type from bool
+	to enum bitint_ext.
+	(bitint_precision_kind): Change bitint_extended to bitint_ext_partial
+	from bitint_ext_full if limb_mode is the same as abi_limb_mode.
+	(bitint_large_huge::limb_access_type): For
+	bitint_extended == bitint_ext_full allow access to the most
+	significant limb solely with padding bits if present.
+	(bitint_large_huge::lower_mergeable_stmt): Handle
+	bitint_extended == bitint_ext_full extension if needed.
+	(bitint_large_huge::lower_muldiv_stmt): Likewise.
+	(bitint_large_huge::lower_float_conv_stmt): Likewise.
+	* config/aarch64/aarch64.cc (aarch64_bitint_type_info): Set
+	info->extended to bitint_ext_undef rather than false.
+	* config/arm/arm.cc (arm_bitint_type_info): Set
+	info->extended to bitint_ext_full rather than true.
+	* config/i386/i386.cc (ix86_bitint_type_info): Set
+	info->extended to bitint_ext_undef rather than false.
+	* config/loongarch/loongarch.cc (loongarch_bitint_type_info): Set
+	info->extended to bitint_ext_partial rather than true.
+	* config/riscv/riscv.cc (riscv_bitint_type_info): Set
+	info->extended to bitint_ext_full rather than true.
+	* config/s390/s390.cc (s390_bitint_type_info): Likewise.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/117133
+	PR c++/124768
+	PR c++/124773
+	* doc/trouble.texi (Linkage in Anonymous Namespaces): Remove.
+
 2026-04-15  H.J. Lu  <hjl.tools@gmail.com>
 
 	* config/i386/i386.cc
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 3bd3150050a5..caade3775cfa 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260415
+20260416
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 504f4f16c15c..0b0105b5a0c1 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/105212
+	* exp_aggr.adb (Build_Array_Aggr_Code): If the aggregate comes from
+	source, call Set_Referenced_Modified on the target.
+
+2026-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/87170
+	* sem_res.adb (Resolve_String_Literal): Copy Comes_From_Source from
+	the string literal to the character literals.
+
 2026-04-13  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/95452
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bd7fe0eb2017..3c38e04bcaac 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,51 @@
+2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/120338
+	* decl.cc (cp_finish_decl): Set DECL_INITIAL to error_mark_node
+	instead of NULL_TREE for deleted main.
+
+2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123783
+	* lambda.cc (add_capture): When trying to capture something in
+	an instantiation of generic lambda, give an error instead of an ICE.
+
+2026-04-15  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124824
+	* decl.cc (cp_finish_decl): Sink !consteval_only_p check to
+	only guard the varpool_node::get_create call.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124755
+	* constexpr.cc (cxx_eval_constant_expression): If TARGET_EXPR_INITIAL
+	throws and !is_complex and type is neither aggregate nor vector,
+	call ctx->global->put_value (slot, NULL) before returning.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/117133
+	PR c++/124768
+	PR c++/124773
+	* mangle.cc (unmangled_name_p): Don't mangle internal extern "C"
+	variables.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/121643
+	PR c++/123975
+	* coroutines.cc (build_co_await): Pass rvalue to await_suspend.
+	(expand_one_await_expression): Fix await_suspend surgery.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/121961
+	* coroutines.cc (build_actor_fn): Move the delete label before
+	the refcount handling.
+	(cp_coroutine_transform::build_ramp_function): Decrement refcount
+	after destroying gro.
+
 2026-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* pt.cc (finish_expansion_stmt): Implement CWG3149 - Rvalues in
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 60564c3df380..6e22a508e600 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-15  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/124081
+	* gm2-compiler/M2Quads.mod (SafeCheckWithField): New procedure.
+	(BuildInclRange): Reimplement.
+	(AddFieldTo): Ditto.
+	(BuildComponentValue): Ditto.
+
 2026-04-14  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/105408
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 349043df2dc4..23165a858f02 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,77 @@
+2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/120338
+	* g++.dg/cpp0x/deleted19.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* go.test/go-test.exp (errchk): Use -translation binary instead of
+	-encoding binary for TCL 9 compatibility.
+
+2026-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/warn36.adb: New test.
+
+2026-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/warn35.adb: New test.
+
+2026-04-15  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/124081
+	* gm2/iso/run/pass/setcons.mod: New test.
+	* gm2/iso/run/pass/setcons2.mod: New test.
+	* gm2/iso/run/pass/setcons3.mod: New test.
+	* gm2/iso/run/pass/setcons4.mod: New test.
+	* gm2/iso/run/pass/setcons5.mod: New test.
+
+2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123783
+	* g++.dg/reflect/dep14.C: New test.
+
+2026-04-15  Martin Jambor  <mjambor@suse.cz>
+
+	PR tree-optimization/122976
+	* gcc.dg/tree-ssa/pr122976.c: New test.
+
+2026-04-15  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124824
+	* g++.dg/reflect/mangle6.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124755
+	* g++.dg/cpp26/constexpr-eh19.C: New test.
+
+2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gcc.dg/bitintext.h: Handle __riscv__ like __arm__.
+	* gcc.dg/torture/bitint-86.c: New test.
+	* gcc.dg/torture/bitint-87.c: New test.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/117133
+	PR c++/124768
+	PR c++/124773
+	* g++.dg/abi/mangle84.C: New test.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/121643
+	PR c++/123975
+	* g++.dg/coroutines/pr105287.C: Add dg-excess-errors.
+	* g++.dg/coroutines/pr121643.C: New test.
+	* g++.dg/coroutines/pr123975.C: New test.
+
+2026-04-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/121961
+	* g++.dg/asan/coroutines1.C: New test.
+
 2026-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* g++.dg/reflect/mangle2.C: Expect \[jmy] instead of just m for size_t
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7f9d58af2180..1341b06ac2be 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+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

From tkaminsk@gcc.gnu.org  Thu Apr 16 07:52:22 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 16 Apr 2026 07:52:22 +0000 (GMT)
Subject: [gcc r15-11088] libstdc++: Define __cpp_lib_stdbit_h and
 __cpp_lib_stdckdint_h feature test macros.
Message-ID: <20260416075222.315F34BA540B@sourceware.org>

https://gcc.gnu.org/g:9072036de9228c043d7c5cd34820118f30c809ce

commit r15-11088-g9072036de9228c043d7c5cd34820118f30c809ce
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 14 16:30:36 2026 +0200

    libstdc++: Define __cpp_lib_stdbit_h and __cpp_lib_stdckdint_h feature test macros.
    
    This implements LWG4550: Need new feature test macros for <stdckdint.h>
    and <stdbit.h>.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 62d243c91c05b13490aac10b4faad81e86ea6bbf)

Diff:
---
 libstdc++-v3/include/bits/version.def            | 16 ++++++++++++++++
 libstdc++-v3/include/bits/version.h              | 20 ++++++++++++++++++++
 libstdc++-v3/include/c_compatibility/stdbit.h    |  8 ++++++--
 libstdc++-v3/include/c_compatibility/stdckdint.h |  8 ++++++--
 4 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index d8adeed576a2..fc26fc46bc9b 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1668,6 +1668,22 @@ ftms = {
   };
 };
 
+ftms = {
+  name = stdbit_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
+ftms = {
+  name = stdckdint_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
 ftms = {
   name = adaptor_iterator_pair_constructor;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 000bde9f9757..02bc4e48624b 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1860,6 +1860,26 @@
 #endif /* !defined(__cpp_lib_stdatomic_h) && defined(__glibcxx_want_stdatomic_h) */
 #undef __glibcxx_want_stdatomic_h
 
+#if !defined(__cpp_lib_stdbit_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdbit_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdbit_h)
+#   define __cpp_lib_stdbit_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdbit_h) */
+#undef __glibcxx_want_stdbit_h
+
+#if !defined(__cpp_lib_stdckdint_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdckdint_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdckdint_h)
+#   define __cpp_lib_stdckdint_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdckdint_h) */
+#undef __glibcxx_want_stdckdint_h
+
 #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)
 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
 #  define __glibcxx_adaptor_iterator_pair_constructor 202106L
diff --git a/libstdc++-v3/include/c_compatibility/stdbit.h b/libstdc++-v3/include/c_compatibility/stdbit.h
index 1fb691e36c18..fa4ec0414c6e 100644
--- a/libstdc++-v3/include/c_compatibility/stdbit.h
+++ b/libstdc++-v3/include/c_compatibility/stdbit.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDBIT_H
 #define _GLIBCXX_STDBIT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdbit_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdbit_h // C++ >= 26
+
 #include <bit>
 
 #define __STDC_VERSION_STDBIT_H__ 202311L
@@ -577,6 +581,6 @@ _GLIBCXX_STDBIT_FUNC(stdc_bit_floor);
 _GLIBCXX_STDBIT_FUNC(stdc_bit_ceil);
 #undef _GLIBCXX_STDBIT_FUNC
 #endif // !DOXYGEN
-#endif // C++26
+#endif // __cpp_lib_stdbit_h
 
 #endif // _GLIBCXX_STDBIT_H
diff --git a/libstdc++-v3/include/c_compatibility/stdckdint.h b/libstdc++-v3/include/c_compatibility/stdckdint.h
index 1de2d18dc1aa..33dfcc8442d6 100644
--- a/libstdc++-v3/include/c_compatibility/stdckdint.h
+++ b/libstdc++-v3/include/c_compatibility/stdckdint.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDCKDINT_H
 #define _GLIBCXX_STDCKDINT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdckdint_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdckdint_h // C++ >= 26
+
 #include <type_traits>
 #include <concepts>
 
@@ -108,6 +112,6 @@ using __gnu_cxx::ckd_sub;
 using __gnu_cxx::ckd_mul;
 #endif
 
-#endif // C++26
+#endif // __cpp_lib_stdckdint_h
 
 #endif // _GLIBCXX_STDCKDINT_H

From tkaminsk@gcc.gnu.org  Thu Apr 16 10:09:29 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 16 Apr 2026 10:09:29 +0000 (GMT)
Subject: [gcc r16-8700] libstdc++: Export explicit instantiations of
 __format::__do_vformat_to.
Message-ID: <20260416100929.7BAAB4BA2E17@sourceware.org>

https://gcc.gnu.org/g:30c37984e87095b2f99bc6391c9d3da7585d6e32

commit r16-8700-g30c37984e87095b2f99bc6391c9d3da7585d6e32
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 3 13:39:20 2026 +0200

    libstdc++: Export explicit instantiations of __format::__do_vformat_to.
    
    This patch extracts a __format::__do_vformat_to for the _Sink_iter
    (and matching format context) and exports explicit instantiations
    of it for char and wchar_t. As every format function is implementing
    as delegating to one of these overloads, this significantly reduces
    the compilation time.
    
    Instantiating __format::__do_vformat_to triggers specializations of
    formatters for types stored in basic_format_arg directly (arithmetic
    types, strings). In case when their behavior depends on the TU specific
    configuration, only one configuration can be exported from shared
    lib. In case of beforementioned formatters:
    * ? (debug mode) is accepted in for strings and characters
    * multibyte utf-8 encoded character is accepted as fill when the
      literal encoding is Unicode.
    
    The first issue is addressed by this patch, by declaring extern
    definition only for the C++20. We will need to reconsider how to
    handle the specifiers when C++23 becomes stable.
    
    The literal encoding is handled by adding a second template parameter
    to __do_vformat_to overload, that is initialized with 1 if literal
    encoding is Unicode (the parameter has unsigned type to allow more
    information to be encoded). This allows library to export implementation
    for Unicode literal encoding (format-inst.cc is compiled with appropriate
    flag), by declaring extern specialization only for value 1.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver   |   8 +-
 libstdc++-v3/include/std/format       | 154 ++++++++++++++++++++--------------
 libstdc++-v3/src/c++20/Makefile.am    |  10 ++-
 libstdc++-v3/src/c++20/Makefile.in    |  10 ++-
 libstdc++-v3/src/c++20/format-inst.cc |  45 ++++++++++
 5 files changed, 159 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 624de951d415..71b3c175bbdf 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -34,7 +34,9 @@ GLIBCXX_3.4 {
       std::basic_[a-e]*;
       std::basic_f[a-h]*;
 #     std::basic_filebuf;
-      std::basic_f[j-r]*;
+      std::basic_f[j-n]*;
+#     std::basic_format_context;
+      std::basic_f[p-r]*;
 #     std::basic_fstream;
       std::basic_f[t-z]*;
       std::basic_[g-h]*;
@@ -2606,6 +2608,10 @@ GLIBCXX_3.4.35 {
     _ZNSbIwSt11char_traitsIwESaIwEEC[12]EvQ26is_default_constructible_vIT1_E;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EEC[1-2]EvQ26is_default_constructible_vIT1_E;
 
+    # __format::__do_vformat_to<char, 1>(_Sink_iter<char>, string_view, format_context&);
+    # __format::__do_vformat_to<wchar_t, 1>(_Sink_iter<wchar_t>, wstring_view, format_context&);
+    _ZNSt8__format15__do_vformat_toI[cw]Lj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E;
+
 #if defined (_WIN32) && !defined (__CYGWIN__)
     _ZSt19__get_once_callablev;
     _ZSt15__get_once_callv;
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index eca5bd213aa0..92add1e0a01c 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -5219,82 +5219,106 @@ namespace __format
 #endif
     };
 
-  template<typename _Out, typename _CharT, typename _Context>
-    inline _Out
-    __do_vformat_to(_Out __out, basic_string_view<_CharT> __fmt,
-		    const basic_format_args<_Context>& __args,
-		    const locale* __loc)
+  template<typename _CharT, unsigned = __unicode::__literal_encoding_is_unicode<_CharT>()>
+    _Sink_iter<_CharT>
+    __do_vformat_to(_Sink_iter<_CharT> __out, basic_string_view<_CharT> __fmt,
+		    __format_context<_CharT>& __ctx)
     {
-      if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
-	{
-	  if constexpr (is_same_v<_CharT, char>)
-	    // Fast path for "{}" format strings and simple format arg types.
-	    if (__fmt.size() == 2 && __fmt[0] == '{' && __fmt[1] == '}')
-	      {
-		bool __done = false;
-		__format::__visit_format_arg([&](auto& __arg) {
-		  using _Tp = remove_cvref_t<decltype(__arg)>;
-		  if constexpr (is_same_v<_Tp, bool>)
+      if constexpr (is_same_v<_CharT, char>)
+	// Fast path for "{}" format strings and simple format arg types.
+	if (__fmt.size() == 2 && __fmt[0] == '{' && __fmt[1] == '}')
+	  {
+	    bool __done = false;
+	    __format::__visit_format_arg([&](auto& __arg) {
+	      using _Tp = remove_cvref_t<decltype(__arg)>;
+	      if constexpr (is_same_v<_Tp, bool>)
+		{
+		  size_t __len = 4 + !__arg;
+		  const char* __chars[] = { "false", "true" };
+		  if (auto __res = __out._M_reserve(__len))
 		    {
-		      size_t __len = 4 + !__arg;
-		      const char* __chars[] = { "false", "true" };
-		      if (auto __res = __out._M_reserve(__len))
-			{
-			  __builtin_memcpy(__res.get(), __chars[__arg], __len);
-			  __res._M_bump(__len);
-			  __done = true;
-			}
+		      __builtin_memcpy(__res.get(), __chars[__arg], __len);
+		      __res._M_bump(__len);
+		      __done = true;
 		    }
-		  else if constexpr (is_same_v<_Tp, char>)
+		}
+	      else if constexpr (is_same_v<_Tp, char>)
+		{
+		  if (auto __res = __out._M_reserve(1))
 		    {
-		      if (auto __res = __out._M_reserve(1))
-			{
-			  *__res.get() = __arg;
-			  __res._M_bump(1);
-			  __done = true;
-			}
+		      *__res.get() = __arg;
+		      __res._M_bump(1);
+		      __done = true;
 		    }
-		  else if constexpr (is_integral_v<_Tp>)
+		}
+	      else if constexpr (is_integral_v<_Tp>)
+		{
+		  make_unsigned_t<_Tp> __uval;
+		  const bool __neg = __arg < 0;
+		  if (__neg)
+		    __uval = make_unsigned_t<_Tp>(~__arg) + 1u;
+		  else
+		    __uval = __arg;
+		  const auto __n = __detail::__to_chars_len(__uval);
+		  if (auto __res = __out._M_reserve(__n + __neg))
 		    {
-		      make_unsigned_t<_Tp> __uval;
-		      const bool __neg = __arg < 0;
-		      if (__neg)
-			__uval = make_unsigned_t<_Tp>(~__arg) + 1u;
-		      else
-			__uval = __arg;
-		      const auto __n = __detail::__to_chars_len(__uval);
-		      if (auto __res = __out._M_reserve(__n + __neg))
-			{
-			  auto __ptr = __res.get();
-			  *__ptr = '-';
-			  __detail::__to_chars_10_impl(__ptr + (int)__neg, __n,
-						       __uval);
-			  __res._M_bump(__n + __neg);
-			  __done = true;
-			}
+		      auto __ptr = __res.get();
+		      *__ptr = '-';
+		      __detail::__to_chars_10_impl(__ptr + (int)__neg, __n,
+						   __uval);
+		      __res._M_bump(__n + __neg);
+		      __done = true;
 		    }
-		  else if constexpr (is_convertible_v<_Tp, string_view>)
+		}
+	      else if constexpr (is_convertible_v<_Tp, string_view>)
+		{
+		  string_view __sv = __arg;
+		  if (auto __res = __out._M_reserve(__sv.size()))
 		    {
-		      string_view __sv = __arg;
-		      if (auto __res = __out._M_reserve(__sv.size()))
-			{
-			  __builtin_memcpy(__res.get(), __sv.data(), __sv.size());
-			  __res._M_bump(__sv.size());
-			  __done = true;
-			}
+		      __builtin_memcpy(__res.get(), __sv.data(), __sv.size());
+		      __res._M_bump(__sv.size());
+		      __done = true;
 		    }
-		}, __args.get(0));
+		}
+	    }, __ctx.arg(0));
 
-		if (__done)
-		  return __out;
-	      }
+	    if (__done)
+	      return __out;
+	  }
+
+      _Formatting_scanner<_Sink_iter<_CharT>, _CharT> __scanner(__ctx, __fmt);
+      __scanner._M_scan();
+      return __out;
+    }
+
+// The behavior of the formatters (interpretation of fill character) depends
+// on the literal encoding. As explicit instantiation of __do_vformat_to
+// instantiates formatters for types stored in basic_format_arg, we can
+// support only single encoding, in this case unicode. This should cover
+// most common use cases.
+#if __cplusplus <= 202002L && _GLIBCXX_EXTERN_TEMPLATE > 0
+    extern template _Sink_iter<char>
+      __do_vformat_to<char, 1>(_Sink_iter<char>, string_view,
+			       format_context&);
+# ifdef _GLIBCXX_USE_WCHAR_T
+    extern template _Sink_iter<wchar_t>
+      __do_vformat_to<wchar_t, 1>(_Sink_iter<wchar_t>, wstring_view,
+				  wformat_context&);
+# endif
+#endif
 
+  template<typename _Out, typename _CharT, typename _Context>
+    inline _Out
+    __do_vformat_to(_Out __out, basic_string_view<_CharT> __fmt,
+		    const basic_format_args<_Context>& __args,
+		    const locale* __loc)
+    {
+      if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
+	{
 	  auto __ctx = __loc == nullptr
-			 ? _Context(__args, __out)
-			 : _Context(__args, __out, *__loc);
-	  _Formatting_scanner<_Sink_iter<_CharT>, _CharT> __scanner(__ctx, __fmt);
-	  __scanner._M_scan();
-	  return __out;
+		     ? _Context(__args, __out)
+		     : _Context(__args, __out, *__loc);
+	  return __format::__do_vformat_to(__out, __fmt, __ctx);
 	}
       else if constexpr (__contiguous_char_iter<_CharT, _Out>)
 	{
@@ -5311,7 +5335,7 @@ namespace __format
     }
 
   template<typename _Out, typename _CharT>
-    format_to_n_result<_Out>
+    inline format_to_n_result<_Out>
     __do_vformat_to_n(_Out __out, iter_difference_t<_Out> __n,
 		      basic_string_view<_CharT> __fmt,
 		      const type_identity_t<
diff --git a/libstdc++-v3/src/c++20/Makefile.am b/libstdc++-v3/src/c++20/Makefile.am
index af5d2fa4057b..5182d51b9faa 100644
--- a/libstdc++-v3/src/c++20/Makefile.am
+++ b/libstdc++-v3/src/c++20/Makefile.am
@@ -33,11 +33,11 @@ else
 extra_string_inst_sources =
 endif
 
-
 if ENABLE_EXTERN_TEMPLATE
 # XTEMPLATE_FLAGS = -fno-implicit-templates
 inst_sources = \
 	sstream-inst.cc \
+	format-inst.cc \
 	string-inst.cc \
 	$(extra_string_inst_sources)
 else
@@ -73,6 +73,14 @@ format.lo: format.cc
 format.o: format.cc
 	$(CXXCOMPILE) -std=gnu++26 -fno-access-control -c $<
 
+if ENABLE_EXTERN_TEMPLATE
+# The unicode literal version of formatters is exported, override the encoding accordingly
+format-inst.lo: format-inst.cc
+	$(LTCXXCOMPILE) -fexec-charset=UTF-8 -c $<
+format-inst.o: format-inst.cc
+	$(CXXCOMPILE) -fexec-charset=UTF-8 -c $<
+endif
+
 if GLIBCXX_HOSTED
 libc__20convenience_la_SOURCES = $(sources)  $(inst_sources)
 else
diff --git a/libstdc++-v3/src/c++20/Makefile.in b/libstdc++-v3/src/c++20/Makefile.in
index a2386ec7ee0c..33e3ba21b522 100644
--- a/libstdc++-v3/src/c++20/Makefile.in
+++ b/libstdc++-v3/src/c++20/Makefile.in
@@ -126,7 +126,8 @@ libc__20convenience_la_LIBADD =
 am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo syncbuf.lo
 @ENABLE_DUAL_ABI_TRUE@am__objects_2 = cow-string-inst.lo
 @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_3 = sstream-inst.lo \
-@ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.lo $(am__objects_2)
+@ENABLE_EXTERN_TEMPLATE_TRUE@	format-inst.lo string-inst.lo \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	$(am__objects_2)
 @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
 @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_3)
 libc__20convenience_la_OBJECTS = $(am_libc__20convenience_la_OBJECTS)
@@ -438,6 +439,7 @@ headers =
 # XTEMPLATE_FLAGS = -fno-implicit-templates
 @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
 @ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc \
+@ENABLE_EXTERN_TEMPLATE_TRUE@	format-inst.cc \
 @ENABLE_EXTERN_TEMPLATE_TRUE@	string-inst.cc \
 @ENABLE_EXTERN_TEMPLATE_TRUE@	$(extra_string_inst_sources)
 
@@ -773,6 +775,12 @@ format.lo: format.cc
 format.o: format.cc
 	$(CXXCOMPILE) -std=gnu++26 -fno-access-control -c $<
 
+# The unicode literal version of formatters is exported, override the encoding accordingly
+@ENABLE_EXTERN_TEMPLATE_TRUE@format-inst.lo: format-inst.cc
+@ENABLE_EXTERN_TEMPLATE_TRUE@	$(LTCXXCOMPILE) -fexec-charset=UTF-8 -c $<
+@ENABLE_EXTERN_TEMPLATE_TRUE@format-inst.o: format-inst.cc
+@ENABLE_EXTERN_TEMPLATE_TRUE@	$(CXXCOMPILE) -fexec-charset=UTF-8 -c $<
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/libstdc++-v3/src/c++20/format-inst.cc b/libstdc++-v3/src/c++20/format-inst.cc
new file mode 100644
index 000000000000..65a3f2827327
--- /dev/null
+++ b/libstdc++-v3/src/c++20/format-inst.cc
@@ -0,0 +1,45 @@
+// Definitions for <format> -*- C++ -*-
+
+// Copyright The GNU Toolchain Authors.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <format>
+
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+namespace __format
+{
+
+ template _Sink_iter<char>
+   __do_vformat_to<char, 1>(_Sink_iter<char>, string_view,
+			    format_context&);
+
+# ifdef _GLIBCXX_USE_WCHAR_T
+ template _Sink_iter<wchar_t>
+   __do_vformat_to<wchar_t, 1>(_Sink_iter<wchar_t>, wstring_view,
+			       wformat_context&);
+# endif
+
+} // namespace __format
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std

From jakub@gcc.gnu.org  Thu Apr 16 18:28:16 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 16 Apr 2026 18:28:16 +0000 (GMT)
Subject: [gcc(refs/vendors/redhat/heads/gcc-16-branch)] Merge commit
 'r16-8707-g7c84b2a62827b3509b25727694c9f0eac9e96b80' into
 redhat/gcc-16-branch
Message-ID: <20260416182816.93A554BC0578@sourceware.org>

https://gcc.gnu.org/g:1ce031bfa84b69736e209fbe7446bf271e2f49d3

commit 1ce031bfa84b69736e209fbe7446bf271e2f49d3
Merge: da66e2fe4839 7c84b2a62827
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Apr 16 20:26:33 2026 +0200

    Merge commit 'r16-8707-g7c84b2a62827b3509b25727694c9f0eac9e96b80' into redhat/gcc-16-branch

Diff:

 ChangeLog                                          |     8 +
 MAINTAINERS                                        |     4 +-
 config/ChangeLog                                   |     6 +
 config/mh-cygwin                                   |     9 +-
 config/mh-mingw                                    |     9 +-
 contrib/ChangeLog                                  |    16 +
 contrib/gcc-changelog/git_update_version.py        |     6 +-
 gcc/ChangeLog                                      |   845 +
 gcc/DATESTAMP                                      |     2 +-
 gcc/Makefile.in                                    |    11 +-
 gcc/acinclude.m4                                   |     6 +-
 gcc/ada/ChangeLog                                  |    84 +
 gcc/ada/adaint.c                                   |     4 -
 gcc/ada/doc/gnat_rm/gnat_language_extensions.rst   |    51 +-
 gcc/ada/exp_aggr.adb                               |    10 +
 gcc/ada/exp_ch6.adb                                |     3 +-
 gcc/ada/gcc-interface/lang.opt.urls                |    18 +
 gcc/ada/gnat_rm.texi                               |    54 +-
 gcc/ada/libgnat/g-heasor.adb                       |     9 +-
 gcc/ada/libgnat/g-hesora.adb                       |    16 +-
 gcc/ada/libgnat/g-hesorg.adb                       |     6 +-
 gcc/ada/libgnat/s-pehage.adb                       |     3 +-
 gcc/ada/libgnat/s-secsta.adb                       |    10 +-
 gcc/ada/libgnat/s-secsta__cheri.adb                |     7 +-
 gcc/ada/sem_attr.adb                               |   346 +-
 gcc/ada/sem_ch12.adb                               |    91 +-
 gcc/ada/sem_ch12.ads                               |    32 +-
 gcc/ada/sem_elab.adb                               |     2 +-
 gcc/ada/sem_res.adb                                |    26 +-
 gcc/algol68/ChangeLog                              |     4 +
 gcc/algol68/ga68-coding-guidelines.texi            |     2 +-
 gcc/analyzer/engine.cc                             |    14 +-
 gcc/auto-profile.cc                                |     4 +-
 gcc/c-family/ChangeLog                             |     5 +
 gcc/c-family/c.opt.urls                            |   159 +
 gcc/c/ChangeLog                                    |    25 +
 gcc/c/Make-lang.in                                 |    18 +-
 gcc/c/c-decl.cc                                    |    36 +-
 gcc/c/c-objc-common.cc                             |     2 +-
 gcc/c/c-tree.h                                     |    26 +-
 gcc/c/c-typeck.cc                                  |    48 +-
 gcc/calls.cc                                       |     9 +-
 gcc/cfgloopmanip.cc                                |    37 +-
 gcc/cgraph.cc                                      |    33 +-
 gcc/cgraph.h                                       |     3 +
 gcc/cgraphbuild.cc                                 |    20 +-
 gcc/cgraphunit.cc                                  |     2 +-
 gcc/cobol/ChangeLog                                |   111 +
 gcc/cobol/cobol1.cc                                |     4 +
 gcc/cobol/gcobol.1                                 |    44 +
 gcc/cobol/genapi.cc                                |  1474 +-
 gcc/cobol/gengen.cc                                |   506 +-
 gcc/cobol/gengen.h                                 |    65 +-
 gcc/cobol/genutil.cc                               |     7 +-
 gcc/cobol/genutil.h                                |     5 +-
 gcc/cobol/parse.y                                  |    40 +-
 gcc/cobol/parse_ante.h                             |    12 +-
 gcc/cobol/scan_ante.h                              |    88 +-
 gcc/cobol/structs.cc                               |   115 +-
 gcc/cobol/symbols.cc                               |   192 +-
 gcc/cobol/symbols.h                                |    33 +-
 gcc/cobol/util.cc                                  |    35 -
 gcc/common.opt.urls                                |   214 +
 gcc/config.gcc                                     |    16 +-
 gcc/config/aarch64/aarch64-cores.def               |     6 +-
 gcc/config/aarch64/aarch64-narrow-gp-writes.cc     |   602 +
 gcc/config/aarch64/aarch64-option-extensions.def   |    28 +
 gcc/config/aarch64/aarch64-passes.def              |     1 +
 gcc/config/aarch64/aarch64-protos.h                |     1 +
 gcc/config/aarch64/aarch64-sys-regs.def            |   379 +
 gcc/config/aarch64/aarch64-tune.md                 |     2 +-
 gcc/config/aarch64/aarch64-tuning-flags.def        |     4 +
 gcc/config/aarch64/aarch64.cc                      |    30 +-
 gcc/config/aarch64/aarch64.opt                     |     5 +
 gcc/config/aarch64/aarch64.opt.urls                |     3 +
 gcc/config/aarch64/gcc-auto-profile                |     5 +
 gcc/config/aarch64/t-aarch64                       |    17 +-
 gcc/config/aarch64/tuning_models/olympus.h         |     3 +-
 gcc/config/arm/arm-cpus.in                         |     8 +
 gcc/config/arm/arm.cc                              |     4 +-
 gcc/config/arm/arm.md                              |    26 +-
 gcc/config/bpf/bpf.md                              |    10 +-
 gcc/config/i386/i386-builtins.cc                   |     9 +-
 gcc/config/i386/i386-expand.cc                     |    16 +-
 gcc/config/i386/i386.cc                            |   285 +-
 gcc/config/i386/i386.md                            |    15 +-
 gcc/config/i386/sol2.h                             |     6 +-
 gcc/config/i386/sse.md                             |    11 +-
 gcc/config/i386/x86-64.h                           |     3 +
 gcc/config/loongarch/loongarch-protos.h            |     3 +-
 gcc/config/loongarch/loongarch-target-attr.cc      |    27 +-
 gcc/config/loongarch/loongarch.cc                  |    30 +-
 gcc/config/mingw/t-cygming                         |     2 -
 gcc/config/picolibc.opt.urls                       |    24 +
 gcc/config/riscv/riscv-c.cc                        |     2 +-
 gcc/config/riscv/riscv-modes.def                   |     2 +
 gcc/config/riscv/riscv-vector-builtins.cc          |     7 +
 gcc/config/riscv/riscv.cc                          |    25 +-
 gcc/config/riscv/riscv.h                           |     1 +
 gcc/config/rs6000/mma.md                           |    51 +-
 gcc/config/s390/s390.cc                            |     6 +-
 gcc/config/sh/sh.md                                |    10 +-
 gcc/config/stormy16/stormy16.cc                    |     1 +
 gcc/config/xtensa/constraints.md                   |     6 +-
 gcc/config/xtensa/xtensa-protos.h                  |     3 +-
 gcc/config/xtensa/xtensa.cc                        |    94 +-
 gcc/config/xtensa/xtensa.md                        |    14 +-
 gcc/configure                                      |   118 +-
 gcc/configure.ac                                   |    64 +-
 gcc/coverage.cc                                    |    59 +-
 gcc/coverage.h                                     |     2 +
 gcc/cp/ChangeLog                                   |   592 +
 gcc/cp/Make-lang.in                                |    18 +-
 gcc/cp/call.cc                                     |     8 +-
 gcc/cp/constexpr.cc                                |   116 +-
 gcc/cp/constraint.cc                               |    12 +-
 gcc/cp/contracts.cc                                |     4 +-
 gcc/cp/coroutines.cc                               |    61 +-
 gcc/cp/cp-gimplify.cc                              |    26 +
 gcc/cp/cp-trait.def                                |     2 +-
 gcc/cp/cp-tree.h                                   |    40 +-
 gcc/cp/decl.cc                                     |   117 +-
 gcc/cp/error.cc                                    |     7 +
 gcc/cp/init.cc                                     |   126 +-
 gcc/cp/lambda.cc                                   |    15 +-
 gcc/cp/mangle.cc                                   |   125 +-
 gcc/cp/metafns.gperf                               |    34 +-
 gcc/cp/metafns.h                                   |   956 +-
 gcc/cp/module.cc                                   |    42 +-
 gcc/cp/name-lookup.cc                              |    62 +-
 gcc/cp/parser.cc                                   |   203 +-
 gcc/cp/pt.cc                                       |   329 +-
 gcc/cp/reflect.cc                                  |   894 +-
 gcc/cp/semantics.cc                                |    33 +-
 gcc/cp/tree.cc                                     |    71 +-
 gcc/cp/typeck.cc                                   |    44 +-
 gcc/d/ChangeLog                                    |    35 +
 gcc/d/d-codegen.cc                                 |     7 +-
 gcc/d/d-lang.cc                                    |     4 +
 gcc/d/decl.cc                                      |     4 +-
 gcc/d/dmd/MERGE                                    |     2 +-
 gcc/d/dmd/VERSION                                  |     2 +-
 gcc/d/dmd/access.d                                 |     2 +-
 gcc/d/dmd/aggregate.d                              |     2 +-
 gcc/d/dmd/aggregate.h                              |     2 +-
 gcc/d/dmd/aliasthis.d                              |     4 +-
 gcc/d/dmd/aliasthis.h                              |     2 +-
 gcc/d/dmd/arrayop.d                                |     2 +-
 gcc/d/dmd/arraytypes.d                             |     2 +-
 gcc/d/dmd/arraytypes.h                             |     2 +-
 gcc/d/dmd/ast_node.d                               |     2 +-
 gcc/d/dmd/ast_node.h                               |     2 +-
 gcc/d/dmd/astenums.d                               |     2 +-
 gcc/d/dmd/attrib.d                                 |     2 +-
 gcc/d/dmd/attrib.h                                 |     2 +-
 gcc/d/dmd/attribsem.d                              |     2 +-
 gcc/d/dmd/blockexit.d                              |     2 +-
 gcc/d/dmd/builtin.d                                |     2 +-
 gcc/d/dmd/canthrow.d                               |     2 +-
 gcc/d/dmd/chkformat.d                              |     2 +-
 gcc/d/dmd/clone.d                                  |     2 +-
 gcc/d/dmd/common/bitfields.d                       |     2 +-
 gcc/d/dmd/common/charactertables.d                 |     9 +-
 gcc/d/dmd/common/charactertables.h                 |     2 +-
 gcc/d/dmd/common/file.d                            |     8 +-
 gcc/d/dmd/common/outbuffer.d                       |     2 +-
 gcc/d/dmd/common/outbuffer.h                       |     2 +-
 gcc/d/dmd/common/smallbuffer.d                     |     2 +-
 gcc/d/dmd/compiler.d                               |     2 +-
 gcc/d/dmd/compiler.h                               |     2 +-
 gcc/d/dmd/cond.d                                   |     2 +-
 gcc/d/dmd/cond.h                                   |     2 +-
 gcc/d/dmd/constfold.d                              |     4 +-
 gcc/d/dmd/cparse.d                                 |   236 +-
 gcc/d/dmd/ctfe.h                                   |     2 +-
 gcc/d/dmd/ctfeexpr.d                               |     2 +-
 gcc/d/dmd/ctorflow.d                               |     2 +-
 gcc/d/dmd/cxxfrontend.d                            |    26 +-
 gcc/d/dmd/dcast.d                                  |    58 +-
 gcc/d/dmd/dclass.d                                 |     3 +-
 gcc/d/dmd/declaration.d                            |    16 +-
 gcc/d/dmd/declaration.h                            |    39 +-
 gcc/d/dmd/delegatize.d                             |     2 +-
 gcc/d/dmd/denum.d                                  |     2 +-
 gcc/d/dmd/deps.d                                   |     2 +-
 gcc/d/dmd/dimport.d                                |     4 +-
 gcc/d/dmd/dinterpret.d                             |     2 +-
 gcc/d/dmd/dmacro.d                                 |     2 +-
 gcc/d/dmd/dmodule.d                                |    18 +-
 gcc/d/dmd/doc.d                                    |    92 +-
 gcc/d/dmd/doc.h                                    |     2 +-
 gcc/d/dmd/dscope.d                                 |     5 +-
 gcc/d/dmd/dstruct.d                                |     2 +-
 gcc/d/dmd/dsymbol.d                                |    80 +-
 gcc/d/dmd/dsymbol.h                                |     3 +-
 gcc/d/dmd/dsymbolsem.d                             |   346 +-
 gcc/d/dmd/dtemplate.d                              |    40 +-
 gcc/d/dmd/dtoh.d                                   |     3 +-
 gcc/d/dmd/dversion.d                               |     6 +-
 gcc/d/dmd/entity.d                                 |     2 +-
 gcc/d/dmd/enum.h                                   |     2 +-
 gcc/d/dmd/enumsem.d                                |     2 +-
 gcc/d/dmd/errors.d                                 |     2 +-
 gcc/d/dmd/errors.h                                 |     2 +-
 gcc/d/dmd/errorsink.d                              |     2 +-
 gcc/d/dmd/escape.d                                 |     2 +-
 gcc/d/dmd/expression.d                             |     4 +-
 gcc/d/dmd/expression.h                             |     4 +-
 gcc/d/dmd/expressionsem.d                          |   319 +-
 gcc/d/dmd/file_manager.d                           |     2 +-
 gcc/d/dmd/func.d                                   |   232 +-
 gcc/d/dmd/funcsem.d                                |   236 +-
 gcc/d/dmd/globals.d                                |    22 +-
 gcc/d/dmd/globals.h                                |     6 +-
 gcc/d/dmd/hdrgen.d                                 |    12 +-
 gcc/d/dmd/hdrgen.h                                 |     2 +-
 gcc/d/dmd/iasm/gcc.d                               |     2 +-
 gcc/d/dmd/iasm/package.d                           |     2 +-
 gcc/d/dmd/id.d                                     |     8 +-
 gcc/d/dmd/id.h                                     |     2 +-
 gcc/d/dmd/identifier.d                             |     2 +-
 gcc/d/dmd/identifier.h                             |     2 +-
 gcc/d/dmd/impcnvtab.d                              |     2 +-
 gcc/d/dmd/imphint.d                                |     2 +-
 gcc/d/dmd/import.h                                 |     2 +-
 gcc/d/dmd/importc.d                                |     6 +-
 gcc/d/dmd/init.d                                   |     2 +-
 gcc/d/dmd/init.h                                   |     2 +-
 gcc/d/dmd/initsem.d                                |    40 +-
 gcc/d/dmd/inline.d                                 |     2 +-
 gcc/d/dmd/intrange.d                               |    47 +-
 gcc/d/dmd/json.d                                   |     2 +-
 gcc/d/dmd/json.h                                   |     2 +-
 gcc/d/dmd/lambdacomp.d                             |     2 +-
 gcc/d/dmd/lexer.d                                  |    26 +-
 gcc/d/dmd/location.d                               |     2 +-
 gcc/d/dmd/mangle.h                                 |     2 +-
 gcc/d/dmd/mangle/basic.d                           |     2 +-
 gcc/d/dmd/mangle/cpp.d                             |     2 +-
 gcc/d/dmd/mangle/package.d                         |     2 +-
 gcc/d/dmd/module.h                                 |     4 +-
 gcc/d/dmd/mtype.d                                  |     6 +-
 gcc/d/dmd/mtype.h                                  |     2 +-
 gcc/d/dmd/mustuse.d                                |     2 +-
 gcc/d/dmd/nogc.d                                   |    45 +-
 gcc/d/dmd/nspace.d                                 |     2 +-
 gcc/d/dmd/nspace.h                                 |     2 +-
 gcc/d/dmd/ob.d                                     |     2 +-
 gcc/d/dmd/objc.d                                   |     2 +-
 gcc/d/dmd/objc.h                                   |     2 +-
 gcc/d/dmd/opover.d                                 |     4 +-
 gcc/d/dmd/optimize.d                               |     2 +-
 gcc/d/dmd/parse.d                                  |    54 +-
 gcc/d/dmd/pragmasem.d                              |     2 +-
 gcc/d/dmd/printast.d                               |     2 +-
 gcc/d/dmd/root/aav.d                               |     2 +-
 gcc/d/dmd/root/array.d                             |    29 +-
 gcc/d/dmd/root/array.h                             |     2 +-
 gcc/d/dmd/root/bitarray.d                          |     2 +-
 gcc/d/dmd/root/bitarray.h                          |     2 +-
 gcc/d/dmd/root/complex.d                           |     2 +-
 gcc/d/dmd/root/complex_t.h                         |     2 +-
 gcc/d/dmd/root/ctfloat.d                           |     8 +-
 gcc/d/dmd/root/ctfloat.h                           |     2 +-
 gcc/d/dmd/root/dcompat.h                           |     2 +-
 gcc/d/dmd/root/file.d                              |     2 +-
 gcc/d/dmd/root/filename.d                          |     2 +-
 gcc/d/dmd/root/filename.h                          |     2 +-
 gcc/d/dmd/root/hash.d                              |     2 +-
 gcc/d/dmd/root/optional.d                          |     2 +-
 gcc/d/dmd/root/optional.h                          |     2 +-
 gcc/d/dmd/root/port.d                              |     2 +-
 gcc/d/dmd/root/port.h                              |     2 +-
 gcc/d/dmd/root/region.d                            |     2 +-
 gcc/d/dmd/root/rmem.d                              |     2 +-
 gcc/d/dmd/root/rmem.h                              |     2 +-
 gcc/d/dmd/root/speller.d                           |     2 +-
 gcc/d/dmd/root/string.d                            |     2 +-
 gcc/d/dmd/root/stringtable.d                       |     2 +-
 gcc/d/dmd/root/utf.d                               |     2 +-
 gcc/d/dmd/rootobject.d                             |     2 +-
 gcc/d/dmd/rootobject.h                             |     2 +-
 gcc/d/dmd/safe.d                                   |    21 +-
 gcc/d/dmd/scope.h                                  |     6 +-
 gcc/d/dmd/semantic2.d                              |    44 +-
 gcc/d/dmd/semantic3.d                              |    86 +-
 gcc/d/dmd/sideeffect.d                             |    36 +-
 gcc/d/dmd/statement.d                              |    17 +-
 gcc/d/dmd/statement.h                              |     4 +-
 gcc/d/dmd/statementsem.d                           |    56 +-
 gcc/d/dmd/staticassert.d                           |     2 +-
 gcc/d/dmd/staticassert.h                           |     2 +-
 gcc/d/dmd/staticcond.d                             |     2 +-
 gcc/d/dmd/stmtstate.d                              |     2 +-
 gcc/d/dmd/target.d                                 |     2 +-
 gcc/d/dmd/target.h                                 |     2 +-
 gcc/d/dmd/targetcompiler.d                         |     2 +-
 gcc/d/dmd/template.h                               |     2 +-
 gcc/d/dmd/templateparamsem.d                       |     2 +-
 gcc/d/dmd/templatesem.d                            |   109 +-
 gcc/d/dmd/timetrace.d                              |     2 +-
 gcc/d/dmd/tokens.d                                 |     2 +-
 gcc/d/dmd/tokens.h                                 |     2 +-
 gcc/d/dmd/traits.d                                 |    84 +-
 gcc/d/dmd/typesem.d                                |   100 +-
 gcc/d/dmd/typinf.d                                 |     2 +-
 gcc/d/dmd/typinf.h                                 |     2 +-
 gcc/d/dmd/utils.d                                  |     2 +-
 gcc/d/dmd/version.h                                |     2 +-
 gcc/d/dmd/visitor.h                                |     2 +-
 gcc/d/dmd/visitor/foreachvar.d                     |     2 +-
 gcc/d/dmd/visitor/package.d                        |     2 +-
 gcc/d/dmd/visitor/postorder.d                      |     2 +-
 gcc/d/dmd/visitor/statement_rewrite_walker.d       |     2 +-
 gcc/d/expr.cc                                      |     2 +
 gcc/d/lang.opt.urls                                |    18 +
 gcc/d/runtime.def                                  |    16 -
 gcc/d/typeinfo.cc                                  |     9 +-
 gcc/doc/cppopts.texi                               |    14 +-
 gcc/doc/extend.texi                                |    20 +-
 gcc/doc/gccint.texi                                |    11 +
 gcc/doc/ifn.texi                                   |  1539 ++
 gcc/doc/implement-c.texi                           |     4 +-
 gcc/doc/install.texi                               |   243 +-
 gcc/doc/invoke.texi                                |   373 +-
 gcc/doc/md.texi                                    |  6365 +++----
 gcc/doc/params.texi                                |     9 +-
 gcc/doc/poly-int.texi                              |     4 +
 gcc/doc/rtl.texi                                   |     2 +-
 gcc/doc/specs.texi                                 |     4 +
 gcc/doc/tm.texi                                    |     3 +-
 gcc/dwarf2out.cc                                   |     1 +
 gcc/expr.cc                                        |     2 +-
 gcc/expr.h                                         |     1 +
 gcc/fortran/ChangeLog                              |   307 +
 gcc/fortran/check.cc                               |     3 +-
 gcc/fortran/decl.cc                                |    98 +-
 gcc/fortran/dependency.cc                          |     4 +-
 gcc/fortran/expr.cc                                |     3 +
 gcc/fortran/frontend-passes.cc                     |    69 +-
 gcc/fortran/interface.cc                           |    42 +-
 gcc/fortran/io.cc                                  |     8 +-
 gcc/fortran/iresolve.cc                            |    25 +-
 gcc/fortran/lang.opt.urls                          |    86 +
 gcc/fortran/match.cc                               |     7 +-
 gcc/fortran/openmp.cc                              |    35 +
 gcc/fortran/parse.cc                               |    27 +
 gcc/fortran/resolve.cc                             |   204 +-
 gcc/fortran/scanner.cc                             |     4 +
 gcc/fortran/simplify.cc                            |     8 +-
 gcc/fortran/symbol.cc                              |    10 +-
 gcc/fortran/target-memory.cc                       |     2 +-
 gcc/fortran/target-memory.h                        |     2 +-
 gcc/fortran/trans-array.cc                         |   158 +-
 gcc/fortran/trans-decl.cc                          |    92 +-
 gcc/fortran/trans-expr.cc                          |   105 +-
 gcc/fortran/trans-intrinsic.cc                     |     3 +
 gcc/fortran/trans-openmp.cc                        |    36 +-
 gcc/fortran/trans-stmt.cc                          |    12 +-
 gcc/fortran/trans.cc                               |     2 +-
 gcc/fortran/trans.h                                |     3 +-
 gcc/function.cc                                    |    13 +-
 gcc/gcc-diagnostic-spec.cc                         |     1 +
 gcc/gimple-fold.cc                                 |     2 +-
 gcc/gimple-lower-bitint.cc                         |    87 +-
 gcc/gimple-ssa-isolate-paths.cc                    |    62 +-
 gcc/gimple-ssa-warn-access.cc                      |    82 +-
 gcc/ifcvt.cc                                       |     2 +-
 gcc/internal-fn.cc                                 |    68 +
 gcc/ipa-cp.cc                                      |     2 +-
 gcc/ipa-cp.h                                       |     1 +
 gcc/ipa-modref.cc                                  |     2 +-
 gcc/ipa-prop.cc                                    |    44 +-
 gcc/lra-constraints.cc                             |     1 +
 gcc/lra-eliminations.cc                            |    15 +-
 gcc/lto/ChangeLog                                  |    15 +
 gcc/lto/Make-lang.in                               |    18 +-
 gcc/lto/lto-partition.cc                           |    51 +-
 gcc/m2/ChangeLog                                   |    54 +
 gcc/m2/Make-lang.in                                |     1 -
 gcc/m2/gm2-compiler/M2GenGCC.mod                   |    47 +-
 gcc/m2/gm2-compiler/M2Quads.mod                    |   115 +-
 gcc/m2/gm2-gcc/m2convert.cc                        |     4 +-
 gcc/m2/gm2-gcc/m2pp.cc                             |    13 +
 gcc/m2/gm2-gcc/m2pp.h                              |    24 +-
 gcc/m2/gm2-gcc/m2statement.cc                      |    38 +-
 gcc/m2/gm2-gcc/m2statement.def                     |    15 +-
 gcc/m2/gm2-gcc/m2statement.h                       |     3 +-
 gcc/m2/gm2-gcc/m2type.cc                           |    13 +
 gcc/m2/gm2-gcc/m2type.def                          |     8 +
 gcc/m2/gm2-gcc/m2type.h                            |     1 +
 gcc/m2/gm2-libs/BinDict.mod                        |     2 +-
 gcc/m2/lang.opt.urls                               |     3 +
 gcc/omp-expand.cc                                  |    13 +-
 gcc/omp-general.h                                  |     4 +-
 gcc/params.opt                                     |     6 +-
 gcc/po/ChangeLog                                   |    22 +
 gcc/po/be.po                                       | 13902 ++++++++--------
 gcc/po/da.po                                       | 13934 ++++++++--------
 gcc/po/de.po                                       | 13970 ++++++++--------
 gcc/po/el.po                                       | 13901 ++++++++--------
 gcc/po/es.po                                       | 13950 ++++++++--------
 gcc/po/fi.po                                       | 13929 ++++++++--------
 gcc/po/fr.po                                       | 16239 +++++++++---------
 gcc/po/gcc.pot                                     | 13914 ++++++++--------
 gcc/po/hr.po                                       | 13910 ++++++++--------
 gcc/po/id.po                                       | 13934 ++++++++--------
 gcc/po/ja.po                                       | 13918 ++++++++--------
 gcc/po/ka.po                                       | 13903 ++++++++--------
 gcc/po/nl.po                                       | 13909 ++++++++--------
 gcc/po/ru.po                                       | 13951 ++++++++--------
 gcc/po/sr.po                                       | 13931 ++++++++--------
 gcc/po/sv.po                                       | 16656 +++++++++----------
 gcc/po/tr.po                                       | 13932 ++++++++--------
 gcc/po/uk.po                                       | 13943 ++++++++--------
 gcc/po/vi.po                                       | 13930 ++++++++--------
 gcc/po/zh_CN.po                                    | 14963 +++++++++--------
 gcc/po/zh_TW.po                                    | 13933 ++++++++--------
 gcc/regcprop.cc                                    |     8 +
 gcc/regenerate-opt-urls.py                         |     8 +
 gcc/rust/ChangeLog                                 |   502 +
 gcc/rust/Make-lang.in                              |     3 +
 gcc/rust/ast/rust-ast-builder.cc                   |     3 +-
 gcc/rust/ast/rust-ast-builder.h                    |     4 +-
 gcc/rust/ast/rust-ast-collector.cc                 |    14 -
 gcc/rust/ast/rust-ast-collector.h                  |     1 -
 gcc/rust/ast/rust-ast-full-decls.h                 |     1 -
 gcc/rust/ast/rust-ast-pointer-visitor.cc           |   416 -
 gcc/rust/ast/rust-ast-pointer-visitor.h            |    58 -
 gcc/rust/ast/rust-ast-visitor.cc                   |     6 -
 gcc/rust/ast/rust-ast-visitor.h                    |     2 -
 gcc/rust/ast/rust-ast.cc                           |    28 -
 gcc/rust/ast/rust-ast.h                            |     6 +-
 gcc/rust/ast/rust-expr.h                           |    48 +-
 gcc/rust/ast/rust-fmt.h                            |     4 +
 gcc/rust/ast/rust-item.h                           |    22 +-
 gcc/rust/backend/rust-compile-asm.cc               |    34 +-
 gcc/rust/backend/rust-compile-expr.cc              |     8 +-
 gcc/rust/backend/rust-compile-implitem.cc          |     8 +-
 gcc/rust/backend/rust-compile-intrinsic.cc         |     6 +-
 gcc/rust/backend/rust-compile-item.cc              |     7 +-
 gcc/rust/backend/rust-intrinsic-handlers.cc        |   299 +
 gcc/rust/backend/rust-intrinsic-handlers.h         |     4 +
 .../checks/errors/feature/rust-feature-gate.cc     |    24 +-
 gcc/rust/checks/errors/feature/rust-feature-gate.h |     2 +-
 gcc/rust/checks/errors/rust-ast-validation.cc      |     5 +
 gcc/rust/checks/errors/rust-attribute-checker.cc   |   773 +
 gcc/rust/checks/errors/rust-attribute-checker.h    |   224 +
 .../errors/rust-builtin-attribute-checker.cc       |   581 +
 .../checks/errors/rust-builtin-attribute-checker.h |    80 +
 gcc/rust/checks/errors/rust-const-checker.cc       |    20 +-
 gcc/rust/checks/errors/rust-const-checker.h        |     4 +-
 .../checks/errors/rust-hir-pattern-analysis.cc     |     8 +-
 gcc/rust/checks/errors/rust-unsafe-checker.cc      |    46 +-
 gcc/rust/checks/errors/rust-unsafe-checker.h       |     4 +-
 gcc/rust/checks/lints/rust-lint-marklive.cc        |    61 +-
 gcc/rust/checks/lints/rust-lint-marklive.h         |     6 +-
 gcc/rust/expand/rust-derive.h                      |     1 -
 gcc/rust/expand/rust-expand-visitor.cc             |   190 +-
 gcc/rust/expand/rust-expand-visitor.h              |    27 +-
 gcc/rust/expand/rust-macro-expand.cc               |     3 -
 gcc/rust/hir/rust-ast-lower-base.cc                |    11 +-
 gcc/rust/hir/rust-ast-lower-base.h                 |     1 -
 gcc/rust/hir/rust-ast-lower-item.cc                |    19 +
 gcc/rust/lex/rust-lex.cc                           |    30 +-
 gcc/rust/lex/rust-lex.h                            |     3 +-
 gcc/rust/parse/rust-parse-impl-attribute.hxx       |     3 +-
 gcc/rust/parse/rust-parse-impl.hxx                 |   293 +-
 gcc/rust/parse/rust-parse.h                        |    15 +-
 gcc/rust/resolve/rust-early-name-resolver-2.0.cc   |    30 +
 gcc/rust/resolve/rust-early-name-resolver-2.0.h    |     6 +
 gcc/rust/resolve/rust-finalize-imports-2.0.cc      |     9 +-
 gcc/rust/resolve/rust-forever-stack.h              |   103 +-
 gcc/rust/resolve/rust-forever-stack.hxx            |   217 +-
 gcc/rust/resolve/rust-identifier-path.cc           |    61 +
 gcc/rust/resolve/rust-identifier-path.h            |    50 +
 gcc/rust/resolve/rust-name-resolution-context.cc   |     8 +-
 gcc/rust/resolve/rust-name-resolution-context.h    |   244 +-
 gcc/rust/resolve/rust-name-resolution.h            |    50 +
 gcc/rust/resolve/rust-name-resolver.cc             |   371 +-
 gcc/rust/resolve/rust-name-resolver.h              |   156 -
 .../resolve/rust-toplevel-name-resolver-2.0.cc     |    23 +-
 gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h |     5 +-
 gcc/rust/rust-session-manager.cc                   |     4 +
 gcc/rust/typecheck/rust-hir-type-check-base.cc     |    21 +-
 gcc/rust/typecheck/rust-hir-type-check-item.cc     |     6 +-
 gcc/rust/typecheck/rust-hir-type-check-pattern.cc  |     8 +-
 gcc/rust/typecheck/rust-tyty-variance-analysis.cc  |     3 +-
 gcc/rust/typecheck/rust-tyty.cc                    |    28 +-
 gcc/rust/typecheck/rust-tyty.h                     |     3 +-
 gcc/rust/util/rust-attribute-values.h              |     6 +
 gcc/rust/util/rust-attributes.cc                   |  1305 +-
 gcc/rust/util/rust-attributes.h                    |   200 +-
 gcc/rust/util/rust-common.h                        |     6 +
 gcc/rust/util/rust-ggc.h                           |    38 +
 gcc/rust/util/rust-hir-map.cc                      |    12 +
 gcc/rust/util/rust-hir-map.h                       |     5 +
 gcc/rust/util/rust-intrinsic-values.h              |     2 +
 gcc/rust/util/rust-unwrap-segment.h                |     5 +
 gcc/target.def                                     |     3 +-
 gcc/target.h                                       |    17 +-
 gcc/testsuite/ChangeLog                            |  1425 ++
 .../c-c++-common/analyzer/deref-before-check-2.c   |     2 +-
 gcc/testsuite/g++.dg/DRs/dr1423.C                  |     1 +
 gcc/testsuite/g++.dg/abi/mangle84.C                |     5 +
 gcc/testsuite/g++.dg/asan/coroutines1.C            |    71 +
 .../cpp26/basic.contract.eval.p11-observe.C        |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-2.C    |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-3.C    |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-4.C    |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-5.C    |     1 +
 .../cpp26/basic.contract.eval.p17-SMF-post.C       |     1 +
 .../cpp26/basic.contract.eval.p17-SMF-pre.C        |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-SMF2.C |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-SMF3.C |     1 +
 .../contracts/cpp26/basic.contract.eval.p17-SMF4.C |     1 +
 .../contracts/cpp26/basic.contract.eval.p17.C      |     1 +
 .../contracts/cpp26/basic.contract.eval.p4.C       |     1 +
 .../cpp26/basic.contract.eval.p6.observe.C         |     1 -
 .../callerside-checks/callerside-checks-all.C      |     2 +-
 .../callerside-checks/callerside-checks-none.C     |     2 +
 .../callerside-checks/callerside-checks-pre.C      |     1 +
 .../callerside-checks/freefunc-noexcept-post.C     |     1 +
 .../callerside-checks/freefunc-noexcept-pre.C      |     1 +
 .../g++.dg/contracts/cpp26/contract-assert-run.C   |     1 +
 .../contracts/cpp26/contract-violation-noexcept2.C |     1 +
 .../g++.dg/contracts/cpp26/debug-and-opt.C         |     2 +-
 gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C   |     1 +
 .../contract-assert-no-def-check.C                 |     1 +
 .../g++.dg/contracts/cpp26/dependent_contract.C    |     1 +
 .../g++.dg/contracts/cpp26/empty-nt-param.C        |     1 +
 .../contracts/cpp26/expr.prim.id.unqual.p7-3.C     |     1 +
 .../contracts/cpp26/expr.prim.id.unqual.p7-4.C     |     1 +
 .../contracts/cpp26/expr.prim.lambda.closure.p10.C |    53 +
 .../cpp26/function-contract-specifier-seq.C        |     1 -
 .../g++.dg/contracts/cpp26/name_mangling.C         |     2 +-
 .../cpp26/outline-checks/freefunc-noexcept-post.C  |     1 +
 .../cpp26/outline-checks/freefunc-noexcept-pre.C   |     1 +
 .../cpp26/outline-checks/func-noexcept-assert.C    |     1 +
 .../outline-checks/memberfunc-noexcept-post.C      |     1 +
 .../cpp26/outline-checks/memberfunc-noexcept-pre.C |     1 +
 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C   |     2 +-
 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C   |     3 +-
 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C   |     3 +-
 .../contracts/cpp26/throwing-violation-handler.cc  |     1 +
 gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C      |     1 +
 gcc/testsuite/g++.dg/coroutines/pr105287.C         |     2 +
 gcc/testsuite/g++.dg/coroutines/pr110872.C         |     2 +-
 gcc/testsuite/g++.dg/coroutines/pr121643.C         |    29 +
 gcc/testsuite/g++.dg/coroutines/pr123975.C         |    52 +
 .../g++.dg/coroutines/torture/func-params-07.C     |     3 +-
 gcc/testsuite/g++.dg/cpp/embed-29.C                |    24 +
 gcc/testsuite/g++.dg/cpp0x/deleted19.C             |     5 +
 gcc/testsuite/g++.dg/cpp0x/pr124531.C              |    56 +
 gcc/testsuite/g++.dg/cpp1z/nontype9.C              |    16 +
 gcc/testsuite/g++.dg/cpp23/lambda-scope10.C        |    19 +
 gcc/testsuite/g++.dg/cpp23/lambda-scope10a.C       |    19 +
 gcc/testsuite/g++.dg/cpp23/lambda-scope11.C        |    10 +
 gcc/testsuite/g++.dg/cpp26/constexpr-eh19.C        |    33 +
 gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C         |   194 +-
 gcc/testsuite/g++.dg/cpp26/constexpr-eh8.C         |     2 +-
 gcc/testsuite/g++.dg/cpp26/decomp30.C              |    35 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt11.C      |     4 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt13.C      |     7 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt16.C      |     5 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt19.C      |     6 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt25.C      |     4 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt30.C      |     2 +-
 gcc/testsuite/g++.dg/cpp26/expansion-stmt33.C      |    17 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt34.C      |    40 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt35.C      |    60 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt36.C      |    21 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt37.C      |    19 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt38.C      |    36 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt39.C      |    16 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt40.C      |    40 +
 gcc/testsuite/g++.dg/cpp26/pack-indexing2.C        |     4 +-
 gcc/testsuite/g++.dg/cpp26/pack-indexing20.C       |    13 +
 gcc/testsuite/g++.dg/cpp26/pack-indexing21.C       |    19 +
 gcc/testsuite/g++.dg/cpp26/pack-indexing22.C       |    50 +
 gcc/testsuite/g++.dg/cpp26/pack-indexing7.C        |     2 +-
 gcc/testsuite/g++.dg/cpp26/pack-indexing9.C        |    22 +-
 gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C     |     8 +
 gcc/testsuite/g++.dg/cpp2a/lambda-targ24.C         |    12 +
 gcc/testsuite/g++.dg/cpp2a/lambda-targ24a.C        |    14 +
 gcc/testsuite/g++.dg/cpp2a/lambda-targ25.C         |    10 +
 gcc/testsuite/g++.dg/debug/pr124644.C              |    95 +
 .../g++.dg/ext/builtin-structured-binding-size5.C  |    13 +
 .../g++.dg/ext/builtin-structured-binding-size6.C  |    16 +
 gcc/testsuite/g++.dg/gomp/pr108503.C               |     8 +-
 gcc/testsuite/g++.dg/gomp/pr124700.C               |    60 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C            |     1 +
 gcc/testsuite/g++.dg/modules/auto-8_a.H            |     7 +
 gcc/testsuite/g++.dg/modules/auto-8_b.C            |    15 +
 gcc/testsuite/g++.dg/modules/builtin-10_a.C        |    24 +
 gcc/testsuite/g++.dg/modules/builtin-10_b.C        |     9 +
 gcc/testsuite/g++.dg/modules/export-7.C            |    10 +
 gcc/testsuite/g++.dg/modules/late-ret-5.h          |    16 +
 gcc/testsuite/g++.dg/modules/late-ret-5_a.H        |     6 +
 gcc/testsuite/g++.dg/modules/late-ret-5_b.C        |     6 +
 gcc/testsuite/g++.dg/modules/modules.exp           |     9 +-
 gcc/testsuite/g++.dg/modules/noexcept-5.h          |     4 +
 gcc/testsuite/g++.dg/modules/noexcept-5_a.C        |     7 +
 gcc/testsuite/g++.dg/modules/noexcept-5_b.C        |     7 +
 gcc/testsuite/g++.dg/modules/noexcept-5_c.C        |    11 +
 gcc/testsuite/g++.dg/modules/omp-4_a.C             |     1 +
 gcc/testsuite/g++.dg/modules/omp-4_b.C             |     1 +
 gcc/testsuite/g++.dg/modules/using-34_a.C          |    15 +
 gcc/testsuite/g++.dg/modules/using-34_b.C          |    22 +
 gcc/testsuite/g++.dg/other/anon-union8.C           |    11 +
 gcc/testsuite/g++.dg/other/enum4.C                 |    19 +
 gcc/testsuite/g++.dg/reflect/access_context1.C     |    14 +
 gcc/testsuite/g++.dg/reflect/alias1.C              |    26 +
 gcc/testsuite/g++.dg/reflect/alias2.C              |    18 +
 gcc/testsuite/g++.dg/reflect/annotations15.C       |    44 +
 gcc/testsuite/g++.dg/reflect/annotations16.C       |    10 +
 gcc/testsuite/g++.dg/reflect/annotations17.C       |    53 +
 gcc/testsuite/g++.dg/reflect/annotations18.C       |    17 +
 gcc/testsuite/g++.dg/reflect/concept1.C            |    14 +
 gcc/testsuite/g++.dg/reflect/crash11.C             |     4 +-
 gcc/testsuite/g++.dg/reflect/current_class1.C      |    83 +
 gcc/testsuite/g++.dg/reflect/current_class2.C      |    85 +
 gcc/testsuite/g++.dg/reflect/current_function1.C   |    93 +
 gcc/testsuite/g++.dg/reflect/current_function2.C   |    78 +
 gcc/testsuite/g++.dg/reflect/current_namespace1.C  |   108 +
 gcc/testsuite/g++.dg/reflect/cwg3149.C             |    17 +
 gcc/testsuite/g++.dg/reflect/data_member_spec2.C   |     6 +
 gcc/testsuite/g++.dg/reflect/data_member_spec5.C   |   114 +
 gcc/testsuite/g++.dg/reflect/data_member_spec6.C   |    12 +
 gcc/testsuite/g++.dg/reflect/decltype2.C           |    25 +
 gcc/testsuite/g++.dg/reflect/define_aggregate10.C  |    21 +
 gcc/testsuite/g++.dg/reflect/define_aggregate9.C   |    35 +
 .../g++.dg/reflect/define_static_array1.C          |    15 +
 .../g++.dg/reflect/define_static_array6.C          |    27 +
 .../g++.dg/reflect/define_static_object2.C         |    23 +-
 gcc/testsuite/g++.dg/reflect/dep12.C               |    15 +
 gcc/testsuite/g++.dg/reflect/dep13.C               |    25 +
 gcc/testsuite/g++.dg/reflect/dep14.C               |    57 +
 gcc/testsuite/g++.dg/reflect/display_string_of1.C  |     9 +-
 gcc/testsuite/g++.dg/reflect/eh1.C                 |     8 +-
 gcc/testsuite/g++.dg/reflect/eh2.C                 |     2 +-
 .../g++.dg/reflect/has_ellipsis_parameter1.C       |   148 -
 gcc/testsuite/g++.dg/reflect/is_consteval_only1.C  |    83 -
 gcc/testsuite/g++.dg/reflect/is_vararg_function1.C |   148 +
 gcc/testsuite/g++.dg/reflect/json-parser.C         |   161 +
 gcc/testsuite/g++.dg/reflect/lwg4556.C             |    40 +
 gcc/testsuite/g++.dg/reflect/mangle1.C             |    19 +-
 gcc/testsuite/g++.dg/reflect/mangle2.C             |    48 +
 gcc/testsuite/g++.dg/reflect/mangle3.C             |   241 +
 gcc/testsuite/g++.dg/reflect/mangle4.C             |    26 +
 gcc/testsuite/g++.dg/reflect/mangle5.C             |    25 +
 gcc/testsuite/g++.dg/reflect/mangle6.C             |    19 +
 gcc/testsuite/g++.dg/reflect/member1.C             |     3 +-
 gcc/testsuite/g++.dg/reflect/member22.C            |    37 +
 gcc/testsuite/g++.dg/reflect/member23.C            |    24 +
 gcc/testsuite/g++.dg/reflect/members_of11.C        |    26 +
 gcc/testsuite/g++.dg/reflect/members_of12.C        |    37 +
 gcc/testsuite/g++.dg/reflect/members_of13.C        |    31 +
 gcc/testsuite/g++.dg/reflect/pr124689.C            |    58 +
 gcc/testsuite/g++.dg/reflect/pr124790.C            |    38 +
 gcc/testsuite/g++.dg/reflect/pr124792.C            |    11 +
 gcc/testsuite/g++.dg/reflect/range_args.C          |     6 +-
 .../g++.dg/reflect/reflect_constant_array10.C      |    57 +
 .../g++.dg/reflect/reflect_constant_array11.C      |    18 +
 .../g++.dg/reflect/reflect_constant_array9.C       |    28 +
 gcc/testsuite/g++.dg/reflect/splice5.C             |     7 +-
 gcc/testsuite/g++.dg/reflect/substitute7.C         |    14 +
 gcc/testsuite/g++.dg/reflect/test.json             |     4 +
 gcc/testsuite/g++.dg/reflect/type_trait13.C        |    14 +-
 gcc/testsuite/g++.dg/reflect/type_trait14.C        |    62 +
 gcc/testsuite/g++.dg/reflect/type_trait5.C         |    18 -
 .../g++.dg/reflect/u8display_string_of1.C          |     9 +-
 gcc/testsuite/g++.dg/tls/thread_local-order2.C     |     2 +-
 gcc/testsuite/g++.dg/torture/pr124875.C            |   112 +
 gcc/testsuite/g++.dg/tree-ssa/strlenopt-3.C        |    21 +
 .../{alias-checks.C => vect/vect-alias-checks.C}   |     2 +-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C   |     1 +
 gcc/testsuite/g++.target/arm/pr115485.C            |     1 +
 gcc/testsuite/g++.target/pr124597.C                |    14 +
 gcc/testsuite/gcc.c-torture/compile/pr105192.c     |     9 +
 .../gcc.dg/analyzer/null-deref-pr123981-1.c        |     2 +-
 gcc/testsuite/gcc.dg/bitint-128.c                  |    27 +
 gcc/testsuite/gcc.dg/bitint-31.c                   |     3 +-
 gcc/testsuite/gcc.dg/bitintext.h                   |     5 +-
 gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c   |     2 +-
 gcc/testsuite/gcc.dg/fstack-protector-strong.c     |     4 +-
 gcc/testsuite/gcc.dg/gnu23-tag-composite-7.c       |    73 +
 gcc/testsuite/gcc.dg/gnu23-varmod-3.c              |    48 +
 gcc/testsuite/gcc.dg/hoist-register-pressure-1.c   |     2 +-
 gcc/testsuite/gcc.dg/hoist-register-pressure-2.c   |     2 +-
 gcc/testsuite/gcc.dg/hoist-register-pressure-3.c   |     2 +-
 gcc/testsuite/gcc.dg/ipa/pr124777.c                |    41 +
 .../gcc.dg/lto/toplevel-extended-asm-2_0.c         |     2 +-
 .../gcc.dg/lto/toplevel-extended-asm-2_1.c         |     2 +-
 .../gcc.dg/plugin/analyzer_known_fns_plugin.cc     |     2 +-
 .../gcc.dg/plugin/diagnostic_plugin_test_paths.cc  |     7 +-
 gcc/testsuite/gcc.dg/pr111409.c                    |     2 +-
 gcc/testsuite/gcc.dg/pr115066.c                    |     2 +-
 gcc/testsuite/gcc.dg/pr117888-2.c                  |     1 +
 gcc/testsuite/gcc.dg/pr122925.c                    |     2 +-
 gcc/testsuite/gcc.dg/pr123424.c                    |     9 +
 gcc/testsuite/gcc.dg/pr124454-1.c                  |     1 +
 gcc/testsuite/gcc.dg/pr124635.c                    |    10 +
 gcc/testsuite/gcc.dg/pr124671.c                    |    34 +
 gcc/testsuite/gcc.dg/pr124809.c                    |    45 +
 gcc/testsuite/gcc.dg/pr88576.c                     |    16 +
 gcc/testsuite/gcc.dg/torture/bitint-86.c           |    96 +
 gcc/testsuite/gcc.dg/torture/bitint-87.c           |    85 +
 .../gcc.dg/torture/fp-double-convert-float-1.c     |     2 +-
 gcc/testsuite/gcc.dg/torture/pr124041.c            |     1 +
 gcc/testsuite/gcc.dg/torture/pr124649-1.c          |    15 +
 gcc/testsuite/gcc.dg/torture/pr124692.c            |    22 +
 gcc/testsuite/gcc.dg/torture/pr124742-1.c          |    18 +
 gcc/testsuite/gcc.dg/torture/pr124810.c            |    23 +
 gcc/testsuite/gcc.dg/torture/pr124868.c            |    24 +
 gcc/testsuite/gcc.dg/torture/pr124891.c            |    10 +
 gcc/testsuite/gcc.dg/tree-ssa/forwprop-40.c        |     4 +-
 gcc/testsuite/gcc.dg/tree-ssa/forwprop-41.c        |     4 +-
 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c       |     5 +-
 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c        |     4 +-
 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c        |     4 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr122976.c           |   105 +
 gcc/testsuite/gcc.dg/tree-ssa/pr124746-1.c         |    37 +
 gcc/testsuite/gcc.dg/tree-ssa/pr32964.c            |     3 +
 gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c          |     4 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c          |     4 +-
 gcc/testsuite/gcc.dg/tsan/atomic-invalid.c         |    39 +
 gcc/testsuite/gcc.dg/vect/slp-mask-store-1.c       |     2 +-
 .../gcc.dg/vect/vect-early-break_109-pr113588.c    |     1 +
 gcc/testsuite/gcc.dg/vect/vect-early-break_130.c   |     1 +
 .../gcc.dg/vect/vect-early-break_137-pr121190.c    |     3 +-
 gcc/testsuite/gcc.dg/vect/vect-fmax-2.c            |     2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmax-3.c            |     2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmin-2.c            |     2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmin-3.c            |     2 +-
 gcc/testsuite/gcc.dg/vect/vect-pr124677.c          |    25 +
 gcc/testsuite/gcc.dg/vect/vect-pr124743.c          |    12 +
 gcc/testsuite/gcc.dg/vect/vect-pr124802.c          |   118 +
 gcc/testsuite/gcc.misc-tests/gcov-32.c             |     9 +-
 .../gcc.target/aarch64/crc-builtin-pmul64.c        |     4 +-
 gcc/testsuite/gcc.target/aarch64/erratas_opt_0.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_1.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_10.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_11.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_12.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_13.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_14.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_15.c  |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_2.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_3.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_4.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_5.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_6.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_7.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_8.c   |     1 +
 gcc/testsuite/gcc.target/aarch64/erratas_opt_9.c   |     1 +
 .../gcc.target/aarch64/narrow-gp-writes-1.c        |    10 +
 .../gcc.target/aarch64/narrow-gp-writes-2.c        |    20 +
 .../gcc.target/aarch64/narrow-gp-writes-3.c        |    15 +
 .../gcc.target/aarch64/narrow-gp-writes-4.c        |    23 +
 .../gcc.target/aarch64/narrow-gp-writes-5.c        |    12 +
 .../gcc.target/aarch64/narrow-gp-writes-6.c        |    21 +
 .../gcc.target/aarch64/narrow-gp-writes-7.c        |    12 +
 gcc/testsuite/gcc.target/aarch64/pr123238.c        |    17 +
 gcc/testsuite/gcc.target/aarch64/pr124572.c        |    10 +
 .../aarch64/sve/acle/asm/test_sve_acle.h           |     7 +
 .../gcc.target/aarch64/sve/cost_model_16.c         |     2 +-
 .../gcc.target/aarch64/sve/cost_model_19.c         |    12 +
 gcc/testsuite/gcc.target/arm/epilog-1.c            |     2 +-
 gcc/testsuite/gcc.target/arm/multilib.exp          |    11 +
 .../gcc.target/bpf/torture/bpf-torture.exp         |    46 +
 .../gcc.target/bpf/torture/invalid-memory-access.c |    19 +
 gcc/testsuite/gcc.target/bpf/torture/memcpy.c      |     5 +
 gcc/testsuite/gcc.target/bpf/torture/memmove.c     |     5 +
 gcc/testsuite/gcc.target/bpf/torture/memset.c      |     5 +
 gcc/testsuite/gcc.target/bpf/torture/naked.c       |     3 +
 gcc/testsuite/gcc.target/bpf/torture/nop.c         |     4 +
 .../gcc.target/bpf/torture/trace_openat.c          |    24 +
 gcc/testsuite/gcc.target/bpf/zero-ext.c            |    27 +
 gcc/testsuite/gcc.target/i386/apx-pr124892.c       |    20 +
 gcc/testsuite/gcc.target/i386/lea-4.c              |     1 +
 gcc/testsuite/gcc.target/i386/part-vect-absnegbf.c |     2 +-
 gcc/testsuite/gcc.target/i386/pr115397.c           |     1 +
 gcc/testsuite/gcc.target/i386/pr115863-1.c         |     2 +-
 gcc/testsuite/gcc.target/i386/pr116587.c           |     1 +
 gcc/testsuite/gcc.target/i386/pr118497.c           |     1 +
 gcc/testsuite/gcc.target/i386/pr120839-1a.c        |    15 +
 gcc/testsuite/gcc.target/i386/pr120839-1b.c        |     5 +
 gcc/testsuite/gcc.target/i386/pr120839-2.c         |    19 +
 gcc/testsuite/gcc.target/i386/pr123210.c           |    14 +
 gcc/testsuite/gcc.target/i386/pr123238.c           |    10 +
 gcc/testsuite/gcc.target/i386/pr124696.c           |    17 +
 gcc/testsuite/gcc.target/i386/pr124697-1a.c        |    31 +
 gcc/testsuite/gcc.target/i386/pr124697-1b.c        |    19 +
 gcc/testsuite/gcc.target/i386/pr124697-2a.c        |    30 +
 gcc/testsuite/gcc.target/i386/pr124697-2b.c        |    18 +
 gcc/testsuite/gcc.target/i386/pr124697-3a.c        |    31 +
 gcc/testsuite/gcc.target/i386/pr124697-3b.c        |    19 +
 gcc/testsuite/gcc.target/i386/pr124710-1.c         |    16 +
 gcc/testsuite/gcc.target/i386/pr124710-2.c         |    57 +
 gcc/testsuite/gcc.target/i386/pr124759.c           |    29 +
 gcc/testsuite/gcc.target/i386/pr124877-1.c         |    12 +
 gcc/testsuite/gcc.target/i386/pr124877-2.c         |    14 +
 gcc/testsuite/gcc.target/i386/pr124877-3.c         |    16 +
 gcc/testsuite/gcc.target/i386/pr61599-1.c          |     4 +-
 gcc/testsuite/gcc.target/i386/pr82142b.c           |     2 +-
 gcc/testsuite/gcc.target/i386/pr90178.c            |     2 +-
 .../gcc.target/i386/zero-scratch-regs-23.c         |    16 +
 .../gcc.target/i386/zero-scratch-regs-33.c         |    60 +
 .../loongarch/attr-check-error-message8.c          |     6 -
 .../loongarch/attr-check-error-message9.c          |     6 -
 .../loongarch/attr-check-warning-message1.c        |     7 +
 .../loongarch/attr-check-warning-message2.c        |     7 +
 .../loongarch/attr-check-warning-message3.c        |     7 +
 .../gcc.target/powerpc/safe-indirect-jump-1.c      |     4 +-
 gcc/testsuite/gcc.target/riscv/pr124674.c          |    11 +
 gcc/testsuite/gcc.target/riscv/pr124818.c          |     9 +
 .../gcc.target/riscv/predef-__riscv_v_intrinsic.c  |     2 +-
 .../gcc.target/riscv/rvv/base/pr114017-1.c         |     5 +-
 .../gdc.test/compilable/alias_param_qual.d         |     7 +
 gcc/testsuite/gdc.test/compilable/b12001.d         |     4 +
 gcc/testsuite/gdc.test/compilable/depmsg.d         |    39 +-
 .../gdc.test/compilable/deprecationlimit.d         |     9 +-
 gcc/testsuite/gdc.test/compilable/diag20916.d      |    64 +
 .../gdc.test/compilable/imports/defines.c          |     6 +
 .../gdc.test/compilable/imports/test22480b.d       |    13 +
 gcc/testsuite/gdc.test/compilable/issue22254.d     |     6 +
 gcc/testsuite/gdc.test/compilable/issue22397.d     |    14 +
 gcc/testsuite/gdc.test/compilable/issue22448.d     |     8 +
 gcc/testsuite/gdc.test/compilable/issue22769.d     |    19 +
 gcc/testsuite/gdc.test/compilable/new_xdtor.d      |    10 +
 .../gdc.test/compilable/struct_allMembers.d        |    14 +
 gcc/testsuite/gdc.test/compilable/test19905.d      |    29 +
 gcc/testsuite/gdc.test/compilable/test21839.d      |    10 +
 gcc/testsuite/gdc.test/compilable/test22323.d      |    12 +
 gcc/testsuite/gdc.test/compilable/test22381.d      |    17 +
 gcc/testsuite/gdc.test/compilable/test22383.d      |    12 +
 gcc/testsuite/gdc.test/compilable/test22480.d      |    10 +
 gcc/testsuite/gdc.test/compilable/test22501.d      |    12 +
 gcc/testsuite/gdc.test/compilable/test22543.d      |    11 +
 gcc/testsuite/gdc.test/compilable/test22544.d      |    11 +
 gcc/testsuite/gdc.test/compilable/test22752.d      |    23 +
 gcc/testsuite/gdc.test/compilable/test24295.d      |    11 +
 gcc/testsuite/gdc.test/compilable/test8717.d       |     4 +-
 gcc/testsuite/gdc.test/compilable/test9701.d       |     6 +-
 .../gdc.test/compilable/test_isOverlapped.d        |   181 +
 .../test_nosharedaccess_ctor_nested_new.d          |    13 +
 .../test_nosharedaccess_shared_struct_literal.d    |    15 +
 gcc/testsuite/gdc.test/compilable/testdefines.d    |     6 +
 gcc/testsuite/gdc.test/compilable/traits.d         |     1 +
 gcc/testsuite/gdc.test/compilable/vgc3.d           |     8 +-
 gcc/testsuite/gdc.test/compilable/zerosize2.d      |   178 +
 .../fail_compilation/array_literal_assign.d        |    22 +
 gcc/testsuite/gdc.test/fail_compilation/b23686.d   |     2 +-
 .../gdc.test/fail_compilation/biterrors.d          |     1 -
 .../gdc.test/fail_compilation/biterrors2.d         |    12 +-
 .../gdc.test/fail_compilation/biterrors6.d         |    24 +
 .../gdc.test/fail_compilation/biterrors7.d         |    15 +
 .../gdc.test/fail_compilation/dep_d1_ops.d         |    40 +-
 gcc/testsuite/gdc.test/fail_compilation/depmsg.d   |    60 +-
 .../gdc.test/fail_compilation/depmsg15814.d        |     3 +-
 .../gdc.test/fail_compilation/depmsg15815.d        |     3 +-
 .../gdc.test/fail_compilation/deprecatedImports.d  |    21 +-
 .../fail_compilation/deprecatedTemplates.d         |     4 +
 .../gdc.test/fail_compilation/deprecations.d       |    15 +-
 .../gdc.test/fail_compilation/diag10783.d          |     5 +-
 .../gdc.test/fail_compilation/diag14235.d          |     7 +-
 .../gdc.test/fail_compilation/diag14875.d          |    27 +-
 .../gdc.test/fail_compilation/diag14876.d          |    23 +-
 .../gdc.test/fail_compilation/diag16499.d          |     4 +-
 .../gdc.test/fail_compilation/diag21167.d          |    21 +
 .../gdc.test/fail_compilation/diag21381.d          |    15 +
 .../gdc.test/fail_compilation/diag21413.d          |    15 +
 gcc/testsuite/gdc.test/fail_compilation/diag9358.d |     6 +-
 .../gdc.test/fail_compilation/fail19202.d          |     3 +-
 .../gdc.test/fail_compilation/fail19898a.d         |     2 +-
 .../gdc.test/fail_compilation/fail19898b.d         |     4 +-
 gcc/testsuite/gdc.test/fail_compilation/fail199.d  |     6 +-
 gcc/testsuite/gdc.test/fail_compilation/fail200.d  |     6 +-
 .../gdc.test/fail_compilation/fail20779.d          |     2 +-
 .../gdc.test/fail_compilation/fail21830.d          |     3 +
 .../gdc.test/fail_compilation/fail21831.d          |     3 +
 .../gdc.test/fail_compilation/fail21832.d          |     2 +
 .../gdc.test/fail_compilation/fail22384.d          |    51 +
 .../gdc.test/fail_compilation/fail22925.d          |    40 +
 .../gdc.test/fail_compilation/fail23822.d          |     3 +-
 .../gdc.test/fail_compilation/fail23826.d          |     3 +-
 gcc/testsuite/gdc.test/fail_compilation/fail243.d  |    15 +-
 gcc/testsuite/gdc.test/fail_compilation/fail244.d  |    30 +-
 gcc/testsuite/gdc.test/fail_compilation/fail245.d  |    30 +-
 gcc/testsuite/gdc.test/fail_compilation/fail4206.d |     3 +-
 gcc/testsuite/gdc.test/fail_compilation/fail8262.d |     7 +-
 gcc/testsuite/gdc.test/fail_compilation/fail8691.d |     2 +-
 .../gdc.test/fail_compilation/fail_opover.d        |     2 +-
 .../gdc.test/fail_compilation/getMember_private.d  |    26 +
 gcc/testsuite/gdc.test/fail_compilation/ice11822.d |     9 +-
 gcc/testsuite/gdc.test/fail_compilation/ice11850.d |     2 +-
 gcc/testsuite/gdc.test/fail_compilation/ice11919.d |     5 +-
 .../gdc.test/fail_compilation/issue22147.d         |    16 +
 .../gdc.test/fail_compilation/issue22394.d         |    16 +
 .../gdc.test/fail_compilation/obsolete_body.d      |     6 +-
 .../gdc.test/fail_compilation/safeprintf.d         |    37 +-
 .../gdc.test/fail_compilation/staticarray.d        |    67 +
 .../fail_compilation/struct_rvalue_assign.d        |    62 +
 .../gdc.test/fail_compilation/test17977.d          |     2 +-
 .../gdc.test/fail_compilation/test19193.d          |     3 +-
 .../gdc.test/fail_compilation/test20515.d          |     5 +-
 .../gdc.test/fail_compilation/test21259.d          |    12 +-
 .../gdc.test/fail_compilation/test21634.d          |     2 +-
 .../gdc.test/fail_compilation/test22397.d          |    16 +
 .../gdc.test/fail_compilation/test23968.d          |     3 +-
 .../gdc.test/fail_compilation/test24295.d          |    13 -
 gcc/testsuite/gdc.test/fail_compilation/test9150.d |     2 +-
 .../gdc.test/fail_compilation/test9701b.d          |     6 +-
 .../fail_compilation/test_isOverlapped_errors.d    |    17 +
 .../gdc.test/fail_compilation/test_switch_error.d  |    10 +-
 .../fail_compilation/type_as_initializer.d         |    52 +
 gcc/testsuite/gdc.test/runnable/b10562.d           |     8 +
 .../gdc.test/runnable/extra-files/sectiondefs.d    |    13 +
 gcc/testsuite/gdc.test/runnable/foreach5.d         |    31 +
 .../gdc.test/runnable/imports/pragmainline_a.d     |     6 +
 gcc/testsuite/gdc.test/runnable/issue20578.d       |    14 +
 gcc/testsuite/gdc.test/runnable/issue22481.d       |    18 +
 gcc/testsuite/gdc.test/runnable/issue22621.d       |    40 +
 gcc/testsuite/gdc.test/runnable/issue22639.d       |    35 +
 gcc/testsuite/gdc.test/runnable/lexer.d            |    12 +
 gcc/testsuite/gdc.test/runnable/noreturn2.d        |    62 +-
 gcc/testsuite/gdc.test/runnable/pragmainline.d     |     7 +
 gcc/testsuite/gdc.test/runnable/real_to_float.d    |    48 +-
 gcc/testsuite/gdc.test/runnable/rvalue1.d          |    24 +
 gcc/testsuite/gdc.test/runnable/sctor.d            |    37 +
 gcc/testsuite/gdc.test/runnable/staticarray.d      |    83 +
 gcc/testsuite/gdc.test/runnable/stress.d           |    51 -
 gcc/testsuite/gdc.test/runnable/structlit_rvalue.d |    64 +-
 gcc/testsuite/gdc.test/runnable/test20275.d        |     1 +
 gcc/testsuite/gdc.test/runnable/test22384.d        |    49 +
 gcc/testsuite/gdc.test/runnable/test22422.d        |    21 +
 gcc/testsuite/gdc.test/runnable/test22427.d        |    40 +
 gcc/testsuite/gdc.test/runnable/test22489.d        |    20 +
 gcc/testsuite/gdc.test/runnable/test22594.d        |    23 +
 gcc/testsuite/gdc.test/runnable/test28.d           |     5 +-
 gcc/testsuite/gdc.test/runnable/testaa2.d          |     8 +
 gcc/testsuite/gdc.test/runnable/testaa3.d          |    80 +
 gcc/testsuite/gdc.test/runnable/uda.d              |    17 +
 gcc/testsuite/gdc.test/runnable/with.d             |    15 +
 gcc/testsuite/gfortran.dg/bind_c_module_proc.f90   |    18 +
 gcc/testsuite/gfortran.dg/bounds_check_28.f90      |    70 +
 gcc/testsuite/gfortran.dg/c_funloc_tests_10.f90    |    86 +
 .../gfortran.dg/defined_assignment_13.f90          |   312 +
 gcc/testsuite/gfortran.dg/generic_36-1.f90         |    68 +
 gcc/testsuite/gfortran.dg/generic_36-2.f90         |    36 +
 gcc/testsuite/gfortran.dg/goacc/omp-108382.f90     |    22 +
 gcc/testsuite/gfortran.dg/goacc/pr93554.f90        |    21 +
 .../gfortran.dg/gomp/declare-variant-14.f90        |     2 +-
 gcc/testsuite/gfortran.dg/gomp/pr101760.f90        |    14 +
 gcc/testsuite/gfortran.dg/gomp/pr102314.f90        |    19 +
 gcc/testsuite/gfortran.dg/gomp/pr102430.f90        |    11 +
 gcc/testsuite/gfortran.dg/gomp/pr104827.f90        |    16 +
 gcc/testsuite/gfortran.dg/gomp/pr107425.f90        |    11 +
 gcc/testsuite/gfortran.dg/gomp/pr95163.f90         |    13 +
 gcc/testsuite/gfortran.dg/gomp/pr98203.f90         |    14 +
 gcc/testsuite/gfortran.dg/pdt_90.f03               |    26 +
 gcc/testsuite/gfortran.dg/pdt_91.f03               |    30 +
 gcc/testsuite/gfortran.dg/pr100155.f90             |    43 +
 gcc/testsuite/gfortran.dg/pr100194.f90             |    98 +
 gcc/testsuite/gfortran.dg/pr101281.f90             |    10 +
 gcc/testsuite/gfortran.dg/pr102619.f90             |    23 +
 gcc/testsuite/gfortran.dg/pr103367.f90             |    15 +
 gcc/testsuite/gfortran.dg/pr109788.f90             |    10 +
 gcc/testsuite/gfortran.dg/pr114021.f90             |    64 +
 gcc/testsuite/gfortran.dg/pr119273.f90             |    70 +
 gcc/testsuite/gfortran.dg/pr124543.f90             |   397 +
 gcc/testsuite/gfortran.dg/pr124567.f90             |    62 +
 gcc/testsuite/gfortran.dg/pr124739.f90             |     9 +
 gcc/testsuite/gfortran.dg/pr124780.f90             |    36 +
 gcc/testsuite/gfortran.dg/pr79524.f90              |     9 +
 gcc/testsuite/gfortran.dg/pr84245.f90              |     7 +
 gcc/testsuite/gfortran.dg/pr85352.f90              |    44 +
 gcc/testsuite/gfortran.dg/pr93715.f90              |    11 +
 gcc/testsuite/gfortran.dg/pr93814.f90              |    99 +
 gcc/testsuite/gfortran.dg/pr94978.f90              |    24 +
 gcc/testsuite/gfortran.dg/pr95879.f90              |    30 +
 gcc/testsuite/gfortran.dg/pr96986.f90              |    25 +
 gcc/testsuite/gfortran.dg/proc_decl_30.f90         |    53 +
 gcc/testsuite/gm2/iso/run/pass/printsize.mod       |    10 +
 gcc/testsuite/gm2/iso/run/pass/setcons.mod         |    21 +
 gcc/testsuite/gm2/iso/run/pass/setcons2.mod        |    37 +
 gcc/testsuite/gm2/iso/run/pass/setcons3.mod        |    24 +
 gcc/testsuite/gm2/iso/run/pass/setcons4.mod        |    26 +
 gcc/testsuite/gm2/iso/run/pass/setcons5.mod        |    26 +
 gcc/testsuite/gm2/iso/run/pass/testgeneric.mod     |     5 +-
 gcc/testsuite/gm2/iso/run/pass/testgeneric2.mod    |     9 +
 gcc/testsuite/gm2/iso/run/pass/testgeneric3.mod    |    55 +
 gcc/testsuite/gm2/iso/run/pass/testgeneric4.mod    |    29 +
 gcc/testsuite/gm2/iso/run/pass/testgeneric5.mod    |    29 +
 gcc/testsuite/gnat.dg/aggr35.adb                   |    30 +
 gcc/testsuite/gnat.dg/aggr35_pkg.adb               |    32 +
 gcc/testsuite/gnat.dg/aggr35_pkg.ads               |    21 +
 gcc/testsuite/gnat.dg/generic_inst19.adb           |    42 +
 gcc/testsuite/gnat.dg/generic_inst20-sub.adb       |    14 +
 gcc/testsuite/gnat.dg/generic_inst20.adb           |     5 +
 gcc/testsuite/gnat.dg/generic_inst20.ads           |     6 +
 gcc/testsuite/gnat.dg/generic_inst21.adb           |    50 +
 gcc/testsuite/gnat.dg/opt107.adb                   |    27 +
 gcc/testsuite/gnat.dg/opt107_pkg.ads               |   156 +
 gcc/testsuite/gnat.dg/reduce6.adb                  |    36 +
 gcc/testsuite/gnat.dg/warn35.adb                   |    16 +
 gcc/testsuite/gnat.dg/warn36.adb                   |    12 +
 gcc/testsuite/go.test/go-test.exp                  |     4 +-
 gcc/testsuite/lib/mike-g++.exp                     |     2 +-
 gcc/testsuite/lib/mike-gcc.exp                     |     2 +-
 gcc/testsuite/lib/profopt.exp                      |     8 +-
 gcc/testsuite/lib/target-supports-dg.exp           |    17 +-
 gcc/testsuite/lib/target-supports.exp              |    91 +-
 .../rust/compile/compiler_builtins_gate.rs         |     3 +
 gcc/testsuite/rust/compile/ctlz.rs                 |    17 +
 gcc/testsuite/rust/compile/ctlz_nonzero.rs         |    19 +
 gcc/testsuite/rust/compile/cttz.rs                 |    17 +
 gcc/testsuite/rust/compile/cttz_nonzero.rs         |    19 +
 gcc/testsuite/rust/compile/doc_macro.rs            |    10 +
 .../rust/compile/early_feature_gate_in_macro.rs    |     5 +
 .../rust/compile/func-qualifier-default.rs         |    17 +
 .../rust/compile/func-qualifier-order-1.rs         |    39 +
 .../rust/compile/func-qualifier-order-2.rs         |     6 +
 .../rust/compile/func-qualifier-order-3.rs         |    14 +
 gcc/testsuite/rust/compile/glob-import-all.rs      |     9 +
 gcc/testsuite/rust/compile/issue-3550.rs           |     7 +
 gcc/testsuite/rust/compile/issue-3555.rs           |    14 +
 gcc/testsuite/rust/compile/issue-3591.rs           |     8 +
 gcc/testsuite/rust/compile/issue-3597.rs           |    11 +
 gcc/testsuite/rust/compile/issue-3651.rs           |    12 +
 gcc/testsuite/rust/compile/issue-3661.rs           |     8 +-
 gcc/testsuite/rust/compile/issue-3670.rs           |    11 +
 gcc/testsuite/rust/compile/issue-3672.rs           |    12 +
 gcc/testsuite/rust/compile/issue-3875.rs           |    28 +
 gcc/testsuite/rust/compile/issue-3910.rs           |    14 +
 .../rust/compile/issue-3919-ice-func-parms.rs      |     4 +
 gcc/testsuite/rust/compile/issue-3931.rs           |    16 +
 gcc/testsuite/rust/compile/issue-4226.rs           |     4 +-
 gcc/testsuite/rust/compile/issue-4517.rs           |     5 +
 gcc/testsuite/rust/compile/match-struct-path.rs    |     6 +
 .../rust/compile/parse_time_feature_gate.rs        |    11 +
 gcc/testsuite/rust/execute/ident_pat_vs_path_1.rs  |    27 +
 gcc/testsuite/rust/execute/ident_pat_vs_path_2.rs  |    18 +
 .../rust/execute/non_decimal_128_saturation.rs     |    24 +
 gcc/testsuite/rust/execute/torture/ctlz.rs         |    56 +
 gcc/testsuite/rust/execute/torture/ctlz_i16.rs     |    28 +
 gcc/testsuite/rust/execute/torture/ctlz_i32.rs     |    28 +
 gcc/testsuite/rust/execute/torture/ctlz_i64.rs     |    28 +
 gcc/testsuite/rust/execute/torture/ctlz_i8.rs      |    29 +
 gcc/testsuite/rust/execute/torture/ctlz_nonzero.rs |    46 +
 .../rust/execute/torture/ctlz_nonzero_i16.rs       |    27 +
 .../rust/execute/torture/ctlz_nonzero_i32.rs       |    27 +
 .../rust/execute/torture/ctlz_nonzero_i64.rs       |    27 +
 .../rust/execute/torture/ctlz_nonzero_i8.rs        |    27 +
 .../rust/execute/torture/ctlz_nonzero_u16.rs       |    25 +
 .../rust/execute/torture/ctlz_nonzero_u32.rs       |    25 +
 .../rust/execute/torture/ctlz_nonzero_u64.rs       |    25 +
 .../rust/execute/torture/ctlz_nonzero_u8.rs        |    25 +
 gcc/testsuite/rust/execute/torture/ctlz_u16.rs     |    26 +
 gcc/testsuite/rust/execute/torture/ctlz_u32.rs     |    26 +
 gcc/testsuite/rust/execute/torture/ctlz_u64.rs     |    26 +
 gcc/testsuite/rust/execute/torture/ctlz_u8.rs      |    26 +
 gcc/testsuite/rust/execute/torture/cttz.rs         |    97 +
 gcc/testsuite/rust/execute/torture/cttz_nonzero.rs |    74 +
 gcc/tree-cfg.cc                                    |     8 +-
 gcc/tree-inline.cc                                 |    22 +-
 gcc/tree-inline.h                                  |     1 -
 gcc/tree-profile.cc                                |     3 +
 gcc/tree-sra.cc                                    |     5 +
 gcc/tree-ssa-alias.cc                              |     1 -
 gcc/tree-ssa-dse.cc                                |     6 +-
 gcc/tree-ssa-forwprop.cc                           |     4 +
 gcc/tree-ssa-phiprop.cc                            |    51 +-
 gcc/tree-ssa-pre.cc                                |    67 +-
 gcc/tree-ssa-propagate.cc                          |     1 +
 gcc/tree-ssa-strlen.cc                             |    10 +-
 gcc/tree-vect-loop.cc                              |    13 +-
 gcc/tree-vect-slp-patterns.cc                      |     1 +
 gcc/tree-vect-slp.cc                               |    53 +-
 gcc/tree-vect-stmts.cc                             |    16 +-
 gcc/tree.cc                                        |    20 +
 gcc/tree.h                                         |     3 +
 gcc/value-relation.cc                              |    12 +
 gcc/value-relation.h                               |     3 +
 libcpp/po/ChangeLog                                |     4 +
 libcpp/po/sr.po                                    |    31 +-
 libga68/ChangeLog                                  |     9 +
 libga68/Makefile.am                                |     1 +
 libga68/Makefile.in                                |    11 +-
 libga68/configure                                  |    59 -
 libga68/configure.ac                               |     1 -
 libga68/floor.c                                    |   115 +
 libga68/ga68-math.c                                |    40 +
 libgcc/ChangeLog                                   |    23 +
 libgcc/config.host                                 |     2 +-
 libgcc/config/gthr-vxworks-tls.c                   |     2 +-
 libgcc/config/gthr-vxworks.h                       |    42 +-
 libgcc/config/t-vxworks                            |    13 +
 libgcc/libgcov-driver-system.c                     |     5 +
 libgcobol/ChangeLog                                |    29 +
 libgcobol/Makefile.am                              |     1 +
 libgcobol/Makefile.in                              |     6 +-
 libgcobol/charmaps.h                               |     1 -
 libgcobol/constants.cc                             |   258 -
 libgcobol/gcobolio.h                               |     1 -
 libgcobol/inspect.cc                               |  2951 ++++
 libgcobol/libgcobol.cc                             |  2501 +--
 libgcobol/xmlparse.cc                              |    31 +-
 libgfortran/ChangeLog                              |    33 +
 libgfortran/Makefile.am                            |     3 +-
 libgfortran/Makefile.in                            |    27 +-
 libgfortran/configure                              |    38 +
 libgfortran/configure.ac                           |    24 +
 libgfortran/io/inquire.c                           |    88 +-
 libgfortran/io/unix.c                              |     2 +-
 libgomp/ChangeLog                                  |    26 +
 libgomp/libgomp.texi                               |    39 +-
 libgomp/target.c                                   |    37 +-
 .../testsuite/libgomp.c/omp_target_is_present-2.c  |     7 +
 .../testsuite/libgomp.c/omp_target_is_present.c    |   206 +
 libgomp/testsuite/libgomp.c/pr122314.c             |     3 +
 libgomp/testsuite/libgomp.c/pr122356.c             |     3 +
 .../libgomp.fortran/uses_allocators-7.f90          |    11 +-
 libphobos/ChangeLog                                |    56 +
 libphobos/libdruntime/MERGE                        |     2 +-
 libphobos/libdruntime/__importc_builtins.di        |     2 +-
 libphobos/libdruntime/core/atomic.d                |   130 +-
 libphobos/libdruntime/core/attribute.d             |    26 +
 libphobos/libdruntime/core/bitop.d                 |    55 +-
 libphobos/libdruntime/core/exception.d             |    82 +
 libphobos/libdruntime/core/gc/config.d             |     6 +
 .../libdruntime/core/internal/array/capacity.d     |    20 +-
 .../libdruntime/core/internal/array/construction.d |     5 +-
 .../libdruntime/core/internal/array/duplication.d  |    27 +-
 .../libdruntime/core/internal/array/equality.d     |    44 +-
 libphobos/libdruntime/core/internal/array/utils.d  |    12 +-
 libphobos/libdruntime/core/internal/atomic.d       |    78 +
 .../libdruntime/core/internal/container/array.d    |     2 +-
 libphobos/libdruntime/core/internal/gc/bits.d      |     2 +-
 .../core/internal/gc/impl/conservative/gc.d        |    31 +-
 libphobos/libdruntime/core/internal/gc/os.d        |     2 +-
 libphobos/libdruntime/core/internal/lifetime.d     |    13 +-
 libphobos/libdruntime/core/internal/newaa.d        |    24 +
 libphobos/libdruntime/core/internal/qsort.d        |    12 +-
 libphobos/libdruntime/core/internal/traits.d       |    73 +-
 libphobos/libdruntime/core/internal/utf.d          |     2 +-
 libphobos/libdruntime/core/lifetime.d              |    35 +-
 libphobos/libdruntime/core/memory.d                |     2 +-
 libphobos/libdruntime/core/simd.d                  |    96 +-
 libphobos/libdruntime/core/stdc/complex.d          |     4 +-
 libphobos/libdruntime/core/stdc/config.d           |   104 +-
 libphobos/libdruntime/core/stdc/fenv.d             |    46 +-
 libphobos/libdruntime/core/stdc/inttypes.d         |     2 +-
 libphobos/libdruntime/core/stdc/math.d             |     4 +-
 libphobos/libdruntime/core/stdc/signal.d           |     4 +-
 libphobos/libdruntime/core/stdc/stdatomic.d        |     5 +-
 libphobos/libdruntime/core/stdc/stddef.d           |     6 +-
 libphobos/libdruntime/core/stdc/stdint.d           |    15 +-
 libphobos/libdruntime/core/stdc/stdio.d            |   146 +-
 libphobos/libdruntime/core/stdc/stdlib.d           |     2 +-
 libphobos/libdruntime/core/stdc/tgmath.d           |  1388 +-
 libphobos/libdruntime/core/stdc/time.d             |    73 +-
 libphobos/libdruntime/core/stdc/wchar_.d           |     4 +-
 libphobos/libdruntime/core/stdc/wctype.d           |     4 +-
 libphobos/libdruntime/core/sync/condition.d        |     4 +-
 libphobos/libdruntime/core/sync/mutex.d            |    18 +-
 libphobos/libdruntime/core/sync/rwmutex.d          |   122 +-
 .../libdruntime/core/sys/darwin/crt_externs.d      |     2 +-
 .../libdruntime/core/sys/darwin/mach/kern_return.d |     2 +-
 .../libdruntime/core/sys/darwin/mach/semaphore.d   |    10 +-
 .../libdruntime/core/sys/darwin/mach/thread_act.d  |    12 +-
 libphobos/libdruntime/core/sys/darwin/sys/attr.d   |     2 +-
 .../libdruntime/core/sys/dragonflybsd/sys/elf32.d  |    10 +-
 .../libdruntime/core/sys/dragonflybsd/sys/elf64.d  |    10 +-
 .../core/sys/dragonflybsd/sys/elf_common.d         |     4 +-
 .../core/sys/dragonflybsd/sys/link_elf.d           |     6 +-
 libphobos/libdruntime/core/sys/elf/package.d       |    50 +-
 libphobos/libdruntime/core/sys/freebsd/config.d    |     4 +-
 libphobos/libdruntime/core/sys/freebsd/sys/elf32.d |    10 +-
 libphobos/libdruntime/core/sys/freebsd/sys/elf64.d |    10 +-
 .../libdruntime/core/sys/freebsd/sys/elf_common.d  |     4 +-
 .../libdruntime/core/sys/freebsd/sys/link_elf.d    |     6 +-
 libphobos/libdruntime/core/sys/linux/dlfcn.d       |     2 +-
 libphobos/libdruntime/core/sys/linux/elf.d         |     2 +-
 libphobos/libdruntime/core/sys/linux/hdlc/ioctl.d  |     2 +-
 libphobos/libdruntime/core/sys/linux/link.d        |    50 +-
 libphobos/libdruntime/core/sys/linux/net/if_.d     |     2 +-
 libphobos/libdruntime/core/sys/linux/sched.d       |     2 +-
 libphobos/libdruntime/core/sys/linux/stdio.d       |     8 +-
 libphobos/libdruntime/core/sys/linux/sys/eventfd.d |     2 +-
 libphobos/libdruntime/core/sys/netbsd/sys/elf32.d  |    10 +-
 libphobos/libdruntime/core/sys/netbsd/sys/elf64.d  |    10 +-
 .../libdruntime/core/sys/netbsd/sys/elf_common.d   |     4 +-
 .../libdruntime/core/sys/netbsd/sys/link_elf.d     |     6 +-
 libphobos/libdruntime/core/sys/openbsd/sys/elf32.d |    10 +-
 libphobos/libdruntime/core/sys/openbsd/sys/elf64.d |    10 +-
 .../libdruntime/core/sys/openbsd/sys/elf_common.d  |     4 +-
 .../libdruntime/core/sys/openbsd/sys/link_elf.d    |     4 +-
 libphobos/libdruntime/core/sys/posix/aio.d         |    12 +
 libphobos/libdruntime/core/sys/posix/arpa/inet.d   |    38 +-
 libphobos/libdruntime/core/sys/posix/dirent.d      |    46 +-
 libphobos/libdruntime/core/sys/posix/fcntl.d       |    24 +-
 libphobos/libdruntime/core/sys/posix/iconv.d       |     2 +-
 libphobos/libdruntime/core/sys/posix/locale.d      |    13 +-
 libphobos/libdruntime/core/sys/posix/mqueue.d      |     2 +-
 libphobos/libdruntime/core/sys/posix/netinet/in_.d |    48 +-
 libphobos/libdruntime/core/sys/posix/poll.d        |    20 +-
 libphobos/libdruntime/core/sys/posix/pthread.d     |     4 +-
 libphobos/libdruntime/core/sys/posix/pwd.d         |    18 +-
 libphobos/libdruntime/core/sys/posix/sched.d       |     1 +
 libphobos/libdruntime/core/sys/posix/semaphore.d   |     6 +-
 libphobos/libdruntime/core/sys/posix/setjmp.d      |    58 +-
 libphobos/libdruntime/core/sys/posix/signal.d      |    72 +-
 libphobos/libdruntime/core/sys/posix/stdc/time.d   |     1 +
 libphobos/libdruntime/core/sys/posix/stdio.d       |    32 +-
 libphobos/libdruntime/core/sys/posix/stdlib.d      |    14 +-
 libphobos/libdruntime/core/sys/posix/sys/msg.d     |     5 +-
 .../libdruntime/core/sys/posix/sys/resource.d      |    38 +-
 libphobos/libdruntime/core/sys/posix/sys/select.d  |    20 +-
 libphobos/libdruntime/core/sys/posix/sys/shm.d     |    16 +-
 libphobos/libdruntime/core/sys/posix/sys/socket.d  |    32 +-
 libphobos/libdruntime/core/sys/posix/sys/stat.d    |    90 +-
 libphobos/libdruntime/core/sys/posix/sys/statvfs.d |     6 +-
 libphobos/libdruntime/core/sys/posix/sys/time.d    |     4 +
 libphobos/libdruntime/core/sys/posix/sys/types.d   |   540 +-
 libphobos/libdruntime/core/sys/posix/sys/wait.d    |     2 +-
 libphobos/libdruntime/core/sys/posix/termios.d     |    36 +-
 libphobos/libdruntime/core/sys/posix/time.d        |    50 +-
 libphobos/libdruntime/core/sys/posix/ucontext.d    |    64 +-
 libphobos/libdruntime/core/sys/posix/unistd.d      |    74 +-
 libphobos/libdruntime/core/sys/posix/utime.d       |     2 +-
 libphobos/libdruntime/core/sys/solaris/dlfcn.d     |     2 +-
 libphobos/libdruntime/core/sys/solaris/link.d      |    12 +-
 libphobos/libdruntime/core/sys/solaris/sys/elf.d   |    16 +-
 .../libdruntime/core/sys/solaris/sys/elftypes.d    |     4 +-
 libphobos/libdruntime/core/sys/solaris/sys/link.d  |     4 +-
 libphobos/libdruntime/core/sys/solaris/sys/types.d |     2 +-
 libphobos/libdruntime/core/sys/windows/accctrl.d   |   136 +-
 libphobos/libdruntime/core/sys/windows/aclapi.d    |    82 +-
 libphobos/libdruntime/core/sys/windows/aclui.d     |     8 +-
 libphobos/libdruntime/core/sys/windows/basetsd.d   |    92 +-
 libphobos/libdruntime/core/sys/windows/basetyps.d  |     8 +-
 libphobos/libdruntime/core/sys/windows/comcat.d    |    30 +-
 libphobos/libdruntime/core/sys/windows/commctrl.d  |  1139 +-
 libphobos/libdruntime/core/sys/windows/commdlg.d   |   132 +-
 libphobos/libdruntime/core/sys/windows/cpl.d       |    18 +-
 libphobos/libdruntime/core/sys/windows/custcntl.d  |    54 +-
 libphobos/libdruntime/core/sys/windows/dbghelp.d   |    46 +-
 .../libdruntime/core/sys/windows/dbghelp_types.d   |    12 +-
 libphobos/libdruntime/core/sys/windows/dbt.d       |    28 +-
 libphobos/libdruntime/core/sys/windows/ddeml.d     |    34 +-
 libphobos/libdruntime/core/sys/windows/dhcpcsdk.d  |     6 +-
 libphobos/libdruntime/core/sys/windows/dll.d       |     8 +-
 libphobos/libdruntime/core/sys/windows/docobj.d    |     4 +-
 libphobos/libdruntime/core/sys/windows/errorrep.d  |     4 +-
 libphobos/libdruntime/core/sys/windows/httpext.d   |    16 +-
 libphobos/libdruntime/core/sys/windows/imagehlp.d  |    52 +-
 libphobos/libdruntime/core/sys/windows/imm.d       |   126 +-
 libphobos/libdruntime/core/sys/windows/intshcut.d  |    19 +-
 libphobos/libdruntime/core/sys/windows/ipexport.d  |    12 +-
 libphobos/libdruntime/core/sys/windows/iprtrmib.d  |    36 +-
 libphobos/libdruntime/core/sys/windows/iptypes.d   |    12 +-
 libphobos/libdruntime/core/sys/windows/lmaccess.d  |   130 +-
 libphobos/libdruntime/core/sys/windows/lmalert.d   |    10 +-
 libphobos/libdruntime/core/sys/windows/lmat.d      |     4 +-
 libphobos/libdruntime/core/sys/windows/lmaudit.d   |    40 +-
 libphobos/libdruntime/core/sys/windows/lmbrowsr.d  |     6 +-
 libphobos/libdruntime/core/sys/windows/lmchdev.d   |    14 +-
 libphobos/libdruntime/core/sys/windows/lmconfig.d  |     2 +-
 libphobos/libdruntime/core/sys/windows/lmcons.d    |    10 +-
 libphobos/libdruntime/core/sys/windows/lmerrlog.d  |     2 +-
 libphobos/libdruntime/core/sys/windows/lmmsg.d     |     4 +-
 libphobos/libdruntime/core/sys/windows/lmremutl.d  |     6 +-
 libphobos/libdruntime/core/sys/windows/lmrepl.d    |    24 +-
 libphobos/libdruntime/core/sys/windows/lmserver.d  |   179 +-
 libphobos/libdruntime/core/sys/windows/lmshare.d   |    32 +-
 libphobos/libdruntime/core/sys/windows/lmstats.d   |     4 +-
 libphobos/libdruntime/core/sys/windows/lmsvc.d     |     6 +-
 libphobos/libdruntime/core/sys/windows/lmuse.d     |     6 +-
 libphobos/libdruntime/core/sys/windows/lmwksta.d   |    84 +-
 libphobos/libdruntime/core/sys/windows/lzexpand.d  |     8 +-
 libphobos/libdruntime/core/sys/windows/mapi.d      |    52 +-
 libphobos/libdruntime/core/sys/windows/mcx.d       |     4 +-
 libphobos/libdruntime/core/sys/windows/mgmtapi.d   |     2 +-
 libphobos/libdruntime/core/sys/windows/mmsystem.d  |   486 +-
 libphobos/libdruntime/core/sys/windows/msacm.d     |    72 +-
 libphobos/libdruntime/core/sys/windows/mshtml.d    |    36 +-
 libphobos/libdruntime/core/sys/windows/mswsock.d   |    10 +-
 libphobos/libdruntime/core/sys/windows/nb30.d      |    18 +-
 libphobos/libdruntime/core/sys/windows/nddeapi.d   |    52 +-
 libphobos/libdruntime/core/sys/windows/nspapi.d    |    30 +-
 libphobos/libdruntime/core/sys/windows/ntdef.d     |    18 +-
 libphobos/libdruntime/core/sys/windows/ntsecapi.d  |   160 +-
 libphobos/libdruntime/core/sys/windows/ntsecpkg.d  |   304 +-
 libphobos/libdruntime/core/sys/windows/oaidl.d     |    72 +-
 libphobos/libdruntime/core/sys/windows/objbase.d   |     8 +-
 libphobos/libdruntime/core/sys/windows/objfwd.d    |    84 +-
 libphobos/libdruntime/core/sys/windows/objidl.d    |    24 +-
 libphobos/libdruntime/core/sys/windows/ocidl.d     |    52 +-
 libphobos/libdruntime/core/sys/windows/odbcinst.d  |    46 +-
 libphobos/libdruntime/core/sys/windows/ole.d       |    28 +-
 libphobos/libdruntime/core/sys/windows/ole2.d      |     4 +-
 libphobos/libdruntime/core/sys/windows/oleacc.d    |    14 +-
 libphobos/libdruntime/core/sys/windows/oleauto.d   |    14 +-
 libphobos/libdruntime/core/sys/windows/olectl.d    |    64 +-
 libphobos/libdruntime/core/sys/windows/oledlg.d    |   282 +-
 libphobos/libdruntime/core/sys/windows/oleidl.d    |    50 +-
 libphobos/libdruntime/core/sys/windows/powrprof.d  |    21 +-
 libphobos/libdruntime/core/sys/windows/prsht.d     |    73 +-
 libphobos/libdruntime/core/sys/windows/psapi.d     |    50 +-
 libphobos/libdruntime/core/sys/windows/rapi.d      |     2 +-
 libphobos/libdruntime/core/sys/windows/ras.d       |   358 +-
 libphobos/libdruntime/core/sys/windows/rasdlg.d    |    48 +-
 libphobos/libdruntime/core/sys/windows/rassapi.d   |    12 +-
 libphobos/libdruntime/core/sys/windows/regstr.d    |     2 +-
 libphobos/libdruntime/core/sys/windows/richedit.d  |    30 +-
 libphobos/libdruntime/core/sys/windows/richole.d   |     4 +-
 libphobos/libdruntime/core/sys/windows/rpc.d       |     4 +-
 libphobos/libdruntime/core/sys/windows/rpcdce.d    |   164 +-
 libphobos/libdruntime/core/sys/windows/rpcdce2.d   |     8 +-
 libphobos/libdruntime/core/sys/windows/rpcdcep.d   |    26 +-
 libphobos/libdruntime/core/sys/windows/rpcndr.d    |    84 +-
 libphobos/libdruntime/core/sys/windows/rpcnsi.d    |    80 +-
 libphobos/libdruntime/core/sys/windows/rpcnsip.d   |     2 +-
 libphobos/libdruntime/core/sys/windows/schannel.d  |    12 +-
 libphobos/libdruntime/core/sys/windows/secext.d    |    14 +-
 libphobos/libdruntime/core/sys/windows/setupapi.d  |   782 +-
 libphobos/libdruntime/core/sys/windows/shellapi.d  |    92 +-
 libphobos/libdruntime/core/sys/windows/shldisp.d   |     4 +-
 libphobos/libdruntime/core/sys/windows/shlobj.d    |   236 +-
 libphobos/libdruntime/core/sys/windows/shlwapi.d   |   536 +-
 libphobos/libdruntime/core/sys/windows/snmp.d      |    83 +-
 libphobos/libdruntime/core/sys/windows/sqltypes.d  |    66 +-
 libphobos/libdruntime/core/sys/windows/sqlucode.d  |    74 +-
 libphobos/libdruntime/core/sys/windows/sspi.d      |   224 +-
 .../libdruntime/core/sys/windows/stacktrace.d      |     2 +-
 libphobos/libdruntime/core/sys/windows/stdc/time.d |     4 +-
 libphobos/libdruntime/core/sys/windows/subauth.d   |    42 +-
 libphobos/libdruntime/core/sys/windows/threadaux.d |    14 +-
 libphobos/libdruntime/core/sys/windows/tlhelp32.d  |    48 +-
 libphobos/libdruntime/core/sys/windows/unknwn.d    |     4 +-
 libphobos/libdruntime/core/sys/windows/vfw.d       |   194 +-
 libphobos/libdruntime/core/sys/windows/winbase.d   |   796 +-
 libphobos/libdruntime/core/sys/windows/winber.d    |     8 +-
 libphobos/libdruntime/core/sys/windows/wincon.d    |    78 +-
 libphobos/libdruntime/core/sys/windows/wincrypt.d  |   116 +-
 libphobos/libdruntime/core/sys/windows/windef.d    |    48 +-
 libphobos/libdruntime/core/sys/windows/winerror.d  |     2 +-
 libphobos/libdruntime/core/sys/windows/wingdi.d    |   928 +-
 libphobos/libdruntime/core/sys/windows/winhttp.d   |     2 +-
 libphobos/libdruntime/core/sys/windows/wininet.d   |   345 +-
 libphobos/libdruntime/core/sys/windows/winioctl.d  |    88 +-
 libphobos/libdruntime/core/sys/windows/winldap.d   |   372 +-
 libphobos/libdruntime/core/sys/windows/winnetwk.d  |   160 +-
 libphobos/libdruntime/core/sys/windows/winnls.d    |   220 +-
 libphobos/libdruntime/core/sys/windows/winnt.d     |   456 +-
 libphobos/libdruntime/core/sys/windows/winperf.d   |    16 +-
 libphobos/libdruntime/core/sys/windows/winreg.d    |   114 +-
 libphobos/libdruntime/core/sys/windows/winsock2.d  |    12 +-
 libphobos/libdruntime/core/sys/windows/winspool.d  |   402 +-
 libphobos/libdruntime/core/sys/windows/winsvc.d    |   160 +-
 libphobos/libdruntime/core/sys/windows/winuser.d   |  1020 +-
 libphobos/libdruntime/core/sys/windows/winver.d    |    28 +-
 libphobos/libdruntime/core/sys/windows/wtsapi32.d  |   104 +-
 libphobos/libdruntime/core/sys/windows/wtypes.d    |    28 +-
 libphobos/libdruntime/core/thread/context.d        |     1 +
 libphobos/libdruntime/core/thread/osthread.d       |   177 +-
 libphobos/libdruntime/core/thread/package.d        |    26 +-
 libphobos/libdruntime/core/thread/types.d          |    20 +-
 libphobos/libdruntime/core/time.d                  |     6 +-
 libphobos/libdruntime/etc/valgrind/valgrind.d      |     2 +-
 libphobos/libdruntime/object.d                     |    45 +-
 libphobos/libdruntime/rt/critical_.d               |     8 +-
 libphobos/libdruntime/rt/dmain2.d                  |    69 +-
 libphobos/libdruntime/rt/lifetime.d                |     4 +-
 libphobos/libdruntime/rt/minfo.d                   |     6 +-
 libphobos/libdruntime/rt/monitor_.d                |    12 +-
 libphobos/libdruntime/rt/profilegc.d               |     4 +-
 libphobos/libdruntime/rt/sections.d                |     4 +-
 libphobos/libdruntime/rt/tlsgc.d                   |     2 +-
 libphobos/src/MERGE                                |     2 +-
 libphobos/src/Makefile.am                          |    17 +-
 libphobos/src/Makefile.in                          |    19 +-
 libphobos/src/index.dd                             |    48 +-
 libphobos/src/std/algorithm/setops.d               |    26 +
 libphobos/src/std/array.d                          |   425 +-
 libphobos/src/std/container/rbtree.d               |    36 +-
 libphobos/src/std/experimental/allocator/common.d  |     3 +-
 libphobos/src/std/file.d                           |    17 +-
 libphobos/src/std/format/spec.d                    |    26 +-
 libphobos/src/std/format/write.d                   |    11 +-
 libphobos/src/std/functional.d                     |    22 +-
 libphobos/src/std/internal/math/errorfunction.d    |     5 +
 libphobos/src/std/internal/math/gammafunction.d    |   287 +-
 libphobos/src/std/internal/windows/bcrypt.d        |    65 +
 libphobos/src/std/logger/core.d                    |    11 +
 libphobos/src/std/logger/package.d                 |    86 +-
 libphobos/src/std/math/hardware.d                  |    67 +-
 libphobos/src/std/mathspecial.d                    |   163 +-
 libphobos/src/std/meta.d                           |   158 +-
 libphobos/src/std/range/package.d                  |    50 +-
 libphobos/src/std/regex/internal/backtracking.d    |    22 +-
 libphobos/src/std/regex/internal/tests.d           |     4 +
 libphobos/src/std/regex/internal/thompson.d        |    14 +-
 libphobos/src/std/signals.d                        |     5 -
 libphobos/src/std/socket.d                         |    66 +-
 libphobos/src/std/traits.d                         |     4 +-
 libphobos/src/std/typecons.d                       |   153 +-
 libphobos/src/std/uni/package.d                    |    19 +
 libphobos/src/std/variant.d                        |   200 +-
 libphobos/testsuite/lib/libphobos.exp              |    24 +
 libphobos/testsuite/libphobos.aa/test_aa.d         |    35 +
 libphobos/testsuite/libphobos.phobos/phobos.exp    |     2 +
 .../libphobos.phobos/shared/phobos-shared.exp      |     2 +
 .../libphobos.phobos/static/phobos-static.exp      |     2 +
 .../libphobos.phobos/std_algorithm_comparison.d    |    22 +-
 .../libphobos.phobos/std_algorithm_iteration.d     |    86 +-
 .../libphobos.phobos/std_algorithm_searching.d     |    21 +-
 libphobos/testsuite/libphobos.phobos/std_array.d   |    33 +-
 .../testsuite/libphobos.phobos/std_concurrency.d   |    17 +
 libphobos/testsuite/libphobos.phobos/std_conv.d    |    25 +
 .../testsuite/libphobos.phobos/std_datetime_date.d |     7 +
 .../libphobos.phobos/std_datetime_systime.d        |     3 +
 .../libphobos.phobos/std_internal_entropy.d        |    82 +
 .../libphobos.phobos/std_math_algebraic.d          |     7 +-
 .../testsuite/libphobos.phobos/std_mathspecial.d   |    85 +
 libphobos/testsuite/libphobos.phobos/std_meta.d    |    11 +-
 .../testsuite/libphobos.phobos/std_range_package.d |    45 +-
 libphobos/testsuite/libphobos.phobos/std_sumtype.d |    26 +-
 libphobos/testsuite/libphobos.phobos/std_traits.d  |    36 +-
 .../testsuite/libphobos.phobos/std_typecons.d      |    15 +
 libphobos/testsuite/libphobos.phobos/std_uuid.d    |    59 +
 libphobos/testsuite/libphobos.shared/shared.exp    |     7 +
 libstdc++-v3/ChangeLog                             |   713 +
 libstdc++-v3/Makefile.am                           |     3 +
 libstdc++-v3/Makefile.in                           |     3 +
 libstdc++-v3/config/abi/pre/gnu.ver                |    37 +-
 libstdc++-v3/doc/doxygen/doxygroups.cc             |    15 +
 libstdc++-v3/doc/doxygen/user.cfg.in               |  1427 +-
 libstdc++-v3/include/Makefile.am                   |    12 +
 libstdc++-v3/include/Makefile.in                   |    12 +
 libstdc++-v3/include/bits/atomic_base.h            |    14 +-
 libstdc++-v3/include/bits/basic_string.h           |     2 +-
 libstdc++-v3/include/bits/basic_string.tcc         |    17 +-
 libstdc++-v3/include/bits/binders.h                |     2 +-
 libstdc++-v3/include/bits/chrono.h                 |    12 +-
 libstdc++-v3/include/bits/chrono_io.h              |    14 +-
 libstdc++-v3/include/bits/cow_string.h             |     6 +-
 libstdc++-v3/include/bits/formatfwd.h              |     1 +
 libstdc++-v3/include/bits/forward_list.h           |     2 +-
 libstdc++-v3/include/bits/funcref_impl.h           |    36 +-
 libstdc++-v3/include/bits/funcwrap.h               |    13 +-
 libstdc++-v3/include/bits/hashtable.h              |     8 +-
 libstdc++-v3/include/bits/hashtable_policy.h       |     4 +-
 libstdc++-v3/include/bits/move.h                   |     1 -
 libstdc++-v3/include/bits/ostream.h                |     4 +-
 libstdc++-v3/include/bits/out_ptr.h                |     4 +-
 libstdc++-v3/include/bits/random.tcc               |    14 +-
 libstdc++-v3/include/bits/ranges_uninitialized.h   |     9 +-
 libstdc++-v3/include/bits/regex_constants.h        |    16 +-
 libstdc++-v3/include/bits/sat_arith.h              |    10 +-
 libstdc++-v3/include/bits/simd_alg.h               |    98 +
 libstdc++-v3/include/bits/simd_details.h           |  1394 ++
 libstdc++-v3/include/bits/simd_flags.h             |   187 +
 libstdc++-v3/include/bits/simd_iterator.h          |   177 +
 libstdc++-v3/include/bits/simd_loadstore.h         |   408 +
 libstdc++-v3/include/bits/simd_mask.h              |  1972 +++
 libstdc++-v3/include/bits/simd_mask_reductions.h   |   118 +
 libstdc++-v3/include/bits/simd_reductions.h        |   109 +
 libstdc++-v3/include/bits/simd_vec.h               |  2297 +++
 libstdc++-v3/include/bits/simd_x86.h               |  1413 ++
 libstdc++-v3/include/bits/stl_algo.h               |    13 -
 libstdc++-v3/include/bits/stl_algobase.h           |     2 -
 libstdc++-v3/include/bits/stl_deque.h              |     3 -
 .../include/bits/stl_iterator_base_funcs.h         |     1 -
 libstdc++-v3/include/bits/stl_map.h                |    12 +-
 libstdc++-v3/include/bits/stl_numeric.h            |     1 -
 libstdc++-v3/include/bits/stl_pair.h               |    15 +-
 libstdc++-v3/include/bits/stl_queue.h              |     7 +-
 libstdc++-v3/include/bits/stl_set.h                |     1 +
 libstdc++-v3/include/bits/stl_tempbuf.h            |     1 -
 libstdc++-v3/include/bits/stl_tree.h               |     5 -
 libstdc++-v3/include/bits/stl_uninitialized.h      |     7 +-
 libstdc++-v3/include/bits/unordered_map.h          |     7 +-
 libstdc++-v3/include/bits/unordered_set.h          |     8 +-
 libstdc++-v3/include/bits/utility.h                |   410 +-
 libstdc++-v3/include/bits/vec_ops.h                |   606 +
 libstdc++-v3/include/bits/version.def              |   108 +-
 libstdc++-v3/include/bits/version.h                |   125 +-
 libstdc++-v3/include/c_compatibility/stdbit.h      |     8 +-
 libstdc++-v3/include/c_compatibility/stdckdint.h   |     8 +-
 libstdc++-v3/include/debug/inplace_vector          |    26 +-
 libstdc++-v3/include/experimental/bits/simd.h      |     4 +-
 .../find_no_store_hash_fn_imps.hpp                 |     1 +
 libstdc++-v3/include/pstl/glue_memory_defs.h       |     5 +-
 libstdc++-v3/include/std/contracts                 |     1 +
 libstdc++-v3/include/std/format                    |   174 +-
 libstdc++-v3/include/std/functional                |     2 +-
 libstdc++-v3/include/std/inplace_vector            |    70 +-
 libstdc++-v3/include/std/mdspan                    |   264 +-
 libstdc++-v3/include/std/meta                      |    52 +-
 libstdc++-v3/include/std/print                     |     2 +-
 libstdc++-v3/include/std/ranges                    |   228 +-
 libstdc++-v3/include/std/simd                      |    48 +
 libstdc++-v3/include/std/span                      |    16 +-
 libstdc++-v3/include/std/type_traits               |   350 +-
 libstdc++-v3/include/std/utility                   |     1 +
 libstdc++-v3/include/std/version                   |    38 +-
 libstdc++-v3/libsupc++/exception                   |     4 +-
 libstdc++-v3/libsupc++/exception_ptr.h             |     4 +
 libstdc++-v3/libsupc++/nested_exception.h          |    20 +-
 libstdc++-v3/src/c++20/Makefile.am                 |    24 +-
 libstdc++-v3/src/c++20/Makefile.in                 |    23 +-
 libstdc++-v3/src/c++20/cow-string-inst.cc          |    34 +
 libstdc++-v3/src/c++20/format-inst.cc              |    45 +
 libstdc++-v3/src/c++20/string-inst.cc              |    59 +
 libstdc++-v3/src/c++23/std.cc.in                   |    42 +-
 .../18_support/exception_ptr/exception_ptr_cast.cc |     6 +-
 .../testsuite/20_util/constant_wrapper/adl.cc      |     2 +-
 .../testsuite/20_util/constant_wrapper/ex.cc       |     2 +-
 .../testsuite/20_util/constant_wrapper/generic.cc  |   344 +-
 .../20_util/constant_wrapper/instantiate.cc        |     1 -
 .../20_util/constant_wrapper/op_comma_neg.cc       |     2 +-
 .../20_util/constant_wrapper/other_wrappers.cc     |     2 +-
 .../testsuite/20_util/constant_wrapper/version.cc  |     6 +-
 .../testsuite/20_util/function_ref/assign.cc       |    33 +-
 .../testsuite/20_util/function_ref/call.cc         |    51 +-
 .../testsuite/20_util/function_ref/cons.cc         |    85 +-
 .../testsuite/20_util/function_ref/cons_neg.cc     |    17 +-
 .../testsuite/20_util/function_ref/cw_cons_neg.cc  |    35 +
 .../testsuite/20_util/function_ref/dangling.cc     |     2 +-
 .../testsuite/20_util/function_ref/deduction.cc    |    48 +-
 .../testsuite/20_util/function_ref/mutation.cc     |     9 +-
 .../20_util/integer_sequence/tuple_access.cc       |   143 +
 .../20_util/integer_sequence/tuple_access_neg.cc   |    22 +
 .../testsuite/20_util/is_consteval_only/value.cc   |    30 -
 .../requirements/explicit_instantiation.cc         |     2 +-
 .../requirements/typedefs.cc                       |     2 +-
 .../testsuite/20_util/is_structural/value.cc       |    51 +
 .../testsuite/20_util/optional/ref/access.cc       |     2 +-
 .../20_util/variable_templates_for_traits.cc       |     8 +-
 .../21_strings/basic_string/debug/append_neg.cc    |    19 +
 .../21_strings/basic_string/debug/assign_neg.cc    |    19 +
 .../21_strings/basic_string/debug/construct_neg.cc |    17 +
 .../21_strings/basic_string/debug/insert_neg.cc    |    19 +
 .../21_strings/basic_string/debug/replace_neg.cc   |    20 +
 .../testsuite/23_containers/inplace_vector/copy.cc |     2 +-
 .../debug/invalidation/try_append_range.cc         |    45 -
 .../debug/invalidation/try_emplace_back.cc         |     2 +-
 .../debug/invalidation/try_push_back.cc            |     4 +-
 .../23_containers/inplace_vector/erasure.cc        |    11 +-
 .../inplace_vector/modifiers/multi_insert.cc       |    46 -
 .../inplace_vector/modifiers/single_insert.cc      |    41 +-
 .../testsuite/23_containers/inplace_vector/move.cc |     2 +-
 .../23_containers/inplace_vector/version.cc        |     4 +-
 .../mdspan/submdspan/canonical_slices.cc           |   162 +-
 .../mdspan/submdspan/canonical_slices_neg.cc       |    41 +-
 .../{strided_slice.cc => extent_slice.cc}          |    12 +-
 .../{strided_slice_neg.cc => extent_slice_neg.cc}  |     2 +-
 .../mdspan/submdspan/selections/testcases.h        |    20 +-
 .../23_containers/mdspan/submdspan/subextents.cc   |   144 +-
 .../mdspan/submdspan/subextents_neg.cc             |    12 +-
 .../mdspan/submdspan/submdspan_mapping.cc          |    32 +-
 .../mdspan/submdspan/submdspan_neg.cc              |    40 +-
 .../testsuite/23_containers/span/init_list_cons.cc |    65 -
 .../23_containers/span/init_list_cons_neg.cc       |    36 -
 libstdc++-v3/testsuite/25_algorithms/contains/1.cc |    18 +-
 .../25_algorithms/default_template_value.cc        |    15 +-
 .../philox_engine/operators/counter_carry.cc       |    81 +
 .../testsuite/26_numerics/saturation/add.cc        |    82 +-
 .../testsuite/26_numerics/saturation/cast.cc       |    30 +-
 .../testsuite/26_numerics/saturation/div.cc        |    40 +-
 .../testsuite/26_numerics/saturation/extended.cc   |    32 +-
 .../testsuite/26_numerics/saturation/mul.cc        |    38 +-
 .../testsuite/26_numerics/saturation/sub.cc        |   108 +-
 .../testsuite/26_numerics/saturation/version.cc    |     4 +-
 .../testsuite/29_atomics/atomic_ref/address.cc     |    12 +-
 .../condition_variable_any/stop_token/wait_on.cc   |     2 +-
 libstdc++-v3/testsuite/experimental/feat-cxx14.cc  |     4 +-
 .../{runtime_format.cc => dynamic_format.cc}       |    22 +-
 libstdc++-v3/testsuite/std/format/fill.cc          |    56 +
 .../testsuite/std/format/fill_nonunicode.cc        |     5 +
 .../ranges/adaptors/{to_input => as_input}/1.cc    |    12 +-
 .../testsuite/std/ranges/adaptors/filter.cc        |    38 +-
 .../testsuite/std/ranges/adaptors/lazy_split.cc    |    10 +
 libstdc++-v3/testsuite/std/simd/arithmetic.cc      |   330 +
 .../testsuite/std/simd/arithmetic_expensive.cc     |     8 +
 libstdc++-v3/testsuite/std/simd/create_tests.h     |    15 +
 libstdc++-v3/testsuite/std/simd/creation.cc        |    70 +
 .../testsuite/std/simd/creation_expensive.cc       |     8 +
 libstdc++-v3/testsuite/std/simd/loads.cc           |   122 +
 libstdc++-v3/testsuite/std/simd/loads_expensive.cc |     8 +
 libstdc++-v3/testsuite/std/simd/mask.cc            |   113 +
 libstdc++-v3/testsuite/std/simd/mask2.cc           |   109 +
 libstdc++-v3/testsuite/std/simd/mask2_expensive.cc |     8 +
 libstdc++-v3/testsuite/std/simd/mask_expensive.cc  |     8 +
 libstdc++-v3/testsuite/std/simd/reductions.cc      |    91 +
 .../testsuite/std/simd/reductions_expensive.cc     |     8 +
 libstdc++-v3/testsuite/std/simd/shift_left.cc      |    68 +
 .../testsuite/std/simd/shift_left_expensive.cc     |     8 +
 libstdc++-v3/testsuite/std/simd/shift_right.cc     |    92 +
 .../testsuite/std/simd/shift_right_expensive.cc    |     8 +
 libstdc++-v3/testsuite/std/simd/simd_alg.cc        |   138 +
 .../testsuite/std/simd/simd_alg_expensive.cc       |     8 +
 libstdc++-v3/testsuite/std/simd/sse_intrin.cc      |    43 +
 libstdc++-v3/testsuite/std/simd/stores.cc          |    68 +
 .../testsuite/std/simd/stores_expensive.cc         |     8 +
 libstdc++-v3/testsuite/std/simd/test_setup.h       |   809 +
 libstdc++-v3/testsuite/std/simd/traits_common.cc   |   711 +
 libstdc++-v3/testsuite/std/simd/traits_impl.cc     |   202 +
 libstdc++-v3/testsuite/std/simd/traits_math.cc     |    63 +
 1612 files changed, 216202 insertions(+), 175189 deletions(-)

From meissner@gcc.gnu.org  Thu Apr 16 19:11:12 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Thu, 16 Apr 2026 19:11:12 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work240)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260416191112.A8BCD4BAE7FC@sourceware.org>

https://gcc.gnu.org/g:d8853d153967ba29ea19084a12af1abfcb53cf79

commit d8853d153967ba29ea19084a12af1abfcb53cf79
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Apr 16 15:10:53 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..aa0e60388d79
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work240 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..e025f2769456
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work240, baseline ====================
+
+2026-04-16   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-16  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From gccadmin@gcc.gnu.org  Fri Apr 17 00:16:52 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 17 Apr 2026 00:16:52 +0000 (GMT)
Subject: [gcc r16-8708] Daily bump.
Message-ID: <20260417001652.B41064BA900C@sourceware.org>

https://gcc.gnu.org/g:20230911fcadf09d2b79a75465c16d9d3397a591

commit r16-8708-g20230911fcadf09d2b79a75465c16d9d3397a591
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Apr 17 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 44 ++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/analyzer/ChangeLog  |  5 +++++
 gcc/cp/ChangeLog        | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog   | 12 ++++++++++
 gcc/testsuite/ChangeLog | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 14 ++++++++++++
 7 files changed, 193 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5e5896054c74..49394bf7d116 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,47 @@
+2026-04-16  Richard Earnshaw  <rearnsha@arm.com>
+
+	* config/arm/arm-cpus.in (cortex-m85): Allow +cdecp<n>.
+	* doc/invoke.texi: Document this
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124565
+	* config/stormy16/stormy16.cc (xstormy16_build_builtin_va_list): Set
+	TREE_PUBLIC on type_decl.
+	* config/xtensa/xtensa.cc (xtensa_build_builtin_va_list): Likewise.
+
+2026-04-16  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR target/124897
+	* doc/install.texi (amdgcn-amdhsa): Fix required LLVM version for
+	default multilib.
+
+2026-04-16  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/124877
+	* calls.cc (initialize_argument_information): Compute
+	signedness of the formal argument type before applying
+	PROMOTE_PROTOTYPES promotion.  Also apply promotion to
+	a smaller than int integer first member type of a
+	transparent union.
+	* target.def (promote_prototypes): Update documentation.
+	* doc/tm.texi: Re-generate.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124892
+	* config/i386/i386.md (clz<mode>2_lzcnt_nf,
+	<lt_zcnt>_<mode>_nf, popcount<mode>2_nf): Emit explicit
+	set of (match_dup 0) to (const_int 0) without flags clobber instead of
+	using ix86_expand_clear.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124891
+	* tree-ssa-propagate.cc
+	(substitute_and_fold_dom_walker::before_dom_children): Call update_stmt
+	in the did_replace case before calling fold_stmt.
+
 2026-04-15  Martin Jambor  <mjambor@suse.cz>
 
 	PR tree-optimization/122976
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index caade3775cfa..0f49f77bbf06 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260416
+20260417
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 9f28dd24e284..055739a4a70b 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-16  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* engine.cc (impl_region_model_context::on_unexpected_tree_code): Print
+	"<unknown>" when m_file or m_function is NULL.
+
 2026-03-12  David Malcolm  <dmalcolm@redhat.com>
 
 	PR analyzer/124451
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3c38e04bcaac..6cb85c1c26f8 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,62 @@
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (dump_data_member_spec): Temporarily ignore
+	-Wformat and -Wformat-diag warnings.
+
+2026-04-16  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124614
+	* cp-tree.h (valid_splice_for_member_access_p): Declare.
+	(dump_data_member_spec): Declare.
+	* error.cc (dump_expr) <case REFLECT_EXPR>: Print a data member
+	description.
+	* parser.cc (cp_parser_splice_expression): Use
+	valid_splice_for_member_access_p.
+	* pt.cc (tsubst_splice_expr): Likewise.
+	* reflect.cc (dump_data_member_spec): New.
+	(eval_display_string_of): Use it.
+	(valid_splice_for_member_access_p): New.
+	(check_splice_expr): Check that we got
+	valid_splice_for_member_access_p for a member access.
+	* typeck.cc (finish_class_member_access_expr): Use
+	valid_splice_for_member_access_p.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124120
+	* pt.cc (finish_expansion_stmt): Give iter variable an artificial
+	name.
+
+2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+	for an empty union member.
+
+2026-04-16  Iain Sandoe  <iains.gcc@gmail.com>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/124648
+	* cp-tree.h (DECL_CONTRACT_CAPTURE_P): New.
+	* parser.cc (cp_parser_lambda_body): Scan the captures for
+	ones were only added in contract assertion scopes.  Issue
+	errors for those found.
+	* semantics.cc (process_outer_var_ref): Mark implicit
+	captures that occur in contract assertion scopes.  Clear
+	the mark if the entity is subsequently captured 'normally'.
+	(set_contract_capture_flag): New.
+
+2026-04-16  Iain Sandoe  <iains.gcc@gmail.com>
+	    Jason Merrill  <jason@redhat.com>
+
+	* contracts.cc (view_as_const): Check for const-qualified
+	class pointer before wrapping it.
+	* parser.cc (cp_parser_late_contract_condition): Use revised
+	handling of const-ification of class pointers.
+	(cp_parser_contract_assert): Likewise.
+	(cp_parser_function_contract_specifier): Likewise.
+
 2026-04-15  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/120338
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e3de8ff2620f..9aeb54ae1f54 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-16  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/120140
+	* resolve.cc (resolve_elemental_dependencies): New function,
+	preceded by prototype for add_temp_assign_before_call.
+	(resolve_call): If an elemental subroutine call has at least
+	two actual erguments, call resolve_elemental_dependencies to
+	generate temporary expressions for the arguments if required.
+	(get_temp_from_expr): Add optional boolean argument, which if
+	set, makes the resulting temporary unconditionally allocatable.
+	(add_temp_assign_before_call): New function.
+
 2026-04-14  Harald Anlauf  <anlauf@gmx.de>
 
 	PR fortran/124807
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 23165a858f02..1a0ad88b2d45 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,61 @@
+2026-04-16  Richard Earnshaw  <rearnsha@arm.com>
+
+	* gcc.target/arm/multilib.exp: Test CDE options on cortex-m85.
+
+2026-04-16  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124614
+	* g++.dg/reflect/member23.C: New test.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124120
+	* g++.dg/cpp26/expansion-stmt40.C: New test.
+
+2026-04-16  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/123352
+	* gfortran.dg/defined_assignment_13.f90: Add previously failing
+	tests.
+
+2026-04-16  Uros Bizjak  <ubizjak@gmail.com>
+
+	* gcc.target/i386/pr90178.c: Scan for 2 `ret` instructions.
+
+2026-04-16  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/124877
+	* gcc.target/i386/pr124877-1.c: New testcase.
+	* gcc.target/i386/pr124877-2.c: Likewise.
+	* gcc.target/i386/pr124877-3.c: Likewise.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124892
+	* gcc.target/i386/apx-pr124892.c: New test.
+
+2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124891
+	* gcc.dg/torture/pr124891.c: New test.
+
+2026-04-16  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/aarch64/sve/acle/asm/test_sve_acle.h
+	(__STDC_LIMIT_MACROS): Define.
+
+2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* g++.dg/cpp2a/constexpr-union10.C: New test.
+
+2026-04-16  Iain Sandoe  <iains.gcc@gmail.com>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/124648
+	* g++.dg/contracts/cpp26/expr.prim.lambda.closure.p10.C: New test.
+
 2026-04-15  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/120338
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1341b06ac2be..974866b89f63 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,17 @@
+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

From gccadmin@gcc.gnu.org  Fri Apr 17 00:19:16 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 17 Apr 2026 00:19:16 +0000 (GMT)
Subject: [gcc r15-11090] Daily bump.
Message-ID: <20260417001916.9E3B14BA900C@sourceware.org>

https://gcc.gnu.org/g:27c192a2aa23446a033960add64f5de26516ea63

commit r15-11090-g27c192a2aa23446a033960add64f5de26516ea63
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Apr 17 00:18:46 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        |  9 +++++++++
 gcc/testsuite/ChangeLog |  8 ++++++++
 libstdc++-v3/ChangeLog  | 12 ++++++++++++
 4 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index caade3775cfa..0f49f77bbf06 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260416
+20260417
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 18b5b6f30b5a..abc23fb0ce5a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2026-04-16  Marek Polacek  <polacek@redhat.com>
+
+	Backported from master:
+	2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/120338
+	* decl.cc (cp_finish_decl): Set DECL_INITIAL to error_mark_node
+	instead of NULL_TREE for deleted main.
+
 2026-04-15  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 02b2a5a025c3..101e9678b8fa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-16  Marek Polacek  <polacek@redhat.com>
+
+	Backported from master:
+	2026-04-15  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/120338
+	* g++.dg/cpp0x/deleted19.C: New test.
+
 2026-04-15  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4910ec9119e8..90303fdd8940 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-16  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	Backported from master:
+	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-07  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:

From redi@gcc.gnu.org  Fri Apr 17 09:16:13 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 09:16:13 +0000 (GMT)
Subject: [gcc r16-8713] libstdc++: Skip std::generate_canonical tests for IBM
 long double [PR124540]
Message-ID: <20260417091613.F3F5F4BAD145@sourceware.org>

https://gcc.gnu.org/g:37a9529bcc8b2e550b39fff2f7b55ed578fb7e19

commit r16-8713-g37a9529bcc8b2e550b39fff2f7b55ed578fb7e19
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 16 16:08:45 2026 +0100

    libstdc++: Skip std::generate_canonical tests for IBM long double [PR124540]
    
    This tests assumes IEEE semantics, so fails on POWER with IBM long
    double format. Just skip the long double part of the test.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/124540
            * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
            Skip long double tests for IBM long double format.

Diff:
---
 .../26_numerics/random/uniform_real_distribution/operators/gencanon.cc  | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
index de3b0213cf57..7ef81c656934 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
@@ -201,11 +201,13 @@ test00()
     VERIFY(skips == 0);
   }
   { // long double
+#if __LDBL_MANT_DIG__ != 106 // disable this for IBM double double
     int skips{};
     auto rng2{rng};
     auto rng3{rng};
     test01<long double>(rng2, rng3, skips);
     VERIFY(skips == 0);
+#endif
   }
 #ifndef _GLIBCXX_GENERATE_CANONICAL_STRICT
 #  ifdef __SIZEOF_FLOAT128__

From redi@gcc.gnu.org  Fri Apr 17 09:58:21 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 09:58:21 +0000 (GMT)
Subject: [gcc r16-8714] libstdc++: Add module initialization functions to the
 library [PR124268]
Message-ID: <20260417095821.26DE54BAD145@sourceware.org>

https://gcc.gnu.org/g:9d02b118ee10506f90c7cf0e439108f48d370fc1

commit r16-8714-g9d02b118ee10506f90c7cf0e439108f48d370fc1
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Mar 11 21:05:13 2026 +0000

    libstdc++: Add module initialization functions to the library [PR124268]
    
    This tries to ensure that the module init functions are present in
    libstdc++.so and libstdc++.a, so that users of the std and std.compat
    modules don't need to manually link to std.o and/or std.compat.o in
    addition to compiling the CMIs.
    
    This also adds a clean-local target to remove the generated interface
    units and manifest, and the gcm.cache directory for the CMIs.
    
    This was previously committed and then reverted because it broke
    bootstrap on a few targets. Most of the reasons the module interface
    units failed to compile have (we believe) now been addressed with G++
    changes, although there's still a problem on amdgcn (PR124554). Due to
    that problem, and any not yet known problems, this version of the patch
    tries to avoid breaking bootstrap again by allowing the modules to fail
    to compile. If compiling std.o or std.compat.o fails then an empty
    translation unit will be compiled and added to libstdc++.so instead.
    
    This means that we will only export the module initialization functions
    from the library if the module can be compiled for the target. This
    seems fine because we don't need to initialize anything for a module
    that cannot even be compiled! Fixing PR124554 and removing this kluge
    should be done for GCC 17 in stage 1.
    
    libstdc++-v3/ChangeLog:
    
            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.

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver |  4 ++
 libstdc++-v3/src/Makefile.am        |  6 ++-
 libstdc++-v3/src/Makefile.in        |  6 ++-
 libstdc++-v3/src/c++23/Makefile.am  | 45 +++++++++++++++++++++-
 libstdc++-v3/src/c++23/Makefile.in  | 76 ++++++++++++++++++++++++++++++-------
 5 files changed, 117 insertions(+), 20 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 71b3c175bbdf..bd4da6418295 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2617,6 +2617,10 @@ GLIBCXX_3.4.35 {
     _ZSt15__get_once_callv;
 #endif
 
+    # Module inititialization symbols for std and std.compat modules.
+    _ZGIW3std;
+    _ZGIW3stdW6compat;
+
 } GLIBCXX_3.4.34;
 
 # Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 55a8c88a0e12..35a497a15886 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -145,7 +145,8 @@ libstdc___la_LIBADD = \
 	$(top_builddir)/src/c++98/libc++98convenience.la \
 	$(top_builddir)/src/c++11/libc++11convenience.la \
 	$(top_builddir)/src/c++17/libc++17convenience.la \
-	$(top_builddir)/src/c++20/libc++20convenience.la
+	$(top_builddir)/src/c++20/libc++20convenience.la \
+	$(top_builddir)/src/c++23/libmodulesconvenience.la
 
 libstdc___la_DEPENDENCIES = \
 	${version_dep} \
@@ -153,7 +154,8 @@ libstdc___la_DEPENDENCIES = \
 	$(top_builddir)/src/c++98/libc++98convenience.la \
 	$(top_builddir)/src/c++11/libc++11convenience.la \
 	$(top_builddir)/src/c++17/libc++17convenience.la \
-	$(top_builddir)/src/c++20/libc++20convenience.la
+	$(top_builddir)/src/c++20/libc++20convenience.la \
+	$(top_builddir)/src/c++23/libmodulesconvenience.la
 
 if ENABLE_DARWIN_AT_RPATH
 libstdc___darwin_rpath = -Wc,-nodefaultrpaths
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index f0ad019a71fd..811d0a5ce4a8 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -555,7 +555,8 @@ libstdc___la_LIBADD = \
 	$(top_builddir)/src/c++98/libc++98convenience.la \
 	$(top_builddir)/src/c++11/libc++11convenience.la \
 	$(top_builddir)/src/c++17/libc++17convenience.la \
-	$(top_builddir)/src/c++20/libc++20convenience.la
+	$(top_builddir)/src/c++20/libc++20convenience.la \
+	$(top_builddir)/src/c++23/libmodulesconvenience.la
 
 libstdc___la_DEPENDENCIES = \
 	${version_dep} \
@@ -563,7 +564,8 @@ libstdc___la_DEPENDENCIES = \
 	$(top_builddir)/src/c++98/libc++98convenience.la \
 	$(top_builddir)/src/c++11/libc++11convenience.la \
 	$(top_builddir)/src/c++17/libc++17convenience.la \
-	$(top_builddir)/src/c++20/libc++20convenience.la
+	$(top_builddir)/src/c++20/libc++20convenience.la \
+	$(top_builddir)/src/c++23/libmodulesconvenience.la
 
 @ENABLE_DARWIN_AT_RPATH_TRUE@libstdc___darwin_rpath =  \
 @ENABLE_DARWIN_AT_RPATH_TRUE@	-Wc,-nodefaultrpaths \
diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index b031ec69576c..5b2812abd228 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -23,10 +23,13 @@
 include $(top_srcdir)/fragment.am
 
 # Convenience library for C++23 runtime.
-noinst_LTLIBRARIES = libc++23convenience.la
+# This libc++23convenience.la one isn't linked into libstdc++.la yet,
+# so build an additional libmodulesconvenience.la which is linked in.
+noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la
 
-# Module std support.  Not compiled for now, only installed.
+# Module std support.
 # Let's install the interface units in the bits subdirectory.
+# We also compile them and include them in libmodulesconvenience.la
 toolexeclib_DATA = libstdc++.modules.json
 includebitsdir = $(gxx_include_dir)/bits
 includebits_DATA = std.cc std.compat.cc
@@ -59,6 +62,9 @@ stamp-modules-bits: $(includebits_DATA)
 
 all-local: stamp-module-manifest stamp-modules-bits
 
+clean-local:
+	rm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache
+
 headers =
 
 if ENABLE_EXTERN_TEMPLATE
@@ -80,12 +86,47 @@ else
 libc__23convenience_la_SOURCES =
 endif
 
+libmodulesconvenience_la_SOURCES = std.cc std.compat.cc
+
 # Use C++26 so that std::filebuf::native_handle() is available.
 print.lo: print.cc
 	$(LTCXXCOMPILE) -std=gnu++26 -c $<
 print.o: print.cc
 	$(CXXCOMPILE) -std=gnu++26 -c $<
 
+MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \
+	-Wno-unknown-pragmas
+
+# These go into libmodulesconvenience.la and are linked into libstdc++
+std.lo: std.cc
+	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.o: std.cc
+	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.compat.lo: std.compat.cc std.lo
+	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std.compat module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.compat.o: std.compat.cc std.o
+	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std.compat module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
 # set this option because CONFIG_CXXFLAGS has to be after
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index fd9110ab8ad2..75da9c008ab6 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -133,6 +133,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
+libmodulesconvenience_la_LIBADD =
+am_libmodulesconvenience_la_OBJECTS = std.lo std.compat.lo
+libmodulesconvenience_la_OBJECTS =  \
+	$(am_libmodulesconvenience_la_OBJECTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -159,7 +163,8 @@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
-SOURCES = $(libc__23convenience_la_SOURCES)
+SOURCES = $(libc__23convenience_la_SOURCES) \
+	$(libmodulesconvenience_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -457,10 +462,13 @@ WARN_CXXFLAGS = \
 AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
 
 # Convenience library for C++23 runtime.
-noinst_LTLIBRARIES = libc++23convenience.la
+# This libc++23convenience.la one isn't linked into libstdc++.la yet,
+# so build an additional libmodulesconvenience.la which is linked in.
+noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la
 
-# Module std support.  Not compiled for now, only installed.
+# Module std support.
 # Let's install the interface units in the bits subdirectory.
+# We also compile them and include them in libmodulesconvenience.la
 toolexeclib_DATA = libstdc++.modules.json
 includebitsdir = $(gxx_include_dir)/bits
 includebits_DATA = std.cc std.compat.cc
@@ -473,6 +481,10 @@ headers =
 sources = stacktrace.cc print.cc
 @GLIBCXX_HOSTED_FALSE@libc__23convenience_la_SOURCES = 
 @GLIBCXX_HOSTED_TRUE@libc__23convenience_la_SOURCES = $(sources)  $(inst_sources)
+libmodulesconvenience_la_SOURCES = std.cc std.compat.cc
+MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \
+	-Wno-unknown-pragmas
+
 
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
@@ -586,6 +598,9 @@ clean-noinstLTLIBRARIES:
 libc++23convenience.la: $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_DEPENDENCIES) $(EXTRA_libc__23convenience_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK)  $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_LIBADD) $(LIBS)
 
+libmodulesconvenience.la: $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_DEPENDENCIES) $(EXTRA_libmodulesconvenience_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(CXXLINK)  $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_LIBADD) $(LIBS)
+
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 
@@ -739,8 +754,8 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	mostlyclean-am
+clean-am: clean-generic clean-libtool clean-local \
+	clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
 	-rm -f Makefile
@@ -809,15 +824,15 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
-	clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags dvi dvi-am \
-	html html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am \
-	install-includebitsDATA install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip install-toolexeclibDATA \
+	clean-generic clean-libtool clean-local \
+	clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-includebitsDATA install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip install-toolexeclibDATA \
 	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
@@ -855,6 +870,9 @@ stamp-modules-bits: $(includebits_DATA)
 
 all-local: stamp-module-manifest stamp-modules-bits
 
+clean-local:
+	rm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache
+
 vpath % $(top_srcdir)/src/c++23
 
 # Use C++26 so that std::filebuf::native_handle() is available.
@@ -863,6 +881,36 @@ print.lo: print.cc
 print.o: print.cc
 	$(CXXCOMPILE) -std=gnu++26 -c $<
 
+# These go into libmodulesconvenience.la and are linked into libstdc++
+std.lo: std.cc
+	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.o: std.cc
+	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.compat.lo: std.compat.cc std.lo
+	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std.compat module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+std.compat.o: std.compat.cc std.o
+	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
+	  echo "Cannot compile std.compat module" >&2; \
+	  echo "Module initialization function will be missing" >&2; \
+	  echo > $<.tmp && mv $<.tmp $< && \
+	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
+	fi
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:

From redi@gcc.gnu.org  Fri Apr 17 10:01:14 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 10:01:14 +0000 (GMT)
Subject: [gcc r16-8715] libstdc++: Improve Doxygen comments in <chrono>
Message-ID: <20260417100114.4D2D64BAD14A@sourceware.org>

https://gcc.gnu.org/g:f8f9c525ff3de8f1794f5496f6705c37cf92974f

commit r16-8715-gf8f9c525ff3de8f1794f5496f6705c37cf92974f
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 23:44:17 2026 +0100

    libstdc++: Improve Doxygen comments in <chrono>
    
    libstdc++-v3/ChangeLog:
    
            * include/std/chrono: Improve Doxygen comments.

Diff:
---
 libstdc++-v3/include/std/chrono | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 573bcfc7c4bc..7c887f56cc23 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -301,12 +301,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  { return utc_clock::to_sys(__t); }
       };
 
+    /// @cond undocumented
     template<typename _Tp, typename _Clock>
       inline constexpr bool __is_time_point_for_v = false;
 
     template<typename _Clock, typename _Duration>
       inline constexpr bool
        __is_time_point_for_v<time_point<_Clock, _Duration>, _Clock> = true;
+    /// @endcond
 
     // Conversions between system_clock and other clocks
 
@@ -517,6 +519,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     inline constexpr last_spec last{};
 
+    /// @cond undocumented
     namespace __detail
     {
       // Helper to __add_modulo and __sub_modulo.
@@ -564,7 +567,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       inline constexpr unsigned __days_per_month[12]
 	= { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
-    }
+    } // namespace __detail
+    /// @endcond
 
     // DAY
 
@@ -1438,6 +1442,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     // YEAR_MONTH
 
+    /// @cond undocumented
     namespace __detail
     {
       // [time.cal.ym], [time.cal.ymd], etc constrain the 'months'-based
@@ -1454,6 +1459,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // 'years'.
       using __months_years_conversion_disambiguator = void;
     }
+    /// @endcond
 
     class year_month
     {
@@ -2489,14 +2495,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     // 12/24 HOURS FUNCTIONS
 
+    /// True if a `chrono::hours` value represents a time before midday.
     constexpr bool
     is_am(const hours& __h) noexcept
     { return 0h <= __h && __h <= 11h; }
 
+    /// True if a `chrono::hours` value represents a time after midday.
     constexpr bool
     is_pm(const hours& __h) noexcept
     { return 12h <= __h && __h <= 23h; }
 
+    /// Convert a 24-hour time into a 12-hour time.
     constexpr hours
     make12(const hours& __h) noexcept
     {
@@ -2507,6 +2516,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __h;
     }
 
+    /// Convert a 12-hour time and p.m. flag into a 24-hour time.
     constexpr hours
     make24(const hours& __h, bool __is_pm) noexcept
     {
@@ -2604,6 +2614,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
     };
 
+    /// @cond undocumented
     template<typename _Duration>
       [[noreturn]] void
       __throw_bad_local_time(const local_time<_Duration>& __tp,
@@ -2617,6 +2628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	__builtin_abort();
 #endif
       }
+    /// @endcond
 
     enum class choose { earliest, latest };
 
@@ -3337,6 +3349,7 @@ namespace __detail
 
  namespace chrono {
 
+   /// @cond undocumented
    template<typename _T1, typename... _Ts>
      [[__gnu__::__always_inline__]]
      constexpr auto
@@ -3407,6 +3420,7 @@ namespace __detail
 	   return chrono::__int_hash(__res);
 	 }
      }
+   /// @endcond
  } // namespace chrono
 
   // duration

From jakub@gcc.gnu.org  Fri Apr 17 12:27:32 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri, 17 Apr 2026 12:27:32 +0000 (GMT)
Subject: [gcc r16-8717] libstdc++: Update baseline_symbols.txt on some Linux
 arches
Message-ID: <20260417122733.001A04BC0577@sourceware.org>

https://gcc.gnu.org/g:720d2a68c47f12ad3e3ae09bc3e6a057a2d9e2a7

commit r16-8717-g720d2a68c47f12ad3e3ae09bc3e6a057a2d9e2a7
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Apr 17 14:25:48 2026 +0200

    libstdc++: Update baseline_symbols.txt on some Linux arches
    
    The following patch updates baseline_symbols.txt files.
    
    Most of these come from Fedora package builds, i386 used to be the same as
    i486 in GCC <= 11 but hasn't been updated since, so the changes are larger
    there.  riscv64 is from my build on cfarm95 where i'm debugging bitint
    issues currently.  powerpc64 is hand edited mix of powerpc64le and old
    powerpc64 (i.e. basically powerpc64le with IEEE stuff and DF128/DF64x stuff
    removed).
    
    Verification of the changes (ignoring the i386 changes which are across
    multiple GCC versions) looks ok, in particular:
    grep ^- patchwithouti386 | grep -v ^---
    yields nothing
    grep ^+ patchwithouti386 | grep -v ^+++ | grep -v GLIBCXX_3.4.35 | grep -v CXXABI_1.3.17
    yields also nothing
    grep ^+ patchwitouti386 | grep -v ^+++ | sort | uniq -c | sort -n
    shows mostly 8 occurrences of stuff, the exceptions are just
          1 +OBJECT:16:_ZTIDF16_@@CXXABI_1.3.17
          1 +OBJECT:32:_ZTIPDF16_@@CXXABI_1.3.17
          1 +OBJECT:32:_ZTIPKDF16_@@CXXABI_1.3.17
          2 +FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
          2 +FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
          6 +FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
          6 +FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
    The 6 vs. 2 is unsigned int vs. unsigned long difference, supposedly
    size_t, and _ZTI*DF16_ are new just on s390x intentionally.
    
    2025-05-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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 .../post/aarch64-linux-gnu/baseline_symbols.txt    |  65 +++++++
 .../abi/post/i386-linux-gnu/baseline_symbols.txt   | 193 ++++++++++++++++++++-
 .../abi/post/i486-linux-gnu/baseline_symbols.txt   |  65 +++++++
 .../post/powerpc64-linux-gnu/baseline_symbols.txt  |  65 +++++++
 .../powerpc64le-linux-gnu/baseline_symbols.txt     |  65 +++++++
 .../post/riscv64-linux-gnu/baseline_symbols.txt    |  65 +++++++
 .../abi/post/s390x-linux-gnu/baseline_symbols.txt  |  68 ++++++++
 .../post/x86_64-linux-gnu/32/baseline_symbols.txt  |  65 +++++++
 .../abi/post/x86_64-linux-gnu/baseline_symbols.txt |  65 +++++++
 9 files changed, 715 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
index 1ee09660884e..defe91572b81 100644
--- a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4224,6 +4286,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4585,6 +4648,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4623,6 +4687,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
index 259cfdbaaa4b..2212f879de3e 100644
--- a/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -475,6 +500,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4
 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4
 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30
 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4
@@ -485,6 +511,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30
 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4
@@ -495,7 +522,13 @@ FUNC:_ZNKSt11__timepunctIwE7_M_daysEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIwE8_M_am_pmEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
+FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12bad_weak_ptr4whatEv@@GLIBCXX_3.4.15
 FUNC:_ZNKSt12future_error4whatEv@@GLIBCXX_3.4.14
 FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
@@ -529,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -666,6 +700,13 @@ FUNC:_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4
 FUNC:_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4
 FUNC:_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4
 FUNC:_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4
+FUNC:_ZNKSt6chrono4tzdb11locate_zoneESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono4tzdb12current_zoneEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono9time_zone15_M_get_sys_infoENS_10time_pointINS_3_V212system_clockENS_8durationIxSt5ratioILx1ELx1EEEEEE@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono9time_zone17_M_get_local_infoENS_10time_pointINS_7local_tENS_8durationIxSt5ratioILx1ELx1EEEEEE@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono9tzdb_list14const_iteratordeEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono9tzdb_list5beginEv@@GLIBCXX_3.4.31
+FUNC:_ZNKSt6chrono9tzdb_list5frontEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt6locale2id5_M_idEv@@GLIBCXX_3.4
 FUNC:_ZNKSt6locale4nameB5cxx11Ev@@GLIBCXX_3.4.21
 FUNC:_ZNKSt6locale4nameEv@@GLIBCXX_3.4
@@ -744,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -801,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -862,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -954,6 +1007,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
@@ -973,6 +1027,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
@@ -1225,6 +1280,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21
 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
@@ -1244,6 +1300,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21
 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
@@ -1447,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1464,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1712,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1729,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2088,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -2106,6 +2174,10 @@ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policy
 FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
 FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
 FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+FUNC:_ZNSt12__sso_stringC1Ev@@GLIBCXX_3.4.34
+FUNC:_ZNSt12__sso_stringC2Ev@@GLIBCXX_3.4.34
+FUNC:_ZNSt12__sso_stringD1Ev@@GLIBCXX_3.4.34
+FUNC:_ZNSt12__sso_stringD2Ev@@GLIBCXX_3.4.34
 FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
 FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
 FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
@@ -2818,6 +2890,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4
 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30
 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8
 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8
 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8
@@ -2928,7 +3001,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
-FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11
 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
@@ -3087,9 +3161,20 @@ FUNC:_ZNSt6__norm15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.14
 FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
 FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+FUNC:_ZNSt6chrono11locate_zoneESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono11reload_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono12current_zoneEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6chrono13get_tzdb_listEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
+FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
@@ -3186,11 +3271,14 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@@GLIBCX
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_S_allocateERS3_j@@GLIBCXX_3.4.32
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@@GLIBCXX_3.4.23
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@@GLIBCXX_3.4.23
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb0EEEvPKcj@@GLIBCXX_3.4.34
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKcj@@GLIBCXX_3.4.34
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3205,6 +3293,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_replace_coldEPcjPKcjj@@GLIBCXX_3.4.31
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@@GLIBCXX_3.4.21
@@ -3300,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3317,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3337,11 +3428,14 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@@GLIBCX
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_S_allocateERS3_j@@GLIBCXX_3.4.32
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@@GLIBCXX_3.4.23
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@@GLIBCXX_3.4.23
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructILb0EEEvPKwj@@GLIBCXX_3.4.34
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructILb1EEEvPKwj@@GLIBCXX_3.4.34
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
@@ -3356,6 +3450,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS5_S5_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_replace_coldEPwjPKwjj@@GLIBCXX_3.4.31
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@@GLIBCXX_3.4.21
@@ -3451,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3468,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3903,11 +4000,19 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
+FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
@@ -4100,6 +4205,7 @@ FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
 FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
 FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZSt10from_charsPKcS0_RDF128_St12chars_format@@GLIBCXX_3.4.31
 FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.29
 FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.29
 FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.29
@@ -4113,6 +4219,50 @@ FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCX
 FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20
 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5
+FUNC:_ZSt15__try_use_facetINSt7__cxx1110moneypunctIcLb0EEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx1110moneypunctIcLb1EEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx1110moneypunctIwLb0EEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx1110moneypunctIwLb1EEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx117collateIcEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx117collateIwEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118messagesIcEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118messagesIwEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118numpunctIcEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118numpunctIwEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt10moneypunctIcLb0EEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt10moneypunctIcLb1EEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt10moneypunctIwLb0EEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt10moneypunctIwLb1EEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt11__timepunctIcEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt11__timepunctIwEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt5ctypeIcEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt5ctypeIwEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7codecvtIcc11__mbstate_tEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7codecvtIwc11__mbstate_tEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7collateIcEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7collateIwEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8messagesIcEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8messagesIwEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8numpunctIcEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8numpunctIwEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
+FUNC:_ZSt15__try_use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEPKT_RKSt6locale@@GLIBCXX_3.4.31
 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15
 FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20
 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
@@ -4137,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4150,12 +4301,18 @@ FUNC:_ZSt20__throw_future_errori@@GLIBCXX_3.4.14
 FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
 FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
 FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
+FUNC:_ZSt20__to_chars_float16_tPcS_fSt12chars_format@@GLIBCXX_3.4.31
 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30
 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt21__to_chars_bfloat16_tPcS_fSt12chars_format@@GLIBCXX_3.4.31
+FUNC:_ZSt21ios_base_library_initv@@GLIBCXX_3.4.32
+FUNC:_ZSt22__from_chars_float16_tPKcS0_RfSt12chars_format@@GLIBCXX_3.4.31
 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
+FUNC:_ZSt23__from_chars_bfloat16_tPKcS0_RfSt12chars_format@@GLIBCXX_3.4.31
 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4
 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4
 FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20
@@ -4180,6 +4337,9 @@ FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cx
 FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@@GLIBCXX_3.4.21
 FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
 FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt8to_charsPcS_DF128_@@GLIBCXX_3.4.31
+FUNC:_ZSt8to_charsPcS_DF128_St12chars_format@@GLIBCXX_3.4.31
+FUNC:_ZSt8to_charsPcS_DF128_St12chars_formati@@GLIBCXX_3.4.31
 FUNC:_ZSt8to_charsPcS_d@@GLIBCXX_3.4.29
 FUNC:_ZSt8to_charsPcS_dSt12chars_format@@GLIBCXX_3.4.29
 FUNC:_ZSt8to_charsPcS_dSt12chars_formati@@GLIBCXX_3.4.29
@@ -4447,6 +4607,7 @@ FUNC:__cxa_allocate_exception@@CXXABI_1.3
 FUNC:__cxa_bad_cast@@CXXABI_1.3
 FUNC:__cxa_bad_typeid@@CXXABI_1.3
 FUNC:__cxa_begin_catch@@CXXABI_1.3
+FUNC:__cxa_call_terminate@@CXXABI_1.3.15
 FUNC:__cxa_call_unexpected@@CXXABI_1.3
 FUNC:__cxa_current_exception_type@@CXXABI_1.3
 FUNC:__cxa_deleted_virtual@@CXXABI_1.3.6
@@ -4489,6 +4650,9 @@ OBJECT:0:CXXABI_1.3.10
 OBJECT:0:CXXABI_1.3.11
 OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
+OBJECT:0:CXXABI_1.3.14
+OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4523,6 +4687,12 @@ OBJECT:0:GLIBCXX_3.4.27
 OBJECT:0:GLIBCXX_3.4.28
 OBJECT:0:GLIBCXX_3.4.29
 OBJECT:0:GLIBCXX_3.4.3
+OBJECT:0:GLIBCXX_3.4.30
+OBJECT:0:GLIBCXX_3.4.31
+OBJECT:0:GLIBCXX_3.4.32
+OBJECT:0:GLIBCXX_3.4.33
+OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
@@ -4705,6 +4875,13 @@ OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
 OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
 OBJECT:16:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
 OBJECT:16:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:16:_ZTIPDF128_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF16_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF16b@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF32_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF32x@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF64_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPDF64x@@CXXABI_1.3.14
 OBJECT:16:_ZTIPDd@@CXXABI_1.3.4
 OBJECT:16:_ZTIPDe@@CXXABI_1.3.4
 OBJECT:16:_ZTIPDf@@CXXABI_1.3.4
@@ -4712,6 +4889,13 @@ OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
 OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
 OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
 OBJECT:16:_ZTIPDu@@CXXABI_1.3.12
+OBJECT:16:_ZTIPKDF128_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF16_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF16b@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF32_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF32x@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF64_@@CXXABI_1.3.14
+OBJECT:16:_ZTIPKDF64x@@CXXABI_1.3.14
 OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
 OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
 OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
@@ -5860,6 +6044,13 @@ OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@G
 OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
 OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
 OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZTIDF128_@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF16_@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF16b@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF32_@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF32x@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF64_@@CXXABI_1.3.14
+OBJECT:8:_ZTIDF64x@@CXXABI_1.3.14
 OBJECT:8:_ZTIDd@@CXXABI_1.3.4
 OBJECT:8:_ZTIDe@@CXXABI_1.3.4
 OBJECT:8:_ZTIDf@@CXXABI_1.3.4
diff --git a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
index 938e91414890..2212f879de3e 100644
--- a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4225,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4589,6 +4652,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4628,6 +4692,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
index 15c08ceaab2d..f3b13ed2d00b 100644
--- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -900,6 +927,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -957,10 +987,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -1018,6 +1054,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1607,6 +1646,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1624,6 +1664,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1876,6 +1917,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1893,6 +1935,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2252,6 +2295,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3310,6 +3360,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3527,6 +3579,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3544,6 +3597,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3682,6 +3736,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3699,6 +3754,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -4134,11 +4190,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4424,6 +4486,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4830,6 +4893,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4869,6 +4933,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
index 601d60b24f09..43eca8d251cc 100644
--- a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -1042,6 +1069,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -1099,10 +1129,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -1160,6 +1196,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1749,6 +1788,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1766,6 +1806,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -2022,6 +2063,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2039,6 +2081,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2398,6 +2441,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3481,6 +3531,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3698,6 +3750,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3715,6 +3768,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3853,6 +3907,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3870,6 +3925,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -4305,11 +4361,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4606,6 +4668,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -5038,6 +5101,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -5078,6 +5142,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
index 7c2c19ba7103..5efb67d00810 100644
--- a/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE1EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE1EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE1EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE1EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE1EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE1EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4224,6 +4286,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4586,6 +4649,7 @@ OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
 OBJECT:0:CXXABI_1.3.16
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4624,6 +4688,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
index 8c204af66fcf..5d48c10b7d58 100644
--- a/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -900,6 +927,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -957,10 +987,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -1018,6 +1054,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1607,6 +1646,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1624,6 +1664,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1876,6 +1917,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1893,6 +1935,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2252,6 +2295,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3310,6 +3360,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3527,6 +3579,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3544,6 +3597,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3682,6 +3736,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3699,6 +3754,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -4134,11 +4190,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4424,6 +4486,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4830,6 +4893,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4869,6 +4933,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
@@ -4951,6 +5016,7 @@ OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
 OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
 OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
 OBJECT:16:_ZTIDF128_@@CXXABI_1.3.14
+OBJECT:16:_ZTIDF16_@@CXXABI_1.3.17
 OBJECT:16:_ZTIDF32_@@CXXABI_1.3.14
 OBJECT:16:_ZTIDF32x@@CXXABI_1.3.14
 OBJECT:16:_ZTIDF64_@@CXXABI_1.3.14
@@ -5615,6 +5681,7 @@ OBJECT:30:_ZTSSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
 OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
 OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
 OBJECT:32:_ZTIPDF128_@@CXXABI_1.3.14
+OBJECT:32:_ZTIPDF16_@@CXXABI_1.3.17
 OBJECT:32:_ZTIPDF32_@@CXXABI_1.3.14
 OBJECT:32:_ZTIPDF32x@@CXXABI_1.3.14
 OBJECT:32:_ZTIPDF64_@@CXXABI_1.3.14
@@ -5627,6 +5694,7 @@ OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
 OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
 OBJECT:32:_ZTIPDu@@CXXABI_1.3.12
 OBJECT:32:_ZTIPKDF128_@@CXXABI_1.3.14
+OBJECT:32:_ZTIPKDF16_@@CXXABI_1.3.17
 OBJECT:32:_ZTIPKDF32_@@CXXABI_1.3.14
 OBJECT:32:_ZTIPKDF32x@@CXXABI_1.3.14
 OBJECT:32:_ZTIPKDF64_@@CXXABI_1.3.14
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
index 938e91414890..2212f879de3e 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4225,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4589,6 +4652,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4628,6 +4692,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
index 01f606c8949b..8d8858221125 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4225,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4589,6 +4652,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4628,6 +4692,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6

From redi@gcc.gnu.org  Fri Apr 17 12:44:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 12:44:12 +0000 (GMT)
Subject: [gcc r16-8718] libstdc++: Update Solaris baselines for GCC 16.1
Message-ID: <20260417124412.CFCA34BA2E19@sourceware.org>

https://gcc.gnu.org/g:20af0e529a79186f7600c87554aeee3231f80bee

commit r16-8718-g20af0e529a79186f7600c87554aeee3231f80bee
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Apr 17 11:49:47 2026 +0100

    libstdc++: Update Solaris baselines for GCC 16.1
    
    This patch updates the Solaris libstdc++ baselines for GCC 16.1.
    
    Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 on trunk.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 .../post/i386-solaris/amd64/baseline_symbols.txt   | 65 ++++++++++++++++++++++
 .../abi/post/i386-solaris/baseline_symbols.txt     | 65 ++++++++++++++++++++++
 .../abi/post/sparc-solaris/baseline_symbols.txt    | 65 ++++++++++++++++++++++
 .../sparc-solaris/sparcv9/baseline_symbols.txt     | 65 ++++++++++++++++++++++
 4 files changed, 260 insertions(+)

diff --git a/libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
index c5fb077bf96c..c2ebfdbefd9d 100644
--- a/libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -98,8 +100,10 @@ FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -107,7 +111,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -194,6 +200,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -203,6 +216,9 @@ FUNC:_ZNKRSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -263,12 +279,18 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
 FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -329,6 +351,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -490,6 +515,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -521,6 +547,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -743,6 +770,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -800,10 +830,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -861,6 +897,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1446,6 +1485,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1463,6 +1503,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1705,6 +1746,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1722,6 +1764,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2077,6 +2120,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3081,6 +3131,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3298,6 +3350,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3315,6 +3368,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3453,6 +3507,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3470,6 +3525,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3905,11 +3961,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4183,6 +4245,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4543,6 +4606,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4582,6 +4646,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
index b0007de355c6..e779700ea2e8 100644
--- a/libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -98,8 +100,10 @@ FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -107,7 +111,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -194,6 +200,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -203,6 +216,9 @@ FUNC:_ZNKRSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -263,12 +279,18 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
 FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -329,6 +351,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -490,6 +515,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -521,6 +547,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -743,6 +770,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -800,10 +830,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -861,6 +897,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1446,6 +1485,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1463,6 +1503,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1705,6 +1746,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1722,6 +1764,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2077,6 +2120,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3081,6 +3131,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3298,6 +3350,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3315,6 +3368,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3453,6 +3507,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3470,6 +3525,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3905,11 +3961,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4183,6 +4245,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4543,6 +4606,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4582,6 +4646,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt b/libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
index aa2e5acfd00d..f09450ee1115 100644
--- a/libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -98,8 +100,10 @@ FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -107,7 +111,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -194,6 +200,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -203,6 +216,9 @@ FUNC:_ZNKRSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -263,12 +279,18 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
 FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -329,6 +351,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -490,6 +515,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -521,6 +547,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -743,6 +770,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -800,10 +830,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -861,6 +897,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1446,6 +1485,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1463,6 +1503,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1705,6 +1746,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1722,6 +1764,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2077,6 +2120,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3081,6 +3131,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3298,6 +3350,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3315,6 +3368,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3453,6 +3507,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3470,6 +3525,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3905,11 +3961,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4183,6 +4245,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4543,6 +4606,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4581,6 +4645,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
index b9118c0a3651..38931d44fdd6 100644
--- a/libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -98,8 +100,10 @@ FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@@CXXABI_1.3
 FUNC:_ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@@CXXABI_1.3
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -107,7 +111,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -194,6 +200,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -203,6 +216,9 @@ FUNC:_ZNKRSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -263,12 +279,18 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
 FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -329,6 +351,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -490,6 +515,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -521,6 +547,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -743,6 +770,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -800,10 +830,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -861,6 +897,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1446,6 +1485,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1463,6 +1503,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1705,6 +1746,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1722,6 +1764,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2077,6 +2120,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP14_pthread_mutex@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3081,6 +3131,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3298,6 +3350,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3315,6 +3368,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3453,6 +3507,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3470,6 +3525,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3905,11 +3961,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4183,6 +4245,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4543,6 +4606,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4581,6 +4645,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6

From redi@gcc.gnu.org  Fri Apr 17 12:45:35 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 12:45:35 +0000 (GMT)
Subject: [gcc r16-8719] libstdc++: Optionally define std::print functions
 non-inline [PR124410]
Message-ID: <20260417124535.DF8664BA2E19@sourceware.org>

https://gcc.gnu.org/g:fa4754797c2935e4e2be95f128e668d6499ec267

commit r16-8719-gfa4754797c2935e4e2be95f128e668d6499ec267
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 10 21:19:09 2026 +0000

    libstdc++: Optionally define std::print functions non-inline [PR124410]
    
    We don't want to export std::vprint_unicode etc. from libstdc++.so yet,
    but we can give users the option of improving compile times by getting
    the definitions of the std::print internals from libstdc++exp.a instead.
    
    This commit adds a macro, _GLIBCXX_NO_INLINE_PRINT, which disables the
    inline definitions of std::vprint_unicode etc. so that extern
    definitions in libstdc++exp.a can be used instead.
    
    With this change compiling a helloworld using std::print goes from 8s to
    under 2s with trunk. For release branches with --enable-checking=release
    we should see even faster times. The object file size is also
    dramatically smaller, because there's just a single call to an extern
    function instead of instantiating the entire std::print and std::format
    implementation inline.
    
    libstdc++-v3/ChangeLog:
    
            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.

Diff:
---
 libstdc++-v3/doc/html/index.html               |   4 +-
 libstdc++-v3/doc/html/manual/using.html        |   2 +
 libstdc++-v3/doc/html/manual/using_macros.html |   9 +
 libstdc++-v3/doc/xml/manual/using.xml          |  15 ++
 libstdc++-v3/include/Makefile.am               |   2 +
 libstdc++-v3/include/Makefile.in               |   2 +
 libstdc++-v3/include/bits/ostream_print.h      | 161 ++++++++++++
 libstdc++-v3/include/bits/print.h              | 339 +++++++++++++++++++++++++
 libstdc++-v3/include/std/ostream               | 112 +-------
 libstdc++-v3/include/std/print                 | 297 +++-------------------
 libstdc++-v3/src/c++23/print.cc                |   7 +
 11 files changed, 584 insertions(+), 366 deletions(-)

diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html
index 01d7bb787dce..782f3bbc299c 100644
--- a/libstdc++-v3/doc/html/index.html
+++ b/libstdc++-v3/doc/html/index.html
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="description" content="Short Contents Copyright (C) 2008-2025 FSF Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. This is the top level of the libstdc++ documentation set. The documentation is divided into the following three sections. Manual Frequently Asked Questions API and Source Documentation" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="next" href="manual/index.html" title="The GNU C++ Library Manual" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left">?</td><th width="60%" align="center">?</th><td width="20%" align="right">?<a accesskey="n" href="manual/index.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library</h1></div><div><div class="abstract"><a id="contents"></a><p class="title"><strong>Short Contents</strong></p><p>
-      Copyright (C) 2008-2025
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="description" content="Short Contents Copyright (C) 2008-2026 FSF Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. This is the top level of the libstdc++ documentation set. The documentation is divided into the following three sections. Manual Frequently Asked Questions API and Source Documentation" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="next" href="manual/index.html" title="The GNU C++ Library Manual" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left">?</td><th width="60%" align="center">?</th><td width="20%" align="right">?<a accesskey="n" href="manual/index.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library</h1></div><div><div class="abstract"><a id="contents"></a><p class="title"><strong>Short Contents</strong></p><p>
+      Copyright (C) 2008-2026
       <a class="link" href="https://www.fsf.org" target="_top">FSF
       </a>
     </p><p>
diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html
index fcd1b96de0d7..27f503ecaccc 100644
--- a/libstdc++-v3/doc/html/manual/using.html
+++ b/libstdc++-v3/doc/html/manual/using.html
@@ -34,6 +34,8 @@
         is required for use of experimental C++ library features.
         This currently provides support for the C++23 types defined in the
         <code class="filename">&lt;stacktrace&gt;</code> header,
+	the C++23 functions defined in the
+	<code class="filename">&lt;print&gt;</code> header,
         the Filesystem library extensions defined in the
         <code class="filename">&lt;experimental/filesystem&gt;</code>
         header,
diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html
index b1d05d99d760..f1d8492fb9ef 100644
--- a/libstdc++-v3/doc/html/manual/using_macros.html
+++ b/libstdc++-v3/doc/html/manual/using_macros.html
@@ -147,4 +147,13 @@
 	mode will revert to the non-conforming implementation used prior to the
 	<a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112591" target="_top">PR112591</a>
 	in GCC-16. Has no impact for C++20 or later modes.
+      </p></dd><dt><span class="term"><code class="code">_GLIBCXX_NO_INLINE_PRINT</code></span></dt><dd><p>
+	Undefined by default. When defined <code class="code">std::print</code> and
+	<code class="code">std::println</code> are not implemented using inline functions.
+	This means that code using those functions will compile faster,
+	but <code class="option">-lstdc++exp</code> must be used when linking.
+	The non-inline definitions are compiled using
+	<code class="option">-fexec-charset=UTF-8</code> so might give incorrect results
+	if called from a source file that uses a non-Unicode encoding,
+	especially for format strings using non-ASCII fill characters.
       </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_headers.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="using_dual_abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Headers?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Dual ABI</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
index 8adfecfe54ba..682669d91d4b 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -83,6 +83,8 @@
         is required for use of experimental C++ library features.
         This currently provides support for the C++23 types defined in the
         <filename class="headerfile">&lt;stacktrace&gt;</filename> header,
+	the C++23 functions defined in the
+	<filename class="headerfile">&lt;print&gt;</filename> header,
         the Filesystem library extensions defined in the
         <filename class="headerfile">&lt;experimental/filesystem&gt;</filename>
         header,
@@ -1363,6 +1365,19 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
 	in GCC-16. Has no impact for C++20 or later modes.
       </para>
     </listitem></varlistentry>
+    <varlistentry><term><code>_GLIBCXX_NO_INLINE_PRINT</code></term>
+    <listitem>
+      <para>
+	Undefined by default. When defined <code>std::print</code> and
+	<code>std::println</code> are not implemented using inline functions.
+	This means that code using those functions will compile faster,
+	but <option>-lstdc++exp</option> must be used when linking.
+	The non-inline definitions are compiled using
+	<option>-fexec-charset=UTF-8</option> so might give incorrect results
+	if called from a source file that uses a non-Unicode encoding,
+	especially for format strings using non-ASCII fill characters.
+      </para>
+    </listitem></varlistentry>
     </variablelist>
 
   </section>
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index d0c97370700b..e9e46139da2f 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -244,7 +244,9 @@ bits_headers = \
 	${bits_srcdir}/node_handle.h \
 	${bits_srcdir}/ostream.tcc \
 	${bits_srcdir}/ostream_insert.h \
+	${bits_srcdir}/ostream_print.h \
 	${bits_srcdir}/postypes.h \
+	${bits_srcdir}/print.h \
 	${bits_srcdir}/quoted_string.h \
 	${bits_srcdir}/random.h \
 	${bits_srcdir}/random.tcc \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index a57fc00ce742..f3d2f58dbe42 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -600,7 +600,9 @@ bits_freestanding = \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/node_handle.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream.tcc \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream_insert.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream_print.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/postypes.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/print.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/quoted_string.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/random.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/random.tcc \
diff --git a/libstdc++-v3/include/bits/ostream_print.h b/libstdc++-v3/include/bits/ostream_print.h
new file mode 100644
index 000000000000..0adf16d4fe3e
--- /dev/null
+++ b/libstdc++-v3/include/bits/ostream_print.h
@@ -0,0 +1,161 @@
+// Inline implementation details for std::print functions -*- C++ -*-
+
+// Copyright The GNU Toolchain Authors.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/ostream_print.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{ostream}
+ *
+ *  This file contains the parts of `<ostream>` which are currently defined
+ *  inline, but should be moved into the library eventually.
+ */
+
+#ifndef _GLIBCXX_OSTREAM_PRINT_H
+#define _GLIBCXX_OSTREAM_PRINT_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // for std::format
+
+#include <bits/version.h>
+
+#ifdef __glibcxx_print // C++ >= 23
+#include <format>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#ifdef _GLIBCXX_NO_INLINE_PRINT
+# define _GLIBCXX_PRINT_INLINE_USED [[__gnu__::__used__]]
+#else
+# define _GLIBCXX_PRINT_INLINE_USED
+#endif
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_nonunicode(ostream& __os, string_view __fmt, format_args __args)
+  {
+    ostream::sentry __cerb(__os);
+    if (__cerb)
+      {
+	__format::_Str_sink<char> __buf;
+	std::vformat_to(__buf.out(), __os.getloc(), __fmt, __args);
+	auto __out = __buf.view();
+
+	__try
+	  {
+	    std::__ostream_write(__os, __out.data(), __out.size());
+	  }
+	__catch(const __cxxabiv1::__forced_unwind&)
+	  {
+	    __os._M_setstate(ios_base::badbit);
+	    __throw_exception_again;
+	  }
+	__catch(...)
+	  { __os._M_setstate(ios_base::badbit); }
+      }
+  }
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_unicode(ostream& __os, string_view __fmt, format_args __args)
+  {
+#if !defined(_WIN32) || defined(__CYGWIN__)
+    // For most targets we don't need to do anything special to write
+    // Unicode to a terminal.
+    std::vprint_nonunicode(__os, __fmt, __args);
+#else
+    ostream::sentry __cerb(__os);
+    if (__cerb)
+      {
+	__format::_Str_sink<char> __buf;
+	std::vformat_to(__buf.out(), __os.getloc(), __fmt, __args);
+	auto __out = __buf._M_span();
+
+	void* __open_terminal(streambuf*);
+	error_code __write_to_terminal(void*, span<char>);
+	// If stream refers to a terminal, write a Unicode string to it.
+	if (auto __term = __open_terminal(__os.rdbuf()))
+	  {
+#if !defined(_WIN32) || defined(__CYGWIN__)
+	    // For POSIX, __open_terminal(streambuf*) uses fdopen to open a
+	    // new file, so we would need to close it here. This code is not
+	    // actually compiled because it's inside an #ifdef _WIN32 group,
+	    // but just in case that changes in future ...
+	    struct _Guard
+	    {
+	      _Guard(void* __p) : _M_f((FILE*)__p) { }
+	      ~_Guard() { std::fclose(_M_f); }
+	      _Guard(_Guard&&) = delete;
+	      _Guard& operator=(_Guard&&) = delete;
+	      FILE* _M_f;
+	    };
+	    _Guard __g(__term);
+#endif
+
+	    ios_base::iostate __err = ios_base::goodbit;
+	    __try
+	      {
+		if (__os.rdbuf()->pubsync() == -1)
+		  __err = ios::badbit;
+		else if (auto __e = __write_to_terminal(__term, __out))
+		  if (__e != std::make_error_code(errc::illegal_byte_sequence))
+		    __err = ios::badbit;
+	      }
+	    __catch(const __cxxabiv1::__forced_unwind&)
+	      {
+		__os._M_setstate(ios_base::badbit);
+		__throw_exception_again;
+	      }
+	    __catch(...)
+	      { __os._M_setstate(ios_base::badbit); }
+
+	    if (__err)
+	      __os.setstate(__err);
+	    return;
+	  }
+
+	// Otherwise just insert the string as vprint_nonunicode does.
+	__try
+	  {
+	    std::__ostream_write(__os, __out.data(), __out.size());
+	  }
+	__catch(const __cxxabiv1::__forced_unwind&)
+	  {
+	    __os._M_setstate(ios_base::badbit);
+	    __throw_exception_again;
+	  }
+	__catch(...)
+	  { __os._M_setstate(ios_base::badbit); }
+      }
+#endif // _WIN32
+  }
+#undef _GLIBCXX_PRINT_INLINE_USED
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // __glibcxx_print
+#endif // _GLIBCXX_OSTREAM_PRINT_H
diff --git a/libstdc++-v3/include/bits/print.h b/libstdc++-v3/include/bits/print.h
new file mode 100644
index 000000000000..67a5a1729135
--- /dev/null
+++ b/libstdc++-v3/include/bits/print.h
@@ -0,0 +1,339 @@
+// Inline implementation details for std::print functions -*- C++ -*-
+
+// Copyright The GNU Toolchain Authors.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/print.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{print}
+ *
+ *  This file contains the parts of `<print>` which are currently defined
+ *  inline, but should be moved into the library eventually.
+ */
+
+#ifndef _GLIBCXX_PRINT_H
+#define _GLIBCXX_PRINT_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // for std::format
+
+#include <bits/version.h>
+
+#ifdef __glibcxx_print // C++ >= 23
+
+#include <format>
+#include <cstdio>             // FILE, EOF, flockfile, etc.
+#include <cerrno>             // EACCES, EIO
+#include <bits/functexcept.h> // __throw_system_error
+
+#ifdef _WIN32
+# include <system_error> // system_error
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+namespace __format
+{
+#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT
+  // These are defined in <stdio_ext.h> but we don't want to include that.
+  extern "C" int __fwritable(FILE*) noexcept;
+  extern "C" int __flbf(FILE*) noexcept;
+  extern "C" size_t __fbufsize(FILE*) noexcept;
+
+  // A format sink that writes directly to a Glibc FILE.
+  // The file is locked on construction and its buffer is accessed directly.
+  class _File_sink final : _Buf_sink<char>
+  {
+    struct _File
+    {
+      explicit
+      _File(FILE* __f) : _M_file(__f)
+      {
+	::flockfile(__f);
+	// Ensure stream is in write mode
+	if (!__fwritable(__f))
+	  {
+	    ::funlockfile(__f);
+	    __throw_system_error(EACCES);
+	  }
+	// Allocate buffer if needed:
+	if (_M_write_buf().empty())
+	  if (::__overflow(__f, EOF) == EOF)
+	    {
+	      const int __err = errno;
+	      ::funlockfile(__f);
+	      __throw_system_error(__err);
+	    }
+      }
+
+      ~_File() { ::funlockfile(_M_file); }
+
+      _File(_File&&) = delete;
+
+      // A span viewing the unused portion of the stream's output buffer.
+      std::span<char>
+      _M_write_buf() noexcept
+      {
+	return {_M_file->_IO_write_ptr,
+		size_t(_M_file->_IO_buf_end - _M_file->_IO_write_ptr)};
+      }
+
+      // Flush the output buffer to the file so we can write to it again.
+      void
+      _M_flush()
+      {
+	if (::fflush_unlocked(_M_file))
+	  __throw_system_error(errno);
+      }
+
+      // Update the current position in the output buffer.
+      void
+      _M_bump(size_t __n) noexcept
+      { _M_file->_IO_write_ptr += __n; }
+
+      bool
+      _M_line_buffered() const noexcept
+      { return __flbf(_M_file); } // Or: _M_file->_flags & 0x200
+
+      bool
+      _M_unbuffered() const noexcept
+      { return __fbufsize(_M_file) == 1; } // Or: _M_file->_flags & 0x2
+
+      FILE* _M_file;
+    } _M_file;
+
+    bool _M_add_newline; // True for std::println, false for std::print.
+
+    // Flush the stream's put area so it can be refilled.
+    void
+    _M_overflow() override
+    {
+      auto __s = this->_M_used();
+      if (__s.data() == this->_M_buf)
+	{
+	  // Characters in internal buffer need to be transferred to the FILE.
+	  auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(),
+				       _M_file._M_file);
+	  if (__n != __s.size())
+	    __throw_system_error(errno);
+	  this->_M_reset(this->_M_buf);
+	}
+      else
+	{
+	  // Characters were written directly to the FILE's output buffer.
+	  _M_file._M_bump(__s.size());
+	  _M_file._M_flush();
+	  this->_M_reset(_M_file._M_write_buf());
+	}
+    }
+
+  public:
+    _File_sink(FILE* __f, bool __add_newline)
+    : _M_file(__f), _M_add_newline(__add_newline)
+    {
+      if (!_M_file._M_unbuffered())
+	// Write directly to the FILE's output buffer.
+	this->_M_reset(_M_file._M_write_buf());
+    }
+
+    ~_File_sink() noexcept(false)
+    {
+      auto __s = this->_M_used();
+      if (__s.data() == this->_M_buf) // Unbuffered stream
+	{
+	  _File_sink::_M_overflow();
+	  if (_M_add_newline)
+	    ::putc_unlocked('\n', _M_file._M_file);
+	}
+      else
+	{
+	  _M_file._M_bump(__s.size());
+	  if (_M_add_newline)
+	    ::putc_unlocked('\n', _M_file._M_file);
+	  else if (_M_file._M_line_buffered() && __s.size()
+		     && (__s.back() == '\n'
+			   || __builtin_memchr(__s.data(), '\n', __s.size())))
+	    _M_file._M_flush();
+	}
+    }
+
+    using _Sink<char>::out;
+  };
+#elif _GLIBCXX_USE_STDIO_LOCKING
+  // A format sink that buffers output and then copies it to a stdio FILE.
+  // The file is locked on construction and written to using fwrite_unlocked.
+  class _File_sink final : _Buf_sink<char>
+  {
+    FILE* _M_file;
+    bool _M_add_newline;
+
+    // Transfer buffer contents to the FILE, so buffer can be refilled.
+    void
+    _M_overflow() override
+    {
+      auto __s = this->_M_used();
+#if _GLIBCXX_HAVE_FWRITE_UNLOCKED
+      auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(), _M_file);
+      if (__n != __s.size())
+	__throw_system_error(errno);
+#else
+      for (char __c : __s)
+	::putc_unlocked(__c, _M_file);
+      if (::ferror(_M_file))
+	__throw_system_error(errno);
+#endif
+      this->_M_reset(this->_M_buf);
+    }
+
+  public:
+    _File_sink(FILE* __f, bool __add_newline) noexcept
+    : _Buf_sink<char>(), _M_file(__f), _M_add_newline(__add_newline)
+    { ::flockfile(__f); }
+
+    ~_File_sink() noexcept(false)
+    {
+      _File_sink::_M_overflow();
+      if (_M_add_newline)
+	::putc_unlocked('\n', _M_file);
+      ::funlockfile(_M_file);
+    }
+
+    using _Sink<char>::out;
+  };
+#else
+  // A wrapper around a format sink that copies the output to a stdio FILE.
+  // This is not actually a _Sink itself, but it creates one to hold the
+  // formatted characters and then copies them to the file when finished.
+  class _File_sink final
+  {
+    FILE* _M_file;
+    _Str_sink<char> _M_sink;
+    bool _M_add_newline;
+
+  public:
+    _File_sink(FILE* __f, bool __add_newline) noexcept
+    : _M_file(__f), _M_add_newline(__add_newline)
+    { }
+
+    ~_File_sink() noexcept(false)
+    {
+      string __s = std::move(_M_sink).get();
+      if (_M_add_newline)
+	__s += '\n';
+      auto __n = std::fwrite(__s.data(), 1, __s.size(), _M_file);
+      if (__n < __s.size())
+	__throw_system_error(EIO);
+    }
+
+    auto out() { return _M_sink.out(); }
+  };
+#endif
+} // namespace __format
+
+#ifdef _GLIBCXX_NO_INLINE_PRINT
+# define _GLIBCXX_PRINT_INLINE_USED [[__gnu__::__used__]]
+#else
+# define _GLIBCXX_PRINT_INLINE_USED
+#endif
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_nonunicode(FILE* __stream, string_view __fmt, format_args __args)
+  {
+    std::vformat_to(__format::_File_sink(__stream, false).out(), __fmt, __args);
+  }
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_nonunicode_buffered(FILE* __stream, string_view __fmt,
+			     format_args __args)
+  {
+    __format::_Str_sink<char> __buf;
+    std::vformat_to(__buf.out(), __fmt, __args);
+    auto __out = __buf.view();
+    if (std::fwrite(__out.data(), 1, __out.size(), __stream) != __out.size())
+      __throw_system_error(EIO);
+  }
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_unicode(FILE* __stream, string_view __fmt, format_args __args)
+  {
+#if !defined(_WIN32) || defined(__CYGWIN__)
+    // For most targets we don't need to do anything special to write
+    // Unicode to a terminal.
+    std::vprint_nonunicode(__stream, __fmt, __args);
+#else
+    __format::_Str_sink<char> __buf;
+    std::vformat_to(__buf.out(), __fmt, __args);
+    auto __out = __buf._M_span();
+
+    void* __open_terminal(FILE*);
+    error_code __write_to_terminal(void*, span<char>);
+    // If stream refers to a terminal, write a native Unicode string to it.
+    if (auto __term = __open_terminal(__stream))
+      {
+	error_code __e;
+	if (!std::fflush(__stream))
+	  {
+	    __e = __write_to_terminal(__term, __out);
+	    if (!__e)
+	      return;
+	    if (__e == std::make_error_code(errc::illegal_byte_sequence))
+	      return;
+	  }
+	else
+	  __e = error_code(errno, generic_category());
+	_GLIBCXX_THROW_OR_ABORT(system_error(__e, "std::vprint_unicode"));
+      }
+
+    // Otherwise just write the string to the file.
+    if (std::fwrite(__out.data(), 1, __out.size(), __stream) != __out.size())
+      __throw_system_error(EIO);
+#endif
+  }
+
+  _GLIBCXX_PRINT_INLINE_USED
+  inline void
+  vprint_unicode_buffered(FILE* __stream, string_view __fmt, format_args __args)
+  {
+#if !defined(_WIN32) || defined(__CYGWIN__)
+    // For most targets we don't need to do anything special to write
+    // Unicode to a terminal. Just use the nonunicode function.
+    std::vprint_nonunicode_buffered(__stream, __fmt, __args);
+#else
+    // For Windows the locking function formats everything first anyway,
+    // so no formatting happens while a lock is taken. Just use that.
+    std::vprint_unicode(__stream, __fmt, __args);
+#endif
+  }
+#undef _GLIBCXX_PRINT_INLINE_USED
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // __glibcxx_print
+#endif // _GLIBCXX_PRINT_H
diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream
index e8dcfda2682f..b99c0f92d345 100644
--- a/libstdc++-v3/include/std/ostream
+++ b/libstdc++-v3/include/std/ostream
@@ -40,12 +40,17 @@
 #include <bits/requires_hosted.h> // iostreams
 
 #include <bits/ostream.h>
-#if __cplusplus > 202002L
-# include <format>
+
+#ifdef __glibcxx_print
+# include <format> // format_string, make_format_args
+#endif
+
+#ifndef _GLIBCXX_NO_INLINE_PRINT
+# include <bits/ostream_print.h>
 #endif
 
 # define __glibcxx_want_print
-#include <bits/version.h> // __glibcxx_syncbuf
+#include <bits/version.h> // __cpp_lib_print, __glibcxx_syncbuf
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -156,103 +161,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif // __glibcxx_syncbuf
 
 #if __cpp_lib_print // C++ >= 23
-  inline void
-  vprint_nonunicode(ostream& __os, string_view __fmt, format_args __args)
-  {
-    ostream::sentry __cerb(__os);
-    if (__cerb)
-      {
-	__format::_Str_sink<char> __buf;
-	std::vformat_to(__buf.out(), __os.getloc(), __fmt, __args);
-	auto __out = __buf.view();
-
-	__try
-	  {
-	    std::__ostream_write(__os, __out.data(), __out.size());
-	  }
-	__catch(const __cxxabiv1::__forced_unwind&)
-	  {
-	    __os._M_setstate(ios_base::badbit);
-	    __throw_exception_again;
-	  }
-	__catch(...)
-	  { __os._M_setstate(ios_base::badbit); }
-      }
-  }
+  void
+  vprint_nonunicode(ostream& __os, string_view __fmt, format_args __args);
 
-  inline void
-  vprint_unicode(ostream& __os, string_view __fmt, format_args __args)
-  {
-#if !defined(_WIN32) || defined(__CYGWIN__)
-    // For most targets we don't need to do anything special to write
-    // Unicode to a terminal.
-    std::vprint_nonunicode(__os, __fmt, __args);
-#else
-    ostream::sentry __cerb(__os);
-    if (__cerb)
-      {
-	__format::_Str_sink<char> __buf;
-	std::vformat_to(__buf.out(), __os.getloc(), __fmt, __args);
-	auto __out = __buf._M_span();
-
-	void* __open_terminal(streambuf*);
-	error_code __write_to_terminal(void*, span<char>);
-	// If stream refers to a terminal, write a Unicode string to it.
-	if (auto __term = __open_terminal(__os.rdbuf()))
-	  {
-#if !defined(_WIN32) || defined(__CYGWIN__)
-	    // For POSIX, __open_terminal(streambuf*) uses fdopen to open a
-	    // new file, so we would need to close it here. This code is not
-	    // actually compiled because it's inside an #ifdef _WIN32 group,
-	    // but just in case that changes in future ...
-	    struct _Guard
-	    {
-	      _Guard(void* __p) : _M_f((FILE*)__p) { }
-	      ~_Guard() { std::fclose(_M_f); }
-	      _Guard(_Guard&&) = delete;
-	      _Guard& operator=(_Guard&&) = delete;
-	      FILE* _M_f;
-	    };
-	    _Guard __g(__term);
-#endif
-
-	    ios_base::iostate __err = ios_base::goodbit;
-	    __try
-	      {
-		if (__os.rdbuf()->pubsync() == -1)
-		  __err = ios::badbit;
-		else if (auto __e = __write_to_terminal(__term, __out))
-		  if (__e != std::make_error_code(errc::illegal_byte_sequence))
-		    __err = ios::badbit;
-	      }
-	    __catch(const __cxxabiv1::__forced_unwind&)
-	      {
-		__os._M_setstate(ios_base::badbit);
-		__throw_exception_again;
-	      }
-	    __catch(...)
-	      { __os._M_setstate(ios_base::badbit); }
-
-	    if (__err)
-	      __os.setstate(__err);
-	    return;
-	  }
-
-	// Otherwise just insert the string as vprint_nonunicode does.
-	__try
-	  {
-	    std::__ostream_write(__os, __out.data(), __out.size());
-	  }
-	__catch(const __cxxabiv1::__forced_unwind&)
-	  {
-	    __os._M_setstate(ios_base::badbit);
-	    __throw_exception_again;
-	  }
-	__catch(...)
-	  { __os._M_setstate(ios_base::badbit); }
-      }
-#endif // _WIN32
-  }
+  void
+  vprint_unicode(ostream& __os, string_view __fmt, format_args __args);
 
   template<typename... _Args>
     inline void
@@ -294,7 +207,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
       __os.put('\n');
   }
-
 #endif // __cpp_lib_print
 
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/print b/libstdc++-v3/include/std/print
index 1b9e810419f0..459bb9fb7462 100644
--- a/libstdc++-v3/include/std/print
+++ b/libstdc++-v3/include/std/print
@@ -40,284 +40,42 @@
 
 #ifdef __cpp_lib_print // C++ >= 23
 
-#include <format>
-#include <cstdio>
-#include <cerrno>
-#include <bits/functexcept.h>
+#include <format>             // format_args (TODO: move to bits/formatfwd.h?)
+#include <cstdio>             // FILE, EOF, putc
+#include <cerrno>             // EACCES, EIO
+#include <bits/functexcept.h> // __throw_system_error
 
 #ifdef _WIN32
 # include <system_error>
 #endif
 
+#ifndef _GLIBCXX_NO_INLINE_PRINT
+# include <bits/print.h>
+#endif
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
-namespace __format
-{
-#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT
-  // These are defined in <stdio_ext.h> but we don't want to include that.
-  extern "C" int __fwritable(FILE*) noexcept;
-  extern "C" int __flbf(FILE*) noexcept;
-  extern "C" size_t __fbufsize(FILE*) noexcept;
-
-  // A format sink that writes directly to a Glibc FILE.
-  // The file is locked on construction and its buffer is accessed directly.
-  class _File_sink final : _Buf_sink<char>
-  {
-    struct _File
-    {
-      explicit
-      _File(FILE* __f) : _M_file(__f)
-      {
-	::flockfile(__f);
-	// Ensure stream is in write mode
-        if (!__fwritable(__f))
-	  {
-	    ::funlockfile(__f);
-	    __throw_system_error(EACCES);
-	  }
-	// Allocate buffer if needed:
-        if (_M_write_buf().empty())
-	  if (::__overflow(__f, EOF) == EOF)
-	    {
-	      const int __err = errno;
-	      ::funlockfile(__f);
-	      __throw_system_error(__err);
-	    }
-      }
-
-      ~_File() { ::funlockfile(_M_file); }
-
-      _File(_File&&) = delete;
-
-      // A span viewing the unused portion of the stream's output buffer.
-      std::span<char>
-      _M_write_buf() noexcept
-      {
-	return {_M_file->_IO_write_ptr,
-		size_t(_M_file->_IO_buf_end - _M_file->_IO_write_ptr)};
-      }
-
-      // Flush the output buffer to the file so we can write to it again.
-      void
-      _M_flush()
-      {
-	if (::fflush_unlocked(_M_file))
-	  __throw_system_error(errno);
-      }
-
-      // Update the current position in the output buffer.
-      void
-      _M_bump(size_t __n) noexcept
-      { _M_file->_IO_write_ptr += __n; }
-
-      bool
-      _M_line_buffered() const noexcept
-      { return __flbf(_M_file); } // Or: _M_file->_flags & 0x200
-
-      bool
-      _M_unbuffered() const noexcept
-      { return __fbufsize(_M_file) == 1; } // Or: _M_file->_flags & 0x2
-
-      FILE* _M_file;
-    } _M_file;
-
-    bool _M_add_newline; // True for std::println, false for std::print.
-
-    // Flush the stream's put area so it can be refilled.
-    void
-    _M_overflow() override
-    {
-      auto __s = this->_M_used();
-      if (__s.data() == this->_M_buf)
-	{
-	  // Characters in internal buffer need to be transferred to the FILE.
-	  auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(),
-				       _M_file._M_file);
-	  if (__n != __s.size())
-	    __throw_system_error(errno);
-	  this->_M_reset(this->_M_buf);
-	}
-      else
-	{
-	  // Characters were written directly to the FILE's output buffer.
-	  _M_file._M_bump(__s.size());
-	  _M_file._M_flush();
-	  this->_M_reset(_M_file._M_write_buf());
-	}
-    }
-
-  public:
-    _File_sink(FILE* __f, bool __add_newline)
-    : _M_file(__f), _M_add_newline(__add_newline)
-    {
-      if (!_M_file._M_unbuffered())
-	// Write directly to the FILE's output buffer.
-	this->_M_reset(_M_file._M_write_buf());
-    }
-
-    ~_File_sink() noexcept(false)
-    {
-      auto __s = this->_M_used();
-      if (__s.data() == this->_M_buf) // Unbuffered stream
-	{
-	  _File_sink::_M_overflow();
-	  if (_M_add_newline)
-	    ::putc_unlocked('\n', _M_file._M_file);
-	}
-      else
-	{
-	  _M_file._M_bump(__s.size());
-	  if (_M_add_newline)
-	    ::putc_unlocked('\n', _M_file._M_file);
-	  else if (_M_file._M_line_buffered() && __s.size()
-		     && (__s.back() == '\n'
-			   || __builtin_memchr(__s.data(), '\n', __s.size())))
-	    _M_file._M_flush();
-	}
-    }
-
-    using _Sink<char>::out;
-  };
-#elif _GLIBCXX_USE_STDIO_LOCKING
-  // A format sink that buffers output and then copies it to a stdio FILE.
-  // The file is locked on construction and written to using fwrite_unlocked.
-  class _File_sink final : _Buf_sink<char>
-  {
-    FILE* _M_file;
-    bool _M_add_newline;
-
-    // Transfer buffer contents to the FILE, so buffer can be refilled.
-    void
-    _M_overflow() override
-    {
-      auto __s = this->_M_used();
-#if _GLIBCXX_HAVE_FWRITE_UNLOCKED
-      auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(), _M_file);
-      if (__n != __s.size())
-	__throw_system_error(errno);
-#else
-      for (char __c : __s)
-	::putc_unlocked(__c, _M_file);
-      if (::ferror(_M_file))
-	__throw_system_error(errno);
-#endif
-      this->_M_reset(this->_M_buf);
-    }
-
-  public:
-    _File_sink(FILE* __f, bool __add_newline) noexcept
-    : _Buf_sink<char>(), _M_file(__f), _M_add_newline(__add_newline)
-    { ::flockfile(__f); }
-
-    ~_File_sink() noexcept(false)
-    {
-      _File_sink::_M_overflow();
-      if (_M_add_newline)
-	::putc_unlocked('\n', _M_file);
-      ::funlockfile(_M_file);
-    }
-
-    using _Sink<char>::out;
-  };
-#else
-  // A wrapper around a format sink that copies the output to a stdio FILE.
-  // This is not actually a _Sink itself, but it creates one to hold the
-  // formatted characters and then copies them to the file when finished.
-  class _File_sink final
-  {
-    FILE* _M_file;
-    _Str_sink<char> _M_sink;
-    bool _M_add_newline;
+  void
+  vprint_nonunicode(FILE* __stream, string_view __fmt, format_args __args);
 
-  public:
-    _File_sink(FILE* __f, bool __add_newline) noexcept
-    : _M_file(__f), _M_add_newline(__add_newline)
-    { }
+  void
+  vprint_nonunicode_buffered(FILE* __stream, string_view __fmt,
+			     format_args __args);
 
-    ~_File_sink() noexcept(false)
-    {
-      string __s = std::move(_M_sink).get();
-      if (_M_add_newline)
-	__s += '\n';
-      auto __n = std::fwrite(__s.data(), 1, __s.size(), _M_file);
-      if (__n < __s.size())
-	__throw_system_error(EIO);
-    }
+  void
+  vprint_unicode(FILE* __stream, string_view __fmt, format_args __args);
 
-    auto out() { return _M_sink.out(); }
-  };
-#endif
-} // namespace __format
+  void
+  vprint_unicode_buffered(FILE* __stream, string_view __fmt,
+			  format_args __args);
 
-  inline void
-  vprint_nonunicode(FILE* __stream, string_view __fmt, format_args __args)
-  {
-    std::vformat_to(__format::_File_sink(__stream, false).out(), __fmt, __args);
-  }
+  void
+  vprint_unicode_buffered(string_view __fmt, format_args __args);
 
-  inline void
-  vprint_nonunicode_buffered(FILE* __stream, string_view __fmt,
-			     format_args __args)
-  {
-    __format::_Str_sink<char> __buf;
-    std::vformat_to(__buf.out(), __fmt, __args);
-    auto __out = __buf.view();
-    if (std::fwrite(__out.data(), 1, __out.size(), __stream) != __out.size())
-      __throw_system_error(EIO);
-  }
-
-  inline void
-  vprint_unicode(FILE* __stream, string_view __fmt, format_args __args)
-  {
-#if !defined(_WIN32) || defined(__CYGWIN__)
-    // For most targets we don't need to do anything special to write
-    // Unicode to a terminal.
-    std::vprint_nonunicode(__stream, __fmt, __args);
-#else
-    __format::_Str_sink<char> __buf;
-    std::vformat_to(__buf.out(), __fmt, __args);
-    auto __out = __buf._M_span();
-
-    void* __open_terminal(FILE*);
-    error_code __write_to_terminal(void*, span<char>);
-    // If stream refers to a terminal, write a native Unicode string to it.
-    if (auto __term = __open_terminal(__stream))
-      {
-	error_code __e;
-	if (!std::fflush(__stream))
-	  {
-	    __e = __write_to_terminal(__term, __out);
-	    if (!__e)
-	      return;
-	    if (__e == std::make_error_code(errc::illegal_byte_sequence))
-	      return;
-	  }
-	else
-	  __e = error_code(errno, generic_category());
-	_GLIBCXX_THROW_OR_ABORT(system_error(__e, "std::vprint_unicode"));
-      }
-
-    // Otherwise just write the string to the file.
-    if (std::fwrite(__out.data(), 1, __out.size(), __stream) != __out.size())
-      __throw_system_error(EIO);
-#endif
-  }
-
-  inline void
-  vprint_unicode_buffered(FILE* __stream, string_view __fmt, format_args __args)
-  {
-#if !defined(_WIN32) || defined(__CYGWIN__)
-    // For most targets we don't need to do anything special to write
-    // Unicode to a terminal. Just use the nonunicode function.
-    std::vprint_nonunicode_buffered(__stream, __fmt, __args);
-#else
-    // For Windows the locking function formats everything first anyway,
-    // so no formatting happens while a lock is taken. Just use that.
-    std::vprint_unicode(__stream, __fmt, __args);
-#endif
-  }
+  void
+  vprint_nonunicode_buffered(string_view __fmt, format_args __args);
 
   template<typename... _Args>
     inline void
@@ -357,6 +115,7 @@ namespace __format
       // and we know what that would call, so we can call that directly.
 
       auto __fmtargs = std::make_format_args(__args...);
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
       if constexpr (__unicode::__literal_encoding_is_utf8())
 	{
@@ -371,6 +130,15 @@ namespace __format
       else
 #endif
 
+#ifdef _GLIBCXX_NO_INLINE_PRINT
+	{
+	  string __fmtn;
+	  __fmtn.reserve(__fmt.get().size() + 1);
+	  __fmtn = __fmt.get();
+	  __fmtn += '\n';
+	  std::vprint_nonunicode(__stream, __fmtn, __fmtargs);
+	}
+#else
       // For non-Windows and for non-Unicode on Windows, we know that print
       // would call vprint_nonunicode or vprint_nonunicode_buffered with a
       // newline appended to the format-string. Use a _File_sink that adds
@@ -387,6 +155,7 @@ namespace __format
 	  string_view __s(__buf.view());
 	  __format::_File_sink(__stream, true).out() = __s;
 	}
+#endif
     }
 
   template<typename... _Args>
diff --git a/libstdc++-v3/src/c++23/print.cc b/libstdc++-v3/src/c++23/print.cc
index f34369950096..290e0b8dfa2d 100644
--- a/libstdc++-v3/src/c++23/print.cc
+++ b/libstdc++-v3/src/c++23/print.cc
@@ -22,6 +22,13 @@
 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 // <http://www.gnu.org/licenses/>.
 
+// We want to emit symbols for the inline functions in bits/print.h here.
+#define _GLIBCXX_NO_INLINE_PRINT 1
+#include <ostream>
+#include <bits/ostream_print.h>
+#include <print>
+#include <bits/print.h>
+
 #include <span>
 #include <string>
 #include <streambuf>

From redi@gcc.gnu.org  Fri Apr 17 12:45:46 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 17 Apr 2026 12:45:46 +0000 (GMT)
Subject: [gcc r16-8720] libstdc++: Add comments to non-obvious parts of
 std::print internals
Message-ID: <20260417124546.42B214AA3971@sourceware.org>

https://gcc.gnu.org/g:209550a04e143edf2bea34cce6d79d92424db96c

commit r16-8720-g209550a04e143edf2bea34cce6d79d92424db96c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Mar 13 21:07:29 2026 +0000

    libstdc++: Add comments to non-obvious parts of std::print internals
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/print.h (_File_sink): Add comments.

Diff:
---
 libstdc++-v3/include/bits/print.h | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/include/bits/print.h b/libstdc++-v3/include/bits/print.h
index 67a5a1729135..ab3ff9996126 100644
--- a/libstdc++-v3/include/bits/print.h
+++ b/libstdc++-v3/include/bits/print.h
@@ -58,7 +58,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 namespace __format
 {
-#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT
+#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLBC_STDIO_EXT
   // These are defined in <stdio_ext.h> but we don't want to include that.
   extern "C" int __fwritable(FILE*) noexcept;
   extern "C" int __flbf(FILE*) noexcept;
@@ -111,6 +111,8 @@ namespace __format
       }
 
       // Update the current position in the output buffer.
+      // __n is the number of characters written to the _M_write_buf() span,
+      // so will not exceed the size of the output buffer.
       void
       _M_bump(size_t __n) noexcept
       { _M_file->_IO_write_ptr += __n; }
@@ -160,12 +162,15 @@ namespace __format
 	this->_M_reset(_M_file._M_write_buf());
     }
 
+    // This calls I/O functions which are cancellation points, so they
+    // could exit with a __forced_unwind exception. The noexcept(false)
+    // allows that to propagate instead of terminating the process.
     ~_File_sink() noexcept(false)
     {
       auto __s = this->_M_used();
       if (__s.data() == this->_M_buf) // Unbuffered stream
 	{
-	  _File_sink::_M_overflow();
+	  _File_sink::_M_overflow(); // Transfer _M_buf to stream.
 	  if (_M_add_newline)
 	    ::putc_unlocked('\n', _M_file._M_file);
 	}
@@ -173,7 +178,7 @@ namespace __format
 	{
 	  _M_file._M_bump(__s.size());
 	  if (_M_add_newline)
-	    ::putc_unlocked('\n', _M_file._M_file);
+	    ::putc_unlocked('\n', _M_file._M_file); // '\n' triggers a flush
 	  else if (_M_file._M_line_buffered() && __s.size()
 		     && (__s.back() == '\n'
 			   || __builtin_memchr(__s.data(), '\n', __s.size())))
@@ -188,7 +193,13 @@ namespace __format
   // The file is locked on construction and written to using fwrite_unlocked.
   class _File_sink final : _Buf_sink<char>
   {
-    FILE* _M_file;
+    struct _File // RAII type to lock/unlock the file.
+    {
+      explicit _File(FILE* __f) : _M_file(__f) { ::flockfile(_M_file); }
+      ~_File() { ::funlockfile(_M_file); }
+      FILE* _M_file;
+    } _M_file;
+
     bool _M_add_newline;
 
     // Transfer buffer contents to the FILE, so buffer can be refilled.
@@ -197,13 +208,13 @@ namespace __format
     {
       auto __s = this->_M_used();
 #if _GLIBCXX_HAVE_FWRITE_UNLOCKED
-      auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(), _M_file);
+      auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(), _M_file._M_file);
       if (__n != __s.size())
 	__throw_system_error(errno);
 #else
       for (char __c : __s)
-	::putc_unlocked(__c, _M_file);
-      if (::ferror(_M_file))
+	::putc_unlocked(__c, _M_file._M_file);
+      if (::ferror(_M_file._M_file))
 	__throw_system_error(errno);
 #endif
       this->_M_reset(this->_M_buf);
@@ -212,14 +223,13 @@ namespace __format
   public:
     _File_sink(FILE* __f, bool __add_newline) noexcept
     : _Buf_sink<char>(), _M_file(__f), _M_add_newline(__add_newline)
-    { ::flockfile(__f); }
+    { }
 
-    ~_File_sink() noexcept(false)
+    ~_File_sink() noexcept(false) // See above for noexcept(false) rationale.
     {
       _File_sink::_M_overflow();
       if (_M_add_newline)
-	::putc_unlocked('\n', _M_file);
-      ::funlockfile(_M_file);
+	::putc_unlocked('\n', _M_file._M_file);
     }
 
     using _Sink<char>::out;
@@ -239,14 +249,14 @@ namespace __format
     : _M_file(__f), _M_add_newline(__add_newline)
     { }
 
-    ~_File_sink() noexcept(false)
+    ~_File_sink() noexcept(false) // See above for noexcept(false) rationale.
     {
       string __s = std::move(_M_sink).get();
       if (_M_add_newline)
 	__s += '\n';
       auto __n = std::fwrite(__s.data(), 1, __s.size(), _M_file);
       if (__n < __s.size())
-	__throw_system_error(EIO);
+	__throw_system_error(EIO); // Non-POSIX fwrite doesn't set errno.
     }
 
     auto out() { return _M_sink.out(); }

From jakub@gcc.gnu.org  Fri Apr 17 13:05:56 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri, 17 Apr 2026 13:05:56 +0000 (GMT)
Subject: [gcc r16-8721] libstdc++: Further baseline_symbols.txt updates
Message-ID: <20260417130556.1EF024AA3971@sourceware.org>

https://gcc.gnu.org/g:9bb30cff1a251f037f420e82ff23b8dcc16e1d72

commit r16-8721-g9bb30cff1a251f037f420e82ff23b8dcc16e1d72
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Apr 17 15:05:14 2026 +0200

    libstdc++: Further baseline_symbols.txt updates
    
    Unlike the previous patch which was (except for powerpc64-linux) actually
    done from looking at actual libstdc++.so.6.0.35 symbols on each arch,
    the following is all guesses.
    Given the change analysis done in previous patch, I've updated
    baseline_symbols.txt which have been updated in GCC 15 by applying the
    aarch64-linux-gnu baseline_symbols.txt patch for targets which use
    m size_t mangling and i486-linux-gnu baseline_symbols.txt patch for
    targets which use j size_t mangling.
    Skipped targets which haven't been updated in GCC 15 and hppa-linux-gnu
    where the patch didn't apply cleanly.
    
    2025-05-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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 .../abi/post/ia64-linux-gnu/baseline_symbols.txt   | 65 ++++++++++++++++++++++
 .../abi/post/m68k-linux-gnu/baseline_symbols.txt   | 65 ++++++++++++++++++++++
 .../post/powerpc-linux-gnu/baseline_symbols.txt    | 65 ++++++++++++++++++++++
 .../powerpc64-linux-gnu/32/baseline_symbols.txt    | 65 ++++++++++++++++++++++
 .../post/sparc64-linux-gnu/32/baseline_symbols.txt | 65 ++++++++++++++++++++++
 .../post/sparc64-linux-gnu/baseline_symbols.txt    | 65 ++++++++++++++++++++++
 .../post/x86_64-linux-gnu/x32/baseline_symbols.txt | 65 ++++++++++++++++++++++
 7 files changed, 455 insertions(+)

diff --git a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
index e8b88093fac8..22224190d8f7 100644
--- a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4225,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4589,6 +4652,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4628,6 +4692,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
index 089ae242a1bb..56c36110742f 100644
--- a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4224,6 +4286,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4585,6 +4648,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4623,6 +4687,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
index b8b27d0a91ba..826a5c96bc14 100644
--- a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -900,6 +927,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -957,10 +987,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -1018,6 +1054,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1607,6 +1646,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1624,6 +1664,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1876,6 +1917,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1893,6 +1935,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2252,6 +2295,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3310,6 +3360,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3527,6 +3579,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3544,6 +3597,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3682,6 +3736,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3699,6 +3754,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -4134,11 +4190,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4424,6 +4486,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4830,6 +4893,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4869,6 +4933,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
index b8b27d0a91ba..826a5c96bc14 100644
--- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -900,6 +927,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -957,10 +987,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -1018,6 +1054,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1607,6 +1646,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1624,6 +1664,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1876,6 +1917,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1893,6 +1935,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2252,6 +2295,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3310,6 +3360,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3527,6 +3579,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3544,6 +3597,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3682,6 +3736,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3699,6 +3754,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -4134,11 +4190,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4424,6 +4486,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4830,6 +4893,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4869,6 +4933,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
index 689b11e4d9fc..b6072191f07c 100644
--- a/libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4224,6 +4286,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4585,6 +4648,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4623,6 +4687,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
index b15cf68b3f45..d75f574a8d6f 100644
--- a/libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcmm@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsm@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEmm@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEm@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcm@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4224,6 +4286,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4585,6 +4648,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4623,6 +4687,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
index 5d552873896e..d8b91d3de5dc 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
@@ -1,3 +1,5 @@
+FUNC:_ZGIW3std@@GLIBCXX_3.4.35
+FUNC:_ZGIW3stdW6compat@@GLIBCXX_3.4.35
 FUNC:_ZGTtNKSt11logic_error4whatEv@@GLIBCXX_3.4.22
 FUNC:_ZGTtNKSt13bad_exception4whatEv@@CXXABI_1.3.10
 FUNC:_ZGTtNKSt13bad_exceptionD1Ev@@CXXABI_1.3.10
@@ -103,8 +105,10 @@ FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
 FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
@@ -112,7 +116,9 @@ FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
 FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPKNS_30_Safe_unordered_container_baseEb@@GLIBCXX_3.4.35
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
 FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
@@ -199,6 +205,13 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
 FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
 FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug19_Safe_sequence_base7_M_swapERKS0_@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.35
+FUNC:_ZNK11__gnu_debug30_Safe_unordered_container_base7_M_swapERKS0_@@GLIBCXX_3.4.35
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKRSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.29
@@ -209,6 +222,9 @@ FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBC
 FUNC:_ZNKRSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.29
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@@GLIBCXX_3.4
@@ -270,6 +286,9 @@ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
 FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
@@ -277,6 +296,9 @@ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSo6sentrycvbEv@@GLIBCXX_3.4
 FUNC:_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
 FUNC:_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
+FUNC:_ZNKSs11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCXX_3.4
 FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCXX_3.4
@@ -338,6 +360,9 @@ FUNC:_ZNKSs8_M_limitEjj@@GLIBCXX_3.4
 FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
 FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
 FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
+FUNC:_ZNKSs9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.35
+FUNC:_ZNKSs9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSsixEj@@GLIBCXX_3.4
 FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
@@ -499,6 +524,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
 FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
 FUNC:_ZNKSt12__basic_fileIcE13native_handleEv@@GLIBCXX_3.4.33
 FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
+FUNC:_ZNKSt12__cow_string5c_strEv@@GLIBCXX_3.4.35
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
 FUNC:_ZNKSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEcvbEv@@GLIBCXX_3.4.31
@@ -536,6 +562,7 @@ FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
 FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
 FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info@@CXXABI_1.3.17
 FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
 FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
@@ -758,6 +785,9 @@ FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11starts_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -815,10 +845,16 @@ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEPKc@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9ends_withEc@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11starts_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@@GLIBCXX_3.4.21
@@ -876,6 +912,9 @@ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@@GLIBC
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEPKw@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.35
+FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9ends_withEw@@GLIBCXX_3.4.35
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
 FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
 FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE13get_allocatorEv@@GLIBCXX_3.4.29
@@ -1465,6 +1504,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1482,6 +1522,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@@GLIBCXX_3.4
@@ -1730,6 +1771,7 @@ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -1747,6 +1789,7 @@ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
 FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
+FUNC:_ZNSsC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
@@ -2106,6 +2149,13 @@ FUNC:_ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12__cow_stringC2EOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKc@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2EPKcj@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringC2ERKS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringD2Ev@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSEOS_@@GLIBCXX_3.4.35
+FUNC:_ZNSt12__cow_stringaSERKS_@@GLIBCXX_3.4.35
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
 FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
@@ -3120,6 +3170,8 @@ FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
+FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
+FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tzdb_list11erase_afterENS0_14const_iteratorE@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEi@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9tzdb_list14const_iteratorppEv@@GLIBCXX_3.4.31
@@ -3337,6 +3389,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3354,6 +3407,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3492,6 +3546,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3509,6 +3564,7 @@ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@@GLIBC
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.21
+FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EvQ26is_default_constructible_vIT1_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
 FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
@@ -3944,11 +4000,17 @@ FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX_3
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
 FUNC:_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt8__detail11__wait_args19_M_setup_proxy_waitEPKv@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail11__wait_implEPKvRNS_16__wait_args_baseE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__detail13__notify_implEPKvbRKNS_16__wait_args_baseE@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__detail15_List_node_base10_M_reverseEv@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15
 FUNC:_ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
+FUNC:_ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationIxSt5ratioILx1ELx1000000000EEEE@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIcLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
+FUNC:_ZNSt8__format15__do_vformat_toIwLj1EEENS_10_Sink_iterIT_EES3_St17basic_string_viewIS2_St11char_traitsIS2_EERSt20basic_format_contextIS3_S2_E@@GLIBCXX_3.4.35
 FUNC:_ZNSt8__format25__locale_encoding_to_utf8ERKSt6localeSt17basic_string_viewIcSt11char_traitsIcEEPv@@GLIBCXX_3.4.34
 FUNC:_ZNSt8__format26__with_encoding_conversionERKSt6locale@@GLIBCXX_3.4.34
 FUNC:_ZNSt8bad_castD0Ev@@GLIBCXX_3.4
@@ -4225,6 +4287,7 @@ FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
 FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
 FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+FUNC:_ZSt19__syncbuf_get_mutexPv@@GLIBCXX_3.4.35
 FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
 FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
 FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
@@ -4589,6 +4652,7 @@ OBJECT:0:CXXABI_1.3.12
 OBJECT:0:CXXABI_1.3.13
 OBJECT:0:CXXABI_1.3.14
 OBJECT:0:CXXABI_1.3.15
+OBJECT:0:CXXABI_1.3.17
 OBJECT:0:CXXABI_1.3.2
 OBJECT:0:CXXABI_1.3.3
 OBJECT:0:CXXABI_1.3.4
@@ -4628,6 +4692,7 @@ OBJECT:0:GLIBCXX_3.4.31
 OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
+OBJECT:0:GLIBCXX_3.4.35
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6

From ppalka@gcc.gnu.org  Fri Apr 17 16:58:00 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Fri, 17 Apr 2026 16:58:00 +0000 (GMT)
Subject: [gcc r16-8740] libstdc++: Fix constraint recursion in std::indirect's
 operator== [PR124890]
Message-ID: <20260417170007.49B9948FEF4B@sourceware.org>

https://gcc.gnu.org/g:35d754588329660ea297bca621747840bffbc7e5

commit r16-8740-g35d754588329660ea297bca621747840bffbc7e5
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Apr 17 11:19:58 2026 -0400

    libstdc++: Fix constraint recursion in std::indirect's operator== [PR124890]
    
    Like in r16-559 for std::expected, std::indirect's operator== is also
    prone to constraint recursion due to CWG 2369, for the Mandates that we
    implement as an associated constraint.  This patch works around the
    recursion in a similar manner as done for std::expected (and
    std::basic_const_iterator).
    
            PR libstdc++/124890
            PR libstdc++/119714
            PR libstdc++/112490
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/indirect.h                 | 4 ++--
 libstdc++-v3/testsuite/std/memory/indirect/124890.cc | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/indirect.h b/libstdc++-v3/include/bits/indirect.h
index 2df46cc39a21..6490a77a5079 100644
--- a/libstdc++-v3/include/bits/indirect.h
+++ b/libstdc++-v3/include/bits/indirect.h
@@ -344,11 +344,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    return __lhs.__get() == __rhs.__get();
 	}
 
-      template<typename _Up>
+      template<typename _Up, same_as<_Tp> _Vp>
 	requires (!__is_indirect<_Up>) // See PR c++/99599
 	  && requires (const _Tp& __t, const _Up& __u) { __t == __u; }
 	friend constexpr bool
-	operator==(const indirect& __lhs, const _Up& __rhs)
+	operator==(const indirect<_Vp, _Alloc>& __lhs, const _Up& __rhs)
 	noexcept(noexcept(*__lhs == __rhs))
 	{
 	  if (!__lhs._M_objp)
diff --git a/libstdc++-v3/testsuite/std/memory/indirect/124890.cc b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc
new file mode 100644
index 000000000000..ce44256f2244
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/memory/indirect/124890.cc
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++26 } }
+
+// PR libstdc++/124890 - Circular constraint in std::indirect::operator==
+
+#include <memory>
+#include <vector>
+
+using I = std::vector<std::indirect<int>>::iterator;
+static_assert(std::totally_ordered<I>);

From gccadmin@gcc.gnu.org  Sat Apr 18 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 18 Apr 2026 00:16:55 +0000 (GMT)
Subject: [gcc r16-8744] Daily bump.
Message-ID: <20260418001655.EA7964BA2E36@sourceware.org>

https://gcc.gnu.org/g:439467e1b3c57ab14a81c1c588634e1a173788b8

commit r16-8744-g439467e1b3c57ab14a81c1c588634e1a173788b8
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Apr 18 00:16:31 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  54 +++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |  14 ++++++
 gcc/cp/ChangeLog        |  30 ++++++++++++
 gcc/testsuite/ChangeLog | 121 ++++++++++++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |   8 ++++
 libgfortran/ChangeLog   |  20 ++++++++
 libgomp/ChangeLog       |  18 +++++++
 libstdc++-v3/ChangeLog  |  88 +++++++++++++++++++++++++++++++++++
 9 files changed, 354 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 49394bf7d116..e0defe4987be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,57 @@
+2026-04-17  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR c/84717
+	* doc/extend.texi (Decimal Float): Document d and D suffixes.
+	Fix index entries for decimal float suffixes.
+
+2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* ipa-polymorphic-call.cc (polymorphic_ctor_dtor_p): Remove
+	check for pure/const flags
+
+2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* ipa-devirt.cc (odr_type_p): Add no_derived_construction_vtables
+	(odr_types_ptr): Move ahead in file.
+	(odr_types): Move ahead in file.
+	(anonymous_construction_vtable_p): New function.
+	(mark_derived_construction_vtables): New function.
+	(construction_vtable_hook): New function.
+	(type_possibly_instantiated_p): Watch for construction vtables.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* config/nvptx/nvptx-sm.def: Add '50'.
+	* config/nvptx/nvptx-gen.h: Regenerate.
+	* config/nvptx/nvptx-gen.opt: Likewise.
+	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
+	* config/nvptx/nvptx.opt (-march-map=sm_50): Likewise.
+	* config.gcc: Likewise.
+	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_50'.
+	* config/nvptx/gen-multilib-matches-tests: Extend.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* config/nvptx/nvptx-opts.h (enum ptx_version): Add
+	'PTX_VERSION_4_0'.
+	* config/nvptx/nvptx.cc (ptx_version_to_string)
+	(ptx_version_to_number): Adjust.
+	* config/nvptx/nvptx.h (TARGET_PTX_4_0): New.
+	* config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue'
+	'4.0' for 'PTX_VERSION_4_0'.
+	* doc/invoke.texi (Nvidia PTX Options): Document '-mptx=4.0'.
+
+2026-04-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR middle-end/124900
+	* gimple-crc-optimization.cc (crc_optimization::optimize_crc_loop): Do
+	not expand to table when compiling for size.
+	(class crc_optimization): Update prototype of optimize_crc_loop to
+	include loop.
+	(crc_optimization::execute): Pass loop to optimize_crc_loop.
+
 2026-04-16  Richard Earnshaw  <rearnsha@arm.com>
 
 	* config/arm/arm-cpus.in (cortex-m85): Allow +cdecp<n>.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0f49f77bbf06..4cbd19c3434d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260417
+20260418
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0b0105b5a0c1..693ff0b767ea 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/107392
+	* sem_res.adb: Add clauses for Ttypes.
+	(Resolve.Patch_Up_Value): Do not try to convert real literals that
+	do not fit in Universal_Integer.
+
+2026-04-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/107391
+	* urealp.adb (Decimal_Exponent_Hi): Check that the denominator is
+	in range before invoking UI_To_Int on it, and cope with failure.
+	(Decimal_Exponent_Lo): Likewise.
+
 2026-04-15  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/105212
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6cb85c1c26f8..1b85cf48983a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,33 @@
+2026-04-17  Marek Polacek  <polacek@redhat.com>
+
+	* cp-tree.h (reflection_function_template_p): Change the
+	parameter to const_tree.
+	* reflect.cc (valid_splice_for_member_access_p): Use
+	reflection_function_template_p.
+	(reflection_function_template_p): Check DECL_FUNCTION_TEMPLATE_P
+	instead of really_overloaded_fn.  Unwrap BASELINKs and OVERLOADs.
+	Adjust the parameter type.
+
+2026-04-17  Marek Polacek  <polacek@redhat.com>
+
+	* reflect.cc (splice): Detect a null reflection.
+
+2026-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* lex.cc (cxx_init): Don't call cpp_warn on contract_assert,
+	instead call it on pre and post.
+
+2026-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/123783
+	* reflect.cc (splice): Reject splicing of function parameters.
+
+2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* constexpr.cc (cxx_eval_call_expression): Unshare bindings
+	sooner.
+
 2026-04-16  Jakub Jelinek  <jakub@redhat.com>
 
 	* reflect.cc (dump_data_member_spec): Temporarily ignore
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1a0ad88b2d45..7e48f6b0a47f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,124 @@
+2026-04-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/specs/float_literal2.ads: New test.
+
+2026-04-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/specs/float_literal1.ads: New test.
+
+2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* g++.dg/torture/pr120098.C: New test.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR fortran/108382
+	* gfortran.dg/goacc/omp-108382.f90: Move...
+	* gfortran.dg/goacc-gomp/pr108382.f90: ... here, and adjust.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR fortran/93463
+	* gfortran.dg/goacc/pr93463.f90: Move...
+	* gfortran.dg/goacc-gomp/pr93463.f90: ... here, and adjust.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR fortran/93329
+	* gfortran.dg/goacc/pr93329.f90: Move...
+	* gfortran.dg/goacc-gomp/pr93329.f90: ... here, and adjust.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR fortran/63858
+	* gfortran.dg/goacc/omp-fixed.f: Move...
+	* gfortran.dg/goacc-gomp/pr63858.f: ... here, and adjust.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* gfortran.dg/goacc/omp.f95: Move...
+	* gfortran.dg/goacc-gomp/nesting-fail-1.f95: ... here, and adjust.
+
+2026-04-17  Steven G. Kargl  <kargl@gcc.gnu.org>
+	    Steven G. Kargl  <kargl@gcc.gnu.org>
+
+	PR libfortran/120431
+	PR fortran/120431
+	* gfortran.dg/spread_scalar_zerosize.f90: New testcase.
+
+2026-04-17  Marek Polacek  <polacek@redhat.com>
+
+	* g++.dg/reflect/null6.C: New test.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* gcc.target/nvptx/march-map=sm_50.c: Adjust.
+	* gcc.target/nvptx/march=sm_50.c: New.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* gcc.target/nvptx/mptx=4.0.c: New.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* rust/compile/macros/builtin/builtin_macro.exp: Revert previous change.
+	* rust/compile/macros/mbe/mbe_macro.exp: Likewise.
+	* rust/compile/macros/proc/proc_macro.exp: Likewise.
+	* rust/compile/torture/compile.exp: Likewise.
+	* rust/compile/xfail/xfail.exp: Likewise.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* rust/compile/compile.exp: Revert previous change.
+	* rust/compile/issue_4402_foo.rs: 'dg-skip-if' for '*-*-*'.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR cobol/119818
+	* cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob:
+	'dg-set-target-env-var TZ UTC0' (take 2).
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR tree-optimization/124037
+	* g++.dg/vect/vect-pr124037.cc: Unrestrict.
+	* gcc.dg/vect/vect-pr124037.c: Likewise.
+
+2026-04-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR middle-end/124900
+	* gcc.target/aarch64/crc-1.c: New test.
+	* gcc.target/aarch64/crc-2.c: New test.
+	* gcc.target/aarch64/crc-3.c: New test.
+	* gcc.target/aarch64/crc-4.c: New test.
+
+2026-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/warn/Wkeyword-macro-1.C: Expect error for pre/post for C++26.
+	* g++.dg/warn/Wkeyword-macro-2.C: Expect warning for pre/post for
+	C++26.
+	* g++.dg/warn/Wkeyword-macro-4.C: Expect error for pre/post for C++26.
+	* g++.dg/warn/Wkeyword-macro-5.C: Expect warning for pre/post for
+	C++26.
+	* g++.dg/warn/Wkeyword-macro-7.C: Likewise.
+	* g++.dg/warn/Wkeyword-macro-8.C: Likewise.
+
+2026-04-17  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/123783
+	* g++.dg/reflect/mangle3.C: Remove f5<parameters_of (^^g)[0]>()
+	case.
+	* g++.dg/reflect/dep14.C: Include <ranges>.
+	(func): Apply variable_of to each vector member.
+	(func2): Likewise.  Use ^^func2 instead of ^^func.
+	* g++.dg/reflect/splice12.C: New test.
+
+2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* g++.dg/cpp23/explicit-obj-lambda2.C: Do strict GC and -Wall.
+
 2026-04-16  Richard Earnshaw  <rearnsha@arm.com>
 
 	* gcc.target/arm/multilib.exp: Test CDE options on cortex-m85.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index efba86e010cf..0b0dc62992e2 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	* config/arm/sfp-exceptions.c: New file.
+	* config/arm/sfp-machine.h: Define FP_HANDLE_EXCEPTIONS, FP_EX_*
+	MACROs, _FP_DECL_EX, FP_ROUNDMODE, FP_INIT_ROUNDMODE, FP_RND_* MACROs
+	and declare __sfp_handle_exceptions.
+	* config/arm/t-softfp: Add sfp-exceptions.c to LIB2ADD.
+
 2026-04-15  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	* libgcov-driver-system.c (gcov_exit_open_gcda_file): Handle
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 6103690279f2..f05d112ae960 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,23 @@
+2026-04-17  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+	PR libfortran/120431
+	* m4/spread.m4: Fix scalar source case with ncopies < 0.
+	* generated/spread_c10.c: Regenerated.
+	* generated/spread_c16.c: Ditto.
+	* generated/spread_c17.c: Ditto.
+	* generated/spread_c4.c: Ditto.
+	* generated/spread_c8.c: Ditto.
+	* generated/spread_i1.c: Ditto.
+	* generated/spread_i16.c: Ditto.
+	* generated/spread_i2.c: Ditto.
+	* generated/spread_i4.c: Ditto.
+	* generated/spread_i8.c: Ditto.
+	* generated/spread_r10.c: Ditto.
+	* generated/spread_r16.c: Ditto.
+	* generated/spread_r17.c: Ditto.
+	* generated/spread_r4.c: Ditto.
+	* generated/spread_r8.c: Ditto.
+
 2026-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/124543
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index a77142e890b9..b3dc5f4ade33 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,21 @@
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* testsuite/libgomp.c/declare-variant-3-sm50.c: New.
+	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	PR middle-end/95551
+	* testsuite/libgomp.fortran/target-var.f90: Rename to...
+	* testsuite/libgomp.fortran/pr95551-1.f90: ... this, and fix up the
+	OpenACC.
+	* testsuite/libgomp.oacc-fortran/pr95551-1.f90: New.
+
+2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* testsuite/libgomp.c/omp_target_is_present.c (check_routines):
+	'omp_target_disassociate_ptr' after 'omp_target_associate_ptr'.
+
 2026-03-27  Tobias Burnus  <tburnus@baylibre.com>
 
 	* target.c (omp_target_is_present, omp_get_mapped_ptr): Update handling
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 974866b89f63..0845c902e385 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,91 @@
+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

From aoliva@gcc.gnu.org  Sat Apr 18 08:41:24 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat, 18 Apr 2026 08:41:24 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: follow std in
 numeric_limits<bool>::traps and integral traps
Message-ID: <20260418084124.2782B4CD2023@sourceware.org>

https://gcc.gnu.org/g:8d31b2534874be7223ac887ccd3f9c79d5963f50

commit 8d31b2534874be7223ac887ccd3f9c79d5963f50
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:08 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps and integral traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false, presumably in response to
    issue 184.
    
    Issue 554 clarifies that traps is about values that may trap, rather
    than operations that may trap, so we were wrong in the interpretation
    about divide-by-zero operations' trapping on integral types that led
    to __glibcxx_integral_traps's defaulting to true, and some of its
    overrides.
    
    Align numeric_limits<bool>::traps with the standard, default
    __glibcxx_integral_traps to false, drop the overriders based on the
    incorrect interpretation, but keep __glibcxx_integral_traps for the
    admittedly unlikely case of trapping integral values' existing on some
    architecture.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/limits (__glibcxx_integral_traps): Set to
            false.  Update comments.
            (numeric_limits<bool>::traps): Likewise.  Likewise.
            * config/cpu/arm/cpu_defines.h (__glibcxx_integral_traps):
            Drop overrider.
            * config/cpu/powerpc/cpu_defines.h (__glibcxx_integral_traps):
            Likewise.

Diff:
---
 libstdc++-v3/config/cpu/arm/cpu_defines.h     |  7 -------
 libstdc++-v3/config/cpu/powerpc/cpu_defines.h |  3 ---
 libstdc++-v3/include/std/limits               | 16 +++++++++-------
 3 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/libstdc++-v3/config/cpu/arm/cpu_defines.h b/libstdc++-v3/config/cpu/arm/cpu_defines.h
index 57e4cbbe0136..36d6ab25bdb9 100644
--- a/libstdc++-v3/config/cpu/arm/cpu_defines.h
+++ b/libstdc++-v3/config/cpu/arm/cpu_defines.h
@@ -30,11 +30,4 @@
 #ifndef _GLIBCXX_CPU_DEFINES
 #define _GLIBCXX_CPU_DEFINES 1
 
-// Integer divide instructions don't trap on ARM.
-#ifdef __ARM_ARCH_EXT_IDIV__
-#define __glibcxx_integral_traps false
-#else
-#define __glibcxx_integral_traps true
-#endif
-
 #endif
diff --git a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
index f4248e0f602a..59a9b9209872 100644
--- a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
+++ b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
@@ -30,7 +30,4 @@
 #ifndef _GLIBCXX_CPU_DEFINES
 #define _GLIBCXX_CPU_DEFINES 1
 
-// Integer divide instructions don't trap on PowerPC.
-#define __glibcxx_integral_traps false
-
 #endif
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..cb775fbd438e 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -81,10 +81,11 @@
 // The default values are appropriate for many 32-bit targets.
 
 // GCC only intrinsically supports modulo integral types.  The only remaining
-// integral exceptional values is division by zero.  Only targets that do not
-// signal division by zero in some "hard to ignore" way should use false.
+// integral exceptional values is division by zero, but that's an operation,
+// not a value, and traps is about values that trap (Issue554), so there aren't
+// any for integral types.
 #ifndef __glibcxx_integral_traps
-# define __glibcxx_integral_traps true
+# define __glibcxx_integral_traps false
 #endif
 
 // float
@@ -446,10 +447,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
-      static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
+      // The standard is explicit in that the bool specialization has it set to
+      // false, whereas other integral types, for which no explicit
+      // specialization is given in the standard, follow the general
+      // specification.
+      static _GLIBCXX_USE_CONSTEXPR bool traps = false;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
        = round_toward_zero;

From aoliva@gcc.gnu.org  Sat Apr 18 10:00:11 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat, 18 Apr 2026 10:00:11 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260418100011.C113D4AA3946@sourceware.org>

https://gcc.gnu.org/g:a730c27a5035f3822fca744d3dfe8014c3c39a90

commit a730c27a5035f3822fca744d3dfe8014c3c39a90
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:14 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 15 ++++++++++--
 .../logical_traits/requirements/junction_neg.cc    | 27 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..238450518c08 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -241,10 +241,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   } // namespace __detail
   /// @endcond
 
+  template<typename _From, typename _To>
+    struct is_convertible;
+
   template<typename... _Bn>
     struct conjunction
     : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__conjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct conjunction<>
@@ -254,7 +261,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename... _Bn>
     struct disjunction
     : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__disjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct disjunction<>
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..eb0f246367f1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,27 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctTtf; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfTtf;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfTtf; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtTtf;
+
+// { dg-prune-output "not convertible to bool|evaluates to false" }

From aoliva@gcc.gnu.org  Sat Apr 18 10:00:16 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat, 18 Apr 2026 10:00:16 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: map 64-bit
 long double to double on sse [PR124657]
Message-ID: <20260418100016.E6E8A4D108D8@sourceware.org>

https://gcc.gnu.org/g:35e9eb59d4d0993cdcae23130300a099e0e8a3cd

commit 35e9eb59d4d0993cdcae23130300a099e0e8a3cd
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:00 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h (__intrinsic_type::type):
            Map long double to double.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..8c30c8af2688 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE

From aoliva@gcc.gnu.org  Sat Apr 18 10:00:22 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat, 18 Apr 2026 10:00:22 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: x86: accept
 64-bit long double as double [PR124657]
Message-ID: <20260418100022.048604D108DB@sourceware.org>

https://gcc.gnu.org/g:bdecbf84630b58e5a9075ed03052b2b58b2cfd9a

commit bdecbf84630b58e5a9075ed03052b2b58b2cfd9a
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:03 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 79 ++++++++++++++---------
 1 file changed, 47 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..214a844ea0a1 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,28 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+    return is_same_v<_Tp, double>
+      || (sizeof (long double) == sizeof (double) && is_same_v<_Tp, long double>);
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +444,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +453,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +462,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +471,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +480,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2412,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2437,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2462,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2520,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2545,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2570,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5036,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5099,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5135,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5165,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From aoliva@gcc.gnu.org  Sat Apr 18 10:28:41 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat, 18 Apr 2026 10:28:41 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: x86: accept
 64-bit long double as double [PR124657]
Message-ID: <20260418102841.CA7574AA397A@sourceware.org>

https://gcc.gnu.org/g:70bfdcc29b151ff8b77797e7d725f3a15f043096

commit 70bfdcc29b151ff8b77797e7d725f3a15f043096
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:03 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 79 ++++++++++++++---------
 1 file changed, 47 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..73c10c1dcbbe 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,28 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+    return is_same_v<_Tp, double>
+      || (sizeof (long double) == sizeof (double) && is_same_v<_Tp, long double>);
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +444,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +453,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +462,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +471,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +480,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2412,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2437,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2462,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2520,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2545,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2570,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5036,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5099,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5135,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5165,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From ppalka@gcc.gnu.org  Sat Apr 18 23:26:35 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Sat, 18 Apr 2026 23:26:35 +0000 (GMT)
Subject: [gcc r16-8748] libstdc++: Fix constantness of engaged -> disengaged
 std::optional [PR124910]
Message-ID: <20260418232635.EB5514BB588D@sourceware.org>

https://gcc.gnu.org/g:f3e63a9fb3b40f81b794b369a1ab616f01e69730

commit r16-8748-gf3e63a9fb3b40f81b794b369a1ab616f01e69730
Author: Patrick Palka <ppalka@redhat.com>
Date:   Sat Apr 18 19:25:59 2026 -0400

    libstdc++: Fix constantness of engaged -> disengaged std::optional [PR124910]
    
    When an optional that contains a value is cleared, _M_destroy invokes the
    destructor of the contained value _Storage::_M_value, leaving the union
    _Storage without an active member.  While this is benign at runtime, a
    union suboject with no active member violates core constant expression
    requirements and in turn an optional in this state can't be used as a
    constant initializer, which Clang and recent GCC (since r16-3022) correctly
    diagnose.
    
    To fix this, this patch makes _M_destroy activate the dummy union member
    _M_empty after destroying _M_value to ensure that the union always has
    an active member throughout its lifetime.  We use std::construct_at
    instead of simple assignment to work around a front end bug (comment #3
    in the PR).  Doing so means we don't activate the member in C++17 mode,
    which should be fine; I don't think it's possible to disengage an engaged
    optional using only the C++17 constexpr optional operations.
    
            PR c++/124910
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/optional                  |  6 ++
 .../testsuite/20_util/optional/constexpr/124910.cc | 74 ++++++++++++++++++++++
 2 files changed, 80 insertions(+)

diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index 0f4cf0bd1ef6..49ba7b6b45dd 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -321,6 +321,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	_M_engaged = false;
 	_M_payload._M_value.~_Stored_type();
+#if __cpp_lib_optional >= 202106L // full constexpr support
+	if (std::is_constant_evaluated())
+	  // Ensure union _M_payload always has an active member, for sake
+	  // of the core constant expression requirements.
+	  std::construct_at(std::__addressof(_M_payload._M_empty));
+#endif
       }
 
 #if __cplusplus >= 202002L
diff --git a/libstdc++-v3/testsuite/20_util/optional/constexpr/124910.cc b/libstdc++-v3/testsuite/20_util/optional/constexpr/124910.cc
new file mode 100644
index 000000000000..2f61f7e4e775
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/optional/constexpr/124910.cc
@@ -0,0 +1,74 @@
+// { dg-do compile { target c++20 } }
+
+// PR124910 - bogus 'std::optional{...}' is not a constant expression error
+// after resetting it via '= nullopt'
+
+#include <optional>
+
+struct A
+{
+  constexpr A(int m) : m(m) { }
+  int m;
+};
+
+struct B
+{
+  constexpr B(int m) : m(m) { }
+  constexpr ~B() { }
+  int m;
+};
+
+static_assert(   std::is_trivially_destructible_v<int> );
+static_assert(   std::is_trivially_destructible_v<A> );
+static_assert( ! std::is_trivially_destructible_v<B> );
+
+template<class T>
+void
+do_test()
+{
+  constexpr std::optional<T> x1 = [] {
+    std::optional<T> o = 1;
+    o = std::nullopt;
+    return o;
+  }();
+
+  constexpr std::optional<T> x2 = [] {
+    std::optional<T> o = 1;
+    o.reset();
+    return o;
+  }();
+
+  constexpr std::optional<T> x3 = [] {
+    std::optional<T> o1 = 1;
+    std::optional<long> o2;
+    o1 = o2;
+    return o1;
+  }();
+
+  constexpr std::optional<T> x4 = [] {
+    std::optional<T> o1 = 1;
+    std::optional<long> o2;
+    o1 = std::move(o2);
+    return o1;
+  }();
+
+  constexpr std::optional<T> x5 = [] {
+    std::optional<T> o1 = 1;
+    std::optional<T> o2;
+    std::swap(o1, o2);
+    return o1;
+  }();
+
+  struct C : std::optional<T> {
+    constexpr C() : std::optional<T>(1) { this->reset(); }
+  };
+  constexpr C x6;
+}
+
+int
+main()
+{
+  do_test<int>();
+  do_test<A>();
+  do_test<B>();
+}

From gccadmin@gcc.gnu.org  Sun Apr 19 00:16:51 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 19 Apr 2026 00:16:51 +0000 (GMT)
Subject: [gcc r16-8749] Daily bump.
Message-ID: <20260419001651.5D8C94BA9000@sourceware.org>

https://gcc.gnu.org/g:2989598a734c6db3820f7484fa07107ab7a9bcc9

commit r16-8749-g2989598a734c6db3820f7484fa07107ab7a9bcc9
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun Apr 19 00:16:23 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  9 +++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/d/ChangeLog         | 13 +++++++++++++
 gcc/testsuite/ChangeLog | 10 ++++++++++
 libstdc++-v3/ChangeLog  |  9 +++++++++
 5 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0defe4987be..452ac8090464 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2026-04-18  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* config/aarch64/aarch64.md (SME_STATE_REGNUM): Fix a comment typo.
+
+2026-04-18  Gopi Kumar Bulusu  <gopi@sankhya.com>
+
+	PR target/103383
+	* config/microblaze/microblaze.md: bswaphi2: (set_attr length 8)
+
 2026-04-17  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR c/84717
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 4cbd19c3434d..ed84f08a6b16 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260418
+20260419
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index bae93b196183..d8146564af1a 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,16 @@
+2026-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/124922
+	* d-codegen.cc (build_trap_call): New function.
+	(build_array_bounds_call): Use it.
+	(build_bounds_index_condition): Likewise.
+	(build_bounds_slice_condition): Likewise.
+	(d_build_call): Likewise.
+	* expr.cc (ExprVisitor::visit (HaltExp *)): Likewise.
+	(ExprVisitor::visit (AssertExp *)): Likewise.  Return zero instead of
+	void_node when assert contracts are disabled.
+	* d-tree.h (build_trap_call): New prototype.
+
 2026-04-14  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* dmd/MERGE: Merge upstream dmd e145b91245.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7e48f6b0a47f..4276423532e6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2026-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/124922
+	* gdc.dg/pr124922.d: New test.
+
+2026-04-18  Gopi Kumar Bulusu  <gopi@sankhya.com>
+
+	PR target/103383
+	* gcc.target/microblaze/isa/pr103383.c: New test.
+
 2026-04-17  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gnat.dg/specs/float_literal2.ads: New test.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0845c902e385..9781f9f95d6e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+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

From redi@gcc.gnu.org  Mon Apr 20 08:07:08 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 20 Apr 2026 08:07:08 +0000 (GMT)
Subject: [gcc r16-8761] libstdc++: Fix accidentally committed change to
 spelling of macro
Message-ID: <20260420080708.462674BA23C4@sourceware.org>

https://gcc.gnu.org/g:b40bb34c3f5e9942d083efdee393c6e2d25e5981

commit r16-8761-gb40bb34c3f5e9942d083efdee393c6e2d25e5981
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Apr 17 21:53:16 2026 +0100

    libstdc++: Fix accidentally committed change to spelling of macro
    
    This change to the macro was done intentionally to quickly test that the
    changes in r16-8720-g209550a04e143e did not break the code in the #else
    branch, but it was not supposed to be committed!
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/print.h: Fix spelling of macro.

Diff:
---
 libstdc++-v3/include/bits/print.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/print.h b/libstdc++-v3/include/bits/print.h
index ab3ff9996126..17567f2f5547 100644
--- a/libstdc++-v3/include/bits/print.h
+++ b/libstdc++-v3/include/bits/print.h
@@ -58,7 +58,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 namespace __format
 {
-#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLBC_STDIO_EXT
+#if _GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT
   // These are defined in <stdio_ext.h> but we don't want to include that.
   extern "C" int __fwritable(FILE*) noexcept;
   extern "C" int __flbf(FILE*) noexcept;

From gccadmin@gcc.gnu.org  Tue Apr 21 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 21 Apr 2026 00:16:54 +0000 (GMT)
Subject: [gcc r16-8769] Daily bump.
Message-ID: <20260421001654.78ABA4A98F00@sourceware.org>

https://gcc.gnu.org/g:c39e4949694f15b4bd7f7b4de2769d853688508e

commit r16-8769-gc39e4949694f15b4bd7f7b4de2769d853688508e
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Apr 21 00:16:25 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 34 ++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/ada/ChangeLog       |  7 +++++++
 gcc/cp/ChangeLog        | 26 ++++++++++++++++++++++++++
 gcc/d/ChangeLog         | 12 ++++++++++++
 gcc/testsuite/ChangeLog | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  4 ++++
 7 files changed, 133 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a0a709dd30da..fc9dde2c6d0a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,37 @@
+2026-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gimple-lower-bitint.cc (bitint_large_huge::lower_shift_stmt): In the
+	RSHIFT_EXPR case, use p2 in two LE_EXPR conditions rather than just
+	one.  In LSHIFT_EXPR case, use signed RSHIFT_EXPR instead of unsigned.
+	(bitint_large_huge::lower_muldiv_stmt): For unsigned MULT_EXPR with
+	bitint_extended if prec is not multiple of limb_prec, clear padding
+	bits after libgcc call.
+	(bitint_large_huge::lower_float_conv_stmt): Use signed RSHIFT_EXPR
+	instead of unsigned.
+
+2026-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gimple-lower-bitint.cc (bitint_precision_kind): Assert the current
+	assumptions, that bitint_ext_full for abi_limb_prec > limb_prec is
+	supported only when abi_limb_prec is limb_Prec * 2 and it is not
+	big endian in that case.
+	(bitint_large_huge::lower_mergeable_stmt): Don't set separate_ext
+	fir bitint_ext_full for bit-field stores.  Guard the condition
+	on an extra limb of padding bits to be extended rather than including
+	earlier extensions in that too.  If already sign extending before
+	and type is unsigned, set zero_ms_limb instead and later handle it.
+	(bitint_large_huge::lower_shift_stmt): Handle bitint_ext_full.
+
+2026-04-20  Soumya AR  <soumyaa@nvidia.com>
+
+	* config/aarch64/aarch64-narrow-gp-writes.cc (narrow_dimode_src): Remove
+	redundant checks. Don't recurse when an operand remains DImode.
+	(narrow_gp_writes::optimize_compare_arith_insn): Use
+	HOST_WIDE_INT_PRINT_HEX.
+	(narrow_gp_writes::optimize_single_set_insn): Likewise.
+
 2026-04-19  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	PR rtl-optimization/124643
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 64476cb7c413..a989eb19c172 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260420
+20260421
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f64ec5d1755f..2ccadd470302 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/124918
+	* gcc-interface/Makefile.in (TOOLS1_LIBS): Restore.
+	(../../gnatmake$(exeext)): Link with $(TOOLS1_LIBS).
+	(../../gnatlink$(exeext)): Likewise.
+
 2026-04-19  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/124918
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1b85cf48983a..dc30c467a2f4 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,29 @@
+2026-04-20  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124910
+	* constexpr.cc (cxx_eval_store_expression): Ending the
+	lifetime of the active member means no active member.
+
+2026-04-20  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124706
+	* parser.cc (cp_parser_splice_type_specifier): For ctad_template_p
+	call make_template_placeholder.
+	* pt.cc (tsubst_splice_scope): Likewise.
+
+2026-04-20  Iain Sandoe  <iain@sandoe.co.uk>
+
+	PR c++/124648
+	* contracts.cc (maybe_apply_function_contracts): Nest pre and
+	post conditions inside the outer bind expression of a lambda
+	with captures.
+
+2026-04-20  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124855
+	* reflect.cc (consteval_only_p): Return false if the type is
+	dependent.
+
 2026-04-17  Marek Polacek  <polacek@redhat.com>
 
 	* cp-tree.h (reflection_function_template_p): Change the
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 686ffcd0c26b..1538f2068711 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/123411
+	* types.cc (TypeVisitor::visit (TypeEnum *)): Only call layout_type on
+	the TYPE_MAIN_VARIANT of the enum.
+
+2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/124157
+	* expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Return AA
+	constructor with memory returned by _d_assocarrayliteralTX().
+
 2026-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* d-attribs.cc (d_langhook_gnu_attributes): Add no_split_stack
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 661f03a9b65b..ec8caabd3054 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,52 @@
+2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/123411
+	* gdc.dg/pr123411.d: New test.
+
+2026-04-20  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124910
+	* g++.dg/cpp2a/constexpr-union11.C: New test.
+
+2026-04-20  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124706
+	* g++.dg/reflect/error10.C: Adjust dg-error.
+	* g++.dg/reflect/type9.C: Likewise.
+	* g++.dg/reflect/ctad1.C: New test.
+	* g++.dg/reflect/ctad2.C: New test.
+
+2026-04-20  Iain Sandoe  <iain@sandoe.co.uk>
+
+	PR c++/124648
+	* g++.dg/contracts/cpp26/expr.prim.lambda.closure.p10.C: Update
+	to include tests of conditions seen in PR124648.
+
+2026-04-20  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124855
+	* g++.dg/reflect/type11.C: New test.
+
+2026-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/122021
+	* gcc.target/i386/pr122021-0.c: Remove -m32 from dg-options.
+
+2026-04-20  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR testsuite/124939
+	* gcc.dg/torture/pr121649.c: Replace long with long long.
+
+2026-04-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gcc.dg/bitintext.h: Use __riscv macro instead of __riscv__.
+	* gcc.dg/torture/bitint-86.c: Remove bogus sync_char_short
+	effective target.
+	* gcc.dg/torture/bitint-87.c: Likewise.
+	* gcc.dg/torture/bitint-88.c: New test.
+	* gcc.dg/torture/bitint-89.c: New test.
+
 2026-04-19  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	PR rtl-optimization/124643
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9781f9f95d6e..3cfee47d1c87 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+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

From meissner@gcc.gnu.org  Tue Apr 21 05:04:00 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Tue, 21 Apr 2026 05:04:00 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work241)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260421050400.4F8794BA23EC@sourceware.org>

https://gcc.gnu.org/g:fbdcbc178a5da544afc8654418aa316af620b04d

commit fbdcbc178a5da544afc8654418aa316af620b04d
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Apr 21 01:03:26 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..0c24ade497ff
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work241 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..b9ec8cf409cd
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work241, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From meissner@gcc.gnu.org  Tue Apr 21 06:20:49 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Tue, 21 Apr 2026 06:20:49 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work242)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260421062049.976094BA9002@sourceware.org>

https://gcc.gnu.org/g:f82c946ee500ab13b3cf0aadc1f15284cc34f73c

commit f82c946ee500ab13b3cf0aadc1f15284cc34f73c
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Apr 21 02:01:22 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..40cee0f58d4b
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work242 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..62f9fbfb4e23
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work242, baseline ====================
+
+2026-04-21   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From ppalka@gcc.gnu.org  Tue Apr 21 13:34:43 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Tue, 21 Apr 2026 13:34:43 +0000 (GMT)
Subject: [gcc r16-8777] libstdc++: Restrict engaged -> disengaged
 std::optional fix [PR124910]
Message-ID: <20260421133443.1BDFB4BA543C@sourceware.org>

https://gcc.gnu.org/g:d92712cdcb19a8e0c6668880b2443a3a18d983da

commit r16-8777-gd92712cdcb19a8e0c6668880b2443a3a18d983da
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Apr 21 09:33:50 2026 -0400

    libstdc++: Restrict engaged -> disengaged std::optional fix [PR124910]
    
    It turns out a union without an active member does not violate C++20 core
    constant expression rules and r16-8748 was really just a workaround for a
    front end bug.  The actual underlying problem -- that the constexpr
    evaluator treated an explicitly destroyed union member as still active --
    has been fixed by r16-8767 which makes this workaround unnecessary for GCC.
    Rather than remove the workaround, restrict it to Clang which seems to have
    a similar bug making it still needed for e.g. the r16-8748 testcase.
    
            PR c++/124910
    
    libstdc++-v3/ChangeLog:
    
            * include/std/optional (_Optional_payload_base::_M_destroy):
            Restrict r16-8748 workaround to Clang, and adjust comment.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/optional | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index 49ba7b6b45dd..b9cc019feff7 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -321,10 +321,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	_M_engaged = false;
 	_M_payload._M_value.~_Stored_type();
-#if __cpp_lib_optional >= 202106L // full constexpr support
+#if defined(__clang__) && __cpp_lib_optional >= 202106L // full constexpr support
 	if (std::is_constant_evaluated())
-	  // Ensure union _M_payload always has an active member, for sake
-	  // of the core constant expression requirements.
+	  // Work around PR124910 for Clang.
 	  std::construct_at(std::__addressof(_M_payload._M_empty));
 #endif
       }

From mkretz@gcc.gnu.org  Tue Apr 21 13:49:07 2026
From: mkretz@gcc.gnu.org (Matthias Kretz)
Date: Tue, 21 Apr 2026 13:49:07 +0000 (GMT)
Subject: [gcc r16-8778] libstdc++: Implement P4012R1 while reverting P3844R2
 (consteval simd broadcast)
Message-ID: <20260421134907.B9A674BA2E07@sourceware.org>

https://gcc.gnu.org/g:804bde962de4819138951aed24b2c8ba768d7344

commit r16-8778-g804bde962de4819138951aed24b2c8ba768d7344
Author: Matthias Kretz <m.kretz@gsi.de>
Date:   Wed Apr 15 18:04:29 2026 +0200

    libstdc++: Implement P4012R1 while reverting P3844R2 (consteval simd broadcast)
    
    P3844R2 added consteval conversion for value-preserving conversion from
    constants. It had been approved by LEWG in Kona. Therefore, the current
    implementation has the consteval broadcast constructor. In Croydon, LEWG
    reversed the decision but changed the overload set to keep the design
    space open for C++29.
    
    This patch implements the removal of the consteval constructor and
    changes the broadcast constructor according to P4012R1, to keep the
    design space open.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

Diff:
---
 libstdc++-v3/include/bits/simd_details.h         |  9 ------
 libstdc++-v3/include/bits/simd_mask.h            | 17 ++++++------
 libstdc++-v3/include/bits/simd_vec.h             | 22 +++------------
 libstdc++-v3/testsuite/std/simd/arithmetic.cc    | 35 ++++++++++++------------
 libstdc++-v3/testsuite/std/simd/mask.cc          |  6 ++--
 libstdc++-v3/testsuite/std/simd/simd_alg.cc      |  5 ++--
 libstdc++-v3/testsuite/std/simd/traits_common.cc |  4 +--
 libstdc++-v3/testsuite/std/simd/traits_math.cc   |  2 +-
 8 files changed, 39 insertions(+), 61 deletions(-)

diff --git a/libstdc++-v3/include/bits/simd_details.h b/libstdc++-v3/include/bits/simd_details.h
index 31bd6ac45ab2..3880d8a19166 100644
--- a/libstdc++-v3/include/bits/simd_details.h
+++ b/libstdc++-v3/include/bits/simd_details.h
@@ -1241,15 +1241,6 @@ namespace simd
       return static_cast<_To>(__x);
     }
 
-  template <typename _From, typename _To>
-    concept __simd_vec_bcast_consteval
-      = __explicitly_convertible_to<_From, _To>
-	  && is_arithmetic_v<remove_cvref_t<_From>> && convertible_to<_From, _To>
-	  && !__value_preserving_convertible_to<remove_cvref_t<_From>, _To>
-	  && (is_same_v<common_type_t<_From, _To>, _To>
-		|| (is_same_v<remove_cvref_t<_From>, int> && is_integral_v<_To>)
-		|| (is_same_v<remove_cvref_t<_From>, unsigned> && unsigned_integral<_To>));
-
   /** @internal
    * std::pair is not trivially copyable, this one is
    */
diff --git a/libstdc++-v3/include/bits/simd_mask.h b/libstdc++-v3/include/bits/simd_mask.h
index 27eff4ca01a7..0a7cfa03cedd 100644
--- a/libstdc++-v3/include/bits/simd_mask.h
+++ b/libstdc++-v3/include/bits/simd_mask.h
@@ -865,11 +865,12 @@ namespace simd
 		using _Ip = typename _VecType::value_type;
 		_VecType __v0 = _Ip(__val);
 		constexpr int __bits_per_element = sizeof(_Ip) * __CHAR_BIT__;
-		constexpr _VecType __pow2 = _VecType(1) << (__iota<_VecType> % __bits_per_element);
+		constexpr _VecType __pow2 = _VecType(cw<1>)
+					      << (__iota<_VecType> % cw<__bits_per_element>);
 		if constexpr (_S_size < __bits_per_element)
-		  return ((__v0 & __pow2) > 0)._M_concat_data();
+		  return ((__v0 & __pow2) > cw<0>)._M_concat_data();
 		else if constexpr (_S_size == __bits_per_element)
-		  return ((__v0 & __pow2) != 0)._M_concat_data();
+		  return ((__v0 & __pow2) != cw<0>)._M_concat_data();
 		else
 		  {
 		    static_assert(_Bytes == 1);
@@ -886,7 +887,7 @@ namespace simd
 			};
 			__v1 *= 0x0101'0101'0101'0101ull;
 			__v0 = __builtin_bit_cast(_VecType, __v1);
-			return ((__v0 & __pow2) != 0)._M_data;
+			return ((__v0 & __pow2) != cw<0>)._M_data;
 		      }
 		    else
 		      {
@@ -895,7 +896,7 @@ namespace simd
 			__v0 = _VecType::_S_static_permute(__v1, [](int __i) {
 				 return __i / __CHAR_BIT__;
 			       });
-			return ((__v0 & __pow2) != 0)._M_data;
+			return ((__v0 & __pow2) != cw<0>)._M_data;
 		      }
 		  }
 	      }
@@ -991,7 +992,7 @@ namespace simd
 	  else
 	    {
 	      using _UV = basic_vec<_Up, _UAbi>;
-	      return __select_impl(static_cast<_UV::mask_type>(*this), _UV(1), _UV(0));
+	      return __select_impl(static_cast<_UV::mask_type>(*this), _Up(1), _UV());
 	    }
 	}
 
@@ -1066,7 +1067,7 @@ namespace simd
 	      constexpr int __n = _IV::size();
 	      if constexpr (_Bytes * __CHAR_BIT__ >= __n) // '1 << __iota' cannot overflow
 		{ // reduce(select(k, powers_of_2, 0))
-		  constexpr _IV __pow2 = _IV(1) << __iota<_IV>;
+		  constexpr _IV __pow2 = _IV(cw<1>) << __iota<_IV>;
 		  return _Ur(_U0(__select_impl(__k, __pow2, _IV())
 				   ._M_reduce(bit_or<>()))) << _Offset;
 		}
@@ -1079,7 +1080,7 @@ namespace simd
 		}
 	      else
 		{ // limit powers_of_2 to 1, 2, 4, ..., 128
-		  constexpr _IV __pow2 = _IV(1) << (__iota<_IV> % _IV(__CHAR_BIT__));
+		  constexpr _IV __pow2 = _IV(cw<1>) << (__iota<_IV> % _IV(cw<__CHAR_BIT__>));
 		  _IV __x = __select_impl(__k, __pow2, _IV());
 		  // partial reductions of 8 neighboring elements
 		  __x |= _IV::_S_static_permute(__x, _SwapNeighbors<4>());
diff --git a/libstdc++-v3/include/bits/simd_vec.h b/libstdc++-v3/include/bits/simd_vec.h
index 2574bf7c3ad7..5f3bd7fd2f61 100644
--- a/libstdc++-v3/include/bits/simd_vec.h
+++ b/libstdc++-v3/include/bits/simd_vec.h
@@ -1135,20 +1135,13 @@ namespace simd
        *
        * @note The constructor is implicit if the conversion (if any) is value-preserving.
        */
-      template <__explicitly_convertible_to<value_type> _Up>
+      template <__broadcast_constructible<value_type> _Up>
 	[[__gnu__::__always_inline__]]
-	constexpr explicit(!__broadcast_constructible<_Up, value_type>)
+	constexpr
 	basic_vec(_Up&& __x) noexcept
 	  : _M_data(_DataType() == _DataType() ? static_cast<value_type>(__x) : value_type())
 	{}
 
-      template <__simd_vec_bcast_consteval<value_type> _Up>
-	consteval
-	basic_vec(_Up&& __x)
-	: _M_data(_DataType() == _DataType()
-		    ? __value_preserving_cast<value_type>(__x) : value_type())
-	{}
-
       // [simd.ctor] conversion constructor -----------------------------------
       template <typename _Up, typename _UAbi, _TargetTraits _Traits = {}>
 	requires (_S_size == _UAbi::_S_size)
@@ -2037,20 +2030,13 @@ namespace simd
       { return _M_concat_data(); }
 
       // [simd.ctor] broadcast constructor ------------------------------------
-      template <__explicitly_convertible_to<value_type> _Up>
+      template <__broadcast_constructible<value_type> _Up>
 	[[__gnu__::__always_inline__]]
-	constexpr explicit(!__broadcast_constructible<_Up, value_type>)
+	constexpr
 	basic_vec(_Up&& __x) noexcept
 	  : _M_data0(static_cast<value_type>(__x)), _M_data1(static_cast<value_type>(__x))
 	{}
 
-      template <__simd_vec_bcast_consteval<value_type> _Up>
-	consteval
-	basic_vec(_Up&& __x)
-	: _M_data0(__value_preserving_cast<value_type>(__x)),
-	  _M_data1(__value_preserving_cast<value_type>(__x))
-	{}
-
       // [simd.ctor] conversion constructor -----------------------------------
       template <typename _Up, typename _UAbi>
 	requires (_S_size == _UAbi::_S_size)
diff --git a/libstdc++-v3/testsuite/std/simd/arithmetic.cc b/libstdc++-v3/testsuite/std/simd/arithmetic.cc
index e662a26866c6..adf94f0a87fa 100644
--- a/libstdc++-v3/testsuite/std/simd/arithmetic.cc
+++ b/libstdc++-v3/testsuite/std/simd/arithmetic.cc
@@ -88,7 +88,8 @@ template <typename V>
     };
 
     ADD_TEST(multiplication) {
-      std::tuple {V(), V(RealV(1), RealV()), V(RealV(), RealV(1)), init_vec<V, C(0, 2), C(2, 0), C(-1, 2)>},
+      std::tuple {V(), V(RealV(Real(1)), RealV()), V(RealV(), RealV(Real(1))),
+		  init_vec<V, C(0, 2), C(2, 0), C(-1, 2)>},
       [](auto& t, V x, V one, V I, V z) {
 	t.verify_equal(x * x, x);
 	t.verify_equal(x * z, x);
@@ -181,11 +182,11 @@ template <typename V>
 	t.verify_equal(y, x - T(1));
 	t.verify_equal(x - x, y);
 	t.verify_equal(x = z - x, init_vec<V, 0, 1, 2, 3, 4, 5, 6>);
-	t.verify_equal(x = z - x, V(1));
+	t.verify_equal(x = z - x, T(1));
 	t.verify_equal(z -= x, init_vec<V, 0, 1, 2, 3, 4, 5, 6>);
 	t.verify_equal(z, init_vec<V, 0, 1, 2, 3, 4, 5, 6>);
-	t.verify_equal(z -= z, V(0));
-	t.verify_equal(z, V(0));
+	t.verify_equal(z -= z, V());
+	t.verify_equal(z, V());
       }
     };
 
@@ -259,10 +260,10 @@ template <typename V>
     ADD_TEST(divide0, std::is_floating_point_v<T> && !is_iec559) {
       std::tuple{T(2), init_vec<V, 1, 2, 3, 4, 5, 6, 7>},
       [](auto& t, V x, V y) {
-	t.verify_equal_to_ulp(x / x, V(T(1)), 1);
-	t.verify_equal_to_ulp(T(3) / x, V(T(3) / T(2)), 1);
-	t.verify_equal_to_ulp(x / T(3), V(T(2) / T(3)), 1);
-	t.verify_equal_to_ulp(y / x, init_vec<V, .5, 1, 1.5, 2, 2.5, 3, 3.5>, 1);
+	t.verify_equal_to_ulp(x / x, V(T(1)), std::cw<1>);
+	t.verify_equal_to_ulp(T(3) / x, V(T(3) / T(2)), std::cw<1>);
+	t.verify_equal_to_ulp(x / T(3), V(T(2) / T(3)), std::cw<1>);
+	t.verify_equal_to_ulp(y / x, init_vec<V, .5, 1, 1.5, 2, 2.5, 3, 3.5>, std::cw<1>);
       }
     };
 
@@ -272,18 +273,18 @@ template <typename V>
       [](auto& t, V a) {
 	V b = std::cw<2>;
 	V ref([&](int i) { return a[i] / 2; });
-	t.verify_equal_to_ulp(a / b, ref, 1);
+	t.verify_equal_to_ulp(a / b, ref, std::cw<1>);
 	a = select(a == std::cw<0>, T(1), a);
 	// -freciprocal-math together with flush-to-zero makes
 	// the following range restriction necessary (i.e.
 	// 1/|a| must be >= min). Intel vrcpps and vrcp14ps
 	// need some extra slack (use 1.1 instead of 1).
 	a = select(fabs(a) >= T(1.1) / norm_min, T(1), a);
-	t.verify_equal_to_ulp(a / a, V(1), 1)("\na = ", a);
+	t.verify_equal_to_ulp(a / a, V(std::cw<1>), std::cw<1>)("\na = ", a);
 	ref = V([&](int i) { return 2 / a[i]; });
-	t.verify_equal_to_ulp(b / a, ref, 1)("\na = ", a);
-	t.verify_equal_to_ulp(b /= a, ref, 1);
-	t.verify_equal_to_ulp(b, ref, 1);
+	t.verify_equal_to_ulp(b / a, ref, std::cw<1>)("\na = ", a);
+	t.verify_equal_to_ulp(b /= a, ref, std::cw<1>);
+	t.verify_equal_to_ulp(b, ref, std::cw<1>);
       }
     };
 
@@ -291,15 +292,15 @@ template <typename V>
       std::tuple{T(2), init_vec<V, 1, 2, 3, 4, 5, 6, 7>, init_vec<V, T(max), T(norm_min)>,
 		 init_vec<V, T(norm_min), T(max)>, init_vec<V, T(max), T(norm_min) + 1>},
       [](auto& t, V x, V y, V z, V a, V b) {
-	t.verify_equal(x / x, V(1));
-	t.verify_equal(T(3) / x, V(T(3) / T(2)));
-	t.verify_equal(x / T(3), V(T(2) / T(3)));
+	t.verify_equal(x / x, T(1));
+	t.verify_equal(T(3) / x, T(T(3) / T(2)));
+	t.verify_equal(x / T(3), T(T(2) / T(3)));
 	t.verify_equal(y / x, init_vec<V, .5, 1, 1.5, 2, 2.5, 3, 3.5>);
 	V ref = init_vec<V, T(max / 2), T(norm_min / 2)>;
 	t.verify_equal(z / x, ref);
 	ref = init_vec<V, T(norm_min / 2), T(max / 2)>;
 	t.verify_equal(a / x, ref);
-	t.verify_equal(b / b, V(1));
+	t.verify_equal(b / b, T(1));
 	ref = init_vec<V, T(2 / max), T(2 / (norm_min + 1))>;
 	t.verify_equal(x / b, ref);
 	t.verify_equal(x /= b, ref);
diff --git a/libstdc++-v3/testsuite/std/simd/mask.cc b/libstdc++-v3/testsuite/std/simd/mask.cc
index ebd9dc7728d3..117cf37beaaa 100644
--- a/libstdc++-v3/testsuite/std/simd/mask.cc
+++ b/libstdc++-v3/testsuite/std/simd/mask.cc
@@ -54,14 +54,14 @@ template <typename V>
 		   return i % 13 == 0 || i % 7 == 0;
       })},
       [](auto& t, const M k, const M tr, const M fa, const M k2) {
-	t.verify_equal(V(+tr), V(1));
+	t.verify_equal(V(+tr), T(1));
 	t.verify_equal(V(+fa), V());
 	t.verify_equal(V(+k), init_vec<V, 0, 1>);
 
 	if constexpr (std::is_integral_v<T>)
 	  {
-	    t.verify_equal(V(~tr), ~V(1));
-	    t.verify_equal(V(~fa), ~V(0));
+	    t.verify_equal(V(~tr), ~V(std::cw<1>));
+	    t.verify_equal(V(~fa), ~V());
 	    t.verify_equal(V(~k), ~init_vec<V, 0, 1>);
 	  }
 
diff --git a/libstdc++-v3/testsuite/std/simd/simd_alg.cc b/libstdc++-v3/testsuite/std/simd/simd_alg.cc
index 03ba83de8d40..8cfd61802e14 100644
--- a/libstdc++-v3/testsuite/std/simd/simd_alg.cc
+++ b/libstdc++-v3/testsuite/std/simd/simd_alg.cc
@@ -13,8 +13,7 @@ template <typename V>
     using M = typename V::mask_type;
 
     using pair = std::pair<V, V>;
-    static constexpr std::conditional_t<std::is_floating_point_v<T>, short, T> x_max
-      = test_iota_max<V, 1>;
+    static constexpr T x_max = test_iota_max<V, 1>;
     static constexpr int x_max_int = static_cast<int>(x_max);
 
     static constexpr V
@@ -26,7 +25,7 @@ template <typename V>
 	  return static_cast<V>(std::to_underlying(x_max) - static_cast<Vu>(x));
 	}
       else
-	return x_max - x;
+	return std::cw<x_max> - x;
     }
 
     ADD_TEST(Select) {
diff --git a/libstdc++-v3/testsuite/std/simd/traits_common.cc b/libstdc++-v3/testsuite/std/simd/traits_common.cc
index ecbceef06bf3..a026e359bacd 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_common.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_common.cc
@@ -59,7 +59,7 @@ namespace test02
   // ensure 'true ? int : vec<float>' doesn't work
   template <typename T>
     concept has_type_member = requires { typename T::type; };
-  static_assert(has_type_member<common_type<int, simd::vec<float>>>);
+  static_assert(!has_type_member<common_type<int, simd::vec<float>>>);
 }
 
 #if defined __AVX__ && !defined __AVX2__
@@ -90,7 +90,7 @@ static_assert( std::convertible_to<Ic<1>, simd::vec<float>>);
 static_assert(!std::convertible_to<Ic<1.1>, simd::vec<float>>);
 static_assert(!std::convertible_to<simd::vec<int, 4>, simd::vec<float, 4>>);
 static_assert(!std::convertible_to<simd::vec<float, 4>, simd::vec<int, 4>>);
-static_assert( std::convertible_to<int, simd::vec<float>>);
+static_assert(!std::convertible_to<int, simd::vec<float>>);
 static_assert( std::convertible_to<simd::vec<int, 4>, simd::vec<double, 4>>);
 
 template <typename V>
diff --git a/libstdc++-v3/testsuite/std/simd/traits_math.cc b/libstdc++-v3/testsuite/std/simd/traits_math.cc
index fc71ff9e3590..1f90cf34c2e3 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_math.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_math.cc
@@ -25,7 +25,7 @@ namespace math_tests
     concept has_deduced_vec = requires { typename simd::__deduced_vec_t<T>; };
 
   static_assert(!has_common_type<vf2, vf4>);
-  static_assert( has_common_type<int, vf2>);
+  static_assert(!has_common_type<int, vf2>);
 
   template <typename T, bool Strict = false>
     struct holder

From redi@gcc.gnu.org  Tue Apr 21 14:42:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 21 Apr 2026 14:42:07 +0000 (GMT)
Subject: [gcc r16-8780] libstdc++: Add platform wait functions for Darwin
 [PR120527]
Message-ID: <20260421144207.6C50B4BA2E09@sourceware.org>

https://gcc.gnu.org/g:a261719a1fc474d7ec00a59b6e0218f5c851c109

commit r16-8780-ga261719a1fc474d7ec00a59b6e0218f5c851c109
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Dec 5 15:47:10 2025 +0000

    libstdc++: Add platform wait functions for Darwin [PR120527]
    
    Darwin has kernel support for this facility from 10.12 (macOS Sierra).
    
    From 10.15 (macOS Catalina) 64bit qualitities are supported.
    
    When the library is built for 10.12+ both 32b and 64b quantities will be
    supported by the DSO which means it can be installed on 10.12+ with support
    for 64bit available when the instalation is >= 10.15.
    
    The header will only recognise 64b quantities when the deployment version
    is >= 10.15.
    
    If the library is built for <= 10.11, the support will be missing and attempts
    to use it wlll result in link errors.
    
    The platform wait type is unconditionally set to 32bits, since this is compatible
    across supported OS editions.
    
            PR libstdc++/120527
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Co-authored-by: Iain Sandoe <iain@sandoe.co.uk>
    Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

Diff:
---
 libstdc++-v3/include/bits/atomic_wait.h | 21 ++++++++++
 libstdc++-v3/src/c++20/atomic.cc        | 74 +++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+)

diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h
index 47bd1073f881..704c10d5f382 100644
--- a/libstdc++-v3/include/bits/atomic_wait.h
+++ b/libstdc++-v3/include/bits/atomic_wait.h
@@ -69,6 +69,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline constexpr bool __platform_wait_uses_type
       = __detail::__waitable<_Tp>
 	  && sizeof(_Tp) == sizeof(int) && alignof(_Tp) >= 4;
+#elif defined __APPLE__ \
+      && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
+  namespace __detail
+  {
+    using __platform_wait_t = __INT32_TYPE__;
+    inline constexpr size_t __platform_wait_alignment = 4;
+  }
+  // Defined to true for a subset of __waitable types which are statically
+  // known to definitely be able to use __ulock_wait, not a proxy wait.
+  // We know that OS Versions later than 10.15 support 64b wait types even
+  // though we must make the __platform_wait_t 32b for compatibility with
+  // earlier versions of __ulock_xxxx.
+  template<typename _Tp>
+    inline constexpr bool __platform_wait_uses_type
+      = __detail::__waitable<_Tp>
+#  if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101500
+	  && sizeof(_Tp) == 4 && alignof(_Tp) >= 4;
+#  else
+	  && ((sizeof(_Tp) == 4 && alignof(_Tp) >= 4)
+		|| (sizeof(_Tp) == 8 && alignof(_Tp) >= 8));
+#  endif
 #elif defined __FreeBSD__ && __SIZEOF_LONG__ == 8
   namespace __detail
   {
diff --git a/libstdc++-v3/src/c++20/atomic.cc b/libstdc++-v3/src/c++20/atomic.cc
index 177c503330d5..3e02f437db3c 100644
--- a/libstdc++-v3/src/c++20/atomic.cc
+++ b/libstdc++-v3/src/c++20/atomic.cc
@@ -27,6 +27,7 @@
 #if __glibcxx_atomic_wait
 #include <atomic>
 #include <bits/atomic_timed_wait.h>
+#include <utility> // cmp_less
 #include <cstdint> // uint32_t, uint64_t, uintptr_t
 #include <climits> // INT_MAX
 #include <cerrno>  // errno, ETIMEDOUT, etc.
@@ -39,6 +40,19 @@
 # include <unistd.h>
 # include <sys/time.h> // timespec
 # define _GLIBCXX_HAVE_PLATFORM_WAIT 1
+#elif defined __APPLE__ \
+      && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
+// These are thin wrappers over the underlying syscall, they exist on
+// earlier versions of the OS, however those versions do not support the
+// UL_COMPARE_AND_WAIT64 operation.
+extern "C" int
+__ulock_wait(uint32_t operation, void* addr, uint64_t value, uint32_t timeout);
+extern "C" int
+__ulock_wake(uint32_t operation, void* addr, uint64_t wake_value);
+# define UL_COMPARE_AND_WAIT             1
+# define UL_COMPARE_AND_WAIT64          5
+# define ULF_WAKE_ALL                    0x00000100
+# define _GLIBCXX_HAVE_PLATFORM_WAIT 1
 #elif defined __FreeBSD__ && __FreeBSD__ >= 11 && __SIZEOF_LONG__ == 8
 # include <sys/types.h>
 # include <sys/umtx.h>
@@ -154,6 +168,66 @@ namespace
   __platform_load(const int* addr, int order, int /* obj_sz */) noexcept
   { return __atomic_load_n(addr, order); }
 
+#elif defined __APPLE__ \
+      && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
+
+  [[gnu::always_inline]]
+  inline uint32_t
+  wait_op(int obj_sz) noexcept
+  {
+    __glibcxx_assert(obj_sz == 4 || obj_sz == 8);
+    return obj_sz == 4 ? UL_COMPARE_AND_WAIT : UL_COMPARE_AND_WAIT64;
+  }
+
+  void
+  __platform_wait(const void* addr, uint64_t val, int obj_sz) noexcept
+  {
+    if (0 > __ulock_wait(wait_op(obj_sz), const_cast<void*>(addr), val, 0))
+      if (errno != EINTR && errno != EFAULT)
+	__throw_system_error(errno);
+  }
+
+  void
+  __platform_notify(const void* addr, bool all, int obj_sz) noexcept
+  {
+    uint32_t op = wait_op (obj_sz);
+    if (all)
+      op |= ULF_WAKE_ALL;
+    __ulock_wake(op, const_cast<void*>(addr), 0);
+  }
+
+  // returns true if wait ended before timeout
+  bool
+  __platform_wait_until(const void* addr, uint64_t val,
+			const __wait_clock_t::time_point& atime,
+			int obj_sz) noexcept
+  {
+    auto reltime
+      = chrono::ceil<chrono::microseconds>(atime - __wait_clock_t::now());
+    if (reltime <= reltime.zero())
+      return false;
+    uint32_t timeout = numeric_limits<uint32_t>::max();
+    if (std::cmp_less(reltime.count(), timeout))
+       timeout = reltime.count();
+
+    if (0 > __ulock_wait(wait_op(obj_sz), const_cast<void*>(addr), val,
+			 timeout))
+      {
+	if (errno == ETIMEDOUT)
+	  return timeout == numeric_limits<uint32_t>::max();
+	if (errno != EINTR && errno != EFAULT)
+	  __throw_system_error(errno);
+      }
+    return true;
+  }
+
+  // ??? CHECKME: this could likely be more efficient.
+  [[gnu::always_inline]]
+  inline __wait_value_type
+  __platform_load(const __platform_wait_t* addr, int memory_order,
+		  int /* obj_sz */) noexcept
+  { return __atomic_load_n(addr, memory_order); }
+
 #elif defined __FreeBSD__ && __SIZEOF_LONG__ == 8
   [[gnu::always_inline]]
   inline int

From redi@gcc.gnu.org  Tue Apr 21 14:42:17 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 21 Apr 2026 14:42:17 +0000 (GMT)
Subject: [gcc r16-8781] libstdc++: Use 32-bit platform wait type for OpenBSD
 and DragonFly [PR120527]
Message-ID: <20260421144217.CE4914BA23D5@sourceware.org>

https://gcc.gnu.org/g:4e2d1a1c3619df3a04df834d599173a4b463d72b

commit r16-8781-g4e2d1a1c3619df3a04df834d599173a4b463d72b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Nov 25 14:29:50 2025 +0000

    libstdc++: Use 32-bit platform wait type for OpenBSD and DragonFly [PR120527]
    
    This defines __platform_wait_t as unsigned int for OpenBSD and
    DragonFly. This means that std::semaphore will use unsigned int by
    default, and so will benefit from more efficient wait/notify ops if we
    start to use the OpenBSD futex(2) syscall or the DragonFly umtx(2)
    syscalls. We don't currently use them, but if we start to in future, it
    would be an ABI break to change __platform_wait_t later.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120527
            * include/bits/atomic_wait.h [__OpenBSD__ || __DragonFly]: Use
            unsigned int for __platform_wait_t.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/atomic_wait.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h
index 704c10d5f382..5224e69817de 100644
--- a/libstdc++-v3/include/bits/atomic_wait.h
+++ b/libstdc++-v3/include/bits/atomic_wait.h
@@ -108,7 +108,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 // a mutex/condvar based wait.
   namespace __detail
   {
-# if ATOMIC_LONG_LOCK_FREE == 2
+# if defined __OpenBSD__ || defined __DragonFly__
+    // These targets provide 32-bit futex-like syscalls.
+    // We don't currently make use of them, but we want to in future.
+    using __platform_wait_t = unsigned int;
+# elif ATOMIC_LONG_LOCK_FREE == 2
     using __platform_wait_t = unsigned long;
 # else
     using __platform_wait_t = unsigned int;

From mpolacek@gcc.gnu.org  Tue Apr 21 15:58:37 2026
From: mpolacek@gcc.gnu.org (Marek Polacek)
Date: Tue, 21 Apr 2026 15:58:37 +0000 (GMT)
Subject: [gcc r16-8782] c++/reflection: bogus -Wmissing-field-initializers
 with <meta> [PR124950]
Message-ID: <20260421155837.941124BA23CE@sourceware.org>

https://gcc.gnu.org/g:edb4f451b6aaa6d6c6851f2cb83313f9c30c36e2

commit r16-8782-gedb4f451b6aaa6d6c6851f2cb83313f9c30c36e2
Author: Marek Polacek <polacek@redhat.com>
Date:   Mon Apr 20 15:55:50 2026 -0400

    c++/reflection: bogus -Wmissing-field-initializers with <meta> [PR124950]
    
    We emit -Wmissing-field-initializers warnings for code like
    
      data_member_spec (^^int, { .name = "dms" })
    
    which seems undesirable.  We can initialize the members of
    std::meta::data_member_options to suppress that warning (clang's <meta>
    has these initializers too).
    
            PR c++/124950
    
    libstdc++-v3/ChangeLog:
    
            * include/std/meta (std::meta::data_member_options): Initialize
            alignment, bit_width, and annotations members.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/reflect/data_member_spec7.C: New test.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/testsuite/g++.dg/reflect/data_member_spec7.C | 9 +++++++++
 libstdc++-v3/include/std/meta                    | 6 +++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/g++.dg/reflect/data_member_spec7.C b/gcc/testsuite/g++.dg/reflect/data_member_spec7.C
new file mode 100644
index 000000000000..057db043bf89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/data_member_spec7.C
@@ -0,0 +1,9 @@
+// PR c++/124950
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection -Wmissing-field-initializers" }
+// Test that we don't emit bogus -Wmissing-field-initializers warnings.
+
+#include <meta>
+using namespace std::meta;
+constexpr auto dms = data_member_spec (^^int, { .name = "dms" });
+constexpr auto dms2 = data_member_spec (^^int, { .bit_width = 8 }); // { dg-warning "missing initializer" }
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index 22b4da44cdd7..b12f49a20963 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -424,10 +424,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       };
 
       optional<_Name> name;
-      optional<int> alignment;
-      optional<int> bit_width;
+      optional<int> alignment = {};
+      optional<int> bit_width = {};
       bool no_unique_address = false;
-      vector<info> annotations;
+      vector<info> annotations = {};
     };
     consteval info data_member_spec(info, data_member_options);
     consteval bool is_data_member_spec(info);

From redi@gcc.gnu.org  Tue Apr 21 20:06:42 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 21 Apr 2026 20:06:42 +0000 (GMT)
Subject: [gcc r16-8786] libstdc++: Fix comment on std::print helper
 __open_terminal
Message-ID: <20260421200642.0655B4B9DB50@sourceware.org>

https://gcc.gnu.org/g:e2b1c3ea40727db805f8e062dbfff0bb93770004

commit r16-8786-ge2b1c3ea40727db805f8e062dbfff0bb93770004
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 21 21:04:23 2026 +0100

    libstdc++: Fix comment on std::print helper __open_terminal
    
    The comment describes an earlier version of the function which I
    experimented with when implementing the std::print feature. Update it to
    describe the current semantics.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++23/print.cc (__open_terminal): Fix comment.

Diff:
---
 libstdc++-v3/src/c++23/print.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++23/print.cc b/libstdc++-v3/src/c++23/print.cc
index 290e0b8dfa2d..a12c50bfb6a8 100644
--- a/libstdc++-v3/src/c++23/print.cc
+++ b/libstdc++-v3/src/c++23/print.cc
@@ -75,8 +75,9 @@ namespace
 } // namespace
 #endif
 
-  // This returns intptr_t that is either a Windows HANDLE
-  // or 1 + a POSIX file descriptor. A zero return indicates failure.
+  // Windows: If `f` refers to a console, return the HANDLE associated with it.
+  // POSIX: If `f` refers to a POSIX terminal, return `f`.
+  // Return a null pointer if `f` is not known to be a console or terminal.
   void*
   __open_terminal([[maybe_unused]] FILE* f)
   {
@@ -95,6 +96,7 @@ namespace
     return nullptr;
   }
 
+  // If a `FILE*` can be obtained from `sb`, behave as above.
   void*
   __open_terminal([[maybe_unused]] std::streambuf* sb)
   {

From ncm@gcc.gnu.org  Tue Apr 21 21:00:29 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Tue, 21 Apr 2026 21:00:29 +0000 (GMT)
Subject: [gcc r16-8789] libstdc++: fix allocator_traits<>::allocate_at_least
Message-ID: <20260421210029.69E9A4BA9010@sourceware.org>

https://gcc.gnu.org/g:83e758acdb8fc24acfbbcc5696d052ac0a565d72

commit r16-8789-g83e758acdb8fc24acfbbcc5696d052ac0a565d72
Author: Nathan Myers <ncm@cantrip.org>
Date:   Mon Apr 13 14:48:22 2026 -0400

    libstdc++: fix allocator_traits<>::allocate_at_least
    
    allocator_traits<>::allocate_at_least has taken its allocator
    by value, incorrectly. This patch makes it take its allocator
    by reference, as specified.
    
    libstdc++-v3/ChangeLog:
            * include/bits/alloc_traits.h (allocate_at_least):
            Take allocator argument by reference, per Standard.

Diff:
---
 libstdc++-v3/include/bits/alloc_traits.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h
index 2be8ed561d41..e4e0f1608dec 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -670,7 +670,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  Returns `a.allocate_at_least(n)`.
       */
       [[nodiscard]] static constexpr auto
-      allocate_at_least(allocator_type __a, size_type __n)
+      allocate_at_least(allocator_type& __a, size_type __n)
 	-> allocation_result<pointer, size_type>
       { return __a.allocate_at_least(__n); }
 #endif

From gccadmin@gcc.gnu.org  Wed Apr 22 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 22 Apr 2026 00:16:55 +0000 (GMT)
Subject: [gcc r16-8792] Daily bump.
Message-ID: <20260422001655.6F6604BA23D0@sourceware.org>

https://gcc.gnu.org/g:b0fc19b09f63c371da1ae659e1fc262230069980

commit r16-8792-gb0fc19b09f63c371da1ae659e1fc262230069980
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 22 00:16:28 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 25 +++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 18 +++++++++++++++
 gcc/d/ChangeLog         |  6 +++++
 gcc/fortran/ChangeLog   |  7 ++++++
 gcc/m2/ChangeLog        |  6 +++++
 gcc/po/ChangeLog        |  4 ++++
 gcc/testsuite/ChangeLog | 52 ++++++++++++++++++++++++++++++++++++++++++++
 libcpp/ChangeLog        |  6 +++++
 libgm2/ChangeLog        | 14 ++++++++++++
 libphobos/ChangeLog     |  4 ++++
 libsanitizer/ChangeLog  |  6 +++++
 libstdc++-v3/ChangeLog  | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
 13 files changed, 207 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc9dde2c6d0a..7c59fcf73a65 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,28 @@
+2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* doc/gm2.texi (Building a shared library): Replace
+	constant string with DEFAULT_RUNTIME_MODULE_OVERRIDE.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gimple-lower-bitint.cc (bitint_large_huge::lower_muldiv_stmt):
+	Extend the padding bits not just for unsigned MULT_EXPR but for any
+	TYPE_OVERFLOW_WRAPS MULT_EXPR and signed TYPE_OVERFLOW_WRAPS division.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124941
+	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Use build_bitint_type
+	rather than build_nonstandard_integer_type for
+	maxsizei larger than MAX_FIXED_MODE_SIZE.
+
+2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* doc/gm2.texi (Building a shared library): Rewrite.
+
 2026-04-20  Jakub Jelinek  <jakub@redhat.com>
 
 	PR middle-end/123635
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a989eb19c172..0dc6bcaf1c0d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260421
+20260422
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index dc30c467a2f4..e1a3f42bf736 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,21 @@
+2026-04-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/123879
+	* module.cc (maybe_translate_include): Use lrealpath in check
+	whether we're including something in the same directory.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124944
+	* parser.cc (cp_parser_mem_initializer_id): Parse
+	splice-type-specifier.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124927
+	* pt.cc (finish_expansion_stmt): Compute types for force_target_expr
+	from b and e before extracting TARGET_EXPR_INITIAL from it.
+
 2026-04-20  Jason Merrill  <jason@redhat.com>
 
 	PR c++/124910
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 1538f2068711..4e66d322f157 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* dmd/MERGE: Merge upstream dmd d1fbbb1a2f.
+	* expr.cc (ExprVisitor::visit (StringExp *)): Don't generate a
+	STRING_CST for a mutable array type.
+
 2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	PR d/123411
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 895abfe67001..6fc08d9ccedb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-21  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/117077
+	* trans-expr.cc (gfc_trans_scalar_assign): If the lhs and rhs
+	TYPE_MAIN_VARIANTs are not the same, convert the rhs to the lhs
+	type via a VIEW_CONVERT_EXPR.
+
 2026-04-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	* invoke.texi (fc-prototypes): Correct spelling for opindex.
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 6e22a508e600..4f3b364999f7 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* gm2-compiler/M2Options.mod (DefaultRuntimeModuleOverride): Add
+	reference comment to libgm2/libm2iso/m2rts.h.
+
 2026-04-15  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/124081
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 68b2091ab961..d1ec0eeea9ee 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-21  Joseph Myers  <josmyers@redhat.com>
+
+	* sv.po: Update.
+
 2026-04-08  Joseph Myers  <josmyers@redhat.com>
 
 	* zh_CN.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ec8caabd3054..02843ec60eb3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,55 @@
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124944
+	* g++.dg/reflect/splice13.C: New test.
+	* g++.dg/reflect/splice14.C: New test.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124927
+	* g++.dg/cpp26/expansion-stmt41.C: New test.
+
+2026-04-21  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124950
+	* g++.dg/reflect/data_member_spec7.C: New test.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR testsuite/124682
+	* gcc.dg/torture/builtin-math-6.c (TESTIT_COMPLEX_R2_ISZ): Define.
+	(TESTIT_COMPLEX_R2_ALLNEG): Use TESTIT_COMPLEX_R2_ISZ instead of
+	TESTIT_COMPLEX_R2.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gcc.dg/torture/bitint-90.c: New test.
+
+2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124941
+	* gcc.dg/bitint-129.c: New test.
+
+2026-04-21  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/117077
+	* gfortran.dg/pr117077.f90: New test.
+
+2026-04-21  Alexandre Oliva  <oliva@adacore.com>
+
+	PR tree-optimization/113524
+	* gcc.dg/torture/pr113026-1.c: Revert 2026-01-21's
+	XFAIL of bogus warning on various 32-bit targets.
+
+2026-04-21  Alexandre Oliva  <oliva@adacore.com>
+
+	PR tree-optimization/116463
+	* gcc.dg/vect/complex/fast-math-complex-mls-float.c:
+	Don't expect COMPLEX_ADD_ROT270.
+	* gcc.dg/vect/complex/fast-math-complex-mls-double.c:
+	Likewise.
+
 2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	PR d/123411
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 30c941bc2c14..0fe3dbd09577 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-21  Marek Polacek  <polacek@redhat.com>
+
+	PR preprocessor/124930
+	* charset.cc (_cpp_destroy_iconv): Correct two calls to
+	iconv_close.
+
 2026-03-19  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	PR c++/124466
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 3cffd161b79b..87519a19d224 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* libm2iso/m2rts.h (Copyright): Correct dates.
+	(DEFAULT_RUNTIME_MODULE_OVERRIDE): New define.
+
+2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* libm2iso/m2rts.h (m2iso_M2RTS_RequestDependant): Correct
+	parameters.
+	(m2iso_M2RTS_ConstructModules): Ditto.
+	(m2iso_M2RTS_DeconstructModules): Ditto.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 3afd2df7acd2..b2ccfde771c0 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* libdruntime/MERGE: Merge upstream druntime d1fbbb1a2f.
+
 2026-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* libdruntime/gcc/attributes.d (callingConvention): New UDA.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index f8e0ab1c84de..60bc501754c8 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-21  Marian Buschsieweke  <maribu@users.noreply.github.com>
+
+	PR sanitizer/124248
+	* sanitizer_common/sanitizer_platform_limits_posix.cpp (struct_sock_fprog_sz):
+	Make available on non-glibc Linux systems.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 3cfee47d1c87..f098f0cc3fc0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,61 @@
+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.

From aoliva@gcc.gnu.org  Wed Apr 22 01:34:36 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 01:34:36 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: follow std in
 numeric_limits<bool>::traps and integral traps
Message-ID: <20260422013436.DB1524BA901D@sourceware.org>

https://gcc.gnu.org/g:4a098eaca6078d88f4025ea8fdca3b3ecb69585a

commit 4a098eaca6078d88f4025ea8fdca3b3ecb69585a
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:08 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps and integral traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false, presumably in response to
    issue 184.
    
    Issue 554 clarifies that traps is about values that may trap, rather
    than operations that may trap, so we were wrong in the interpretation
    about divide-by-zero operations' trapping on integral types that led
    to __glibcxx_integral_traps's defaulting to true, and some of its
    overrides.
    
    Align numeric_limits<bool>::traps with the standard, default
    __glibcxx_integral_traps to false, drop the overriders based on the
    incorrect interpretation, but keep __glibcxx_integral_traps to allow
    command-line restoring of this ABI fix, and for the admittedly
    unlikely case of trapping integral values' coming to exist on some
    architecture.
    
    
    for  libstdc++-v3/ChangeLog
    
            * 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.

Diff:
---
 libstdc++-v3/config/cpu/arm/cpu_defines.h     | 40 ---------------------------
 libstdc++-v3/config/cpu/powerpc/cpu_defines.h | 36 ------------------------
 libstdc++-v3/include/std/limits               | 14 ++++++----
 3 files changed, 8 insertions(+), 82 deletions(-)

diff --git a/libstdc++-v3/config/cpu/arm/cpu_defines.h b/libstdc++-v3/config/cpu/arm/cpu_defines.h
deleted file mode 100644
index 57e4cbbe0136..000000000000
--- a/libstdc++-v3/config/cpu/arm/cpu_defines.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2015-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on ARM.
-#ifdef __ARM_ARCH_EXT_IDIV__
-#define __glibcxx_integral_traps false
-#else
-#define __glibcxx_integral_traps true
-#endif
-
-#endif
diff --git a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
deleted file mode 100644
index f4248e0f602a..000000000000
--- a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on PowerPC.
-#define __glibcxx_integral_traps false
-
-#endif
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..cfdbe02c844c 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -81,10 +81,15 @@
 // The default values are appropriate for many 32-bit targets.
 
 // GCC only intrinsically supports modulo integral types.  The only remaining
-// integral exceptional values is division by zero.  Only targets that do not
-// signal division by zero in some "hard to ignore" way should use false.
+// integral exceptional values is division by zero, but that's an operation,
+// not a value, and traps is about values that trap (Issue554), so there aren't
+// any for integral types.  The standard has numeric_limits<bool>::traps
+// explicitly set to false.  However, we used to set them all to true based on
+// the division-by-zero misinterpretation, so we retain this macro, and those
+// who relied on the misinterpretation can restore it with a command-line
+// define and revert the ABI-changing effects of this fix.
 #ifndef __glibcxx_integral_traps
-# define __glibcxx_integral_traps true
+# define __glibcxx_integral_traps false
 #endif
 
 // float
@@ -446,9 +451,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
       static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style

From aoliva@gcc.gnu.org  Wed Apr 22 01:34:41 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 01:34:41 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260422013441.F26064BA9002@sourceware.org>

https://gcc.gnu.org/g:e672d0c458664191c085830f916379e428541573

commit e672d0c458664191c085830f916379e428541573
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:14 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 15 ++++++++++--
 .../logical_traits/requirements/junction_neg.cc    | 27 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..238450518c08 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -241,10 +241,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   } // namespace __detail
   /// @endcond
 
+  template<typename _From, typename _To>
+    struct is_convertible;
+
   template<typename... _Bn>
     struct conjunction
     : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__conjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct conjunction<>
@@ -254,7 +261,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename... _Bn>
     struct disjunction
     : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__disjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct disjunction<>
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..eb0f246367f1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,27 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctTtf; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfTtf;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfTtf; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtTtf;
+
+// { dg-prune-output "not convertible to bool|evaluates to false" }

From aoliva@gcc.gnu.org  Wed Apr 22 01:34:47 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 01:34:47 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: map 64-bit
 long double to double on sse [PR124657]
Message-ID: <20260422013447.18EF44B9DB58@sourceware.org>

https://gcc.gnu.org/g:dd5dce1b1934c045b15a70f63380006a8866ffb0

commit dd5dce1b1934c045b15a70f63380006a8866ffb0
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:00 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    Use the preprocessor to compare __L?DBL_MANT_DIG instead of
    floating-type type sizes on x86 SSE and PowerPC AltiVec.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h [_GLIBCXX_SIMD_HAVE_SSE]
            (__intrinsic_type::_S_is_ldouble): New.  Use all over.
            (__intrinsic_type::type): Map 64-bit long double to double.
            [__ALTIVEC__] (__intrinsic_type): Use preprocessor tests.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..177d3598b54b 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2469,15 +2469,24 @@ template <>
 template <typename _Tp, size_t _Bytes>
   struct __intrinsic_type<_Tp, _Bytes, enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 64>>
   {
+    static constexpr bool _S_is_ldouble = is_same_v<_Tp, long double>;
+
     // allow _Tp == long double with -mlong-double-64
-    static_assert(!(is_same_v<_Tp, long double>
-		    && sizeof(long double) > sizeof(double)),
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+    static_assert(!_S_is_ldouble,
 		  "no __intrinsic_type support for long double on x86");
+#endif
 
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+		      _Tp
+#else
+		      conditional_t<_S_is_ldouble, double, _Tp>
+#endif
+		      >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE
 
@@ -2581,12 +2590,17 @@ template <typename _Tp, size_t _Bytes>
     static constexpr bool _S_is_ldouble = is_same_v<_Tp, long double>;
 
     // allow _Tp == long double with -mlong-double-64
-    static_assert(!(_S_is_ldouble && sizeof(long double) > sizeof(double)),
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+    static_assert(!_S_is_ldouble,
 		  "no __intrinsic_type support for 128-bit floating point on PowerPC");
+#endif
 
 #ifndef __VSX__
     static_assert(!(is_same_v<_Tp, double>
-		    || (_S_is_ldouble && sizeof(long double) == sizeof(double))),
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+		    || _S_is_ldouble
+#endif
+		    ),
 		  "no __intrinsic_type support for 64-bit floating point on PowerPC w/o VSX");
 #endif
 
@@ -2594,9 +2608,11 @@ template <typename _Tp, size_t _Bytes>
     {
       if constexpr (is_floating_point_v<_Tp>)
 	{
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
 	  if constexpr (_S_is_ldouble)
 	    return double {};
 	  else
+#endif
 	    return _Tp {};
 	}
       else if constexpr (is_signed_v<_Tp>)

From aoliva@gcc.gnu.org  Wed Apr 22 01:34:52 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 01:34:52 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: x86: accept
 64-bit long double as double [PR124657]
Message-ID: <20260422013452.336E24BA902E@sourceware.org>

https://gcc.gnu.org/g:699e834c065a6706cd7e0cf9285aac8e89e3bc53

commit 699e834c065a6706cd7e0cf9285aac8e89e3bc53
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:03 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 82 ++++++++++++++---------
 1 file changed, 50 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..5d4ed5ad58c8 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+    if constexpr (is_same_v<_Tp, long double>)
+      return true;
+#endif
+    return is_same_v<_Tp, double>;
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +447,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +456,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +465,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +474,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +483,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2415,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2440,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2465,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2523,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2548,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2573,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5039,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5102,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5138,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5168,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From aoliva@gcc.gnu.org  Wed Apr 22 04:23:21 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 04:23:21 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: follow std in
 numeric_limits<bool>::traps and integral traps
Message-ID: <20260422042321.AE2C64BA9035@sourceware.org>

https://gcc.gnu.org/g:20b936bed572331f2a75aa16795fbd08c6b1ddfe

commit 20b936bed572331f2a75aa16795fbd08c6b1ddfe
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:08 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps and integral traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false, presumably in response to
    issue 184.
    
    Issue 554 clarifies that traps is about values that may trap, rather
    than operations that may trap, so we were wrong in the interpretation
    about divide-by-zero operations' trapping on integral types that led
    to __glibcxx_integral_traps's defaulting to true, and some of its
    overrides.
    
    Align numeric_limits<bool>::traps with the standard, default
    __glibcxx_integral_traps to false, drop the overriders based on the
    incorrect interpretation, but keep __glibcxx_integral_traps to allow
    command-line restoring of this ABI fix, and for the admittedly
    unlikely case of trapping integral values' coming to exist on some
    architecture.
    
    
    for  libstdc++-v3/ChangeLog
    
            * 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.

Diff:
---
 libstdc++-v3/config/cpu/arm/cpu_defines.h     | 40 ---------------------------
 libstdc++-v3/config/cpu/powerpc/cpu_defines.h | 36 ------------------------
 libstdc++-v3/configure.host                   |  6 ----
 libstdc++-v3/include/std/limits               | 14 ++++++----
 4 files changed, 8 insertions(+), 88 deletions(-)

diff --git a/libstdc++-v3/config/cpu/arm/cpu_defines.h b/libstdc++-v3/config/cpu/arm/cpu_defines.h
deleted file mode 100644
index 57e4cbbe0136..000000000000
--- a/libstdc++-v3/config/cpu/arm/cpu_defines.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2015-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on ARM.
-#ifdef __ARM_ARCH_EXT_IDIV__
-#define __glibcxx_integral_traps false
-#else
-#define __glibcxx_integral_traps true
-#endif
-
-#endif
diff --git a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
deleted file mode 100644
index f4248e0f602a..000000000000
--- a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on PowerPC.
-#define __glibcxx_integral_traps false
-
-#endif
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index ff97216167de..e52a32bb4c68 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -150,15 +150,9 @@ case "${host_cpu}" in
   amdgcn)
     cpu_defines_dir=cpu/gcn
     ;;
-  arm*)
-    cpu_defines_dir=cpu/arm
-    ;;
   nvptx)
     cpu_defines_dir=cpu/nvptx
     ;;
-  powerpc* | rs6000)
-    cpu_defines_dir=cpu/powerpc
-    ;;
 esac
 
 
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..cfdbe02c844c 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -81,10 +81,15 @@
 // The default values are appropriate for many 32-bit targets.
 
 // GCC only intrinsically supports modulo integral types.  The only remaining
-// integral exceptional values is division by zero.  Only targets that do not
-// signal division by zero in some "hard to ignore" way should use false.
+// integral exceptional values is division by zero, but that's an operation,
+// not a value, and traps is about values that trap (Issue554), so there aren't
+// any for integral types.  The standard has numeric_limits<bool>::traps
+// explicitly set to false.  However, we used to set them all to true based on
+// the division-by-zero misinterpretation, so we retain this macro, and those
+// who relied on the misinterpretation can restore it with a command-line
+// define and revert the ABI-changing effects of this fix.
 #ifndef __glibcxx_integral_traps
-# define __glibcxx_integral_traps true
+# define __glibcxx_integral_traps false
 #endif
 
 // float
@@ -446,9 +451,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
       static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style

From aoliva@gcc.gnu.org  Wed Apr 22 04:23:26 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 04:23:26 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260422042326.C8C534BA9000@sourceware.org>

https://gcc.gnu.org/g:da006eab854cb4cc8e9e672a038c107b71f141aa

commit da006eab854cb4cc8e9e672a038c107b71f141aa
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:14 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 15 ++++++++++--
 .../logical_traits/requirements/junction_neg.cc    | 27 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..238450518c08 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -241,10 +241,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   } // namespace __detail
   /// @endcond
 
+  template<typename _From, typename _To>
+    struct is_convertible;
+
   template<typename... _Bn>
     struct conjunction
     : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__conjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct conjunction<>
@@ -254,7 +261,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename... _Bn>
     struct disjunction
     : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
+    {
+      static_assert(is_convertible<decltype(__detail::__disjunction_impl<void, _Bn...>
+					    ::type::value), bool>::value,
+		    "result type's value is not convertible to bool");
+    };
 
   template<>
     struct disjunction<>
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..eb0f246367f1
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,27 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctTtf; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfTtf;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfTtf; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtTtf;
+
+// { dg-prune-output "not convertible to bool|evaluates to false" }

From aoliva@gcc.gnu.org  Wed Apr 22 04:23:31 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 04:23:31 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: map 64-bit
 long double to double on sse [PR124657]
Message-ID: <20260422042331.E52494BA902E@sourceware.org>

https://gcc.gnu.org/g:97b1bbce62e610f4b04bad7b26031f16ed94c87f

commit 97b1bbce62e610f4b04bad7b26031f16ed94c87f
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Apr 22 01:01:29 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h (__intrinsic_type::type):
            Map long double to double.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..8c30c8af2688 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE

From aoliva@gcc.gnu.org  Wed Apr 22 04:23:37 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 04:23:37 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: x86: accept
 64-bit long double as double [PR124657]
Message-ID: <20260422042337.08F854BA902E@sourceware.org>

https://gcc.gnu.org/g:53db19453e5a378b90d2fafe5a81b3b77aeb3c7d

commit 53db19453e5a378b90d2fafe5a81b3b77aeb3c7d
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:03 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 82 ++++++++++++++---------
 1 file changed, 50 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..5d4ed5ad58c8 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+    if constexpr (is_same_v<_Tp, long double>)
+      return true;
+#endif
+    return is_same_v<_Tp, double>;
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +447,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +456,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +465,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +474,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +483,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2415,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2440,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2465,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2523,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2548,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2573,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5039,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5102,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5138,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5168,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From aoliva@gcc.gnu.org  Wed Apr 22 04:23:42 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 22 Apr 2026 04:23:42 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: use
 preprocessor to test for 64-bit long double [PR124657]
Message-ID: <20260422042342.206844BA902E@sourceware.org>

https://gcc.gnu.org/g:edfd064941d8f6201310c10a0e33d9bb62cdeaa4

commit edfd064941d8f6201310c10a0e33d9bb62cdeaa4
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Thu Apr 16 01:06:00 2026 -0300

    libstdc++: simd: use preprocessor to test for 64-bit long double [PR124657]
    
    When long double is as wide as double on x86 or powerpc
    (-mlong-double-64), we remap it to double in __intrinsic_type.
    
    Use the preprocessor to compare __L?DBL_MANT_DIG instead of
    floating-type type sizes on x86 SSE and PowerPC AltiVec.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h [_GLIBCXX_SIMD_HAVE_SSE]
            (__intrinsic_type::_S_is_ldouble): New.  Use all over.
            (__intrinsic_type::type): Use preprocessor tests.
            [__ALTIVEC__] (__intrinsic_type): Likewise.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index 8c30c8af2688..177d3598b54b 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2469,16 +2469,24 @@ template <>
 template <typename _Tp, size_t _Bytes>
   struct __intrinsic_type<_Tp, _Bytes, enable_if_t<__is_vectorizable_v<_Tp> && _Bytes <= 64>>
   {
+    static constexpr bool _S_is_ldouble = is_same_v<_Tp, long double>;
+
     // allow _Tp == long double with -mlong-double-64
-    static_assert(!(is_same_v<_Tp, long double>
-		    && sizeof(long double) > sizeof(double)),
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+    static_assert(!_S_is_ldouble,
 		  "no __intrinsic_type support for long double on x86");
+#endif
 
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
       = conditional_t<is_integral_v<_Tp>, long long int,
-		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+		      _Tp
+#else
+		      conditional_t<_S_is_ldouble, double, _Tp>
+#endif
+		      >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE
 
@@ -2582,12 +2590,17 @@ template <typename _Tp, size_t _Bytes>
     static constexpr bool _S_is_ldouble = is_same_v<_Tp, long double>;
 
     // allow _Tp == long double with -mlong-double-64
-    static_assert(!(_S_is_ldouble && sizeof(long double) > sizeof(double)),
+#if __LDBL_MANT_DIG != __DBL_MANT_DIG
+    static_assert(!_S_is_ldouble,
 		  "no __intrinsic_type support for 128-bit floating point on PowerPC");
+#endif
 
 #ifndef __VSX__
     static_assert(!(is_same_v<_Tp, double>
-		    || (_S_is_ldouble && sizeof(long double) == sizeof(double))),
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+		    || _S_is_ldouble
+#endif
+		    ),
 		  "no __intrinsic_type support for 64-bit floating point on PowerPC w/o VSX");
 #endif
 
@@ -2595,9 +2608,11 @@ template <typename _Tp, size_t _Bytes>
     {
       if constexpr (is_floating_point_v<_Tp>)
 	{
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
 	  if constexpr (_S_is_ldouble)
 	    return double {};
 	  else
+#endif
 	    return _Tp {};
 	}
       else if constexpr (is_signed_v<_Tp>)

From tkaminsk@gcc.gnu.org  Wed Apr 22 09:50:19 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 22 Apr 2026 09:50:19 +0000 (GMT)
Subject: [gcc r16-8798] libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS for
 already implemented issues.
Message-ID: <20260422095019.66D124BA2E17@sourceware.org>

https://gcc.gnu.org/g:02021cd894a4538cefe16960be181f89d1b05197

commit r16-8798-g02021cd894a4538cefe16960be181f89d1b05197
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 22 10:21:54 2026 +0200

    libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS for already implemented issues.
    
    This covers issue affecting pre-C+26 features that were resolved
    during 2026 Croydon meeting.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h       | 2 ++
 libstdc++-v3/include/bits/print.h           | 2 ++
 libstdc++-v3/include/std/condition_variable | 2 ++
 libstdc++-v3/include/std/format             | 4 ++++
 libstdc++-v3/include/std/mdspan             | 2 ++
 libstdc++-v3/include/std/optional           | 2 ++
 6 files changed, 14 insertions(+)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index f5a0a65a48da..1fe50ad79e05 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -1313,6 +1313,8 @@ namespace __format
 
 	  int __yi = (int)__y;
 	  const bool __is_neg = __yi < 0;
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 3831. Two-digit formatting of negative year is ambiguous
 	  __yi = __builtin_abs(__yi);
 	  int __ci = __yi / 100;
 	  // For floored division -123//100 is -2 and -100//100 is -1
diff --git a/libstdc++-v3/include/bits/print.h b/libstdc++-v3/include/bits/print.h
index 17567f2f5547..207248447264 100644
--- a/libstdc++-v3/include/bits/print.h
+++ b/libstdc++-v3/include/bits/print.h
@@ -282,6 +282,8 @@ namespace __format
   vprint_nonunicode_buffered(FILE* __stream, string_view __fmt,
 			     format_args __args)
   {
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 4549. vprint_nonunicode_buffered ignores its stream parameter
     __format::_Str_sink<char> __buf;
     std::vformat_to(__buf.out(), __fmt, __args);
     auto __out = __buf.view();
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 9e515123e7c8..ce995ed57779 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -163,6 +163,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       wait_for(unique_lock<mutex>& __lock,
 	       const chrono::duration<_Rep, _Period>& __rtime)
       {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 3504. condition_variable::wait_for is overspecified
 	using __dur = typename steady_clock::duration;
 	return wait_until(__lock,
 			  steady_clock::now() +
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 92add1e0a01c..4627381fa9e7 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -1718,6 +1718,8 @@ namespace __format
 	    {
 	      _CharT __wbuf[__buf_size];
 	      size_t __n = __narrow_str.size();
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 4522. Clarify that `std::format` transcodes for `std::wformat_strings`
 	      std::__to_wstring_numeric(__narrow_str.data(), __n, __wbuf);
 	      return _M_format_int(basic_string_view<_CharT>(__wbuf, __n),
 				   __prefix_len, __fc);
@@ -2304,6 +2306,8 @@ namespace __format
 #ifdef _GLIBCXX_USE_WCHAR_T
 	  else
 	    {
+	      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	      // 4522. Clarify that `std::format` transcodes for `std::wformat_strings`
 	      __wstr = std::__to_wstring_numeric(__narrow_str);
 	      __str = __wstr;
 	    }
diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index f30c5e83d164..14d8edc8ad17 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -103,6 +103,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  }
 	else
 	  {
+	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	    // 4314. Missing move in mdspan layout mapping::operator()
 	    auto __ret = static_cast<_IndexType>(std::forward<_OIndexTypeRef>(__other));
 	    if constexpr (std::is_signed_v<_IndexType>)
 	      __glibcxx_assert(__ret >= 0);
diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index b9cc019feff7..e3c6ea209889 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -1144,6 +1144,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return *this;
 	}
 
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 2746. Inconsistency between requirements for emplace between optional and variant
       template<typename... _Args>
 	_GLIBCXX20_CONSTEXPR
 	enable_if_t<is_constructible_v<_Tp, _Args...>, _Tp&>

From tkaminsk@gcc.gnu.org  Wed Apr 22 09:56:36 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 22 Apr 2026 09:56:36 +0000 (GMT)
Subject: [gcc r16-8799] libstdc++: Accept data_handle_type by value in mdspan
 deduction guide.
Message-ID: <20260422095636.2A9BD4BA5436@sourceware.org>

https://gcc.gnu.org/g:20d0b35cc75aa20731d6b48c90a8490cf9427539

commit r16-8799-g20d0b35cc75aa20731d6b48c90a8490cf9427539
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 22 09:23:37 2026 +0200

    libstdc++: Accept data_handle_type by value in mdspan deduction guide.
    
    This makes the deduction guide accepting data_handle_type, mapping
    and accessor consistent with corresponding constructor.
    Resolves LWG4511.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/mdspan (mdspan): Remove reference from
            _AccessorType::data_handle_type parameteter of deduction
            guide.
            * testsuite/23_containers/mdspan/mdspan.cc: New test.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/mdspan                       |  4 +++-
 libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 14d8edc8ad17..a3ab64633ac3 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -3269,8 +3269,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     -> mdspan<_ElementType, typename _MappingType::extents_type,
 	      typename _MappingType::layout_type>;
 
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 4511. Inconsistency between the deduction guide of std::mdspan taking...
   template<typename _MappingType, typename _AccessorType>
-    mdspan(const typename _AccessorType::data_handle_type&, const _MappingType&,
+    mdspan(typename _AccessorType::data_handle_type, const _MappingType&,
 	   const _AccessorType&)
     -> mdspan<typename _AccessorType::element_type,
 	      typename _MappingType::extents_type,
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
index 270b3f18daad..62ff7201cce9 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
@@ -404,6 +404,24 @@ template<typename CustomInt, bool ValidForPacks, bool ValidForArrays>
     return true;
   }
 
+void
+test_from_volatile_ptr_and_accessor()
+{
+  constexpr size_t n = 3*5*7;
+  std::array<double, n> storage{};
+  double* volatile vptr = storage.data();
+  using Extents = std::extents<int, 3, 5, 7>;
+
+  auto exts = Extents{};
+  auto m = std::layout_left::mapping(exts);
+  auto a = std::default_accessor<double>{};
+  auto md = std::mdspan(vptr, m, a);
+
+  assert_deduced_typedefs<double, Extents, std::layout_left>(md);
+  VERIFY(md.data_handle() == storage.data());
+  VERIFY(md.mapping() == m);
+}
+
 template<typename T, bool NothrowConstructible = true,
 	 bool NothrowAssignable = true>
   class OpaqueAccessor
@@ -757,6 +775,7 @@ main()
   test_from_int_like<RValueInt, true, false>();
   test_from_int_like<ConstLValueInt, false, true>();
 
+  test_from_volatile_ptr_and_accessor();
   test_from_opaque_accessor();
   test_from_base_class_accessor();
   test_from_mapping_like();

From tkaminsk@gcc.gnu.org  Wed Apr 22 12:38:20 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 22 Apr 2026 12:38:20 +0000 (GMT)
Subject: [gcc r14-12546] libstdc++: Define __cpp_lib_stdbit_h and
 __cpp_lib_stdckdint_h feature test macros.
Message-ID: <20260422123820.92B244B9DB64@sourceware.org>

https://gcc.gnu.org/g:928d6ab90b9667a1f0d6e7ba1971864415d9837f

commit r14-12546-g928d6ab90b9667a1f0d6e7ba1971864415d9837f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 14 16:30:36 2026 +0200

    libstdc++: Define __cpp_lib_stdbit_h and __cpp_lib_stdckdint_h feature test macros.
    
    This implements LWG4550: Need new feature test macros for <stdckdint.h>
    and <stdbit.h>.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 62d243c91c05b13490aac10b4faad81e86ea6bbf)

Diff:
---
 libstdc++-v3/include/bits/version.def            | 16 ++++++++++++++++
 libstdc++-v3/include/bits/version.h              | 20 ++++++++++++++++++++
 libstdc++-v3/include/c_compatibility/stdbit.h    |  8 ++++++--
 libstdc++-v3/include/c_compatibility/stdckdint.h |  8 ++++++--
 4 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 49c0a0a9fc06..f8624a186bb7 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1615,6 +1615,22 @@ ftms = {
   };
 };
 
+ftms = {
+  name = stdbit_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
+ftms = {
+  name = stdckdint_h;
+  values = {
+    v = 202603;
+    cxxmin = 26;
+  };
+};
+
 ftms = {
   name = adaptor_iterator_pair_constructor;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 5c6d8a9f8afc..7ad1af3ae83e 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1798,6 +1798,26 @@
 #endif /* !defined(__cpp_lib_stdatomic_h) && defined(__glibcxx_want_stdatomic_h) */
 #undef __glibcxx_want_stdatomic_h
 
+#if !defined(__cpp_lib_stdbit_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdbit_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdbit_h)
+#   define __cpp_lib_stdbit_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdbit_h) */
+#undef __glibcxx_want_stdbit_h
+
+#if !defined(__cpp_lib_stdckdint_h)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_stdckdint_h 202603L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdckdint_h)
+#   define __cpp_lib_stdckdint_h 202603L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_stdckdint_h) */
+#undef __glibcxx_want_stdckdint_h
+
 #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)
 # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
 #  define __glibcxx_adaptor_iterator_pair_constructor 202106L
diff --git a/libstdc++-v3/include/c_compatibility/stdbit.h b/libstdc++-v3/include/c_compatibility/stdbit.h
index 1fb691e36c18..fa4ec0414c6e 100644
--- a/libstdc++-v3/include/c_compatibility/stdbit.h
+++ b/libstdc++-v3/include/c_compatibility/stdbit.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDBIT_H
 #define _GLIBCXX_STDBIT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdbit_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdbit_h // C++ >= 26
+
 #include <bit>
 
 #define __STDC_VERSION_STDBIT_H__ 202311L
@@ -577,6 +581,6 @@ _GLIBCXX_STDBIT_FUNC(stdc_bit_floor);
 _GLIBCXX_STDBIT_FUNC(stdc_bit_ceil);
 #undef _GLIBCXX_STDBIT_FUNC
 #endif // !DOXYGEN
-#endif // C++26
+#endif // __cpp_lib_stdbit_h
 
 #endif // _GLIBCXX_STDBIT_H
diff --git a/libstdc++-v3/include/c_compatibility/stdckdint.h b/libstdc++-v3/include/c_compatibility/stdckdint.h
index 1de2d18dc1aa..33dfcc8442d6 100644
--- a/libstdc++-v3/include/c_compatibility/stdckdint.h
+++ b/libstdc++-v3/include/c_compatibility/stdckdint.h
@@ -29,7 +29,11 @@
 #ifndef _GLIBCXX_STDCKDINT_H
 #define _GLIBCXX_STDCKDINT_H
 
-#if __cplusplus > 202302L
+#define __glibcxx_want_stdckdint_h
+#include <bits/version.h>
+
+#ifdef __cpp_lib_stdckdint_h // C++ >= 26
+
 #include <type_traits>
 #include <concepts>
 
@@ -108,6 +112,6 @@ using __gnu_cxx::ckd_sub;
 using __gnu_cxx::ckd_mul;
 #endif
 
-#endif // C++26
+#endif // __cpp_lib_stdckdint_h
 
 #endif // _GLIBCXX_STDCKDINT_H

From tkaminsk@gcc.gnu.org  Wed Apr 22 12:44:16 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 22 Apr 2026 12:44:16 +0000 (GMT)
Subject: [gcc r16-8801] libstdc++: Mandate power of two alignment for
 std::is_sufficiently_aligned.
Message-ID: <20260422124416.AE7A84BB58EB@sourceware.org>

https://gcc.gnu.org/g:93a125db9c2f096fe8e5de6f3fe4f45ab6e2071f

commit r16-8801-g93a125db9c2f096fe8e5de6f3fe4f45ab6e2071f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 22 13:26:30 2026 +0200

    libstdc++: Mandate power of two alignment for std::is_sufficiently_aligned.
    
    This implements LWG4290. Missing Mandates clauses on is_sufficiently_aligned.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/align.h                            |  5 ++++-
 .../testsuite/20_util/is_sufficiently_aligned/2_neg.cc       | 12 ++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/align.h b/libstdc++-v3/include/bits/align.h
index 1a14e2822165..fd3cf931f448 100644
--- a/libstdc++-v3/include/bits/align.h
+++ b/libstdc++-v3/include/bits/align.h
@@ -116,7 +116,10 @@ align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept
     [[nodiscard,__gnu__::__always_inline__]]
     inline bool
     is_sufficiently_aligned(_Tp* __ptr)
-    { return reinterpret_cast<__UINTPTR_TYPE__>(__ptr) % _Align == 0; }
+    {
+      static_assert(std::has_single_bit(_Align));
+      return reinterpret_cast<__UINTPTR_TYPE__>(__ptr) % _Align == 0;
+    }
 #endif // __glibcxx_is_sufficiently_aligned
 
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/testsuite/20_util/is_sufficiently_aligned/2_neg.cc b/libstdc++-v3/testsuite/20_util/is_sufficiently_aligned/2_neg.cc
new file mode 100644
index 000000000000..9db69b67ef6d
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_sufficiently_aligned/2_neg.cc
@@ -0,0 +1,12 @@
+// { dg-do compile { target c++26 } }
+
+#include <memory>
+
+void
+test01(int* ptr)
+{
+  (void)std::is_sufficiently_aligned<5>(ptr); // { dg-error "here" }
+  (void)std::is_sufficiently_aligned<7>(ptr); // { dg-error "here" }
+}
+
+// { dg-error "static assertion failed" "" { target *-*-* } 0 }

From jakub@gcc.gnu.org  Wed Apr 22 13:04:37 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Wed, 22 Apr 2026 13:04:37 +0000 (GMT)
Subject: [gcc r16-8803] c++,
 libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection
Message-ID: <20260422130437.C81444BBCDC9@sourceware.org>

https://gcc.gnu.org/g:376d03b7b44da2328952f0212314a1f8e1241543

commit r16-8803-g376d03b7b44da2328952f0212314a1f8e1241543
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 22 15:03:48 2026 +0200

    c++, libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection
    
    Both __cpp_impl_reflection and __cpp_lib_reflection were increased from
    202506L to 202603L post Croydon, I assume to show that P3795R2 (maybe some
    issues too) have been implemented.
    Now, we do implement P3795R2 except for the is_applicable_type,
    is_nothrow_applicable_type and apply_result metafunctions, but Jonathan says
    there is agreement in LWG that to test for availability of those one should
    test __cpp_lib_reflection >= 202603L && __cpp_lib_apply >= 202603L.
    
    So, this patch bumps both FTMs.
    
    2026-04-22  Jakub Jelinek  <jakub@redhat.com>
    
    gcc/c-family/
            * c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value
            from 202506L to 202603L.
    gcc/testsuite/
            * g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from
            202506L to 202603L.
            * g++.dg/reflect/feat1.C: Likewise.  Also adjust for
            __cpp_lib_reflection bump from 202506L to 202603L.
            * g++.dg/reflect/feat2.C: Likewise.
            * g++.dg/reflect/feat3.C: Likewise.
    libstdc++-v3/
            * 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.
    
    Reviewed-by: Jason Merrill <jason@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 gcc/c-family/c-cppbuiltin.cc          | 2 +-
 gcc/testsuite/g++.dg/DRs/dr2581-2.C   | 2 +-
 gcc/testsuite/g++.dg/reflect/feat1.C  | 8 ++++----
 gcc/testsuite/g++.dg/reflect/feat2.C  | 4 ++--
 gcc/testsuite/g++.dg/reflect/feat3.C  | 4 ++--
 libstdc++-v3/include/bits/version.def | 4 ++--
 libstdc++-v3/include/bits/version.h   | 6 +++---
 libstdc++-v3/include/std/meta         | 2 +-
 libstdc++-v3/src/c++23/std.cc.in      | 2 +-
 9 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/gcc/c-family/c-cppbuiltin.cc b/gcc/c-family/c-cppbuiltin.cc
index 48095988da56..74cbeecb165e 100644
--- a/gcc/c-family/c-cppbuiltin.cc
+++ b/gcc/c-family/c-cppbuiltin.cc
@@ -1119,7 +1119,7 @@ c_cpp_builtins (cpp_reader *pfile)
 	  cpp_define (pfile, "__cpp_constexpr_virtual_inheritance=202506L");
 	  cpp_define (pfile, "__cpp_expansion_statements=202506L");
 	  if (flag_reflection)
-	    cpp_define (pfile, "__cpp_impl_reflection=202506L");
+	    cpp_define (pfile, "__cpp_impl_reflection=202603L");
 	  else
 	    cpp_warn (pfile, "__cpp_impl_reflection");
 	}
diff --git a/gcc/testsuite/g++.dg/DRs/dr2581-2.C b/gcc/testsuite/g++.dg/DRs/dr2581-2.C
index 77bf93b27410..0f2aec0e4255 100644
--- a/gcc/testsuite/g++.dg/DRs/dr2581-2.C
+++ b/gcc/testsuite/g++.dg/DRs/dr2581-2.C
@@ -64,7 +64,7 @@
 #define __cpp_impl_coroutine 201902L		// { dg-error "'__cpp_impl_coroutine' redefined" "" { target c++20 } }
 #define __cpp_impl_destroying_delete 201806L	// { dg-error "'__cpp_impl_destroying_delete' redefined" "" { target c++20 } }
 #define __cpp_impl_three_way_comparison 201907L	// { dg-error "'__cpp_impl_three_way_comparison' redefined" "" { target c++20 } }
-#define __cpp_impl_reflection 202506L		// { dg-error "'__cpp_impl_reflection' redefined" "" { target c++26 } }
+#define __cpp_impl_reflection 202603L		// { dg-error "'__cpp_impl_reflection' redefined" "" { target c++26 } }
 #define __cpp_implicit_move 202207L		// { dg-error "'__cpp_implicit_move' redefined" "" { target c++23 } }
 #define __cpp_inheriting_constructors 201511L	// { dg-error "'__cpp_inheriting_constructors' redefined" "" { target c++20 } }
 #define __cpp_init_captures 201803L		// { dg-error "'__cpp_init_captures' redefined" "" { target c++14 } }
diff --git a/gcc/testsuite/g++.dg/reflect/feat1.C b/gcc/testsuite/g++.dg/reflect/feat1.C
index a84946d6a808..e0ef6e31d3b3 100644
--- a/gcc/testsuite/g++.dg/reflect/feat1.C
+++ b/gcc/testsuite/g++.dg/reflect/feat1.C
@@ -4,14 +4,14 @@
 
 #ifndef __cpp_impl_reflection
 #  error "__cpp_impl_reflection"
-#elif __cpp_impl_reflection != 202506
-#  error "__cpp_impl_reflection != 202506"
+#elif __cpp_impl_reflection != 202603
+#  error "__cpp_impl_reflection != 202603"
 #endif
 
 #include <meta>
 
 #ifndef __cpp_lib_reflection
 #  error "__cpp_lib_reflection"
-#elif __cpp_lib_reflection != 202506
-#  error "__cpp_lib_reflection != 202506"
+#elif __cpp_lib_reflection != 202603
+#  error "__cpp_lib_reflection != 202603"
 #endif
diff --git a/gcc/testsuite/g++.dg/reflect/feat2.C b/gcc/testsuite/g++.dg/reflect/feat2.C
index dc4c82cdaab9..a1e4c601290a 100644
--- a/gcc/testsuite/g++.dg/reflect/feat2.C
+++ b/gcc/testsuite/g++.dg/reflect/feat2.C
@@ -6,8 +6,8 @@
 
 #ifndef __cpp_lib_reflection
 #  error "__cpp_lib_reflection"
-#elif __cpp_lib_reflection != 202506
-#  error "__cpp_lib_reflection != 202506"
+#elif __cpp_lib_reflection != 202603
+#  error "__cpp_lib_reflection != 202603"
 #endif
 
 #ifndef __cpp_lib_define_static
diff --git a/gcc/testsuite/g++.dg/reflect/feat3.C b/gcc/testsuite/g++.dg/reflect/feat3.C
index 68b72e27f39b..ee03b62fd2d8 100644
--- a/gcc/testsuite/g++.dg/reflect/feat3.C
+++ b/gcc/testsuite/g++.dg/reflect/feat3.C
@@ -6,8 +6,8 @@
 
 #ifndef __cpp_lib_reflection
 #  error "__cpp_lib_reflection"
-#elif __cpp_lib_reflection != 202506
-#  error "__cpp_lib_reflection != 202506"
+#elif __cpp_lib_reflection != 202603
+#  error "__cpp_lib_reflection != 202603"
 #endif
 
 #ifndef __cpp_lib_define_static
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 13dba4d63789..4db17a6d98c7 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2337,9 +2337,9 @@ ftms = {
 ftms = {
   name = reflection;
   values = {
-    v = 202506;
+    v = 202603;
     cxxmin = 26;
-    extra_cond = "__cpp_impl_reflection >= 202506L";
+    extra_cond = "__cpp_impl_reflection >= 202603L";
     cxx11abi = yes;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 743f7e29fe29..62bc83f7ea12 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2602,10 +2602,10 @@
 #undef __glibcxx_want_philox_engine
 
 #if !defined(__cpp_lib_reflection)
-# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202506L)
-#  define __glibcxx_reflection 202506L
+# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202603L)
+#  define __glibcxx_reflection 202603L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)
-#   define __cpp_lib_reflection 202506L
+#   define __cpp_lib_reflection 202603L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_reflection) */
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index b12f49a20963..21a4df45bfc0 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -37,7 +37,7 @@
 #define __glibcxx_want_define_static
 #include <bits/version.h>
 
-#if __glibcxx_reflection >= 202506L // C++ >= 26 && __cpp_impl_reflection
+#if __glibcxx_reflection >= 202603L // C++ >= 26 && __cpp_impl_reflection
 
 #include <array>
 #include <initializer_list>
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index ad249cb3348e..dbed0112dca5 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -2083,7 +2083,7 @@ export namespace std::pmr
 }
 
 // <meta>
-#if __glibcxx_reflection >= 202506L
+#if __glibcxx_reflection >= 202603L
 export namespace std
 {
 #if __has_builtin(__builtin_is_string_literal)

From redi@gcc.gnu.org  Wed Apr 22 15:02:50 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 22 Apr 2026 15:02:50 +0000 (GMT)
Subject: [gcc r16-8805] libstdc++: Update status tables to refer to GCC 16 not
 mainline
Message-ID: <20260422150250.877864B920C3@sourceware.org>

https://gcc.gnu.org/g:f8765ac93f6895419bff2e6df3d30598ca7204e6

commit r16-8805-gf8765ac93f6895419bff2e6df3d30598ca7204e6
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Apr 26 11:46:01 2024 +0100

    libstdc++: Update status tables to refer to GCC 16 not mainline
    
    libstdc++-v3/ChangeLog:
    
            * doc/html/manual/status.html: Regenerate.
            * doc/xml/manual/status_cxx1998.xml: Replace references to
            mainline GCC.
            * doc/xml/manual/status_cxx2011.xml: Likewise.
            * doc/xml/manual/status_cxx2014.xml: Likewise.
            * doc/xml/manual/status_cxx2017.xml: Likewise.
            * doc/xml/manual/status_cxx2020.xml: Likewise.
            * doc/xml/manual/status_cxx2023.xml: Likewise.
            * doc/xml/manual/status_cxxtr1.xml: Likewise.
            * doc/xml/manual/status_cxxtr24733.xml: Likewise.

Diff:
---
 libstdc++-v3/doc/html/manual/status.html          | 16 ++++++++--------
 libstdc++-v3/doc/xml/manual/status_cxx1998.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2011.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2014.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2017.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2020.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2023.xml    |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxxtr1.xml     |  2 +-
 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml |  2 +-
 9 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 64a484082689..d9a1c6736903 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -6,7 +6,7 @@
 This status table is based on the table of contents of ISO/IEC 14882:2003.
 </p><p>
 This section describes the C++ support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><div class="table"><a id="table.cxx98_status"></a><p class="title"><strong>Table?1.1.?C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
 	<span class="emphasis"><em>18</em></span>
       </td><td colspan="3" align="left">
@@ -166,7 +166,7 @@ since that release.
 This status table is based on the table of contents of ISO/IEC 14882:2011.
 </p><p>
 This section describes the C++11 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><div class="table"><a id="table.cxx11_status"></a><p class="title"><strong>Table?1.2.?C++ 2011 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
 	<span class="emphasis"><em>18</em></span>
       </td><td colspan="3" align="left">
@@ -442,7 +442,7 @@ Some subclauses are not shown in the table where the content is unchanged
 since C++11 and the implementation is complete.
 </p><p>
 This section describes the C++14 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><div class="table"><a id="table.cxx14_status"></a><p class="title"><strong>Table?1.3.?C++ 2014 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2014 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
 	<span class="emphasis"><em>18</em></span>
       </td><td colspan="3" align="left">
@@ -587,7 +587,7 @@ so the API and ABI of features added in C++17 is only stable
 since that release.
 </p><p>
 This section describes the C++17 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><p>
 The following table lists new library features that are included in
 the C++17 standard. The "Proposal" column provides a link to the
@@ -1299,7 +1299,7 @@ options. The pre-defined symbol
 presence of the required flag.
 </p><p>
 This section describes the C++20 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><p>
 The following table lists new library features that are included in
 the C++20 standard. The "Proposal" column provides a link to the
@@ -1921,7 +1921,7 @@ options. The pre-defined symbol
 presence of the required flag.
 </p><p>
 This section describes the C++23 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><p>
 The following table lists new library features that have been accepted into
 the C++23 working draft. The "Proposal" column provides a link to the
@@ -2413,7 +2413,7 @@ In this implementation the header names are prefixed by
 <code class="code">&lt;tr1/memory&gt;</code>, and so on.
 </p><p>
 This page describes the TR1 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table?1.12.?C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left">?</td><td align="left">?</td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">?</td><td align="left">?</td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left">?</td><td align="left">?</td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left">?</td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">?</td><td align="left">
 	<p>
 	  Uses code from
@@ -2434,7 +2434,7 @@ ISO/IEC TR 24733:2011,
 decimal floating-point arithmetic".
 </p><p>
 This page describes the TR 24733 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table?1.13.?C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
 	<span class="emphasis"><em>0</em></span>
       </td><td colspan="3" align="left">
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
index 3cabf742f77f..2f4dc8b530d0 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
@@ -19,7 +19,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003.
 
 <para>
 This section describes the C++ support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <!-- Status is Yes or No, Broken/Partial-->
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
index fbec6827647d..a3291b0643d4 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
@@ -35,7 +35,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2011.
 
 <para>
 This section describes the C++11 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <!-- Status is Yes or No, Broken/Partial-->
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml
index 9bed79bb9b2f..b2b562e617f4 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml
@@ -30,7 +30,7 @@ since C++11 and the implementation is complete.
 
 <para>
 This section describes the C++14 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <!-- Status is Yes or No, Broken/Partial-->
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
index 9c13caa084b1..cb886c70183b 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
@@ -24,7 +24,7 @@ since that release.
 
 <para>
 This section describes the C++17 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <para>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
index a1d3843abeff..756aae765340 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
@@ -21,7 +21,7 @@ presence of the required flag.
 
 <para>
 This section describes the C++20 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <para>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index af40eabbd8c9..e1b98c30ae7f 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -21,7 +21,7 @@ presence of the required flag.
 
 <para>
 This section describes the C++23 and library TS support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <para>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
index 9d22c55c57c8..1e45f11b0dcd 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
@@ -23,7 +23,7 @@ In this implementation the header names are prefixed by
 
 <para>
 This page describes the TR1 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <!-- Status is Yes or No, Broken/Partial-->
diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
index 073d291b52de..6faecf204fa7 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
@@ -18,7 +18,7 @@ decimal floating-point arithmetic".
 
 <para>
 This page describes the TR 24733 support in
-mainline GCC, not in any particular release.
+the GCC 16 release series.
 </para>
 
 <!-- Status is Yes or No, Broken/Partial-->

From gccadmin@gcc.gnu.org  Thu Apr 23 00:16:59 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 23 Apr 2026 00:16:59 +0000 (GMT)
Subject: [gcc r17-31] Daily bump.
Message-ID: <20260423001659.E55E74BC22DA@sourceware.org>

https://gcc.gnu.org/g:c7afa79c3619a10d621aa43d8109fb6b5dbe9019

commit r17-31-gc7afa79c3619a10d621aa43d8109fb6b5dbe9019
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 23 00:16:32 2026 +0000

    Daily bump.

Diff:
---
 contrib/ChangeLog              |   5 +
 contrib/header-tools/ChangeLog |   4 +
 gcc/ChangeLog                  | 118 +++++++++++++++++++
 gcc/DATESTAMP                  |   2 +-
 gcc/ada/ChangeLog              |  10 ++
 gcc/algol68/ChangeLog          |   5 +
 gcc/c-family/ChangeLog         |  14 +++
 gcc/c/ChangeLog                |   7 ++
 gcc/cp/ChangeLog               |  10 ++
 gcc/lto/ChangeLog              |   4 +
 gcc/po/ChangeLog               |   4 +
 gcc/testsuite/ChangeLog        | 251 +++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog         |  31 +++++
 maintainer-scripts/ChangeLog   |   5 +
 14 files changed, 469 insertions(+), 1 deletion(-)

diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index e1da606fd276..162e66ef98e7 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py (active_refs): Add
+	releases/gcc-16.
+
 2026-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* gcc-changelog/git_update_version.py: Add
diff --git a/contrib/header-tools/ChangeLog b/contrib/header-tools/ChangeLog
index 3875953ab9fb..f5e671cb595c 100644
--- a/contrib/header-tools/ChangeLog
+++ b/contrib/header-tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* show-headers: Fix spelling of 'additional'.
+
 2024-06-05  Jonathan Wakely  <jwakely@redhat.com>
 
 	* README: Fix spelling and capitalization typos.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c59fcf73a65..f01e93762143 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,121 @@
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* ipa-prop.cc (param_type_may_change_p): Fix comment typo.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* config/i386/i386.cc (ix86_get_callcvt): Say 'regparm' in comment,
+	not 'regparam'.
+
+2026-04-22  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* cfghooks.cc (make_forwarder_block): New data argument,
+	pass it down to redirect_edge_p.
+	* cfghooks.h (make_forwarder_block): Add void* argument.
+	* cfgloop.cc (mfb_reis_set): Remove.
+	(mfb_redirect_edges_in_set): Add new data argument.
+	Use it instead of mfb_reis_set.
+	(form_subloop): Create a local variable instead of
+	mfb_areis_set. Update call to make_forwarder_block.
+	(merge_latch_edges): Likewise.
+	* cfgloopmanip.cc (mfb_kj_edge): Remove.
+	(mfb_keep_just):  Add new data argument.
+	Use it instead of mfb_kj_edge.
+	(create_preheader): Use local variable instead of
+	mfb_kj_edge. Update call to make_forwarder_block.
+	* cfgloopmanip.h (mfb_keep_just): Add void* argument.
+	* tree-cfgcleanup.cc (mfb_keep_latches): Add unused void* arugment.
+	(cleanup_tree_cfg_noloop): Update call to make_forwarder_block.
+	* tree-ssa-threadupdate.cc
+	(fwd_jt_path_registry::thread_through_loop_header): Use local
+	variable instead of mfb_kj_edge. Update call to make_forwarder_block.
+
+2026-04-22  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* cfghooks.cc (make_forwarder_block): Remove new_bb_cbk argument.
+	* cfghooks.h (make_forwarder_block): Remove last argument.
+	* cfgloop.cc (form_subloop): Update call to make_forwarder_block.
+	(merge_latch_edges): Likewise.
+	* cfgloopmanip.cc (create_preheader): Likewise.
+	* tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
+	* tree-ssa-threadupdate.cc
+	(fwd_jt_path_registry::thread_through_loop_header): Likewise.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi (-ffunction-cse): Add missing full stop.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi (-Wduplicate-decl-specifier): Say 'a duplicate'.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi (-Waddress): Drop unnecessary 'warning'.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi: Fix whitespace.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi: Write 'In C,' and 'In C++,' with a comma
+	consistently.
+
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* doc/invoke.texi (-Walloca): Simplify phrasing.
+	(-Walloca-larger-than=-): Ditto.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* mode-switching.cc (optimize_mode_switching): Add dump output.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_start_call_args): Extend
+	comment.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_mode_confluence): Fix
+	comment typo.
+	* target.def (mode_switching): Fix incorrect variable names in
+	documentation.
+	* doc/tm.texi: Regenerate.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	PR target/119210
+	* config/aarch64/aarch64.cc (aarch64_mode_emit_local_sme_state):
+	Add PSTATE.ZA enablement, and zero it if already enabled.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* config/aarch64/aarch64-sme.md (aarch64_sme_write_zt): Add
+	ZTO_REGNUM use and make unspec non-volatile.
+
+2026-04-22  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/124908
+	* config/aarch64/aarch64-sve-builtins-base.cc
+	(svld1rq_impl::fold): When the SVE vector length equals the
+	quadword width, emit VIEW_CONVERT_EXPR instead of VEC_PERM_EXPR.
+
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR target/124933
+	* config/arm/constraints.md (Uj): Allow offset addressing for
+	all targets, only allow Neon addressing when we have both Neon
+	and FP16INST.
+	* config/arm/vfp.md (mov<mode>_vfp_<mode>16): Only use vld1/vst1
+	when the pattern needs address write-back.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/124971
+	* gensupport.cc (convert_syntax): Fix up // comment handling.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0dc6bcaf1c0d..b1b4798b7b5f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260422
+20260423
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2ccadd470302..17d113140cea 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,13 @@
+2026-04-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/85766
+	* libgnat/a-direct.adb (Containing_Directory): Streamline and strip
+	a trailing directory separator from the name.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* gnatvsn.ads: Bump Library_Version to 17.  Bump Current_Year to 2026.
+
 2026-04-20  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/124918
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index dd7751a6c90b..4ed20081940a 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-22  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+
+	* Make-lang.in (algol68.install-html): Fix
+	ga68-coding-guidelines dependency.  Install all dependencies.
+
 2026-03-23  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* ga68-coding-guidelines.texi (Comments): Fix typo.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 7494e0588b06..d5036a2ac39d 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value
+	from 202506L to 202603L.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* c-ubsan.cc (get_index_from_pointer_addr_expr): For
+	VOID_TYPE_P (pointee_type) use size_one_node instead of
+	TYPE_SIZE_UNIT (pointee_type) as pointee_size.  Punt for
+	!COMPLETE_OR_VOID_TYPE_P (pointee_type).  Formatting fix.  Use
+	CONVERT_EXPR_P (x) instead of CONVERT_EXPR_CODE_P (TREE_CODE (x)).
+
 2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR other/124784
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index b94625d79e35..c185fd6bfa3c 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* c-typeck.cc (build_access_with_size_for_counted_by): Use
+	size_one_node instead of build_one_cst (size_type_node).  Punt
+	if element_size is NULL_TREE.
+
 2026-04-09  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* Make-lang.in (create_fdas_for_cc1): Use $(AFDO_PROFILER) when passing
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e1a3f42bf736..52fbbfaed946 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,13 @@
+2026-04-22  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124973
+	PR c++/120502
+	PR c++/120005
+	* cp-gimplify.cc (cp_fold_r) <case TARGET_EXPR>: Only
+	do optimization folding when ff_genericize.
+	(cp_fold) <case CALL_EXPR>: Don't do
+	optimization folding when ff_only_non_odr.
+
 2026-04-21  Jason Merrill  <jason@redhat.com>
 
 	PR c++/123879
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index fb798f446484..dfda18ffc5f8 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-22  Sam James  <sam@gentoo.org>
+
+	* lto-symtab.cc (lto_varpool_replace_node): Fix spelling of 'warning'.
+
 2026-04-09  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* Make-lang.in (create_fdas_for_lto1): Use $(AFDO_PROFILER) when passing
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index d1ec0eeea9ee..3bf7edf3f5a9 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-22  Joseph Myers  <josmyers@redhat.com>
+
+	* gcc.pot: Regenerate.
+
 2026-04-21  Joseph Myers  <josmyers@redhat.com>
 
 	* sv.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 02843ec60eb3..600a85dadc3e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,254 @@
+2026-04-22  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124973
+	PR c++/120502
+	PR c++/120005
+	* g++.dg/modules/consteval-1_a.C: New test.
+	* g++.dg/modules/consteval-1_b.C: New test.
+
+2026-04-22  feedable  <feedabl3@gmail.com>
+
+	* c-c++-common/Wdangling-pointer-9.c: Reqiure label_values.
+	* c-c++-common/analyzer/computed-goto-1.c: Likewise.
+	* c-c++-common/analyzer/pr102695.c: Likewise.
+	* c-c++-common/attr-used-7.c: Likewise.
+	* c-c++-common/attr-used-8.c: Likewise.
+	* c-c++-common/attr-used-9.c: Likewise.
+	* gcc.dg/analyzer/boxed-malloc-1.c: Likewise.
+	* gcc.dg/analyzer/computed-goto-pr110529.c: Likewise.
+	* gcc.dg/analyzer/malloc-1.c: Likewise.
+	* gcc.dg/pr106421.c: Likewise.
+	* gcc.dg/pr110506.c: Likewise.
+	* gcc.dg/pr122773.c: Likewise.
+	* gcc.dg/torture/pr108076.c: Likewise.
+	* gcc.c-torture/compile/pr120250.c: Likewise.
+	* c-c++-common/analyzer/feasibility-3.c: Require named_sections.
+	* c-c++-common/attr-used-5.c: Likewise.
+	* c-c++-common/attr-used-6.c: Likewise.
+	* g++.dg/charset/attribute1.c: Likewise.
+	* gcc.dg/charset/attribute1.c: Likewise.
+	* gcc.dg/pr116887.c: Likewise.
+	* gcc.dg/pr83100-2.c: Likewise.
+	* gcc.dg/pr83100-3.c: Likewise.
+	* gcc.dg/pr87793.c: Likewise.
+	* gcc.dg/special/gcsec-1.c: Likewise.
+	* gcc.dg/tls/data-sections-1.c: Likewise.
+	* c-c++-common/analyzer/infinite-recursion-5.c: Require
+	nonlocal_goto.
+	* gcc.dg/Winfinite-recursion-2.c: Likewise.
+	* gcc.dg/Winfinite-recursion.c: Likewise.
+	* gcc.dg/pr97986-1.c: Likewise.
+	* gcc.dg/pr101156.c: Likewise.
+	* gcc.dg/callgraph-info-1.c: Require alias.
+	* gcc.dg/plugin/diagnostic-test-paths-4.c: Require signal.
+
+2026-04-22  feedable  <feedabl3@gmail.com>
+
+	* gcc.dg/torture/fp-double-convert-float-1.c: Move declaration
+	before the #ifdef
+
+2026-04-22  feedable  <feedabl3@gmail.com>
+
+	* gcc.dg/torture/builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/bfloat16-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/bfloat16-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float128-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float128-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float128x-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float128x-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float16-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float16-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float32-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float32-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float32x-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float32x-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float64-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float64-builtin-issignaling-1.c: ...here.
+	* gcc.dg/torture/float64x-builtin-issignaling-1.c: Move to...
+	* gcc.c-torture/execute/ieee/float64x-builtin-issignaling-1.c: ...here.
+
+2026-04-22  feedable  <feedabl3@gmail.com>
+
+	* gcc.c-torture/execute/ieee/ieee.exp: Replace with slightly adapted copy of
+	execute/execute.exp.
+	* gcc.c-torture/execute/ieee/20000320-1.c: Port to the new format.
+	* gcc.c-torture/execute/ieee/20001122-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/20010114-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/20010226-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/20011123-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/20030331-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/20041213-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/920518-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/920810-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/930529-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/980619-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/acc1.c: Likewise.
+	* gcc.c-torture/execute/ieee/acc2.c: Likewise.
+	* gcc.c-torture/execute/ieee/builtin-nan-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/cdivchkd.c: Likewise.
+	* gcc.c-torture/execute/ieee/cdivchkf.c: Likewise.
+	* gcc.c-torture/execute/ieee/cdivchkld.c: Likewise.
+	* gcc.c-torture/execute/ieee/compare-fp-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/compare-fp-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/compare-fp-3.c: Likewise.
+	* gcc.c-torture/execute/ieee/compare-fp-4.c: Likewise.
+	* gcc.c-torture/execute/ieee/copysign1.c: Likewise.
+	* gcc.c-torture/execute/ieee/copysign2.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-3.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-4.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-4e.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-4f.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-4l.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-5.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-6.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-7.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-8.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-8e.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-8f.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-8l.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-9.c: Likewise.
+	* gcc.c-torture/execute/ieee/fp-cmp-cond-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/hugeval.c: Likewise.
+	* gcc.c-torture/execute/ieee/inf-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/inf-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/inf-3.c: Likewise.
+	* gcc.c-torture/execute/ieee/inf-4.c: Likewise.
+	* gcc.c-torture/execute/ieee/minuszero.c: Likewise.
+	* gcc.c-torture/execute/ieee/mul-subnormal-single-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/mzero2.c: Likewise.
+	* gcc.c-torture/execute/ieee/mzero3.c: Likewise.
+	* gcc.c-torture/execute/ieee/mzero4.c: Likewise.
+	* gcc.c-torture/execute/ieee/mzero5.c: Likewise.
+	* gcc.c-torture/execute/ieee/mzero6.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr108540-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr108540-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr109008.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr109386.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr119002.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr28634.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr29302-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr30704.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr36332.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr38016.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr50310.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr67218.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr72824-2.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr72824.c: Likewise.
+	* gcc.c-torture/execute/ieee/pr84235.c: Likewise.
+	* gcc.c-torture/execute/ieee/rbug.c: Likewise.
+	* gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c: Likewise.
+	* gcc.c-torture/execute/ieee/unsafe-fp-assoc.c: Likewise.
+	* gcc.c-torture/execute/ieee/20000320-1.x: Removed.
+	* gcc.c-torture/execute/ieee/920810-1.x: Removed.
+	* gcc.c-torture/execute/ieee/980619-1.x: Removed.
+	* gcc.c-torture/execute/ieee/cdivchkd.x: Removed.
+	* gcc.c-torture/execute/ieee/cdivchkf.x: Removed.
+	* gcc.c-torture/execute/ieee/cdivchkld.x: Removed.
+	* gcc.c-torture/execute/ieee/compare-fp-3.x: Removed.
+	* gcc.c-torture/execute/ieee/compare-fp-4.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-1.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-2.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-3.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-4.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-4f.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-4l.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-6.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-7.x: Removed.
+	* gcc.c-torture/execute/ieee/fp-cmp-9.x: Removed.
+	* gcc.c-torture/execute/ieee/hugeval.x: Removed.
+	* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: Removed.
+	* gcc.c-torture/execute/ieee/mzero2.x: Removed.
+	* gcc.c-torture/execute/ieee/pr108540-1.x: Removed.
+	* gcc.c-torture/execute/ieee/pr29302-1.x: Removed.
+	* gcc.c-torture/execute/ieee/pr30704.x: Removed.
+	* gcc.c-torture/execute/ieee/pr38016.x: Removed.
+	* gcc.c-torture/execute/ieee/rbug.x: Removed.
+	* gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.x: Removed.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* lib/target-supports.exp: Merge exts_sve2 handling into exts.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* gcc.target/aarch64/sme2/acle-asm/svluti4_zt_1.c: Add dg-do.
+	* gcc.target/aarch64/sme2/acle-asm/svwrite_lane_zt_1.c: Ditto.
+	* gcc.target/aarch64/sme2/acle-asm/svwrite_zt_1.c: Ditto.
+	* lib/target-supports.exp: Add sme-lutv2 to exts_sve2.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	PR target/119210
+	* gcc.target/aarch64/sme/za_state_8.c: New test.
+
+2026-04-22  Alice Carlotti  <alice.carlotti@arm.com>
+
+	* gcc.target/aarch64/sme/zt0_state_8.c: New test.
+
+2026-04-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/directory1.adb: New test.
+
+2026-04-22  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/124908
+	* gcc.target/aarch64/sve/acle/general/ld1rq_2.c: New test.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from
+	202506L to 202603L.
+	* g++.dg/reflect/feat1.C: Likewise.  Also adjust for
+	__cpp_lib_reflection bump from 202506L to 202603L.
+	* g++.dg/reflect/feat2.C: Likewise.
+	* g++.dg/reflect/feat3.C: Likewise.
+
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR tree-optimization/124909
+	* gcc.dg/match-shift-cmp-3.c:  Adjust expected results for
+	target short_enums.
+
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR target/124933
+	* lib/target-supports.exp (v8_1m_main_fp_hard): New arm
+	architecture variant.
+	* gcc.target/arm/pr124933.c: New test.
+	* gcc.target/arm/armv8_2-fp16-move-1.c: Update expected output.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* gcc.dg/ubsan/pr124969-2.c: New test.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* gcc.dg/ubsan/pr124969-1.c: New test.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/122483
+	* gcc.target/aarch64/sme/streaming_mode_1.c: Xfail errors for
+	sc_a, sc_c, sc_e, s_a, s_c, s_e and keyword_contradiction_1.
+	* gcc.target/aarch64/sme/za_state_1.c: Xfail errors for shared_a,
+	shared_c, shared_e, preserved_a, preserved_c, preserved_e and
+	keyword_conflict_1.
+	* gcc.target/aarch64/sme/za_state_2.c: Xfail errors for shared_b,
+	shared_d, shared_f and shared_h.  Add xfailed dg-bogus for
+	extra diagnostics on shared_f and shared_h.
+
+2026-04-22  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/124959
+	* gcc.dg/hoist-register-pressure-1.c,
+	gcc.dg/hoist-register-pressure-2.c,
+	gcc.dg/hoist-register-pressure-3.c: Exclude cris-*-*.
+
 2026-04-21  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/124944
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f098f0cc3fc0..0db437b5322b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,34 @@
+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):
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
index 0eee23141338..387af4cd1f7a 100644
--- a/maintainer-scripts/ChangeLog
+++ b/maintainer-scripts/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* crontab: Snapshots from trunk are now GCC 17 related.
+	Add GCC 16 snapshots from the respective branch.
+
 2026-01-26  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* update_web_docs_git (MANUALS): Add ga68-coding-guidelines.

From gccadmin@gcc.gnu.org  Thu Apr 23 00:18:45 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 23 Apr 2026 00:18:45 +0000 (GMT)
Subject: [gcc r14-12547] Daily bump.
Message-ID: <20260423001845.23F504BC22DA@sourceware.org>

https://gcc.gnu.org/g:fed7a84a1646514fcbd3d2c2274066973c7f0e7a

commit r14-12547-gfed7a84a1646514fcbd3d2c2274066973c7f0e7a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 23 00:18:18 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/testsuite/ChangeLog | 52 +++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 12 +++++++++
 4 files changed, 133 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 63dbf7e273e2..fbc751f33012 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,71 @@
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-03-25  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124627
+	* tree-inline.cc (copy_debug_stmts): Only copy debug
+	stmts that are still in the IL.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-17  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124130
+	* tree-inline.cc (copy_edges_for_bb): Fixup noreturn calls
+	with abnormal edge source.
+
+2026-04-22  Jan Hubicka  <jh@suse.cz>
+
+	Backported from master:
+	2026-03-10  Jan Hubicka  <jh@suse.cz>
+		    Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/120987
+	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining): Mask
+	off non const/pure/novops related flags when combining of outer
+	functions.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-03  Richard Biener  <rguenther@suse.de>
+
+	PR ipa/123416
+	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining):
+	Fix typo in condtion for load merging when no callee summary.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-01-19  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/123061
+	PR tree-optimization/123636
+	* tree-ssa-loop-im.cc (fill_always_executed_in_1): Change
+	outer-to-inner to inner-to-outer iteration.  Update inner
+	loop state only when always executed in an immediately
+	nested loop.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-03-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124677
+	* tree-vect-loop.cc (vectorizable_recurr): Skip vector
+	stmts for the def.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-17  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124132
+	* tree-ssa-loop-split.cc (compute_new_first_bound): Fix
+	bound difference computation.
+
 2026-04-13  Richard Earnshaw  <rearnsha@arm.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0dc6bcaf1c0d..b1b4798b7b5f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260422
+20260423
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 46944f7504a1..b0bf66e7b775 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,55 @@
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-17  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124130
+	* g++.dg/torture/pr124130.C: New testcase.
+
+2026-04-22  Jan Hubicka  <jh@suse.cz>
+
+	Backported from master:
+	2026-03-10  Jan Hubicka  <jh@suse.cz>
+		    Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/120987
+	* g++.dg/torture/pr120987-1.C: New test.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-03  Richard Biener  <rguenther@suse.de>
+
+	PR ipa/123416
+	* gcc.dg/torture/pr123416.c: New testcase.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-01-19  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/123061
+	PR tree-optimization/123636
+	* gcc.dg/torture/pr123061.c: New testcase.
+	* gcc.dg/torture/pr123636.c: Likewise.
+	* gcc.dg/tree-ssa/ssa-lim-26.c: Likewise.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-03-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124677
+	* gcc.dg/vect/vect-pr124677.c: New testcase.
+
+2026-04-22  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-02-17  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124132
+	* gcc.dg/torture/pr124132.c: New testcase.
+
 2026-04-21  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 5714de5bc2ad..0578361f5175 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-22  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	Backported from master:
+	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-03-30  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Thu Apr 23 00:20:29 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 23 Apr 2026 00:20:29 +0000 (GMT)
Subject: [gcc r16-8807] Daily bump.
Message-ID: <20260423002029.72C6F4BC22DA@sourceware.org>

https://gcc.gnu.org/g:b37ed70b30b884b599f40e06627a10cb08617525

commit r16-8807-gb37ed70b30b884b599f40e06627a10cb08617525
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 23 00:20:00 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 14 +++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/c-family/ChangeLog  | 14 +++++++++++++
 gcc/c/ChangeLog         |  7 +++++++
 gcc/po/ChangeLog        |  4 ++++
 gcc/testsuite/ChangeLog | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 44 +++++++++++++++++++++++++++++++++++++++++
 7 files changed, 136 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c59fcf73a65..bcb9649ddcb1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR target/124933
+	* config/arm/constraints.md (Uj): Allow offset addressing for
+	all targets, only allow Neon addressing when we have both Neon
+	and FP16INST.
+	* config/arm/vfp.md (mov<mode>_vfp_<mode>16): Only use vld1/vst1
+	when the pattern needs address write-back.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/124971
+	* gensupport.cc (convert_syntax): Fix up // comment handling.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0dc6bcaf1c0d..b1b4798b7b5f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260422
+20260423
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 7494e0588b06..d5036a2ac39d 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value
+	from 202506L to 202603L.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* c-ubsan.cc (get_index_from_pointer_addr_expr): For
+	VOID_TYPE_P (pointee_type) use size_one_node instead of
+	TYPE_SIZE_UNIT (pointee_type) as pointee_size.  Punt for
+	!COMPLETE_OR_VOID_TYPE_P (pointee_type).  Formatting fix.  Use
+	CONVERT_EXPR_P (x) instead of CONVERT_EXPR_CODE_P (TREE_CODE (x)).
+
 2026-04-07  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	PR other/124784
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index b94625d79e35..c185fd6bfa3c 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* c-typeck.cc (build_access_with_size_for_counted_by): Use
+	size_one_node instead of build_one_cst (size_type_node).  Punt
+	if element_size is NULL_TREE.
+
 2026-04-09  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* Make-lang.in (create_fdas_for_cc1): Use $(AFDO_PROFILER) when passing
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index d1ec0eeea9ee..3bf7edf3f5a9 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-22  Joseph Myers  <josmyers@redhat.com>
+
+	* gcc.pot: Regenerate.
+
 2026-04-21  Joseph Myers  <josmyers@redhat.com>
 
 	* sv.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 02843ec60eb3..9c2f8a9745a7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,55 @@
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from
+	202506L to 202603L.
+	* g++.dg/reflect/feat1.C: Likewise.  Also adjust for
+	__cpp_lib_reflection bump from 202506L to 202603L.
+	* g++.dg/reflect/feat2.C: Likewise.
+	* g++.dg/reflect/feat3.C: Likewise.
+
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR tree-optimization/124909
+	* gcc.dg/match-shift-cmp-3.c:  Adjust expected results for
+	target short_enums.
+
+2026-04-22  Richard Earnshaw  <rearnsha@arm.com>
+
+	PR target/124933
+	* lib/target-supports.exp (v8_1m_main_fp_hard): New arm
+	architecture variant.
+	* gcc.target/arm/pr124933.c: New test.
+	* gcc.target/arm/armv8_2-fp16-move-1.c: Update expected output.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* gcc.dg/ubsan/pr124969-2.c: New test.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/124969
+	* gcc.dg/ubsan/pr124969-1.c: New test.
+
+2026-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/122483
+	* gcc.target/aarch64/sme/streaming_mode_1.c: Xfail errors for
+	sc_a, sc_c, sc_e, s_a, s_c, s_e and keyword_contradiction_1.
+	* gcc.target/aarch64/sme/za_state_1.c: Xfail errors for shared_a,
+	shared_c, shared_e, preserved_a, preserved_c, preserved_e and
+	keyword_conflict_1.
+	* gcc.target/aarch64/sme/za_state_2.c: Xfail errors for shared_b,
+	shared_d, shared_f and shared_h.  Add xfailed dg-bogus for
+	extra diagnostics on shared_f and shared_h.
+
+2026-04-22  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/124959
+	* gcc.dg/hoist-register-pressure-1.c,
+	gcc.dg/hoist-register-pressure-2.c,
+	gcc.dg/hoist-register-pressure-3.c: Exclude cris-*-*.
+
 2026-04-21  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/124944
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f098f0cc3fc0..b139be2bbd19 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,47 @@
+2026-04-22  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/html/manual/status.html: Regenerate.
+	* doc/xml/manual/status_cxx1998.xml: Replace references to
+	mainline GCC.
+	* doc/xml/manual/status_cxx2011.xml: Likewise.
+	* doc/xml/manual/status_cxx2014.xml: Likewise.
+	* doc/xml/manual/status_cxx2017.xml: Likewise.
+	* doc/xml/manual/status_cxx2020.xml: Likewise.
+	* doc/xml/manual/status_cxx2023.xml: Likewise.
+	* doc/xml/manual/status_cxxtr1.xml: Likewise.
+	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
+
+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):

From tkaminsk@gcc.gnu.org  Thu Apr 23 10:28:06 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 23 Apr 2026 10:28:06 +0000 (GMT)
Subject: [gcc r17-36] libstdc++: Implement __integral_constant_like in terms
 of __constexpr_wrapper_like.
Message-ID: <20260423102806.CE92F4BBA15B@sourceware.org>

https://gcc.gnu.org/g:2653c165822ee49a5ff21c24bdee42a52452265f

commit r17-36-g2653c165822ee49a5ff21c24bdee42a52452265f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 21 14:34:40 2026 +0200

    libstdc++: Implement __integral_constant_like in terms of __constexpr_wrapper_like.
    
    This implements LWG4486. integral-constant-like and constexpr-wrapper-like
    exposition-only concept duplication.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/simd_details.h       | 7 -------
 libstdc++-v3/include/std/concepts              | 9 +++++++++
 libstdc++-v3/include/std/span                  | 8 +++-----
 libstdc++-v3/testsuite/std/simd/traits_impl.cc | 1 +
 4 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/libstdc++-v3/include/bits/simd_details.h b/libstdc++-v3/include/bits/simd_details.h
index 3880d8a19166..a1acc5bd9464 100644
--- a/libstdc++-v3/include/bits/simd_details.h
+++ b/libstdc++-v3/include/bits/simd_details.h
@@ -1030,13 +1030,6 @@ namespace simd
   /** @internal
    * C++26 [simd.expos]
    */
-  template<typename _Tp>
-    concept __constexpr_wrapper_like
-      = convertible_to<_Tp, decltype(_Tp::value)>
-	  && equality_comparable_with<_Tp, decltype(_Tp::value)>
-	  && bool_constant<_Tp() == _Tp::value>::value
-	  && bool_constant<static_cast<decltype(_Tp::value)>(_Tp()) == _Tp::value>::value;
-
   // [simd.ctor] explicit(...) of broadcast ctor
   template <auto _From, typename _To>
     concept __non_narrowing_constexpr_conversion
diff --git a/libstdc++-v3/include/std/concepts b/libstdc++-v3/include/std/concepts
index 7673443f33a8..328096a89e38 100644
--- a/libstdc++-v3/include/std/concepts
+++ b/libstdc++-v3/include/std/concepts
@@ -421,6 +421,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	       && ! requires(_Tp&& __t, _Up&& __u)
 	         { static_cast<_Up&&>(__u).operator<=>(static_cast<_Tp&&>(__t)); }));
   }
+
+  // [expos.only.entity]
+  template<typename _Tp>
+    concept __constexpr_wrapper_like
+      = convertible_to<_Tp, decltype(_Tp::value)>
+	&& equality_comparable_with<_Tp, decltype(_Tp::value)>
+	&& bool_constant<_Tp() == _Tp::value>::value
+	&& bool_constant<static_cast<decltype(_Tp::value)>(_Tp()) == _Tp::value>::value;
+
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 #endif // __cpp_lib_concepts
diff --git a/libstdc++-v3/include/std/span b/libstdc++-v3/include/std/span
index a5f5bf48f90e..aaa7a485be8c 100644
--- a/libstdc++-v3/include/std/span
+++ b/libstdc++-v3/include/std/span
@@ -467,15 +467,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   {
     // _GLIBCXX_RESOLVE_LIB_DEFECTS
     // 4351. integral-constant-like needs more remove_cvref_t
+    // 4486. integral-constant-like and constexpr-wrapper-like exposition-only
+    //       concept duplication
     template<typename _Tp>
       concept __integral_constant_like =
 	is_integral_v<remove_cvref_t<decltype(_Tp::value)>>
 	&& !is_same_v<bool, remove_cvref_t<decltype(_Tp::value)>>
-	&& convertible_to<_Tp, decltype(_Tp::value)>
-	&& equality_comparable_with<_Tp, decltype(_Tp::value)>
-	&& bool_constant<_Tp() == _Tp::value>::value
-	&& bool_constant<static_cast<decltype(_Tp::value)>(_Tp()) == _Tp::value>
-	     ::value;
+	&& __constexpr_wrapper_like<_Tp>;
 
     template<typename _Tp>
       constexpr size_t __maybe_static_ext = dynamic_extent;
diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
index f73a9e3beb5b..2f705c7df2f7 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
@@ -16,6 +16,7 @@ using std::float32_t;
 using std::float64_t;
 
 using namespace std::simd;
+using std::__constexpr_wrapper_like;
 
 template <int = 0>
 void test()

From tkaminsk@gcc.gnu.org  Thu Apr 23 11:06:23 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 23 Apr 2026 11:06:23 +0000 (GMT)
Subject: [gcc r17-37] libstdc++: Include bool conversion in noexcept
 specification of indirect::operator==.
Message-ID: <20260423110623.5239F4BBAFCB@sourceware.org>

https://gcc.gnu.org/g:2985bacae46a61f70ac5bfbf3b6d3a943e538860

commit r17-37-g2985bacae46a61f70ac5bfbf3b6d3a943e538860
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 22 16:10:26 2026 +0200

    libstdc++: Include bool conversion in noexcept specification of indirect::operator==.
    
    This expands the resolution of LWG4325 to heterogenous comparision
    with T per standard draft (see corresponding commit [1]).
    
    [1] https://github.com/cplusplus/draft/pull/8935/changes/833d635d648cdbd06c9935acccf925ee0aea3c79
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/indirect.h (indirect::operator==): Adjust
            noexcept specification.
            * testsuite/std/memory/indirect/relops.cc: New test for noexcept
            specification.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/indirect.h               |  4 +-
 .../testsuite/std/memory/indirect/relops.cc        | 72 ++++++++++++++++++++++
 2 files changed, 74 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/indirect.h b/libstdc++-v3/include/bits/indirect.h
index 6490a77a5079..5be6713eaf3f 100644
--- a/libstdc++-v3/include/bits/indirect.h
+++ b/libstdc++-v3/include/bits/indirect.h
@@ -336,7 +336,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	requires requires (const _Tp& __t, const _Up& __u) { __t == __u; }
 	friend constexpr bool
 	operator==(const indirect& __lhs, const indirect<_Up, _Alloc2>& __rhs)
-	noexcept(noexcept(*__lhs == *__rhs))
+	noexcept(noexcept(bool(*__lhs == *__rhs)))
 	{
 	  if (!__lhs._M_objp || !__rhs._M_objp)
 	    return bool(__lhs._M_objp) == bool(__rhs._M_objp);
@@ -349,7 +349,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  && requires (const _Tp& __t, const _Up& __u) { __t == __u; }
 	friend constexpr bool
 	operator==(const indirect<_Vp, _Alloc>& __lhs, const _Up& __rhs)
-	noexcept(noexcept(*__lhs == __rhs))
+	noexcept(noexcept(bool(*__lhs == __rhs)))
 	{
 	  if (!__lhs._M_objp)
 	    return false;
diff --git a/libstdc++-v3/testsuite/std/memory/indirect/relops.cc b/libstdc++-v3/testsuite/std/memory/indirect/relops.cc
index 77d599c80861..fb957a7ad3d3 100644
--- a/libstdc++-v3/testsuite/std/memory/indirect/relops.cc
+++ b/libstdc++-v3/testsuite/std/memory/indirect/relops.cc
@@ -68,11 +68,83 @@ test_hash()
   (void)std::hash<std::indirect<Obj>>{}(i);
 }
 
+template<bool Noexcept>
+struct BoolConv
+{
+  bool b;
+
+  constexpr BoolConv(bool p) noexcept
+  : b(p)
+  { }
+
+  constexpr operator bool() const noexcept(Noexcept)
+  { return b; }
+};
+
+template<bool Noexcept, typename EqRet = bool>
+struct Comp
+{
+  friend constexpr EqRet
+  operator==(const Comp&, const Comp&) noexcept(Noexcept)
+  { return true; }
+
+  friend constexpr std::strong_ordering
+  operator<=>(const Comp&, const Comp&) noexcept(Noexcept)
+  { return std::strong_ordering::equal; }
+};
+
+template<bool Noexcept, typename T>
+void test_noexcept_eq(T t)
+{
+  std::indirect<T> i(t);
+  static_assert(noexcept(i == t) == Noexcept);
+  static_assert(noexcept(i != t) == Noexcept);
+  static_assert(noexcept(i == i) == Noexcept);
+  static_assert(noexcept(i != i) == Noexcept);
+}
+
+template<bool Noexcept, typename T>
+void test_noexcept_rel(T t)
+{
+  std::indirect<T> i(t);
+  static_assert(noexcept(i < t) == Noexcept);
+  static_assert(noexcept(i > t) == Noexcept);
+  static_assert(noexcept(i <= t) == Noexcept);
+  static_assert(noexcept(i >= t) == Noexcept);
+  static_assert(noexcept(i <=> t) == Noexcept);
+
+  static_assert(noexcept(t < i) == Noexcept);
+  static_assert(noexcept(t > i) == Noexcept);
+  static_assert(noexcept(t <= i) == Noexcept);
+  static_assert(noexcept(t >= i) == Noexcept);
+  static_assert(noexcept(t <=> i) == Noexcept);
+
+  static_assert(noexcept(i < i) == Noexcept);
+  static_assert(noexcept(i > i) == Noexcept);
+  static_assert(noexcept(i <= i) == Noexcept);
+  static_assert(noexcept(i >= i) == Noexcept);
+  static_assert(noexcept(i <=> i) == Noexcept);
+}
+
+void test_noexcept()
+{
+  test_noexcept_eq<true>(Comp<true>());
+  test_noexcept_eq<false>(Comp<false>());
+  test_noexcept_rel<true>(Comp<true>());
+  test_noexcept_rel<false>(Comp<false>());
+
+  test_noexcept_eq<true>(Comp<true, BoolConv<true>>());
+  test_noexcept_eq<false>(Comp<true, BoolConv<false>>());
+  test_noexcept_eq<false>(Comp<false, BoolConv<true>>());
+  test_noexcept_eq<false>(Comp<false, BoolConv<false>>());
+}
+
 int main()
 {
   test_relops();
   test_comp_with_t();
   test_hash();
+  test_noexcept();
 
   static_assert([] {
     test_relops();

From gccadmin@gcc.gnu.org  Fri Apr 24 00:16:56 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 24 Apr 2026 00:16:56 +0000 (GMT)
Subject: [gcc r17-52] Daily bump.
Message-ID: <20260424001656.6D77A4B99F57@sourceware.org>

https://gcc.gnu.org/g:f28e24d91bf214ff682249c72c31b8e50bf5048a

commit r17-52-gf28e24d91bf214ff682249c72c31b8e50bf5048a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Apr 24 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 33 ++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 93 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 72 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |  4 +++
 libstdc++-v3/ChangeLog  | 18 ++++++++++
 6 files changed, 221 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f01e93762143..ba3d04506530 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,36 @@
+2026-04-23  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+
+	* config/riscv/pipeline-checker: Filter tuneless insn types.
+
+2026-04-23  Yuxuan Chen  <i@yuxuan.ch>
+
+	PR c++/107187
+	* doc/extend.texi: Document __attribute__((trivial_abi)).
+
+2026-04-23  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* config/riscv/bitmanip.md (<bitmanip_optab>si3): Add
+	SUBREG_PROMOTED annotation to lowpart result.
+
+2026-04-23  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR target/124029
+	* config/riscv/riscv.cc (riscv_rtx_costs): Improve costing of COMPARE
+	nodes.
+
+2026-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* config/i386/cygming.h (STACK_CHECK_PROTECT): Define.
+
+2026-04-23  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124994
+	* config/i386/i386-features.cc (x86_cse::gate): Drop TARGET_SSE2.
+
+2026-04-23  Bohan Lei  <garthlei@linux.alibaba.com>
+
+	* config/riscv/riscv.cc (vxrm_unknown_p): Remove `CALL_P` check
+
 2026-04-22  Sam James  <sam@gentoo.org>
 
 	* ipa-prop.cc (param_type_may_change_p): Fix comment typo.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index b1b4798b7b5f..2aec246349a3 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260423
+20260424
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 52fbbfaed946..5571e1fd5834 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,96 @@
+2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	* module.cc (trees_out::core_vals) <case PTRMEM_CST>:
+	Stream PTRMEM_CST_LOCATION.
+	<case TRAIT_EXPR>: Stream TRAIT_EXPR_LOCATION.
+	(trees_in::core_vals): As in trees_out::core_vals.
+
+2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124981
+	* module.cc (trees_in::core_vals) <case PTRMEM_CST>: Use RTU
+	instead of RT to stream PTRMEM_CST_MEMBER.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	* cp-tree.h (lookup_annotation): Declare.
+	* decl.cc (grokfndecl): Use lookup_annotation.
+	(grokdeclarator): Likewise.
+	* name-lookup.cc (push_local_extern_decl_alias): Likewise.
+	* parser.cc (cp_parser_decomposition_declaration): Likewise.
+	* reflect.cc (eval_annotations_of): Likewise.
+	* tree.cc (lookup_annotation): New.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	* cp-tree.h (enum linkage_kind): Add lk_module.
+	* module.cc (check_module_decl_linkage): Use DECL_EXTERNAL_LINKAGE_P.
+	* name-lookup.cc (check_can_export_using_decl): Don't check for
+	attachment.
+	* parser.cc (cp_parser_template_argument): Check that linkage isn't
+	lk_module.
+	* reflect.cc (eval_has_module_linkage): Check lk_module.
+	(eval_has_external_linkage): Use DECL_EXTERNAL_LINKAGE_P.
+	* tree.cc (decl_linkage): Return lk_module if appropriate.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	DR 2229
+	PR c++/123935
+	* decl2.cc (grokbitfield): Add pedwarn for cv-qualified unnamed
+	bit-fields.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124989
+	* pt.cc (tsubst_splice_expr): Turn off access checking for the
+	build_offset_ref call.
+
+2026-04-23  Ben Wu  <soggysocks206@gmail.com>
+
+	PR c++/118374
+	PR c++/41127
+	* parser.cc (cp_parser_enum_specifier): Parse definitely
+	before cp_parser_type_specifier_seq.
+
+2026-04-23  Yuxuan Chen  <i@yuxuan.ch>
+
+	PR c++/107187
+	* cp-tree.h (has_trivial_abi_attribute): New function.
+	(validate_trivial_abi_attribute): Declare.
+	(classtype_has_non_deleted_copy_or_move_ctor): Declare.
+	(cxx_clang_attribute_table): Declare.
+	* tree.cc (handle_trivial_abi_attribute): New function.
+	(handle_gnu_trivial_abi_attribute): New function.
+	(classtype_has_trivial_abi): New function.
+	(validate_trivial_abi_attribute): New function.
+	(cxx_gnu_attributes): Add trivial_abi entry.
+	(cxx_clang_attributes): New table for [[clang::trivial_abi]].
+	* class.cc (finish_struct_bits): Skip BLKmode for types with
+	trivial_abi attribute.
+	(classtype_has_non_deleted_copy_or_move_ctor): New function.
+	(finish_struct_1): Call validate_trivial_abi_attribute before
+	finish_struct_bits.
+	* cp-objcp-common.h (cp_objcp_attribute_table): Register
+	cxx_clang_attribute_table.
+	* decl.cc (store_parm_decls): Register cleanups for trivial_abi
+	parameters.
+
+2026-04-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124973
+	* cp-gimplify.cc (cp_fold_r): Fix typo.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124926
+	* pt.cc (tsubst_qualified_id): Rename name_lookup_p parameter to
+	reflecting_p.  Check !reflecting_p instead of name_lookup_p.  Do
+	not give the "instantiation yields a type" error when reflecting_p
+	is true.
+	(tsubst_expr) <case REFLECT_EXPR>: Adjust the call to
+	tsubst_qualified_id.
+
 2026-04-22  Jason Merrill  <jason@redhat.com>
 
 	PR c++/124973
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 600a85dadc3e..97ba608c0f86 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,75 @@
+2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124981
+	* g++.dg/modules/ptrmem-1_a.C: New test.
+	* g++.dg/modules/ptrmem-1_b.C: New test.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	DR 2229
+	PR c++/123935
+	* g++.dg/DRs/dr2229.C: New test.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124989
+	* g++.dg/reflect/member24.C: New test.
+
+2026-04-23  Ben Wu  <soggysocks206@gmail.com>
+
+	PR c++/118374
+	PR c++/41127
+	* g++.dg/cpp0x/enum1.C: Update test.
+	* g++.dg/parse/enum5.C: Expect error with bitfield width
+	and enum-key in member.
+	* g++.dg/cpp0x/enum45.C: New test.
+
+2026-04-23  Yuxuan Chen  <i@yuxuan.ch>
+
+	PR c++/107187
+	* g++.dg/abi/invisiref3.C: New file.
+	* g++.dg/abi/invisiref3a.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi1.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi2.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi3.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi4.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi5.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi6.C: New file.
+	* g++.dg/cpp0x/attr-trivial_abi_syntax.C: New file.
+
+2026-04-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124973
+	* g++.dg/modules/consteval-1_b.C: Add -O.
+
+2026-04-23  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* gcc.target/riscv/zbb-min-max-05.c: New test.
+	* gcc.target/riscv/zbb-min-max-06.c: New test.
+	* gcc.target/riscv/zbb-min-max-07-run.c: New test.
+
+2026-04-23  Co-authored-by: Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/124029
+	* gcc.target/riscv/pr124029.c: New test.
+	* gcc.target/riscv/rvv/autovec/struct/struct_vect-2.c: Adjust
+	expected output.
+
+2026-04-23  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124926
+	* g++.dg/reflect/dep15.C: New test.
+
+2026-04-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* gcc.misc-tests/options.exp (check_for_all_options): Check for
+	configured assembler.
+
+2026-04-23  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124994
+	* gcc.target/i386/pr124994.c: New test.
+
 2026-04-22  Jason Merrill  <jason@redhat.com>
 
 	PR c++/124973
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 0b0dc62992e2..119975b2a995 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* config/i386/t-slibgcc-cygming (SHLIB_LINK): Add $(LDFLAGS).
+
 2026-04-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
 	* config/arm/sfp-exceptions.c: New file.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0db437b5322b..c08fc4dc5a8c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,21 @@
+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

From meissner@gcc.gnu.org  Fri Apr 24 00:23:37 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Fri, 24 Apr 2026 00:23:37 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work243)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260424002337.680FA4BAE7C0@sourceware.org>

https://gcc.gnu.org/g:6dba365ffe7c1331930d0f363d396deea548c3ee

commit 6dba365ffe7c1331930d0f363d396deea548c3ee
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Apr 23 20:23:10 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..ac7a5114b296
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work243 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..02558115215a
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work243, baseline ====================
+
+2026-04-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From redi@gcc.gnu.org  Fri Apr 24 09:04:04 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 24 Apr 2026 09:04:04 +0000 (GMT)
Subject: [gcc r17-57] libstdc++: Update tzdata to 2026a
Message-ID: <20260424090404.BC30E4BAE7C0@sourceware.org>

https://gcc.gnu.org/g:b8fd759dc61c0a191a236eb19db870bb30078011

commit r17-57-gb8fd759dc61c0a191a236eb19db870bb30078011
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026a
    
    Import the new 2026a tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/std/chrono  |  2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 10 ++++++----
 libstdc++-v3/src/c++20/tzdb.cc   |  4 ++--
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 7c887f56cc23..674f867dcdc7 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3254,7 +3254,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index c56f67c02f6d..88f7d34a3817 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,5 @@
-# version 2025c
+# version 2026a
+# redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -1304,8 +1305,8 @@ R MT 1974 o - S 16 0s 0 -
 R MT 1975 1979 - Ap Su>=15 2 1 S
 R MT 1975 1980 - S Su>=15 2 0 -
 R MT 1980 o - Mar 31 2 1 S
-R MD 1997 ma - Mar lastSu 2 1 S
-R MD 1997 ma - O lastSu 3 0 -
+R MD 1997 2021 - Mar lastSu 2 1 S
+R MD 1997 2021 - O lastSu 3 0 -
 R O 1918 1919 - S 16 2s 0 -
 R O 1919 o - Ap 15 2s 1 S
 R O 1944 o - Ap 3 2s 1 S
@@ -3666,7 +3667,8 @@ Z Europe/Chisinau 1:55:20 - LMT 1880
 3 R MSK/MSD 1990 May 6 2
 2 R EE%sT 1992
 2 e EE%sT 1997
-2 MD EE%sT
+2 MD EE%sT 2022
+2 E EE%sT
 Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
 -0:25:21 - DMT 1916 May 21 2s
 -0:25:21 1 IST 1916 O 1 2s
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index eb6ac7d07c72..b0fbfc46a6d3 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1256,8 +1256,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-06-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/06/28};
+    // This list is valid until at least 2026-12-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/12/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From tkaminsk@gcc.gnu.org  Fri Apr 24 09:29:24 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 09:29:24 +0000 (GMT)
Subject: [gcc r17-62] libstdc+: Provide iterator type for basic_const_iterator.
Message-ID: <20260424092924.05D154BABF3A@sourceware.org>

https://gcc.gnu.org/g:799e24adedd761e257815c77fff1d19efdd0220c

commit r17-62-g799e24adedd761e257815c77fff1d19efdd0220c
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 10:40:19 2026 +0200

    libstdc+: Provide iterator type for basic_const_iterator.
    
    This resolves LWG 4253, "basic_const_iterator should provide iterator_type"
    which was approved in Kona 2025.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_iterator.h (basic_const_iterator::iterator_type):
            Define.
            * testsuite/24_iterators/const_iterator/1.cc: Tests for
            iterator_type.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/stl_iterator.h                | 3 +++
 libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index f16f591ad635..6439deb608a6 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -2691,6 +2691,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     template<input_iterator _It2> friend class basic_const_iterator;
 
   public:
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 4253. basic_const_iterator should provide iterator_type
+    using iterator_type = _It;
     using iterator_concept = decltype(_S_iter_concept());
     using value_type = iter_value_t<_It>;
     using difference_type = iter_difference_t<_It>;
diff --git a/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc b/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
index f2bcad4f09c9..7f791ddbef97 100644
--- a/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
+++ b/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
@@ -29,6 +29,7 @@ test01()
   else
     {
       using Wrapped = std::basic_const_iterator<Iter>;
+      static_assert( std::same_as<typename Wrapped::iterator_type, Iter> );
 
       static_assert( std::same_as<std::const_iterator<Iter>, Wrapped> );
       static_assert( std::same_as<std::const_sentinel<Iter>, Wrapped> );
@@ -64,6 +65,7 @@ test02()
     {
       static_assert( !ranges::constant_range<Range> );
       using Wrapped = std::basic_const_iterator<ranges::iterator_t<Range>>;
+      static_assert( std::same_as<typename Wrapped::iterator_type, ranges::iterator_t<Range>> );
 
       if constexpr (Constable)
 	{

From tkaminsk@gcc.gnu.org  Fri Apr 24 09:32:25 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 09:32:25 +0000 (GMT)
Subject: [gcc r17-64] libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS comment for
 LWG4083.
Message-ID: <20260424093225.837E74BB3BC7@sourceware.org>

https://gcc.gnu.org/g:f3d9afa91c740fe441ede6f9320664a952375d97

commit r17-64-gf3d9afa91c740fe441ede6f9320664a952375d97
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 11:13:02 2026 +0200

    libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS comment for LWG4083.
    
    The LWG4083, "views::as_rvalue should reject non-input ranges" is resolved,
    as input_range<_Range> is implied by __detail::__can_as_rvalue_view<_Range>.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/ranges: Add comment for LWG4083.

Diff:
---
 libstdc++-v3/include/std/ranges | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 4f2082487d1d..9c7d639a1543 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -9093,6 +9093,9 @@ namespace views::__adaptor
 	constexpr auto
 	operator() [[nodiscard]] (_Range&& __r) const
 	{
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 4083. views::as_rvalue should reject non-input ranges
+	  // input_range<_Range> is implied by __detail::__can_as_rvalue_view<_Range>
 	  if constexpr (same_as<range_rvalue_reference_t<_Range>,
 				range_reference_t<_Range>>)
 	    return views::all(std::forward<_Range>(__r));

From tkaminsk@gcc.gnu.org  Fri Apr 24 10:40:50 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 10:40:50 +0000 (GMT)
Subject: [gcc r17-65] libstdc++: Constrain views::adjacent(_transform)?<0> to
 forward_ranges.
Message-ID: <20260424104050.C7CED4BB3BCC@sourceware.org>

https://gcc.gnu.org/g:8defa4b8b1ce23c68e681a42ba82c471c2a10bff

commit r17-65-g8defa4b8b1ce23c68e681a42ba82c471c2a10bff
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 11:58:39 2026 +0200

    libstdc++: Constrain views::adjacent(_transform)?<0> to forward_ranges.
    
    This resolves LWG 4098, "views::adjacent<0> should reject non-forward ranges"
    which was approved in Sofia 2024.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges                                | 10 ++++++++--
 libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc       |  7 +++++++
 .../testsuite/std/ranges/adaptors/adjacent_transform/1.cc      |  7 +++++++
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 9c7d639a1543..24416b659c10 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -5859,8 +5859,11 @@ namespace views::__adaptor
     template<size_t _Nm>
       struct _Adjacent : __adaptor::_RangeAdaptorClosure<_Adjacent<_Nm>>
       {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4098. views::adjacent<0> should reject non-forward ranges
 	template<viewable_range _Range>
-	  requires (_Nm == 0) || __detail::__can_adjacent_view<_Nm, _Range>
+	  requires ((_Nm == 0) && forward_range<_Range>)
+		   || __detail::__can_adjacent_view<_Nm, _Range>
 	  constexpr auto
 	  operator() [[nodiscard]] (_Range&& __r) const
 	  {
@@ -6197,8 +6200,11 @@ namespace views::__adaptor
     template<size_t _Nm>
       struct _AdjacentTransform : __adaptor::_RangeAdaptor<_AdjacentTransform<_Nm>>
       {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4098. views::adjacent<0> should reject non-forward ranges
 	template<viewable_range _Range, typename _Fp>
-	  requires (_Nm == 0) || __detail::__can_adjacent_transform_view<_Nm, _Range, _Fp>
+	  requires ((_Nm == 0) && forward_range<_Range>)
+		   || __detail::__can_adjacent_transform_view<_Nm, _Range, _Fp>
 	  constexpr auto
 	  operator() [[nodiscard]] (_Range&& __r, _Fp&& __f) const
 	  {
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc
index 0a5c67f56140..57322922e5e4 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc
@@ -9,6 +9,13 @@
 namespace ranges = std::ranges;
 namespace views = std::views;
 
+template<typename Range>
+concept can_adjacent0 = requires (Range& rg)
+{ views::adjacent<0>(rg); };
+
+static_assert( !can_adjacent0<__gnu_test::test_input_range<int>> );
+static_assert( can_adjacent0<__gnu_test::test_forward_range<int>> );
+
 constexpr bool
 test01()
 {
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc
index 6890618754b6..a75d02efbb8e 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc
@@ -9,6 +9,13 @@
 namespace ranges = std::ranges;
 namespace views = std::views;
 
+template<typename Range>
+concept can_adjacent0 = requires (Range& rg)
+{ views::adjacent_transform<0>(rg, []() { return 10; }); };
+
+static_assert( !can_adjacent0<__gnu_test::test_input_range<int>> );
+static_assert( can_adjacent0<__gnu_test::test_forward_range<int>> );
+
 constexpr bool
 test01()
 {

From tkaminsk@gcc.gnu.org  Fri Apr 24 12:11:06 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 12:11:06 +0000 (GMT)
Subject: [gcc r17-66] libstdc++: Reject using views::iota on iota_view.
Message-ID: <20260424121106.113B14BB58B0@sourceware.org>

https://gcc.gnu.org/g:9a00a26364360c8db8c06fffee86a4c722531f19

commit r17-66-g9a00a26364360c8db8c06fffee86a4c722531f19
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 13:02:22 2026 +0200

    libstdc++: Reject using views::iota on iota_view.
    
    Resolves LWG4096, views::iota(views::iota(0)) should be rejected.
    
    For __e of type _Tp that is specialization of iota_view, the CTAD based
    expression iota_view(__e) is well formed, and creates a copy of __e.
    As iota_view<decay_t<_Tp>> is ill-formed in this case (iota_view is not
    weakly_incrementable), using that type in return type explicitly, removes
    the overload from overload resolution in this case.
    
    The (now redudant) __detail::__can_iota_view constrain in template head is
    preserved, to provide error messages consistent with adaptors for other
    non-incrementable types.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges                     |  6 ++++--
 libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc | 11 +++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 24416b659c10..55d3c520ba4c 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -900,10 +900,12 @@ namespace views
 
   struct _Iota
   {
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 4096. views::iota(views::iota(0)) should be rejected
     template<__detail::__can_iota_view _Tp>
-      constexpr auto
+      constexpr iota_view<decay_t<_Tp>>
       operator() [[nodiscard]] (_Tp&& __e) const
-      { return iota_view(std::forward<_Tp>(__e)); }
+      { return iota_view<decay_t<_Tp>>(std::forward<_Tp>(__e)); }
 
     template<typename _Tp, typename _Up>
       requires __detail::__can_iota_view<_Tp, _Up>
diff --git a/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc b/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
index f3fddbd3531f..7b748cf9c3a9 100644
--- a/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
+++ b/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
@@ -22,6 +22,17 @@
 #include <vector>
 #include <testsuite_hooks.h>
 
+template<typename Inc>
+concept can_iota = requires (Inc&& __inc)
+{ std::views::iota(__inc); };
+
+static_assert( can_iota<int> );
+static_assert( can_iota<int*> );
+static_assert( !can_iota<std::ranges::iota_view<int>> );
+static_assert( !can_iota<const std::ranges::iota_view<int>> );
+static_assert( !can_iota<std::ranges::iota_view<int>&> );
+static_assert( !can_iota<const std::ranges::iota_view<int>&> );
+
 void
 test01()
 {

From tkaminsk@gcc.gnu.org  Fri Apr 24 14:59:47 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 14:59:47 +0000 (GMT)
Subject: [gcc r17-72] libsdc++: Restore check for validity of std::get for
 elements_view.
Message-ID: <20260424145947.107944BB58AB@sourceware.org>

https://gcc.gnu.org/g:490eca9b76ec201356d6defacaa8231a64a2102d

commit r17-72-g490eca9b76ec201356d6defacaa8231a64a2102d
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 15:10:41 2026 +0200

    libsdc++: Restore check for validity of std::get for elements_view.
    
    Resolves LWG3797, "elements_view insufficiently constrained".
    
    When P2165R4 updated __has_tuple_element in C++23 to reuse __tuple_like
    concept, it dropped the requirement of validity of get, assuming that for
    tuple_like type with size of N, get<I> on lvalue is well-formed for any I < N.
    This however does not hold for ranges::subrange (tuple-like of size 2) with
    move-only iterator, for which get can only be applied on rvalue. In consequence
    constrains allowed instantiating elements_view for range of such subrange,
    but instantiating it's iterator lead to hard error from iterator_category
    computation.
    
    This patch applies the requirements on validity of get also in C++23 and
    later standard modes.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/ranges                        |  9 ++++++++-
 libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc | 16 ++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 55d3c520ba4c..7d8b37f8c5cf 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -4355,8 +4355,15 @@ namespace views::__adaptor
   namespace __detail
   {
 #if __cpp_lib_tuple_like // >= C++23
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 3797. elements_view insufficiently constrained
     template<typename _Tp, size_t _Nm>
-    concept __has_tuple_element = __tuple_like<_Tp> && _Nm < tuple_size_v<_Tp>;
+    concept __has_tuple_element = __tuple_like<_Tp> && _Nm < tuple_size_v<_Tp>
+      && requires(_Tp __t)
+	 {
+	   { std::get<_Nm>(__t) }
+	     -> convertible_to<const tuple_element_t<_Nm, _Tp>&>;
+	 };
 #else
     template<typename _Tp, size_t _Nm>
     concept __has_tuple_element = requires(_Tp __t)
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
index 5237d787e7b2..d384cfd5adf3 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
@@ -27,6 +27,22 @@
 namespace ranges = std::ranges;
 namespace views = ranges::views;
 
+template<size_t N, typename Rg>
+concept can_elements = requires (Rg&& rg)
+{ views::elements<0>(rg); };
+
+static_assert( !can_elements<0, std::vector<int>> );
+static_assert( can_elements<0, std::tuple<int>[4]> );
+static_assert( can_elements<1, std::vector<std::pair<int, int>>> );
+
+// Test LWG 3797. elements_view insufficiently constrained
+using move_only_iter_range = __gnu_test::test_input_range_nocopy<int>;
+using move_only_iter_subrange = ranges::subrange<
+  ranges::iterator_t<move_only_iter_range>,
+  ranges::sentinel_t<move_only_iter_range>>;
+static_assert( can_elements<0, std::vector<ranges::subrange<int*>>> );
+static_assert( !can_elements<0, std::vector<move_only_iter_subrange>> );
+
 void
 test01()
 {

From tkaminsk@gcc.gnu.org  Fri Apr 24 15:46:18 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 24 Apr 2026 15:46:18 +0000 (GMT)
Subject: [gcc r17-74] libstdc++: Disallow duration of cv-qualified types and
 references.
Message-ID: <20260424154618.C94BC4BB3BC3@sourceware.org>

https://gcc.gnu.org/g:8efbea7eeef317c5d2699ef8ac638883577b19a2

commit r17-74-g8efbea7eeef317c5d2699ef8ac638883577b19a2
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 16:25:40 2026 +0200

    libstdc++: Disallow duration of cv-qualified types and references.
    
    This implements LWG 4481, "Disallow chrono::duration<const T, P>",
    which was approved in Croydon 2026.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/bits/chrono.h                           |  4 ++++
 libstdc++-v3/testsuite/20_util/duration/io.cc                | 12 ++++++------
 .../testsuite/20_util/duration/requirements/typedefs_neg4.cc | 11 +++++++++++
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index fd91505c16f4..d639cfaa4851 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -514,6 +514,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     template<typename _Rep, typename _Period>
       class duration
       {
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4481. Disallow chrono::duration<const T, P>
+	static_assert(is_same<_Rep, __remove_cvref_t<_Rep>>::value,
+		      "rep should be cv-unqualified object type");
 	static_assert(!__is_duration<_Rep>::value,
 		      "rep cannot be a std::chrono::duration");
 	static_assert(__is_ratio<_Period>::value,
diff --git a/libstdc++-v3/testsuite/20_util/duration/io.cc b/libstdc++-v3/testsuite/20_util/duration/io.cc
index 6ada4fcfa842..83ecd33c0387 100644
--- a/libstdc++-v3/testsuite/20_util/duration/io.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/io.cc
@@ -40,10 +40,10 @@ test01()
   VERIFY( ss.str() == "121s 122s 123s 124s 125s 126s 127s " );
 
   ss.str("");
-  ss << std::hex << std::uppercase << duration<const char>(0x1A) << ' ';
-  ss << std::hex << std::uppercase << duration<const wchar_t>(0x2A) << ' ';
+  ss << std::hex << std::uppercase << duration<char>(0x1A) << ' ';
+  ss << std::hex << std::uppercase << duration<wchar_t>(0x2A) << ' ';
   ss << std::hex << std::uppercase << duration<signed char>(0x3A) << ' ';
-  ss << std::scientific << duration<const double>(4.5) << ' ';
+  ss << std::scientific << duration<double>(4.5) << ' ';
   VERIFY( ss.str() == "1As 2As 3As 4.500000E+00s " );
 }
 
@@ -79,10 +79,10 @@ test02()
   VERIFY( ss.str() == L"121s 122s 123s 124s 125s 126s 127s " );
 
   ss.str(L"");
-  ss << std::hex << std::uppercase << duration<const char>(0x1A) << ' ';
-  ss << std::hex << std::uppercase << duration<const wchar_t>(0x2A) << ' ';
+  ss << std::hex << std::uppercase << duration<char>(0x1A) << ' ';
+  ss << std::hex << std::uppercase << duration<wchar_t>(0x2A) << ' ';
   ss << std::hex << std::uppercase << duration<signed char>(0x3A) << ' ';
-  ss << std::scientific << duration<const double>(4.5) << ' ';
+  ss << std::scientific << duration<double>(4.5) << ' ';
   VERIFY( ss.str() == L"1As 2As 3As 4.500000E+00s " );
 #endif
 }
diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg4.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg4.cc
new file mode 100644
index 000000000000..52a5d92cc8b0
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg4.cc
@@ -0,0 +1,11 @@
+// { dg-do compile { target c++11 } }
+
+#include <chrono>
+
+const int i = 10;
+// Check if rep is a cv-unqualifed object type
+std::chrono::duration<const int> d1(i); // { dg-error "required from here" }
+std::chrono::duration<volatile int> d2(i); // { dg-error "required from here" }
+std::chrono::duration<const int&> d3(i); // { dg-error "required from here" }
+
+// { dg-error "rep should be cv-unqualified object type" "" { target *-*-* } 0 }

From gccadmin@gcc.gnu.org  Sat Apr 25 00:17:03 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 25 Apr 2026 00:17:03 +0000 (GMT)
Subject: [gcc r17-79] Daily bump.
Message-ID: <20260425001703.AEDDA4BB589E@sourceware.org>

https://gcc.gnu.org/g:e1a64071e86c14ab73478dda5b17d8bfe77b3a88

commit r17-79-ge1a64071e86c14ab73478dda5b17d8bfe77b3a88
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Apr 25 00:16:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 140 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/testsuite/ChangeLog |  70 ++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  51 ++++++++++++++++++
 4 files changed, 262 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ba3d04506530..1b6af32cfb2c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,143 @@
+2026-04-24  Hans-Peter Nilsson  <hp@axis.com>
+
+	* doc/sourcebuild.texi (Effective-Target Keywords): Document 'sleep'.
+
+2026-04-24  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/80770
+	* config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2): Always extend
+	out to a word and use a subreg lowpart extraction to get the right bits.
+	(extend<SHORT:mode><SUPERQI:mode>2): Similarly.
+
+2026-04-24  Carter Rennick  <carter.rennick@gmail.com>
+
+	PR target/120144
+	* config/mips/mips.h (MAX_FIXED_MODE_SIZE): Remove.
+
+2026-04-24  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/123966
+	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary):
+	Don't mark a relaxed atomic load with no LHS as necessary.
+
+2026-04-24  Milan Tripkovic  <Milan.Tripkovic@rt-rk.com>
+
+	* config/riscv/riscv.cc (riscv_sched_adjust_cost):Enable
+	TARGET_ADJUST_LMUL_COST for spacemit_x60.
+	* config/riscv/spacemit-x60.md: Add vector pipeline model
+	for Spacemit-X60.
+	Co-authored-by: Dusan Stojkovic <Dusan.Stojkovic@rt-rk.com>
+	Co-authored-by: Nikola Ratkovac <Nikola.Ratkovac@rt-rk.com>
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_create_new_slp_node): Assert that 'code'
+	is either ERROR_MARK or VEC_PERM_EXPR.  Document properly.
+	* tree-vect-slp-patterns.cc (vect_build_swap_evenodd_node):
+	Use lane_permutation_t.
+	(vect_build_combine_node): Likewise.  Pass VEC_PERM_EXPR
+	as code.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_bb_slp_scalar_cost): Do not pass
+	vector type to costing.
+
+2026-04-24  Raphael Zinsly  <rzinsly@qti.qualcomm.com>
+
+	PR target/123839
+	* config/riscv/riscv-v.cc (shuffle_slide_patterns): Use a
+	vslideup+vslidedown pair rather than a vcompressed based
+	sequence.
+
+2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* config/rs6000/rs6000-c.cc (c_fold_convert): New function.
+	(c_fold_build2_loc): Likewise.
+	(fully_fold_convert): Use c_fold_convert instead of fold_convert.
+	(altivec_build_resolved_builtin): Likewise.  Use c_fold_build2_loc
+	instead of fold_build2.
+	(resolve_vec_mul, resolve_vec_adde_sube, resolve_vec_addec_subec):
+	Use c_fold_build2_loc instead of fold_build2_loc.
+	(resolve_vec_splats, resolve_vec_extract): Use c_fold_convert instead
+	of fold_convert.
+	(resolve_vec_insert): Use c_fold_build2_loc instead of fold_build2.
+	(altivec_resolve_overloaded_builtin): Use c_fold_convert instead
+	of fold_convert.
+
+2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	PR tree-optimization/124988
+	* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
+	Handle bitint_extend.
+	(bitint_large_huge::lower_addsub_overflow): Fix up comment spelling.
+	For bitint_extended extend the partial limb if any.
+
+2026-04-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125009
+	* config/i386/i386-features.cc (ix86_place_single_vector_set):
+	Support CONST_VECTOR load no larger than integer register.
+	(ix86_broadcast_inner): Use inner mode as the scalar mode for
+	CONST_VECTOR load source.
+	(pass_x86_cse::x86_cse): Generate CONST_VECTOR broadcast source
+	for CONST_VECTOR load no larger than integer register.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124843
+	* tree-vect-patterns.cc (vect_recog_bool_pattern): Recognize
+	BIT_NOT_EXPR of scalar bools and rewrite with BIT_XOR_EXPR.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-data-refs.cc (vect_duplicate_ssa_name_ptr_info):
+	Create points-to info from decl-based accesses.
+	(vect_create_addr_base_for_vector_ref): Adjust.
+	(vect_create_data_ref_ptr): Likewise.
+	(bump_vector_ptr): Likewise.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (_stmt_vec_info::slp_vect_pattern_only_p):
+	Remove.
+	(STMT_VINFO_SLP_VECT_ONLY_PATTERN): Likewise.
+	* tree-vectorizer.cc (vec_info::new_stmt_vec_info): Do not
+	initialize STMT_VINFO_SLP_VECT_ONLY_PATTERN.
+	* tree-vect-loop.cc (vect_analyze_loop_2): Nothing to do
+	for SLP pattern stmts that are not reachable from scalar
+	stmts anyway.  Remove dead code.
+	* tree-vect-slp-patterns.cc (complex_pattern::build): Do not
+	set STMT_VINFO_SLP_VECT_ONLY_PATTERN.
+	(addsub_pattern::build): Likewise.
+	* tree-vect-slp.cc (vect_free_slp_tree): Remove dead code.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp-patterns.cc (complex_pattern::build):
+	Add pattern for the original stmt, do not set
+	STMT_VINFO_REDUC_DEF.
+	(addsub_pattern::build): Likewise.
+
+2026-04-24  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/122996
+	* match.pd (x != CST1 ? x + CST2 : 0 -> x + CST2): New pattern.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124947
+	* tree-ssa-loop-ivopts.cc (may_eliminate_iv): Do not use
+	a candidate that involves undefs.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124946
+	* tree-vect-loop.cc (vect_emulate_mixed_dot_prod): Perform the
+	constant biasing in an unsigned type.
+
 2026-04-23  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
 
 	* config/riscv/pipeline-checker: Filter tuneless insn types.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 2aec246349a3..0964571cd054 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260424
+20260425
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 97ba608c0f86..23e9a3d14350 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,73 @@
+2026-04-24  Hans-Peter Nilsson  <hp@axis.com>
+
+	* lib/target-supports.exp (check_effective_target_sleep): New.
+
+2026-04-24  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/80770
+	* gcc.target/riscv/rvv/base/vwaddsub-1.c: Adjust expected output.
+
+2026-04-24  Carter Rennick  <carter.rennick@gmail.com>
+
+	PR target/120144
+	* gcc.dg/torture/pr120144.c: New test.
+
+2026-04-24  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/123966
+	* gcc.dg/tree-ssa/pr123966.c: New test.
+
+2026-04-24  Raphael Zinsly  <rzinsly@qti.qualcomm.com>
+
+	PR target/123839
+	* gcc.target/riscv/rvv/autovec/binop/vcompress-avlprop-1.c: Adjust
+	expected output.
+	* gcc.target/riscv/rvv/autovec/pr123839.c: New test.
+
+2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* g++.target/powerpc/pr124133-1.C: New test.
+	* g++.target/powerpc/pr124133-2.C: New test.
+
+2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	PR tree-optimization/124988
+	* gcc.dg/torture/bitint-91.c: New test.
+	* gcc.dg/torture/bitint-92.c: New test.
+	* gcc.dg/torture/bitint-93.c: New test.
+	* gcc.dg/torture/bitint-94.c: New test.
+	* gcc.dg/torture/bitint-95.c: New test.
+
+2026-04-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125009
+	* g++.target/i386/pr125009.C: New test.
+	* gcc.target/i386/pr125009.c: Likewise.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124843
+	* gcc.dg/vect/vect-bool-4.c: New testcase.
+
+2026-04-24  feedable  <feedabl3@gmail.com>
+	    Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR testsuite/125003
+	* gcc.c-torture/execute/ieee/ieee.exp: Rewrite the default flags
+	and set DEFAULT_IEEE_CFLAGS if not already set.
+
+2026-04-24  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/122996
+	* gcc.dg/tree-ssa/pr122996.c: New test.
+
+2026-04-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124947
+	* gcc.dg/pr124947.c: New testcase.
+
 2026-04-23  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/124981
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c08fc4dc5a8c..759e8280bdd4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,54 @@
+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

From jakub@gcc.gnu.org  Mon Apr 27 11:32:16 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Mon, 27 Apr 2026 11:32:16 +0000 (GMT)
Subject: [gcc r17-101] libstdc++: Fix up std::is_scalar for std::meta::info
 [PR125024]
Message-ID: <20260427113216.3393A4BA903A@sourceware.org>

https://gcc.gnu.org/g:7f4cc8140e3eae85e77c755fc14991456649af7e

commit r17-101-g7f4cc8140e3eae85e77c755fc14991456649af7e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Apr 27 13:30:58 2026 +0200

    libstdc++: Fix up std::is_scalar for std::meta::info [PR125024]
    
    https://eel.is/c++draft/basic.types.general#9.sentence-1 says that
    std::meta::info and its cv-qualified versions are scalar types too
    (and in https://eel.is/c++draft/basic.fundamental#19.sentence-1
    that they are fundamental types too).
    Now, on the reflection side, eval_is_scalar_type is handled
    in the compiler and uses SCALAR_TYPE_P (type) which includes
    REFLECTION_TYPE_P check and eval_is_fundamental_type includes that
    explicitly too.
    std::is_fundamental uses
       template<typename _Tp>
         struct is_fundamental
         : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,
                        is_null_pointer<_Tp>
     #if __cpp_impl_reflection >= 202506L
                        , is_reflection<_Tp>
     #endif
                        >::type
         { };
    but for std::is_scalar we apparently forgot to include is_reflection.
    
    The following patch fixes that.
    
    2026-04-26  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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/type_traits                   |  6 +++++-
 libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc | 13 +++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..1c03c22e8eed 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -871,7 +871,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp>
     struct is_scalar
     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
-                   is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
+                   is_member_pointer<_Tp>, is_null_pointer<_Tp>
+#if __cpp_impl_reflection >= 202506L
+		   , is_reflection<_Tp>
+#endif
+		   >::type
     { };
 
   /// is_compound
diff --git a/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc b/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc
new file mode 100644
index 000000000000..d5ea9a4a5200
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <type_traits>
+#include <testsuite_tr1.h>
+
+void test01()
+{
+  using std::is_scalar;
+  using namespace __gnu_test;
+
+  static_assert(test_category<is_scalar, decltype (^^::)>(true), "");
+}

From gccadmin@gcc.gnu.org  Tue Apr 28 00:17:01 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 28 Apr 2026 00:17:01 +0000 (GMT)
Subject: [gcc r17-120] Daily bump.
Message-ID: <20260428001701.9D55C4B9DB77@sourceware.org>

https://gcc.gnu.org/g:e487b4ae3013b93d01406aaa6fbf9287bd704c3c

commit r17-120-ge487b4ae3013b93d01406aaa6fbf9287bd704c3c
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Apr 28 00:16:32 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 113 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  24 ++++++++++
 gcc/po/ChangeLog        |   4 ++
 gcc/testsuite/ChangeLog | 111 +++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |   8 ++++
 6 files changed, 261 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 24ab5dfde619..12bb46f01091 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,116 @@
+2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/57650
+	* config/riscv/zicond.md: Generalize patterns which identify
+	a logical AND of an equality test and some other sCC insn to
+	handle more cases.
+
+2026-04-27  Soumya AR  <soumyaa@nvidia.com>
+
+	* config/aarch64/aarch64-narrow-gp-writes.cc
+	(narrow_gp_writes::narrow_gp_writes): Remove redundant m_curr_insn
+	initialization.
+	(narrow_gp_writes::~narrow_gp_writes): Remove redundant m_curr_insn
+	de-initialization.
+
+2026-04-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* ext-dce.cc (promotion_candidate_info): New struct.
+	(copy_info): New struct.
+	(promotion_candidates, promotable_dests): New file-scope variables.
+	(consumed_by_candidate, promotion_copies): Likewise.
+	(ext_dce_try_promote_operation): New function to promote
+	sign/zero-extended arithmetic to wider mode.
+	(ext_dce_record_promotion_candidate): New function to record
+	promotion candidates for deferred chain analysis.
+	(ext_dce_promote_chained_candidates): New function to promote
+	only chained candidates.
+	(ext_dce_process_uses): Record candidates instead of promoting
+	immediately; propagate chain info through optimized copies.
+	(ext_dce_process_bb): Call ext_dce_promote_chained_candidates
+	after processing all insns in a block.
+	(ext_dce_init): Allocate chain detection bitmaps.
+	(ext_dce_finish): Free chain detection data structures.
+
+2026-04-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* ext-dce.cc (ext_dce_try_optimize_extension): Only remove
+	REG_EQUAL/EQUIV notes when validate_change succeeds.
+
+2026-04-27  Soumya AR  <soumyaa@nvidia.com>
+
+	* config/aarch64/tuning_models/generic.h: Update br_mispredict_factor
+	to 7.
+
+2026-04-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* match.pd: Relax single_use for eq/ne when folded constant
+	is zero.
+
+2026-04-27  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* lra-lives.cc (clear_sparseset_regnos, regnos_in_sparseset_p):
+	Use set instead of dead_set.
+
+2026-04-27  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-costs.cc (record_reg_classes): When calculating alt_cost use
+	the right cost of memory-reg move.
+	* ira-emit.cc (emit_move_list): Use load cost instead of store for
+	moving memory to reg.
+
+2026-04-27  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-build.cc (add_to_conflicts): Use sizeof(ira_object_p)
+	instead of sizeof(ira_allocno_t) for allocations.
+	* ira-color.cc (print_hard_reg_set): Fix printing hard reg set.
+	* ira-emit.cc (allocno_last_set, allocno_last_set_check): Remove
+	unused static variables.
+	* ira.cc (combine_and_move_insns): Fix dead note recognition.
+	(ira_remove_insn_scratches): Use dump_file instead of
+	ira_dump_file.
+	* lra-constraints.cc (match_reload): Remove always true condition.
+	(undo_optional_reloads): Fix recognition of clobber for assertion.
+
+2026-04-27  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/124886
+	* match.pd ((X * C1) + (X << C2) -> X * (C1 + (1 << C2))): New pattern.
+
+2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/121268
+	* config/riscv/bitmanip.md: Add splitters to exploit identities
+	that relate subtraction and bitwise negation on 2's complement
+	arithmetic.
+
+2026-04-27  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* doc/sourcebuild.texi (Scan object metadata with readelf): Document
+	object-readelf-attributes, object-readelf-attributes-not,
+	object-readelf-notes, and object-readelf-notes-not as regex-based
+	checks with optional target/xfail selectors.
+
+2026-04-27  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/93556
+	* gimple-fold.cc (gimple_fold_builtin_mempcpy): New function.
+	(gimple_fold_builtin): Handle BUILT_IN_MEMPCPY.
+
+2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125025
+	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Avoid
+	negation of most negative signed integer.
+	(number_of_iterations_lt): Likewise.
+
+2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125019
+	* tree-vect-loop.cc (vectorizable_recurr): Properly guard
+	against hitting last stmt when searching for the insertion
+	place.
+
 2026-04-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/110262
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 17970483ad04..bf2612c1d525 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260427
+20260428
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5571e1fd5834..c51be716a94f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,27 @@
+2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124978
+	PR c++/115314
+	* semantics.cc (finish_decltype_type): Check REFERENCE_REF_P
+	instead of INDIRECT_REF_P before stripping implicit dereferences.
+
+2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124953
+	* module.cc (trees_in::tree_node) <tt_nttp_var>: Push the result
+	of get_template_parm_object to post_load_decls.
+	(post_load_processing): Call cp_finish_decl on any not yet
+	completed NTTP objects.
+	* pt.cc (get_template_parm_object): Don't call cp_finish_decl
+	when !check_init.
+
+2026-04-27  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124910
+	DR 2658
+	* constexpr.cc (reduced_constant_expression_p): Allow a union
+	with no active member.
+
 2026-04-23  Patrick Palka  <ppalka@redhat.com>
 
 	* module.cc (trees_out::core_vals) <case PTRMEM_CST>:
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 3bf7edf3f5a9..0e1a8e6c7552 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-27  Joseph Myers  <josmyers@redhat.com>
+
+	* sv.po: Update.
+
 2026-04-22  Joseph Myers  <josmyers@redhat.com>
 
 	* gcc.pot: Regenerate.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 739319d37095..2cd01582a9c8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,114 @@
+2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/57650
+	* gcc.target/riscv/pr57650.c: New test.
+
+2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124978
+	PR c++/115314
+	* g++.dg/cpp2a/nontype-class74.C: New test.
+
+2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124953
+	* g++.dg/modules/tpl-nttp-3_a.H: New test.
+	* g++.dg/modules/tpl-nttp-3_b.C: New test.
+
+2026-04-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* gcc.target/riscv/ext-dce-promote-2.c: Update to verify both
+	chain promotions (sh1add, sh3add) and standalone skipping.
+	* gcc.target/riscv/ext-dce-promote-1.c: New file.
+
+2026-04-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* gcc.dg/tree-ssa/forwprop-pre-incr-cmp.c: New test.
+
+2026-04-27  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124910
+	DR 2658
+	* g++.dg/cpp2a/constexpr-union12.C: New test.
+
+2026-04-27  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/124886
+	* gcc.dg/tree-ssa/pr124886.c: New test.
+
+2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/121268
+	* gcc.target/riscv/pr121268.c: New test.
+
+2026-04-27  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	PR target/124365
+	* gcc.target/aarch64/lto/lto.exp: New DejaGnu test driver for LTO tests
+	for aarch64. Copied from gcc/testsuite/gcc.target/arm/lto/lto.exp with
+	minor changes.
+	* gcc.target/aarch64/lto/pr124365-build-attributes-1_0.c: New test
+	for build attributes with branch protection.
+	* gcc.target/aarch64/lto/pr124365-build-attributes-1_1.c: Companion
+	source file for the LTO test.
+	* gcc.target/aarch64/lto/pr124365-build-attributes-2_0.c: New test
+	for build attributes without branch protection.
+	* gcc.target/aarch64/lto/pr124365-build-attributes-2_1.c: Companion
+	source file for the LTO test with branch protection enabled.
+	* gcc.target/aarch64/lto/pr124365-gnu-property-1_0.c: New test for
+	`.note.gnu.property` with branch protection.
+	* gcc.target/aarch64/lto/pr124365-gnu-property-1_1.c: Companion
+	source file for the LTO test.
+	* gcc.target/aarch64/lto/pr124365-gnu-property-2_0.c: New test for
+	`.note.gnu.property` without branch protection.
+	* gcc.target/aarch64/lto/pr124365-gnu-property-2_1.c: Companion
+	source file for the LTO test with branch protection enabled.
+
+2026-04-27  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* lib/lto.exp (object-readelf): Accept a readelf option and a single
+	regex; match against full readelf output. Keep positive/negative
+	behaviour via wrappers.
+	(object-readelf-attributes, object-readelf-attributes-not,
+	object-readelf-notes, object-readelf-notes-not): Implement as wrappers
+	over the generic matcher.
+	* gcc.dg-selftests/dg-final.exp (dg_final_directive_check_num_args):
+	Update for object-readelf-* wrappers to regex-style arguments (1..3).
+	* gcc.target/arm/lto/pr61123-enum-size_0.c: Update to use
+	object-readelf-attributes with a single regex.
+
+2026-04-27  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/93556
+	* gcc.dg/pr79223.c: Rename to gcc.dg/pr79223-1.c and update scans.
+	* gcc.dg/tree-prof/val-prof-7.c: Rename to
+	gcc.dg/tree-prof/val-prof-7-1.c and update scans.
+	* gcc.dg/tree-ssa/builtins-folding-gimple-3.c: Update scans.
+	* gcc.dg/builtin-mempcpy-1.c: New test.
+	* gcc.dg/builtin-mempcpy-2.c: New test.
+	* gcc.dg/pr79223-2.c: New test.
+	* gcc.dg/tree-prof/val-prof-7-2.c: New test.
+	* gcc.dg/tree-ssa/builtins-folding-gimple-4.c: New test.
+	* gcc.dg/pr79223-1.c: New file.
+	* gcc.dg/tree-prof/val-prof-7-1.c: New file.
+
+2026-04-27  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124988
+	* gcc.dg/torture/bitint-95.c: Add bitint effective targets and
+	guard parts of test which need _BitInt(192) support with
+	__BITINT_MAXWIDTH__ >= 192.
+
+2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125025
+	* gcc.dg/torture/pr125025.c: New testcase.
+
+2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125019
+	* gcc.dg/pr125019.c: New testcase.
+
 2026-04-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/110262
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 759e8280bdd4..c8ffba1bed54 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+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

From meissner@gcc.gnu.org  Tue Apr 28 01:45:20 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Tue, 28 Apr 2026 01:45:20 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work244)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260428014520.DD7EE4BA79B9@sourceware.org>

https://gcc.gnu.org/g:550214021f7b0327e1ff3eb2e21d76f6331f69ed

commit 550214021f7b0327e1ff3eb2e21d76f6331f69ed
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Apr 27 21:44:44 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..ab27329ae3a6
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work244 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From tkaminsk@gcc.gnu.org  Tue Apr 28 12:39:22 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 28 Apr 2026 12:39:22 +0000 (GMT)
Subject: [gcc r17-145] libstdc++: Expand tests for std::type_order.
Message-ID: <20260428123922.9A4E24BA9001@sourceware.org>

https://gcc.gnu.org/g:47480a30d08fef394b3e12f36b9fa1f77a7add74

commit r17-145-g47480a30d08fef394b3e12f36b9fa1f77a7add74
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 22 12:30:19 2026 +0200

    libstdc++: Expand tests for std::type_order.
    
    Expanded test coverage to include:
    * array of unknown bounds
    * function types and pointers
    * data and function member pointers
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/18_support/comparisons/type_order/1.cc: Add tests
            for more type.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/cpp26/type-order1.C: Add tests for more type.
    
    Reviewed-by: Jakub Jelinek <jakub@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 gcc/testsuite/g++.dg/cpp26/type-order1.C            | 21 +++++++++++++++++++++
 .../18_support/comparisons/type_order/1.cc          | 21 +++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/gcc/testsuite/g++.dg/cpp26/type-order1.C b/gcc/testsuite/g++.dg/cpp26/type-order1.C
index d5693570a47d..bc7e87644a9a 100644
--- a/gcc/testsuite/g++.dg/cpp26/type-order1.C
+++ b/gcc/testsuite/g++.dg/cpp26/type-order1.C
@@ -92,3 +92,24 @@ constexpr eq <W, W> r;
 constexpr ne <V, W> s;
 constexpr eq <U <W>, U <W>> t;
 constexpr ne <U <V>, U <W>> u;
+
+constexpr eq <int[], int[]> v;
+constexpr ne <int[], int[2]> w;
+constexpr eq <S[], S[]> x;
+constexpr ne <S[], S[2]> y;
+
+constexpr eq <int (), int ()> z;
+constexpr eq <int () noexcept, int () noexcept> aa;
+constexpr ne <int (), int () noexcept> ab;
+constexpr eq <int () const, int () const> ac;
+constexpr ne <int (), int () const> ad;
+constexpr eq <int () &, int () &> ae;
+constexpr ne <int (), int () &> af;
+constexpr eq <int (*)() noexcept, int (*)() noexcept> ag;
+constexpr ne <int (), int (*)()> ah;
+
+constexpr eq <int V::*, int V::*> ba;
+constexpr ne <int V::*, long V::*> bb;
+constexpr eq <int (V::*)() const& noexcept, int (V::*)() const& noexcept> bc;
+constexpr ne <int (V::*)(), long (V::*)()> bd;
+constexpr ne <int (V::*)(), int (*)()> be;
diff --git a/libstdc++-v3/testsuite/18_support/comparisons/type_order/1.cc b/libstdc++-v3/testsuite/18_support/comparisons/type_order/1.cc
index 63864fa98b45..7c428a93f967 100644
--- a/libstdc++-v3/testsuite/18_support/comparisons/type_order/1.cc
+++ b/libstdc++-v3/testsuite/18_support/comparisons/type_order/1.cc
@@ -93,3 +93,24 @@ constexpr eq <W, W> r;
 constexpr ne <V, W> s;
 constexpr eq <U <W>, U <W>> t;
 constexpr ne <U <V>, U <W>> u;
+
+constexpr eq <int[], int[]> v;
+constexpr ne <int[], int[2]> w;
+constexpr eq <S[], S[]> x;
+constexpr ne <S[], S[2]> y;
+
+constexpr eq <int (), int ()> z;
+constexpr eq <int () noexcept, int () noexcept> aa;
+constexpr ne <int (), int () noexcept> ab;
+constexpr eq <int () const, int () const> ac;
+constexpr ne <int (), int () const> ad;
+constexpr eq <int () &, int () &> ae;
+constexpr ne <int (), int () &> af;
+constexpr eq <int (*)() noexcept, int (*)() noexcept> ag;
+constexpr ne <int (), int (*)()> ah;
+
+constexpr eq <int V::*, int V::*> ba;
+constexpr ne <int V::*, long V::*> bb;
+constexpr eq <int (V::*)() const& noexcept, int (V::*)() const& noexcept> bc;
+constexpr ne <int (V::*)(), long (V::*)()> bd;
+constexpr ne <int (V::*)(), int (*)()> be;

From tkaminsk@gcc.gnu.org  Tue Apr 28 15:14:30 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 28 Apr 2026 15:14:30 +0000 (GMT)
Subject: [gcc r17-146] libstdc++: Make pointer_traits::pointer_to constexpr
 for main template.
Message-ID: <20260428151430.ACBE84BA2E15@sourceware.org>

https://gcc.gnu.org/g:94b37910f620ecafe6526bfd37722a86517c3f0d

commit r17-146-g94b37910f620ecafe6526bfd37722a86517c3f0d
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Apr 28 16:01:47 2026 +0200

    libstdc++: Make pointer_traits::pointer_to constexpr for main template.
    
    This resolves LWG3454, "pointer_traits::pointer_to should be constexpr",
    accepted in Kona 2025.
    
    The change is applied since C++20, i.e. standard in which pointer_to
    was made constexpr for T* specialization.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/bits/ptr_traits.h                     |  4 +++-
 .../20_util/pointer_traits/pointer_to_constexpr.cc         | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h
index df83e0cad1d4..c1dc76509cee 100644
--- a/libstdc++-v3/include/bits/ptr_traits.h
+++ b/libstdc++-v3/include/bits/ptr_traits.h
@@ -97,13 +97,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       using pointer = _Ptr;
       using element_type = _Elt;
 
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 3454. pointer_traits::pointer_to should be constexpr
       /**
        *  @brief  Obtain a pointer to an object
        *  @param  __r  A reference to an object of type `element_type`
        *  @return `pointer::pointer_to(__r)`
        *  @pre `pointer::pointer_to(__r)` is a valid expression.
       */
-      static pointer
+      static _GLIBCXX20_CONSTEXPR pointer
       pointer_to(element_type& __r)
 #if __cpp_lib_concepts
       requires requires {
diff --git a/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc b/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
index cfd35f899c41..929d004fd4a1 100644
--- a/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
@@ -24,3 +24,17 @@ static_assert( std::pointer_traits<int*>::pointer_to(i) == &i );
 
 struct X { } x;
 static_assert( std::pointer_traits<X*>::pointer_to(x) == &x );
+
+template<typename T>
+struct Ptr
+{
+  T* value;
+
+  constexpr static Ptr
+  pointer_to(T& t) { return Ptr{&t}; }
+
+  friend bool operator==(Ptr, Ptr) = default;
+};
+
+static_assert( std::pointer_traits<Ptr<int>>::pointer_to(i) == Ptr<int>{&i} );
+static_assert( std::pointer_traits<Ptr<X>>::pointer_to(x) == Ptr<X>{&x} );

From redi@gcc.gnu.org  Tue Apr 28 17:37:28 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 28 Apr 2026 17:37:28 +0000 (GMT)
Subject: [gcc r17-154] libstdc++: Update documentation about default -std
 option
Message-ID: <20260428173728.A6BC44BBC087@sourceware.org>

https://gcc.gnu.org/g:eda0f2f0ccc76dfcce0a4d8350611039b0762e05

commit r17-154-geda0f2f0ccc76dfcce0a4d8350611039b0762e05
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 17:44:35 2026 +0100

    libstdc++: Update documentation about default -std option
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/using.xml (Flags): Update description of
            default value for -std option.
            * doc/html/manual/using.html: Regenerate.

Diff:
---
 libstdc++-v3/doc/html/manual/using.html | 5 +++--
 libstdc++-v3/doc/xml/manual/using.xml   | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html
index 27f503ecaccc..32a1c726cb1e 100644
--- a/libstdc++-v3/doc/html/manual/using.html
+++ b/libstdc++-v3/doc/html/manual/using.html
@@ -11,8 +11,9 @@
       The standard library conforms to the dialect of C++ specified by the
       <code class="option">-std</code> option passed to the compiler.
       By default, <span class="command"><strong>g++</strong></span> is equivalent to
-      <span class="command"><strong>g++ -std=gnu++17</strong></span> since GCC 11, and
-      <span class="command"><strong>g++ -std=gnu++14</strong></span> in GCC 6, 7, 8, 9, and 10, and
+      <span class="command"><strong>g++ -std=gnu++20</strong></span> since GCC 16, and
+      <span class="command"><strong>g++ -std=gnu++17</strong></span> in GCC 11-15, and
+      <span class="command"><strong>g++ -std=gnu++14</strong></span> in GCC 6-10, and
       <span class="command"><strong>g++ -std=gnu++98</strong></span> for older releases.
     </p><div class="table"><a id="table.cmd_options"></a><p class="title"><strong>Table?3.1.?C++ Command Options</strong></p><div class="table-contents"><table class="table" summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std</code>
       </td><td align="left">
diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
index 682669d91d4b..e2e75e8fe28c 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -16,8 +16,9 @@
       The standard library conforms to the dialect of C++ specified by the
       <option>-std</option> option passed to the compiler.
       By default, <command>g++</command> is equivalent to
-      <command>g++ -std=gnu++17</command> since GCC 11, and
-      <command>g++ -std=gnu++14</command> in GCC 6, 7, 8, 9, and 10, and
+      <command>g++ -std=gnu++20</command> since GCC 16, and
+      <command>g++ -std=gnu++17</command> in GCC 11-15, and
+      <command>g++ -std=gnu++14</command> in GCC 6-10, and
       <command>g++ -std=gnu++98</command> for older releases.
     </para>

From redi@gcc.gnu.org  Tue Apr 28 17:37:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 28 Apr 2026 17:37:33 +0000 (GMT)
Subject: [gcc r17-155] libstdc++: Update C++23 status table
Message-ID: <20260428173733.CA3224BBC08F@sourceware.org>

https://gcc.gnu.org/g:3c901b72dc7e54f0bbc0d5c2a3cf9fccb89a6667

commit r17-155-g3c901b72dc7e54f0bbc0d5c2a3cf9fccb89a6667
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 18:09:15 2026 +0100

    libstdc++: Update C++23 status table
    
    This hasn't been updated to reflect the new features in GCC 16 (and one
    that was backported to gcc-15 for GCC 15.3 but not released yet).
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/status_cxx2023.xml: Update status table.
            * doc/html/manual/status.html: Regenerate.

Diff:
---
 libstdc++-v3/doc/html/manual/status.html       | 54 +++++++++++++-------------
 libstdc++-v3/doc/xml/manual/status_cxx2023.xml | 54 ++++++++++----------------
 2 files changed, 49 insertions(+), 59 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 64a484082689..e8a5de4a9f43 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1976,11 +1976,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2432r1.pdf" target="_top">
         P2432R1
         </a>
-      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">starts_with</code> and <code class="code">ends_with</code> </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">starts_with</code> and <code class="code">ends_with</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html" target="_top">
         P1659R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code">zip</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code">zip</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2321r2.html" target="_top">
         P2321R2
         </a>
@@ -2037,11 +2037,11 @@ or any notes about the implementation.
       </td><td align="left">
 	<code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>
-      </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
+      </td></tr><tr><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
         P2408R5
         </a>
-      </td><td align="center"> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">
 	<code class="code">__cpp_lib_algorithm_iterator_requirements &gt;= 202207L</code>
       </td></tr><tr><td align="left"> Pipe support for user-defined range adaptors </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2387r3.html" target="_top">
@@ -2050,14 +2050,16 @@ or any notes about the implementation.
       </td><td align="center"> 13.1 </td><td align="left">
 	<code class="code">__cpp_lib_bind_pack &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_ranges &gt;= 202202L</code>
-      </td></tr><tr bgcolor="#B0B0B0"><td align="left">
+      </td></tr><tr><td align="left">
 	<code class="code">ranges::iota</code>, <code class="code">ranges::shift_left</code>,
         and <code class="code">ranges::shift_right</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html" target="_top">
         P2440R1
         </a>
-      </td><td align="center"> 13.1 (<code class="code">ranges::iota</code>) </td><td align="left">
+      </td><td align="center">
+	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 13.1 (<code class="code">ranges::iota</code>) </td></tr><tr><td> 16.1 (shift algos) </td></tr></tbody></table></div>
+      </td><td align="left">
 	<code class="code">__cpp_lib_ranges_iota &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_shift &gt;= 202202L</code>
       </td></tr><tr><td align="left"> <code class="code">ranges::find_last</code> </td><td align="left">
@@ -2068,11 +2070,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2302r4.html" target="_top">
         P2302R4
         </a>
-      </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_contains &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making multi-param constructors of views explicit </td><td align="left">
+      </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_contains &gt;= 202207L</code> </td></tr><tr><td align="left"> Making multi-param constructors of views explicit </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html" target="_top">
         P2711R1
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">ranges::fold</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">ranges::fold</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
         P2322R6
         </a>
@@ -2120,25 +2122,25 @@ or any notes about the implementation.
         </a>
       </td><td align="center">
 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 13.1 (missing changes to <code class="code">std::tuple</code>) </td></tr><tr><td> 14.1 (complete) </td></tr></tbody></table></div>
-      </td><td align="left"> <code class="code">__cpp_lib_reference_from_temporary &gt;= 202202L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="left"> <code class="code">__cpp_lib_reference_from_temporary &gt;= 202202L</code> </td></tr><tr><td align="left">
         Move-only types for equality_comparable_with, totally_ordered_with,
 	and three_way_comparable_with
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2404r3.pdf" target="_top">
         P2404R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_concepts &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> A trait for implicit lifetime types </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_concepts &gt;= 202207L</code> </td></tr><tr><td align="left"> A trait for implicit lifetime types </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf" target="_top">
         P2674R1
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr><td align="left">
 	<code class="code">common_reference_t</code> of <code class="code">reference_wrapper</code>
 	Should Be a Reference Type
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2655r3.html" target="_top">
         P2655R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
+      </td><td align="center"> 15.3 </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2614r2.pdf" target="_top">
         P2614R2
         </a>
@@ -2152,11 +2154,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1518r2.html" target="_top">
         P1518R2
         </a>
-      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous erasure overloads for associative containers </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr><td align="left"> Heterogeneous erasure overloads for associative containers </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
         P2077R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
         P0429R9
         </a>
@@ -2164,35 +2166,35 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
         P1222R4
         </a>
-      </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
+      </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">mdspan</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
         P0009R18
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">index_type</code> &amp; <code class="code">size_type</code>
 	in <code class="code">mdspan</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf" target="_top">
         P2599R2
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">mdspan</code>: rename <code class="code">pointer</code> and
 	<code class="code">contiguous</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2604r0.html" target="_top">
         P2604R0
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add the missing <code class="code">empty</code> to <code class="code">mdspan</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left"> Add the missing <code class="code">empty</code> to <code class="code">mdspan</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html" target="_top">
         P2613R1
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">layout_stride</code> static extents default constructor fix
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2763r1.html" target="_top">
         P2763R1
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td colspan="4" align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td colspan="4" align="left">
         <span class="bold"><strong>Strings and text</strong></span>
       </td></tr><tr><td align="left"> string contains function </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1679r3.html" target="_top">
@@ -2210,7 +2212,7 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0448r4.pdf" target="_top">
         P0448R4
         </a>
-      </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_spanstream &gt;= 202106L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code"> std::string::substr() &amp;&amp; </code> </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_spanstream &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code"> std::string::substr() &amp;&amp; </code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html" target="_top">
         P2438R2
         </a>
@@ -2368,28 +2370,28 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1642r11.html" target="_top">
         P1642R11
         </a>
-      </td><td align="center"> 13.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Providing size feedback in the Allocator interface </td><td align="left">
+      </td><td align="center"> 13.1 </td><td align="left">?</td></tr><tr><td align="left"> Providing size feedback in the Allocator interface </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html" target="_top">
         P0401R6
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_allocate_at_least &gt;= 202306L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_allocate_at_least &gt;= 202306L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
 	Disallow User Specialization of <code class="code">allocator_traits</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2652r2.html" target="_top">
         P2652R2
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Explicit lifetime management </td><td align="left">
+      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> Explicit lifetime management </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf" target="_top">
         P2590R2
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_start_lifetime_as &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_start_lifetime_as &gt;= 202207L</code> </td></tr><tr><td align="left">
 	Fixing <code class="code">std::start_lifetime_as</code> and
 	<code class="code">std::start_lifetime_as_array</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2679r2.pdf" target="_top">
         P2679R2
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> out_ptr - a scalable output pointer abstraction </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td align="left"> out_ptr - a scalable output pointer abstraction </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1132r8.html" target="_top">
         P1132R8
         </a>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index af40eabbd8c9..b5b75aee7623 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -175,14 +175,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code>starts_with</code> and <code>ends_with</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html">
         P1659R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </entry>
     </row>
 
@@ -331,14 +330,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Ranges iterators as inputs to non-Ranges algorithms </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html">
         P2408R5
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry>
 	<code>__cpp_lib_algorithm_iterator_requirements &gt;= 202207L</code>
       </entry>
@@ -359,7 +357,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#B0B0B0" ?>
       <entry>
 	<code>ranges::iota</code>, <code>ranges::shift_left</code>,
         and <code>ranges::shift_right</code>
@@ -369,7 +366,12 @@ or any notes about the implementation.
         P2440R1
         </link>
       </entry>
-      <entry align="center"> 13.1 (<code>ranges::iota</code>) </entry>
+      <entry align="center">
+	<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
+        <row><entry> 13.1 (<code>ranges::iota</code>) </entry></row>
+        <row><entry> 16.1 (shift algos) </entry></row>
+        </tbody></tgroup></informaltable>
+      </entry>
       <entry>
 	<code>__cpp_lib_ranges_iota &gt;= 202202L</code>,
 	<code>__cpp_lib_shift &gt;= 202202L</code>
@@ -399,14 +401,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Making multi-param constructors of views explicit </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html">
         P2711R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>
 
@@ -543,7 +544,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
         Move-only types for equality_comparable_with, totally_ordered_with,
 	and three_way_comparable_with
@@ -553,24 +553,22 @@ or any notes about the implementation.
         P2404R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_concepts &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> A trait for implicit lifetime types </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf">
         P2674R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>common_reference_t</code> of <code>reference_wrapper</code>
 	Should Be a Reference Type
@@ -580,7 +578,7 @@ or any notes about the implementation.
         P2655R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 15.3 </entry>
       <entry> <code>__cpp_lib_common_reference &gt;= 202302L</code> </entry>
     </row>
 
@@ -625,14 +623,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Heterogeneous erasure overloads for associative containers </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html">
         P2077R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </entry>
     </row>
 
@@ -659,19 +656,17 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code>mdspan</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html">
         P0009R18
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>index_type</code> &amp; <code>size_type</code>
 	in <code>mdspan</code>
@@ -681,12 +676,11 @@ or any notes about the implementation.
         P2599R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>mdspan</code>: rename <code>pointer</code> and
 	<code>contiguous</code>
@@ -696,24 +690,22 @@ or any notes about the implementation.
         P2604R0
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Add the missing <code>empty</code> to <code>mdspan</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html">
         P2613R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>layout_stride</code> static extents default constructor fix
       </entry>
@@ -722,7 +714,7 @@ or any notes about the implementation.
         P2763R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>
 
@@ -777,7 +769,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code> std::string::substr() &amp;&amp; </code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html">
@@ -1175,14 +1166,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Providing size feedback in the Allocator interface </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html">
         P0401R6
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_allocate_at_least &gt;= 202306L</code> </entry>
     </row>
 
@@ -1201,19 +1191,17 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Explicit lifetime management </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf">
         P2590R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_start_lifetime_as &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	Fixing <code>std::start_lifetime_as</code> and
 	<code>std::start_lifetime_as_array</code>
@@ -1223,7 +1211,7 @@ or any notes about the implementation.
         P2679R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>

From redi@gcc.gnu.org  Tue Apr 28 17:38:54 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 28 Apr 2026 17:38:54 +0000 (GMT)
Subject: [gcc r16-8818] libstdc++: Update documentation about default -std
 option
Message-ID: <20260428173854.2103B4BB8F61@sourceware.org>

https://gcc.gnu.org/g:8836c2e79b953f06185e4a040c4e043d6a04263a

commit r16-8818-g8836c2e79b953f06185e4a040c4e043d6a04263a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 17:44:35 2026 +0100

    libstdc++: Update documentation about default -std option
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/using.xml (Flags): Update description of
            default value for -std option.
            * doc/html/manual/using.html: Regenerate.
    
    (cherry picked from commit eda0f2f0ccc76dfcce0a4d8350611039b0762e05)

Diff:
---
 libstdc++-v3/doc/html/manual/using.html | 5 +++--
 libstdc++-v3/doc/xml/manual/using.xml   | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html
index 27f503ecaccc..32a1c726cb1e 100644
--- a/libstdc++-v3/doc/html/manual/using.html
+++ b/libstdc++-v3/doc/html/manual/using.html
@@ -11,8 +11,9 @@
       The standard library conforms to the dialect of C++ specified by the
       <code class="option">-std</code> option passed to the compiler.
       By default, <span class="command"><strong>g++</strong></span> is equivalent to
-      <span class="command"><strong>g++ -std=gnu++17</strong></span> since GCC 11, and
-      <span class="command"><strong>g++ -std=gnu++14</strong></span> in GCC 6, 7, 8, 9, and 10, and
+      <span class="command"><strong>g++ -std=gnu++20</strong></span> since GCC 16, and
+      <span class="command"><strong>g++ -std=gnu++17</strong></span> in GCC 11-15, and
+      <span class="command"><strong>g++ -std=gnu++14</strong></span> in GCC 6-10, and
       <span class="command"><strong>g++ -std=gnu++98</strong></span> for older releases.
     </p><div class="table"><a id="table.cmd_options"></a><p class="title"><strong>Table?3.1.?C++ Command Options</strong></p><div class="table-contents"><table class="table" summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std</code>
       </td><td align="left">
diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
index 682669d91d4b..e2e75e8fe28c 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -16,8 +16,9 @@
       The standard library conforms to the dialect of C++ specified by the
       <option>-std</option> option passed to the compiler.
       By default, <command>g++</command> is equivalent to
-      <command>g++ -std=gnu++17</command> since GCC 11, and
-      <command>g++ -std=gnu++14</command> in GCC 6, 7, 8, 9, and 10, and
+      <command>g++ -std=gnu++20</command> since GCC 16, and
+      <command>g++ -std=gnu++17</command> in GCC 11-15, and
+      <command>g++ -std=gnu++14</command> in GCC 6-10, and
       <command>g++ -std=gnu++98</command> for older releases.
     </para>

From redi@gcc.gnu.org  Tue Apr 28 17:38:59 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 28 Apr 2026 17:38:59 +0000 (GMT)
Subject: [gcc r16-8819] libstdc++: Update C++23 status table
Message-ID: <20260428173859.49C0C4BB8F6A@sourceware.org>

https://gcc.gnu.org/g:168f88e278d8fc791bd1d6fccb4e2dd44a7bf387

commit r16-8819-g168f88e278d8fc791bd1d6fccb4e2dd44a7bf387
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 18:09:15 2026 +0100

    libstdc++: Update C++23 status table
    
    This hasn't been updated to reflect the new features in GCC 16 (and one
    that was backported to gcc-15 for GCC 15.3 but not released yet).
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/status_cxx2023.xml: Update status table.
            * doc/html/manual/status.html: Regenerate.
    
    (cherry picked from commit 3c901b72dc7e54f0bbc0d5c2a3cf9fccb89a6667)

Diff:
---
 libstdc++-v3/doc/html/manual/status.html       | 54 +++++++++++++-------------
 libstdc++-v3/doc/xml/manual/status_cxx2023.xml | 54 ++++++++++----------------
 2 files changed, 49 insertions(+), 59 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index d9a1c6736903..5bf3c828b2aa 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1976,11 +1976,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2432r1.pdf" target="_top">
         P2432R1
         </a>
-      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">starts_with</code> and <code class="code">ends_with</code> </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">starts_with</code> and <code class="code">ends_with</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html" target="_top">
         P1659R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code">zip</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code">zip</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2321r2.html" target="_top">
         P2321R2
         </a>
@@ -2037,11 +2037,11 @@ or any notes about the implementation.
       </td><td align="left">
 	<code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>
-      </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
+      </td></tr><tr><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
         P2408R5
         </a>
-      </td><td align="center"> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">
 	<code class="code">__cpp_lib_algorithm_iterator_requirements &gt;= 202207L</code>
       </td></tr><tr><td align="left"> Pipe support for user-defined range adaptors </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2387r3.html" target="_top">
@@ -2050,14 +2050,16 @@ or any notes about the implementation.
       </td><td align="center"> 13.1 </td><td align="left">
 	<code class="code">__cpp_lib_bind_pack &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_ranges &gt;= 202202L</code>
-      </td></tr><tr bgcolor="#B0B0B0"><td align="left">
+      </td></tr><tr><td align="left">
 	<code class="code">ranges::iota</code>, <code class="code">ranges::shift_left</code>,
         and <code class="code">ranges::shift_right</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html" target="_top">
         P2440R1
         </a>
-      </td><td align="center"> 13.1 (<code class="code">ranges::iota</code>) </td><td align="left">
+      </td><td align="center">
+	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 13.1 (<code class="code">ranges::iota</code>) </td></tr><tr><td> 16.1 (shift algos) </td></tr></tbody></table></div>
+      </td><td align="left">
 	<code class="code">__cpp_lib_ranges_iota &gt;= 202202L</code>,
 	<code class="code">__cpp_lib_shift &gt;= 202202L</code>
       </td></tr><tr><td align="left"> <code class="code">ranges::find_last</code> </td><td align="left">
@@ -2068,11 +2070,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2302r4.html" target="_top">
         P2302R4
         </a>
-      </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_contains &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making multi-param constructors of views explicit </td><td align="left">
+      </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_contains &gt;= 202207L</code> </td></tr><tr><td align="left"> Making multi-param constructors of views explicit </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html" target="_top">
         P2711R1
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">ranges::fold</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td align="left"> <code class="code">ranges::fold</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
         P2322R6
         </a>
@@ -2120,25 +2122,25 @@ or any notes about the implementation.
         </a>
       </td><td align="center">
 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 13.1 (missing changes to <code class="code">std::tuple</code>) </td></tr><tr><td> 14.1 (complete) </td></tr></tbody></table></div>
-      </td><td align="left"> <code class="code">__cpp_lib_reference_from_temporary &gt;= 202202L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="left"> <code class="code">__cpp_lib_reference_from_temporary &gt;= 202202L</code> </td></tr><tr><td align="left">
         Move-only types for equality_comparable_with, totally_ordered_with,
 	and three_way_comparable_with
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2404r3.pdf" target="_top">
         P2404R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_concepts &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> A trait for implicit lifetime types </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_concepts &gt;= 202207L</code> </td></tr><tr><td align="left"> A trait for implicit lifetime types </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf" target="_top">
         P2674R1
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr><td align="left">
 	<code class="code">common_reference_t</code> of <code class="code">reference_wrapper</code>
 	Should Be a Reference Type
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2655r3.html" target="_top">
         P2655R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
+      </td><td align="center"> 15.3 </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2614r2.pdf" target="_top">
         P2614R2
         </a>
@@ -2152,11 +2154,11 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1518r2.html" target="_top">
         P1518R2
         </a>
-      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous erasure overloads for associative containers </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left">?</td></tr><tr><td align="left"> Heterogeneous erasure overloads for associative containers </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
         P2077R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
         P0429R9
         </a>
@@ -2164,35 +2166,35 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
         P1222R4
         </a>
-      </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
+      </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">mdspan</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
         P0009R18
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">index_type</code> &amp; <code class="code">size_type</code>
 	in <code class="code">mdspan</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf" target="_top">
         P2599R2
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">mdspan</code>: rename <code class="code">pointer</code> and
 	<code class="code">contiguous</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2604r0.html" target="_top">
         P2604R0
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add the missing <code class="code">empty</code> to <code class="code">mdspan</code> </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left"> Add the missing <code class="code">empty</code> to <code class="code">mdspan</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html" target="_top">
         P2613R1
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr><td align="left">
 	<code class="code">layout_stride</code> static extents default constructor fix
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2763r1.html" target="_top">
         P2763R1
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td colspan="4" align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td colspan="4" align="left">
         <span class="bold"><strong>Strings and text</strong></span>
       </td></tr><tr><td align="left"> string contains function </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1679r3.html" target="_top">
@@ -2210,7 +2212,7 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0448r4.pdf" target="_top">
         P0448R4
         </a>
-      </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_spanstream &gt;= 202106L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code"> std::string::substr() &amp;&amp; </code> </td><td align="left">
+      </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_spanstream &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code"> std::string::substr() &amp;&amp; </code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html" target="_top">
         P2438R2
         </a>
@@ -2368,28 +2370,28 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1642r11.html" target="_top">
         P1642R11
         </a>
-      </td><td align="center"> 13.1 </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Providing size feedback in the Allocator interface </td><td align="left">
+      </td><td align="center"> 13.1 </td><td align="left">?</td></tr><tr><td align="left"> Providing size feedback in the Allocator interface </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html" target="_top">
         P0401R6
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_allocate_at_least &gt;= 202306L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_allocate_at_least &gt;= 202306L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
 	Disallow User Specialization of <code class="code">allocator_traits</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2652r2.html" target="_top">
         P2652R2
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Explicit lifetime management </td><td align="left">
+      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> Explicit lifetime management </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf" target="_top">
         P2590R2
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_start_lifetime_as &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left"> <code class="code">__cpp_lib_start_lifetime_as &gt;= 202207L</code> </td></tr><tr><td align="left">
 	Fixing <code class="code">std::start_lifetime_as</code> and
 	<code class="code">std::start_lifetime_as_array</code>
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2679r2.pdf" target="_top">
         P2679R2
         </a>
-      </td><td align="center"> </td><td align="left">?</td></tr><tr><td align="left"> out_ptr - a scalable output pointer abstraction </td><td align="left">
+      </td><td align="center"> 16.1 </td><td align="left">?</td></tr><tr><td align="left"> out_ptr - a scalable output pointer abstraction </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1132r8.html" target="_top">
         P1132R8
         </a>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index e1b98c30ae7f..a60dacc9eeca 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -175,14 +175,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code>starts_with</code> and <code>ends_with</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html">
         P1659R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </entry>
     </row>
 
@@ -331,14 +330,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Ranges iterators as inputs to non-Ranges algorithms </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html">
         P2408R5
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry>
 	<code>__cpp_lib_algorithm_iterator_requirements &gt;= 202207L</code>
       </entry>
@@ -359,7 +357,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#B0B0B0" ?>
       <entry>
 	<code>ranges::iota</code>, <code>ranges::shift_left</code>,
         and <code>ranges::shift_right</code>
@@ -369,7 +366,12 @@ or any notes about the implementation.
         P2440R1
         </link>
       </entry>
-      <entry align="center"> 13.1 (<code>ranges::iota</code>) </entry>
+      <entry align="center">
+	<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
+        <row><entry> 13.1 (<code>ranges::iota</code>) </entry></row>
+        <row><entry> 16.1 (shift algos) </entry></row>
+        </tbody></tgroup></informaltable>
+      </entry>
       <entry>
 	<code>__cpp_lib_ranges_iota &gt;= 202202L</code>,
 	<code>__cpp_lib_shift &gt;= 202202L</code>
@@ -399,14 +401,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Making multi-param constructors of views explicit </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html">
         P2711R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>
 
@@ -543,7 +544,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
         Move-only types for equality_comparable_with, totally_ordered_with,
 	and three_way_comparable_with
@@ -553,24 +553,22 @@ or any notes about the implementation.
         P2404R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_concepts &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> A trait for implicit lifetime types </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf">
         P2674R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>common_reference_t</code> of <code>reference_wrapper</code>
 	Should Be a Reference Type
@@ -580,7 +578,7 @@ or any notes about the implementation.
         P2655R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 15.3 </entry>
       <entry> <code>__cpp_lib_common_reference &gt;= 202302L</code> </entry>
     </row>
 
@@ -625,14 +623,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Heterogeneous erasure overloads for associative containers </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html">
         P2077R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </entry>
     </row>
 
@@ -659,19 +656,17 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code>mdspan</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html">
         P0009R18
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>index_type</code> &amp; <code>size_type</code>
 	in <code>mdspan</code>
@@ -681,12 +676,11 @@ or any notes about the implementation.
         P2599R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>mdspan</code>: rename <code>pointer</code> and
 	<code>contiguous</code>
@@ -696,24 +690,22 @@ or any notes about the implementation.
         P2604R0
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Add the missing <code>empty</code> to <code>mdspan</code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html">
         P2613R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_mdspan &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>layout_stride</code> static extents default constructor fix
       </entry>
@@ -722,7 +714,7 @@ or any notes about the implementation.
         P2763R1
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>
 
@@ -777,7 +769,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> <code> std::string::substr() &amp;&amp; </code> </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html">
@@ -1175,14 +1166,13 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Providing size feedback in the Allocator interface </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html">
         P0401R6
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_allocate_at_least &gt;= 202306L</code> </entry>
     </row>
 
@@ -1201,19 +1191,17 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry> Explicit lifetime management </entry>
       <entry>
         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf">
         P2590R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry> <code>__cpp_lib_start_lifetime_as &gt;= 202207L</code> </entry>
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	Fixing <code>std::start_lifetime_as</code> and
 	<code>std::start_lifetime_as_array</code>
@@ -1223,7 +1211,7 @@ or any notes about the implementation.
         P2679R2
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 16.1 </entry>
       <entry/>
     </row>

From aoliva@gcc.gnu.org  Tue Apr 28 22:30:36 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Tue, 28 Apr 2026 22:30:36 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: follow std in
 numeric_limits<bool>::traps and integral traps
Message-ID: <20260428223036.315EE4BB8F4E@sourceware.org>

https://gcc.gnu.org/g:93cd08885b6628d2dd7ac5a90cc4b20206162afe

commit 93cd08885b6628d2dd7ac5a90cc4b20206162afe
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:31 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps and integral traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false, presumably in response to
    issue 184.
    
    Issue 554 clarifies that traps is about values that may trap, rather
    than operations that may trap, so we were wrong in the interpretation
    about divide-by-zero operations' trapping on integral types that led
    to __glibcxx_integral_traps's defaulting to true, and some of its
    overrides.
    
    Align numeric_limits<bool>::traps with the standard, default
    __glibcxx_integral_traps to false, drop the overriders based on the
    incorrect interpretation, but keep __glibcxx_integral_traps to allow
    command-line restoring of this ABI fix, and for the admittedly
    unlikely case of trapping integral values' coming to exist on some
    architecture.
    
    
    for  libstdc++-v3/ChangeLog
    
            * 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.

Diff:
---
 libstdc++-v3/config/cpu/arm/cpu_defines.h     | 40 ---------------------------
 libstdc++-v3/config/cpu/powerpc/cpu_defines.h | 36 ------------------------
 libstdc++-v3/configure.host                   |  6 ----
 libstdc++-v3/include/std/limits               | 14 ++++++----
 4 files changed, 8 insertions(+), 88 deletions(-)

diff --git a/libstdc++-v3/config/cpu/arm/cpu_defines.h b/libstdc++-v3/config/cpu/arm/cpu_defines.h
deleted file mode 100644
index 57e4cbbe0136..000000000000
--- a/libstdc++-v3/config/cpu/arm/cpu_defines.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2015-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on ARM.
-#ifdef __ARM_ARCH_EXT_IDIV__
-#define __glibcxx_integral_traps false
-#else
-#define __glibcxx_integral_traps true
-#endif
-
-#endif
diff --git a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
deleted file mode 100644
index f4248e0f602a..000000000000
--- a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on PowerPC.
-#define __glibcxx_integral_traps false
-
-#endif
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index ff97216167de..e52a32bb4c68 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -150,15 +150,9 @@ case "${host_cpu}" in
   amdgcn)
     cpu_defines_dir=cpu/gcn
     ;;
-  arm*)
-    cpu_defines_dir=cpu/arm
-    ;;
   nvptx)
     cpu_defines_dir=cpu/nvptx
     ;;
-  powerpc* | rs6000)
-    cpu_defines_dir=cpu/powerpc
-    ;;
 esac
 
 
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..cfdbe02c844c 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -81,10 +81,15 @@
 // The default values are appropriate for many 32-bit targets.
 
 // GCC only intrinsically supports modulo integral types.  The only remaining
-// integral exceptional values is division by zero.  Only targets that do not
-// signal division by zero in some "hard to ignore" way should use false.
+// integral exceptional values is division by zero, but that's an operation,
+// not a value, and traps is about values that trap (Issue554), so there aren't
+// any for integral types.  The standard has numeric_limits<bool>::traps
+// explicitly set to false.  However, we used to set them all to true based on
+// the division-by-zero misinterpretation, so we retain this macro, and those
+// who relied on the misinterpretation can restore it with a command-line
+// define and revert the ABI-changing effects of this fix.
 #ifndef __glibcxx_integral_traps
-# define __glibcxx_integral_traps true
+# define __glibcxx_integral_traps false
 #endif
 
 // float
@@ -446,9 +451,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
       static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style

From aoliva@gcc.gnu.org  Tue Apr 28 22:30:41 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Tue, 28 Apr 2026 22:30:41 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: map 64-bit
 long double to double on sse [PR124657]
Message-ID: <20260428223041.49A914BB8F71@sourceware.org>

https://gcc.gnu.org/g:fb4ed3f04576c16f1531dbd7e2f7f5dc03f8dcbd

commit fb4ed3f04576c16f1531dbd7e2f7f5dc03f8dcbd
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:44 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h (__intrinsic_type::type):
            Map long double to double.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..8c30c8af2688 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE

From aoliva@gcc.gnu.org  Tue Apr 28 22:30:46 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Tue, 28 Apr 2026 22:30:46 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: simd: x86: accept
 64-bit long double as double [PR124657]
Message-ID: <20260428223046.63B154BBC085@sourceware.org>

https://gcc.gnu.org/g:2a13e459f721984bbba13f49d47e3afe58242a71

commit 2a13e459f721984bbba13f49d47e3afe58242a71
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:48 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 82 ++++++++++++++---------
 1 file changed, 50 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..5d4ed5ad58c8 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+    if constexpr (is_same_v<_Tp, long double>)
+      return true;
+#endif
+    return is_same_v<_Tp, double>;
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +447,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +456,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +465,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +474,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +483,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2415,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2440,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2465,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2523,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2548,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2573,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5039,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5102,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5138,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5168,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From aoliva@gcc.gnu.org  Tue Apr 28 22:30:51 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Tue, 28 Apr 2026 22:30:51 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] testsuite:
 semaphore/try_acquire_until: reorder clock::now calls
Message-ID: <20260428223051.7CB534BBC0E5@sourceware.org>

https://gcc.gnu.org/g:937b4b0e1bb6ad0ee2aeaf4e3eee4646155d33a8

commit 937b4b0e1bb6ad0ee2aeaf4e3eee4646155d33a8
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 16:01:47 2026 -0300

    testsuite: semaphore/try_acquire_until: reorder clock::now calls
    
    Clock calls on VxWorks are slow, so the odds that the consecutive
    calls of *clock::now() will yield a different result are not
    negligible.  Reordering the calls avoids false positives.
    
    
    for  libstdc++-v3/ChangeLog
    
            * testsuite/30_threads/semaphore/try_acquire_until.cc
            (test01): Reorder calls.

Diff:
---
 libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
index 44b2b90431a4..dea8c53a5a02 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
@@ -43,8 +43,8 @@ void test01()
   }
 
   {
-    auto const at = std::chrono::system_clock::now() + dur;
     auto const t0 = std::chrono::steady_clock::now();
+    auto const at = std::chrono::system_clock::now() + dur;
     VERIFY( !s.try_acquire_until(at) );
     auto const diff = std::chrono::steady_clock::now() - t0;
     VERIFY( diff >= dur );

From gccadmin@gcc.gnu.org  Wed Apr 29 00:17:05 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 29 Apr 2026 00:17:05 +0000 (GMT)
Subject: [gcc r17-187] Daily bump.
Message-ID: <20260429001705.313C44BB8F7D@sourceware.org>

https://gcc.gnu.org/g:fccea8edc376af8f2447b91a8aea25478c26dde1

commit r17-187-gfccea8edc376af8f2447b91a8aea25478c26dde1
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 29 00:16:40 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   4 +
 gcc/ChangeLog           | 390 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/analyzer/ChangeLog  | 263 ++++++++++++++++++++++++++++++++
 gcc/c-family/ChangeLog  |  10 ++
 gcc/c/ChangeLog         |   6 +
 gcc/cp/ChangeLog        |  19 +++
 gcc/testsuite/ChangeLog | 252 +++++++++++++++++++++++++++++++
 libgomp/ChangeLog       |   5 +
 libsanitizer/ChangeLog  |   4 +
 libstdc++-v3/ChangeLog  |  23 +++
 11 files changed, 977 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 4069580a5294..6e67c1dc4e8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-28  Bohan Lei  <garthlei@linux.alibaba.com>
+
+	* MAINTAINERS: Add myself to write after approval and DCO.
+
 2026-04-01  David Faust  <david.faust@oracle.com>
 
 	* MAINTAINERS: Add my bugzilla account.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 12bb46f01091..8ec41237655d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,393 @@
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/124217
+	* doc/invoke.texi: Add -Wanalyzer-div-by-zero.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (ANALYZER_OBJS): Add analyzer/exploded-path.o.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (ANALYZER_OBJS): Add analyzer/setjmp-longjmp.o.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (ANALYZER_OBJS): Add
+	analyzer/poisoned-value-diagnostic.o,
+	analyzer/shift-diagnostics.o, and
+	analyzer/write-to-const-diagnostics.o.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* doc/invoke.texi: Rename -Wanalyzer-mkstemp-missing-suffix to
+	-Wanalyzer-mktemp-missing-placeholder and
+	-Wanalyzer-mkstemp-of-string-literal to
+	-Wanalyzer-mktemp-of-string-literal.  Add
+	-Wanalyzer-mkostemp-redundant-flags.  Fix alphabetical ordering
+	of detailed descriptions.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* doc/invoke.texi: Add -Wanalyzer-mkstemp-missing-suffix and
+	-Wanalyzer-mkstemp-of-string-literal.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* diagnostics/html-sink.cc: Update status comment.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* doc/libgdiagnostics/topics/execution-paths.rst
+	(diagnostic_execution_path_add_event_via_msg_buf): Fix
+	indentation.
+	* doc/libgdiagnostics/topics/message-buffers.rst: Replace
+	duplicate entry for diagnostic_message_buffer_end_url with entry
+	for diagnostic_message_buffer_end_quote.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* diagnostics/context.h (diagnostics::context::make_option_name):
+	Convert return type from char * to label_text, and rename to...
+	(diagnostics::context::get_option_name): ...this.
+	(diagnostics::context::make_option_url): Likewise, renaming to...
+	(diagnostics::context::get_option_url): ...this.
+	* diagnostics/html-sink.cc
+	(html_builder::make_element_for_diagnostic): Update for above
+	changes.
+	* diagnostics/lazy-paths.cc (selftest::all_warnings_disabled):
+	Update for above changes.
+	* diagnostics/option-id-manager.h
+	(diagnostics::option_id_manager::make_option_name): Convert return
+	type from char * to label_text, and rename to...
+	(diagnostics::option_id_manager::get_option_name): ...this.
+	(diagnostics::option_id_manager::make_option_url): Likewise,
+	renaming to...
+	(diagnostics::option_id_manager::get_option_url): ...this.
+	* diagnostics/sarif-sink.cc: Add #define INCLUDE_SET.
+	(sarif_builder::m_rule_id_set): Convert from
+	hash_set <free_string_hash> to std::set<std::string>.
+	(sarif_builder::make_result_object): Update for above changes,
+	removing manual memory management.
+	(sarif_builder::make_reporting_descriptor_object_for_warning):
+	Likewise.
+	* diagnostics/text-sink.cc (text_sink::print_option_information):
+	Likewise.
+	* lto-wrapper.cc (print_lto_docs_link): Likewise.
+	(lto_diagnostic_option_id_manager::make_option_name): Convert
+	return type from char * to label_text, and rename to...
+	(lto_diagnostic_option_id_manager::get_option_name): ...this.
+	* opts-diagnostic.h (gcc_diagnostic_option_id_manager): Update for
+	above changes.
+	* opts.cc
+	(compiler_diagnostic_option_id_manager::make_option_name): Update
+	as above, renaming to...
+	(compiler_diagnostic_option_id_manager::get_option_name): ...this.
+	(gcc_diagnostic_option_id_manager::make_option_url): Likewise,
+	renaming to...
+	(gcc_diagnostic_option_id_manager::get_option_url): ...this.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR sarif-replay/123056
+	* libsarifreplay.cc: Include "json-pointer-parsing.h".
+	(sarif_replayer::sarif_replayer): Initialize m_root_val.
+	(sarif_replayer::m_root_val): New field.
+	(sarif_replayer::replay_file): Store m_root_val.
+	(sarif_replayer::append_embeddded_link): Add message_obj param.
+	Attempt to decode intra-sarif links, turning them into event IDs.
+	(sarif_replayer::decode_link_within_sarif): New.
+	(sarif_replayer::make_plain_text_within_result_message): Pass
+	message_obj to append_embeddded_link.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (OBJS-libcommon): Add json-pointer-parsing.o.
+	* json-pointer-parsing.cc: New file.
+	* json-pointer-parsing.h: New file.
+	* json.cc (json::object::set_string): Return a borrowed pointer to
+	the new json::value.
+	(json::object::set_integer): Likewise.
+	(json::array::append_string): Likewise.
+	* json.h (json::object::set_string): Likewise.
+	(json::object::set_integer): Likewise.
+	(json::array::append_string): Likewise.
+	* selftest-run-tests.cc (selftest::run_tests): Call
+	selftest::json_pointer_parsing_cc_tests.
+	* selftest.h (selftest::json_pointer_parsing_cc_tests): New decl.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (OBJS-libcommon): Add pretty-print-token-buffer.o.
+	* libgdiagnostics.cc: Drop include of "auto-obstack.h".
+	Include "pretty-print-token-buffer.h".
+	(class copying_token_printer): Move to
+	pretty-print-token-buffer.cc.
+	(struct diagnostic_message_buffer): Reimplement as a subclass of
+	pretty_print_token_buffer.
+	(diagnostic_message_buffer::to_string): Rename to
+	pretty_print_token_buffer::to_string and move to
+	pretty-print-token-buffer.cc.
+	* pretty-print-token-buffer.cc: New file, based on material from
+	libgdiagnostics.cc.
+	* pretty-print-token-buffer.h: New file, based on material from
+	libgdiagnostics.h.
+	* selftest-run-tests.cc (selftest::run_tests): Call
+	selftest::pretty_print_token_buffer_cc_tests.
+	* selftest.h (selftest::pretty_print_token_buffer_cc_tests): New
+	decl.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* json-diagnostic.cc: Include "pretty-print-markup-json.h".
+	(class pp_markup::quoted_json_pointer): Move to...
+	* pretty-print-markup-json.h: ...this new file.
+
+2026-04-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/124760
+	* config/riscv/bitmanip.md (SI->DI promoting shadd pattern): Promote
+	intermediate SI ops to DI ops when there's a final extending op.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125067
+	* tree-ssa-phiprop.cc (can_handle_load): Fix copy and pasto
+	on dominated_by_p.
+
+2026-04-28  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* lra-eliminations.cc (mark_not_eliminable): Fix condition to
+	consider hard regs instead of pseudos for INC/DEC/MODIFY operands.
+
+2026-04-28  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* lra-constraints.cc (curr_insn_transform): When recreating subreg
+	of a const put in pool, use the original subreg mode.
+
+2026-04-28  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-lives.cc (ira_implicitly_set_insn_hard_regs): Use the same
+	start prefered for all operand.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiprop.cc (propagate_with_phi): Move vuse variable
+	declaration right before its use.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiprop.cc (propagate_with_phi): Move vuse checks
+	before the dominator tests.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiprop.cc (propagate_with_phi): Factor out
+	checking the load for vdef to ....
+	(can_move_into_conditional): Here.
+
+2026-04-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* fold-mem-offsets.cc (pass_fold_mem_offsets::execute): Remove
+	optimize_bb_for_size_p check.
+	* config/riscv/riscv.cc (riscv_option_override): Disable
+	flag_fold_mem_offsets when optimizing for size with compressed
+	instructions.
+
+2026-04-28  Jiawei  <jiawei@iscas.ac.cn>
+	    Edwin Lu  <ewlu@rivosinc.com>
+
+	* config/riscv/riscv-ext.def: New extension.
+	* config/riscv/riscv-ext.opt: Ditto.
+	* config/riscv/sync-rvwmo.md: Add check for zalasr.
+	* config/riscv/sync-ztso.md: Ditto.
+	* doc/riscv-ext.texi: New extension.
+
+2026-04-28  Maximilian Ciric  <max.ciric@gmail.com>
+
+	* config/riscv/riscv.cc (riscv_can_tag_addresses): New function.
+	(RISCV_HWASAN_TAG_SIZE): New definition.
+	(riscv_memtag_tag_bitsize): New function.
+	(TARGET_MEMTAG_CAN_TAG_ADDRESSES): New definition.
+	(TARGET_MEMTAG_TAG_BITSIZE): Likewise.
+
+2026-04-28  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* config/pru/pru.h (ASM_SPEC): Define.
+
+2026-04-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/94892
+	* config/riscv/riscv.md (sign_bit_splat_equality_test): New pattern.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_bb_slp_mark_live_stmts): Do not
+	attempt to live code-generate defs that are kept in scalar
+	form anyway.
+	* tree-vect-loop.cc (vectorizable_live_operation): Update
+	comment.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (_slp_tree::live_lanes): New vector.
+	(SLP_TREE_LIVE_LANES): New.
+	* tree-vect-loop.cc (vectorizable_live_operation): Append
+	to SLP_TREE_LIVE_LANES.
+	* tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize
+	SLP_TREE_LIVE_LANES.
+	(_slp_tree::~_slp_tree): Release SLP_TREE_LIVE_LANES.
+	(vect_print_slp_tree): Adjust live lane dumping, indicating
+	the SLP node a lane is code generated from.
+	(vect_bb_slp_mark_live_stmts): No longer verify we can
+	code-generate from all SLP nodes but at least one, picking
+	the first.
+	* tree-vect-stmts.cc (vect_transform_stmt): Iterate over
+	SLP_TREE_LIVE_LANES.
+	(vect_analyze_stmt): Also analyze reductions for live
+	lanes.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124222
+	* tree-vect-slp.cc (vect_slp_gather_vectorized_scalar_stmts): Remove.
+	(vect_bb_slp_scalar_cost): Simplify by using SLP_TREE_TYPE and
+	a use-def walk of the scalar stmts SSA uses.
+	(vect_bb_vectorization_profitable_p): Simplify.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vec_slp_has_scalar_use): Remove.
+	(vect_bb_slp_mark_live_stmts): Simplify.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_slp_analyze_bb_1): Split out pure_slp
+	marking into ...
+	(vect_bb_slp_mark_stmts_vectorized): ... new function.  Compute
+	full scalar stmt coverage of the SLP graph.
+	(vect_slp_gather_extern_scalar_stmts): New helper.
+	(vect_bb_slp_mark_live_stmts): Adjust.
+	* tree-vect-loop.cc (vectorizable_live_operation): Likewise.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (struct slp_oprnds): New.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_slp_analyze_operations): Move
+	vect_bb_slp_mark_live_stmts call ...
+	(vect_slp_analyze_bb_1): ... here.  Move SLP stmt marking
+	right before it.
+	(vect_mark_slp_stmts): Remove unused overload.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vect_slp_child_index_for_operand): Get
+	a stmt_vec_info, elide gather-scatter flag.
+	* tree-vect-stmts.cc (vect_check_store_rhs): Adjust.
+	(vectorizable_simd_clone_call): Likewise.
+	(vectorizable_store): Likewise.
+	(vectorizable_load): Likewise.
+	* tree-vect-slp.cc (vect_get_operand_map): New overload
+	with a stmt_vec_info argument.
+	(vect_slp_child_index_for_operand): Adjust.
+	(vect_get_and_check_slp_defs): Likewise.
+	(compatible_calls_p): Likewise.
+	(vect_build_slp_tree_2): Likewise.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-slp.cc (vect_get_operand_map): Put operand map
+	data here.  Handle VIEW_CONVERT_EXPR, use else if, factor
+	out assertion.
+	(vect_get_and_check_slp_defs): Remove explicit VIEW_CONVERT_EXPR
+	handling here.
+
+2026-04-28  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.cc (construct_container): Remove redundant
+	early call to classify_argument. Recompute the classification
+	only when needed and assert that it succeeds.
+	(examine_argument): Change in_return parameter type to bool.
+	(function_arg_advance_64): Update call to examine_argument.
+	(function_arg_64): Update call to construct_container.
+	(function_value_64): Likewise.
+	(ix86_return_in_memory): Update call to examine_argument.
+	(ix86_gimplify_va_arg): Update calls to construct_container
+	and examine_argument.
+
+2026-04-28  Bohan Lei  <garthlei@linux.alibaba.com>
+
+	* config/riscv/riscv.h (OPTION_DEFAULT_SPECS): Specify -mcpu
+	instead of -march when --with-cpu is used.
+
+2026-04-28  Bohan Lei  <garthlei@linux.alibaba.com>
+
+	* simplify-rtx.cc (simplify_context::simplify_relational_operation_1):
+	Add simplifications for `(cmp (and/ior x C1) C2)`.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-loop.cc (vect_estimate_min_profitable_iters):
+	Add comment about costing of prologue/epilogue.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-loop.cc (vect_get_known_peeling_cost): Use
+	scalar_costs instead of guesstimating it.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-loop.cc (vect_compute_single_scalar_iteration_cost):
+	Record stmt cost to vect_body.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vect_get_known_peeling_cost): Simplify API.
+	* tree-vect-loop.cc (vect_get_known_peeling_cost): Avoid
+	all the overhead of record_stmt_cost as we only are interested
+	in the overall sum of the included builtin_vectorization_cost
+	calls.
+	* tree-vect-data-refs.cc (vect_peeling_hash_get_lowest_cost):
+	Adjust.
+	(vect_enhance_data_refs_alignment): Likewise.
+
+2026-04-28  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/112659
+	PR tree-optimization/122996
+	* match.pd: Extend conditional addition pattern to handle
+	a third constant and uniform vectors.
+
+2026-04-28  Monk Chiang  <monk.chiang@sifive.com>
+
+	* config/riscv/riscv.md (length attribute): Check CROSSING_JUMP_P
+	for jump instructions and use length 8 for crossing jumps.
+	(jump): Update comment to explain when long form is used.
+
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* range-op-float.cc (operator_not_equal::fold_range): Call
+	empty_range_varying when not calling frelop_early_resolve.
+
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* tree.cc (build_bitint_type): Allow build_bitint_type (1, 0).
+	(signed_or_unsigned_type_for): Call that for !unsignedp case
+	of BITINT_TYPE with bits 1.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125036
+	* tree-ssa-loop-ivopts.cc (add_iv_candidate_for_doloop): Don't
+	assert on niniter being integer type. Convert to a full mode
+	integer type if non integer or non-full mode integer type.
+
 2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
 
 	PR tree-optimization/57650
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index bf2612c1d525..9d1459a9cd52 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260428
+20260429
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 055739a4a70b..f49637b48bfe 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,266 @@
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/124217
+	* analyzer.opt (Wanalyzer-div-by-zero): New.
+	* analyzer.opt.urls: Regenerate.
+	* region-model.cc (class div_by_zero_diagnostic): New.
+	(region_model::get_gassign_result): Add warning for division by
+	zero if ctxt is non-null.  Bail out on such cases even if ctxt
+	is null.
+	* svalue.cc (type_can_have_value_range_p): Also handle frange.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* diagnostic-manager.cc: Include "analyzer/exploded-path.h".
+	* engine.cc: Likewise.
+	(exploded_path::exploded_path): Move to exploded-path.cc.
+	(exploded_path::find_stmt_backwards): Likewise.
+	(exploded_path::get_final_enode): Likewise.
+	(exploded_path::feasible_p): Likewise.
+	(exploded_path::dump_to_pp): Likewise.
+	(exploded_path::dump): Likewise.
+	(exploded_path::dump_to_file): Likewise.
+	* exploded-graph.h (class exploded_path): Move to exploded-path.h.
+	(shortest_exploded_paths): Likewise.
+	* exploded-path.cc: New file, taken from the above.
+	* exploded-path.h: Likewise.
+	* feasible-graph.cc: Include "analyzer/exploded-path.h".
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* analyzer.cc (is_setjmp_call_p): Move to setjmp-longjmp.cc.
+	(is_longjmp_call_p): Likewise.
+	* engine.cc (setjmp_record::cmp): Likewise.
+	(setjmp_svalue::accept): Likewise.
+	(setjmp_svalue::dump_to_pp): Likewise.
+	(setjmp_svalue::print_dump_widget_label): Likewise.
+	(setjmp_svalue::add_dump_widget_children): Likewise.
+	(setjmp_svalue::get_enode_index): Likewise.
+	(valid_longjmp_stack_p): Likewise.
+	(class stale_jmp_buf): Likewise.
+	(exploded_node::on_longjmp): Likewise.
+	(rewind_info_t::update_model): Likewise.
+	(rewind_info_t::add_events_to_path): Likewise.
+	* region-model.cc (region_model::on_setjmp): Likewise.
+	(region_model::on_longjmp): Likewise.
+	* setjmp-longjmp.cc: New file, made from the above material.
+	* svalue.cc: Update comment.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* poisoned-value-diagnostic.cc: New file, taken from material in
+	region-model.cc.
+	* region-model.cc (class poisoned_value_diagnostic): Move to
+	poisoned-value-diagnostic.cc.
+	(class shift_count_negative_diagnostic): Move to
+	shift-diagnostics.cc.
+	(class shift_count_overflow_diagnostic): Likewise.
+	(region_model::get_gassign_result): Use factory functions when
+	creating diagnostics so that the subclasses can be moved to their
+	own source files.
+	(region_model::check_for_poison): Likewise.
+	(region_model::deref_rvalue): Likewise.
+	(class write_to_const_diagnostic): Move to
+	write-to-const-diagnostics.cc.
+	(class write_to_string_literal_diagnostic): Likewise.
+	(region_model::check_for_writable_region): Use factory functions
+	when creating diagnostics so that the subclasses can be moved to
+	their own source files.
+	* region-model.h (make_poisoned_value_diagnostic): New decl.
+	(make_shift_count_negative_diagnostic): New decl.
+	(make_shift_count_overflow_diagnostic): New decl.
+	(make_write_to_const_diagnostic): New decl.
+	(make_write_to_string_literal_diagnostic): New decl.
+	* shift-diagnostics.cc: New file, taken from material in
+	region-model.cc.
+	* write-to-const-diagnostics.cc: Likewise.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/123145
+	* access-diagram.cc
+	(compound_svalue_spatial_item::compound_svalue_spatial_item):
+	Update for compound_svalue using concrete_binding_map rather than
+	binding_map.
+	* bounds-checking.cc (strip_types): Likewise.
+	* call-summary.cc
+	(call_summary_replay::convert_svalue_from_summary_1): Update for
+	reimplementation of class binding_map.
+	(call_summary_replay::convert_svalue_from_summary_1): Likewise.
+	* infinite-recursion.cc (contains_unknown_p): Update for
+	compound_svalue using concrete_binding_map rather than
+	binding_map.
+	* program-state.cc (sm_state_map::impl_set_state): Likewise.
+	* region-model-manager.cc (maybe_undo_optimize_bit_field_compare):
+	Likewise.
+	(maybe_undo_optimize_bit_field_compare): Avoid building a
+	concrete_binding key by using get_any_exact_binding.
+	(region_model_manager::get_or_create_compound_svalue): New
+	overload, consuming a concrete_binding_map &&.
+	* region-model-manager.h
+	(region_model_manager::get_or_create_compound_svalue): New decl
+	for the above.
+	* region-model-reachability.cc (reachable_regions::handle_sval):
+	Update for compound_svalue using concrete_binding_map rather than
+	binding_map.
+	(reachable_regions::handle_parm): Likewise.
+	* region-model.cc (region_model::scan_for_null_terminator_1): Port
+	from binding_map to concrete_binding_map.
+	(exposure_through_uninit_copy::calc_num_uninit_bits): Update for
+	compound_svalue using concrete_binding_map rather than
+	binding_map.
+	(contains_uninit_p): Likewise.
+	* region.cc (decl_region::calc_svalue_for_constructor): Port from
+	binding_map to concrete_binding_map.
+	(decl_region::get_svalue_for_initializer): Update call to
+	get_or_create_compound_svalue.
+	* store.cc (concrete_binding_map::dump_to_pp): New.
+	(concrete_binding_map::dump): New.
+	(concrete_binding_map::add_to_tree_widget): New.
+	(concrete_binding_map::validate): New.
+	(binding_map::cmp): Convert to...
+	(concrete_binding_map::cmp): ...this.
+	(concrete_binding_map::get_any_exact_binding): New.
+	(concrete_binding_map::calc_complexity): New.
+	(concrete_binding_map::remove_overlapping_binding): New.
+	(concrete_binding_map::remove_overlapping_bindings): New.
+	(concrete_binding_map::get_overlapping_bindings): New.
+	(binding_map::put): Update for change to m_concrete.
+	(binding_map::validate): Likewise.
+	(binding_map::apply_ctor_to_region): Convert to...
+	(concrete_binding_map::apply_ctor_to_region): ...this.
+	(binding_map::apply_ctor_val_to_range): Convert to...
+	(concrete_binding_map::apply_ctor_val_to_range): ...this.
+	(binding_map::apply_ctor_pair_to_child_region): Convert to...
+	(concrete_binding_map::apply_ctor_pair_to_child_region): ...this.
+	(binding_map::remove_overlapping_bindings): Move part of
+	implementation to
+	concrete_binding_map::remove_overlapping_binding.
+	(binding_cluster::bind_compound_sval): Simplify using
+	concrete_binding_map.
+	(binding_cluster::maybe_get_compound_binding): Likewise.
+	(store::replay_call_summary_cluster): Update for change
+	to compound_svalue.
+	* store.h: Include "analyzer/complexity.h".
+	(class concrete_binding_map): New, based on
+	binding_map::concrete_bindings_t.
+	(binding_map::concrete_bindings_t): Use concrete_binding_map.
+	(binding_map::empty_p): Update for above.
+	(binding_map::apply_ctor_to_region): Drop decl.
+	(binding_map::cmp): Likewise.
+	(binding_map::apply_ctor_val_to_range): Likewise.
+	(binding_map::apply_ctor_pair_to_child_region): Likewise.
+	* svalue.cc (svalue::cmp_ptr): Update for change to
+	compound_svalue.
+	(compound_svalue::compound_svalue): Port from binding_map to
+	concrete_binding_map.
+	(compound_svalue::accept): Likewise.
+	(compound_svalue::calc_complexity): Drop.
+	(compound_svalue::maybe_fold_bits_within): Port from binding_map
+	to concrete_binding_map.
+	* svalue.h (class compound_svalue): Update leading comment.  Port
+	from binding_map to concrete_binding_map.
+
+2026-04-28  Virginia Kodsy  <virginiahany9@gmail.com>
+
+	* kf.cc (class kf_strcasecmp): New.
+	(kf_strcasecmp::impl_call_post): New.
+	(register_known_functions): Register BUILT_IN_STRCASECMP,
+	"strcasecmp", and "__builtin_strcasecmp".
+
+2026-04-28  Ridham Khurana  <khurana.ridham222@gmail.com>
+
+	* kf.cc (class kf_getenv): New.
+	(kf_getenv::impl_call_post): New.
+	(register_known_functions): Register kf_getenv.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* kf.cc (class kf_mktemp_family): Add nested outcome enum,
+	constructor, and nested failure and success classes.
+	(kf_mktemp_family::check_template_with_suffixlen_arg): Remove.
+	(kf_mktemp_family::check_template): Remove.  Both replaced
+	by...
+	(kf_mktemp_family::check_for_string_literal_arg): ...this.
+	(kf_mktemp_family::get_trailing_len): New.
+	(kf_mktemp_family::impl_call_post): New.
+	(class kf_mktemp_simple): Add constructor taking outcome.
+	Replace check_template with check_for_string_literal_arg.
+	Remove set_any_lhs_with_defaults call.
+	(class kf_mkostemp): Add constructor.  Replace check_template
+	with check_for_string_literal_arg.  Remove
+	set_any_lhs_with_defaults call.
+	(class kf_mkostemps): Likewise.
+	(class kf_mkstemps): Likewise.
+	(register_known_functions): Pass outcome to kf_mktemp_simple
+	instantiations.
+	* region-model.cc (region_model::update_for_null_return): New.
+	* region-model.h (class region_model): Add
+	update_for_null_return.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* analyzer-language.cc (stash_named_constants): Stash O_CREAT,
+	O_EXCL, and O_RDWR for use by kf.cc.
+	* analyzer.opt: Rename -Wanalyzer-mkstemp-missing-suffix to
+	-Wanalyzer-mktemp-missing-placeholder and
+	-Wanalyzer-mkstemp-of-string-literal to
+	-Wanalyzer-mktemp-of-string-literal.  Add
+	-Wanalyzer-mkostemp-redundant-flags.  Fix alphabetical ordering.
+	* analyzer.opt.urls: Regenerate.
+	* kf.cc (class mkstemp_of_string_literal): Rename to...
+	(class mktemp_of_string_literal): ...this.
+	(class mkstemp_missing_suffix): Rename to...
+	(class mktemp_missing_placeholder): ...this.  Add trailing_len
+	parameter for suffixed variants.
+	(class mkostemp_redundant_flags): New diagnostic class.
+	(class kf_mktemp_family): New base class with shared template
+	and flags checking logic.
+	(kf_mktemp_family::check_template_with_suffixlen_arg): New.
+	(kf_mktemp_family::check_template): New.
+	(kf_mktemp_family::check_flags): New.
+	(kf_mktemp_family::check_placeholder): New.
+	(class kf_mkstemp): Rename to...
+	(class kf_mktemp_simple): ...this.  Generalize to handle mktemp,
+	mkstemp, and mkdtemp.
+	(class kf_mkostemp): New known_function handler.
+	(class kf_mkostemps): New known_function handler.
+	(class kf_mkstemps): New known_function handler.
+	(register_known_functions): Register all mktemp family handlers.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* analyzer.opt: Add -Wanalyzer-mkstemp-missing-suffix and
+	-Wanalyzer-mkstemp-of-string-literal.
+	* analyzer.opt.urls: Add URL entries for the new warnings.
+	* kf.cc (class mkstemp_of_string_literal): New diagnostic class
+	for mkstemp called on a string literal.
+	(class mkstemp_missing_suffix): New diagnostic class for mkstemp
+	called with a template missing the "XXXXXX" suffix.
+	(class kf_mkstemp): New known_function handler for mkstemp.
+	(register_known_functions): Register kf_mkstemp.
+
+2026-04-28  Saksham Gupta  <io.sakshamgupta@gmail.com>
+
+	* kf.cc (class kf_atoi_family): New class.
+	(register_known_functions): Register atoi, atol, and atoll.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* access-diagram.cc
+	(access_diagram_impl::add_aligned_child_table): Use
+	std::make_unique rather than "new".
+	(access_diagram_impl::add_valid_vs_invalid_ruler): Likewise.
+	* checker-path.h (checker_path::replace_event): Use
+	std::unique_ptr.
+	* diagnostic-manager.cc
+	(diagnostic_manager::consolidate_conditions): Use std::make_unique
+	rather than "new".
+	* feasible-graph.cc (feasible_graph::make_epath): Likewise.
+
 2026-04-16  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	* engine.cc (impl_region_model_context::on_unexpected_tree_code): Print
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index d5036a2ac39d..6851725b2b4b 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,13 @@
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-common.cc (c_common_signed_or_unsigned_type): Use
+	build_bitint_type for TREE_CODE (type) == BITINT_TYPE whenever
+	flag_isoc2y even when precision is 1.
+	(c_common_get_alias_set): Don't special case BITINT_TYPE
+	with precision 1 for flag_isoc2y.
+	* c-lex.cc (interpret_integer): Use _BitInt(1) type for 0wb
+	if flag_isoc2y, rather than _BitInt(2).
+
 2026-04-22  Jakub Jelinek  <jakub@redhat.com>
 
 	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index a1cc6fc978d3..305041fb081c 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-decl.cc (finish_declspecs) <case cts_bitint>: Implement
+	C2Y N3747 - Integer Sets, v5.  Allow signed _BitInt(1) for
+	flag_isoc2y.
+
 2026-04-25  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/124303
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c51be716a94f..786cb94b48b0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,22 @@
+2026-04-28  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124756
+	* reflect.cc (get_reflection): Give an error when taking the
+	reflection of a block-scope extern.
+
+2026-04-28  Marek Polacek  <polacek@redhat.com>
+
+	* error.cc (inform_tree_category): Also print concept and alias
+	template.
+	* pt.cc (tsubst_splice_scope): Reword the diagnostic messages.
+	Call inform_tree_category.
+
+2026-04-28  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125022
+	* decl.cc (store_parm_decls): Only do trivial_abi stuff when
+	!processing_template_decl.
+
 2026-04-27  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/124978
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2cd01582a9c8..5e7e1f3056b0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,255 @@
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/124217
+	* c-c++-common/analyzer/divide-by-zero-1.c: Update to expect
+	-Wanalyzer-div-by-zero.
+	* c-c++-common/analyzer/divide-by-zero-pr124195-2.c: Likewise.
+	* gcc.dg/analyzer/data-model-1.c (test_21): Split out division by
+	zero cases into...
+	(test_21_division_by_zero): ...this, and...
+	(test_21_modulus_by_zero): ...this, updating these to expect
+	-Wanalyzer-div-by-zero warnings.
+	* gcc.dg/analyzer/divide-by-zero-float.c: New test.
+	* gcc.dg/analyzer/divide-by-zero-ice-pr124433.c: Update to expect
+	-Wanalyzer-div-by-zero.
+	* gcc.dg/analyzer/divide-by-zero-pr124195-1.c: Likewise.
+
+2026-04-28  Virginia Kodsy  <virginiahany9@gmail.com>
+
+	* gcc.dg/analyzer/strcasecmp-1.c: New test.
+
+2026-04-28  Ridham Khurana  <khurana.ridham222@gmail.com>
+
+	* gcc.dg/analyzer/getenv-1.c (test_passthrough): New test.
+
+2026-04-28  Ridham Khurana  <khurana.ridham222@gmail.com>
+
+	* gcc.dg/analyzer/getenv-1.c: New test.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* gcc.dg/analyzer/mkdtemp-1.c: Add tests for errno on
+	success/failure, non-null return identity, and no-lhs call.
+	* gcc.dg/analyzer/mkostemp-1.c: Prune fd leak warnings.
+	* gcc.dg/analyzer/mkostemps-1.c: Likewise.
+	* gcc.dg/analyzer/mkstemp-1.c: Likewise.
+	* gcc.dg/analyzer/mkstemps-1.c: Likewise.
+	* gcc.dg/analyzer/mktemp-1.c: Add errno, failure, and success
+	path tests.
+	* gcc.dg/analyzer/fd-mktemp-family.c: New test.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* gcc.dg/analyzer/mkstemp-1.c: Update terminology from "suffix"
+	to "placeholder".
+	* gcc.dg/analyzer/mkdtemp-1.c: New test.
+	* gcc.dg/analyzer/mkostemp-1.c: New test.
+	* gcc.dg/analyzer/mkostemps-1.c: New test.
+	* gcc.dg/analyzer/mkstemps-1.c: New test.
+	* gcc.dg/analyzer/mktemp-1.c: New test.
+
+2026-04-28  Tom?s Ort?n Fern?ndez  <quanrong@mailbox.org>
+
+	PR analyzer/105890
+	* gcc.dg/analyzer/mkstemp-1.c: New test.
+
+2026-04-28  Saksham Gupta  <io.sakshamgupta@gmail.com>
+
+	* gcc.dg/analyzer/atoi-1.c: Update test coverage.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	PR sarif-replay/123056
+	* sarif-replay.dg/2.1.0-invalid/3.10.3-bad-json-pointer.sarif: New
+	test.
+	* sarif-replay.dg/2.1.0-valid/embedded-links-pr123056-check-sarif-roundtrip.py
+	(test_roundtrip_of_url_in_generated_sarif): Update expected
+	result, to expect the URL for the event.
+
+2026-04-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* selftests/json-pointer.json: New support file, taken directly
+	from RFC 6901.
+
+2026-04-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/124760
+	* gcc.target/riscv/pr124760.c: New test.
+
+2026-04-28  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124756
+	* g++.dg/reflect/identifier_of3.C: Add dg-error.
+	* g++.dg/reflect/pr123612.C: Likewise.
+	* g++.dg/reflect/error13.C: New test.
+
+2026-04-28  Marek Polacek  <polacek@redhat.com>
+
+	* g++.dg/reflect/ns5.C: Adjust expected diagnostics.
+	* g++.dg/reflect/type9.C: Likewise.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/116823
+	* g++.dg/tree-ssa/phiprop-1.C: New test.
+
+2026-04-28  Jiawei  <jiawei@iscas.ac.cn>
+	    Edwin Lu  <ewlu@rivosinc.com>
+
+	* gcc.target/riscv/amo/a-rvwmo-fence.c: Disable zalasr from -march.
+	* gcc.target/riscv/amo/a-rvwmo-load-acquire.c: Ditto.
+	* gcc.target/riscv/amo/a-rvwmo-load-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/a-rvwmo-load-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/a-rvwmo-store-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/a-rvwmo-store-release.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-fence.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-load-acquire.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-load-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-load-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-store-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/a-ztso-store-release.c: Ditto.
+	* gcc.target/riscv/amo/zaamo-preferred-over-zalrsc.c: Ditto.
+	* gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c: Ditto.
+	* gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c: Ditto.
+	* gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-char.c: Ditto.
+	* gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-short.c: Ditto.
+	* gcc.target/riscv/amo/zabha-rvwmo-amo-add-char.c: Ditto.
+	* gcc.target/riscv/amo/zabha-rvwmo-amo-add-short.c: Ditto.
+	* gcc.target/riscv/amo/zabha-zacas-atomic-cas.c: Ditto.
+	* gcc.target/riscv/amo/zabha-zacas-preferred-over-zalrsc.c: Ditto.
+	* gcc.target/riscv/amo/zabha-ztso-amo-add-char.c: Ditto.
+	* gcc.target/riscv/amo/zabha-ztso-amo-add-short.c: Ditto.
+	* gcc.target/riscv/amo/zacas-char-requires-zabha.c: Ditto.
+	* gcc.target/riscv/amo/zacas-char-requires-zacas.c: Ditto.
+	* gcc.target/riscv/amo/zacas-preferred-over-zalrsc.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-acq-rel.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-release.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-compatability-mapping-no-fence.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-compatability-mapping.cc: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-acq-rel.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-release.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-acq-rel.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-release.c: Ditto.
+	* gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-char.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-compatability-mapping-no-fence.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-compatability-mapping.cc: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-int-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-int.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-short-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zacas-ztso-compare-exchange-short.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-consume.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-seq-cst-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acq-rel.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-amo-add-int.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-acquire-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-consume.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-seq-cst-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-seq-cst.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acq-rel.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acquire.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-relaxed.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-release.c: Ditto.
+	* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-seq-cst.c: Ditto.
+	* lib/target-supports.exp: Add zalasr checks.
+	* gcc.target/riscv/amo/zalasr-rvwmo-load-acquire.c: New test.
+	* gcc.target/riscv/amo/zalasr-rvwmo-load-relaxed.c: New test.
+	* gcc.target/riscv/amo/zalasr-rvwmo-load-seq-cst.c: New test.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c: New test.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c: New test.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-release.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-load-acquire.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-load-relaxed.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-load-seq-cst.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c: New test.
+	* gcc.target/riscv/amo/zalasr-ztso-store-release.c: New test.
+	Co-Authored-by: Edwin Lu <ewlu@rivosinc.com>
+
+2026-04-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/94892
+	* gcc.target/riscv/pr94892.c: New test.
+
+2026-04-28  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	* g++.dg/cpp26/type-order1.C: Add tests for more type.
+
+2026-04-28  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124222
+	* gcc.dg/vect/costmodel/x86_64/costmodel-pr124222.c: New testcase.
+
+2026-04-28  Bohan Lei  <garthlei@linux.alibaba.com>
+
+	* gcc.target/i386/pr113609-1.c: Change assembly check after
+	optimization.
+	* gcc.target/riscv/zbs-if_then_else-02.c: New test.
+
+2026-04-28  Netanel Komm  <netanelkomm@gmail.com>
+
+	PR tree-optimization/112659
+	PR tree-optimization/122996
+	* g++.dg/tree-ssa/cond-add-vec-1.C: New test (positive cases).
+	* g++.dg/tree-ssa/cond-add-vec-2.C: New test (negative cases).
+	* gcc.dg/tree-ssa/cond-add-1.c: New test (positive cases).
+	* gcc.dg/tree-ssa/cond-add-2.c: New test (negative cases).
+
+2026-04-28  Monk Chiang  <monk.chiang@sifive.com>
+
+	* gcc.target/riscv/pr-crossing-jump-1.c: New test.
+	* gcc.target/riscv/pr-crossing-jump-2.c: New test.
+	* gcc.target/riscv/pr-crossing-jump-3.c: New test.
+
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* gcc.c-torture/compile/pr125039.c: New test.
+
+2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/torture/bitint-96.c: New test.
+	* gcc.dg/torture/bitint-97.c: New test.
+	* gcc.dg/torture/bitint-98.c: New test.
+	* gcc.dg/bitint-130.c: New test.
+	* gcc.dg/bitint-131.c: New test.
+	* gcc.dg/bitint-132.c: New test.
+
+2026-04-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125036
+	* gcc.dg/torture/pr125036-1.c: New test.
+
+2026-04-28  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125022
+	* g++.dg/cpp0x/attr-trivial_abi7.C: New test.
+
 2026-04-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
 
 	PR tree-optimization/57650
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index b3dc5f4ade33..341984ff04bf 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-28  Tobias Burnus  <tburnus@baylibre.com>
+
+	* testsuite/libgomp.fortran/map-subarray-6.f90: Fix, extend, and
+	robustify.
+
 2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
 
 	* testsuite/libgomp.c/declare-variant-3-sm50.c: New.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 60bc501754c8..a58e7de581be 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-28  Maximilian Ciric  <max.ciric@gmail.com>
+
+	* configure.tgt: Enable HWASAN support for RISC-V target.
+
 2026-04-21  Marian Buschsieweke  <maribu@users.noreply.github.com>
 
 	PR sanitizer/124248
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c8ffba1bed54..0a9136386ba9 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,26 @@
+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

From gccadmin@gcc.gnu.org  Wed Apr 29 00:20:40 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 29 Apr 2026 00:20:40 +0000 (GMT)
Subject: [gcc r16-8820] Daily bump.
Message-ID: <20260429002040.E55774BB8F7D@sourceware.org>

https://gcc.gnu.org/g:7deaa94f8706975c55a10f2caeb15f6567adcfc7

commit r16-8820-g7deaa94f8706975c55a10f2caeb15f6567adcfc7
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Apr 29 00:20:13 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          |  2 +-
 libstdc++-v3/ChangeLog | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index bf2612c1d525..9d1459a9cd52 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260428
+20260429
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b139be2bbd19..2e325cb25f58 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,20 @@
+2026-04-28  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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>
+
+	Backported from master:
+	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-22  Jonathan Wakely  <jwakely@redhat.com>
 
 	* doc/html/manual/status.html: Regenerate.

From aoliva@gcc.gnu.org  Wed Apr 29 02:00:45 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 29 Apr 2026 02:00:45 +0000 (GMT)
Subject: [gcc r17-189] libstdc++: follow std in numeric_limits<bool>::traps
 and integral traps
Message-ID: <20260429020045.1ACDF4BBC0EF@sourceware.org>

https://gcc.gnu.org/g:eb829c6789c5aebacc8b96b23d220667fa548d50

commit r17-189-geb829c6789c5aebacc8b96b23d220667fa548d50
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 22:31:23 2026 -0300

    libstdc++: follow std in numeric_limits<bool>::traps and integral traps
    
    There's a comment from 2002 suggesting that
    numeric_limits<bool>::traps was in a DR, but C++ standards including
    11, 17 and 23 explicitly set it to false, presumably in response to
    issue 184.
    
    Issue 554 clarifies that traps is about values that may trap, rather
    than operations that may trap, so we were wrong in the interpretation
    about divide-by-zero operations' trapping on integral types that led
    to __glibcxx_integral_traps's defaulting to true, and some of its
    overrides.
    
    Align numeric_limits<bool>::traps with the standard, default
    __glibcxx_integral_traps to false, drop the overriders based on the
    incorrect interpretation, but keep __glibcxx_integral_traps to allow
    command-line restoring of this ABI fix, and for the admittedly
    unlikely case of trapping integral values' coming to exist on some
    architecture.
    
    
    for  libstdc++-v3/ChangeLog
    
            * 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.

Diff:
---
 libstdc++-v3/config/cpu/arm/cpu_defines.h     | 40 ---------------------------
 libstdc++-v3/config/cpu/powerpc/cpu_defines.h | 36 ------------------------
 libstdc++-v3/configure.host                   |  6 ----
 libstdc++-v3/include/std/limits               | 14 ++++++----
 4 files changed, 8 insertions(+), 88 deletions(-)

diff --git a/libstdc++-v3/config/cpu/arm/cpu_defines.h b/libstdc++-v3/config/cpu/arm/cpu_defines.h
deleted file mode 100644
index 57e4cbbe0136..000000000000
--- a/libstdc++-v3/config/cpu/arm/cpu_defines.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2015-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on ARM.
-#ifdef __ARM_ARCH_EXT_IDIV__
-#define __glibcxx_integral_traps false
-#else
-#define __glibcxx_integral_traps true
-#endif
-
-#endif
diff --git a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h b/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
deleted file mode 100644
index f4248e0f602a..000000000000
--- a/libstdc++-v3/config/cpu/powerpc/cpu_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/cpu_defines.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{iosfwd}
- */
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-// Integer divide instructions don't trap on PowerPC.
-#define __glibcxx_integral_traps false
-
-#endif
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index ff97216167de..e52a32bb4c68 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -150,15 +150,9 @@ case "${host_cpu}" in
   amdgcn)
     cpu_defines_dir=cpu/gcn
     ;;
-  arm*)
-    cpu_defines_dir=cpu/arm
-    ;;
   nvptx)
     cpu_defines_dir=cpu/nvptx
     ;;
-  powerpc* | rs6000)
-    cpu_defines_dir=cpu/powerpc
-    ;;
 esac
 
 
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index f0ba2851a0a2..cfdbe02c844c 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -81,10 +81,15 @@
 // The default values are appropriate for many 32-bit targets.
 
 // GCC only intrinsically supports modulo integral types.  The only remaining
-// integral exceptional values is division by zero.  Only targets that do not
-// signal division by zero in some "hard to ignore" way should use false.
+// integral exceptional values is division by zero, but that's an operation,
+// not a value, and traps is about values that trap (Issue554), so there aren't
+// any for integral types.  The standard has numeric_limits<bool>::traps
+// explicitly set to false.  However, we used to set them all to true based on
+// the division-by-zero misinterpretation, so we retain this macro, and those
+// who relied on the misinterpretation can restore it with a command-line
+// define and revert the ABI-changing effects of this fix.
 #ifndef __glibcxx_integral_traps
-# define __glibcxx_integral_traps true
+# define __glibcxx_integral_traps false
 #endif
 
 // float
@@ -446,9 +451,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
       static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
 
-      // It is not clear what it means for a boolean type to trap.
-      // This is a DR on the LWG issue list.  Here, I use integer
-      // promotion semantics.
       static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
       static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
       static _GLIBCXX_USE_CONSTEXPR float_round_style round_style

From aoliva@gcc.gnu.org  Wed Apr 29 02:00:50 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 29 Apr 2026 02:00:50 +0000 (GMT)
Subject: [gcc r17-190] libstdc++: simd: map 64-bit long double to double on
 sse [PR124657]
Message-ID: <20260429020050.444554BBC0D2@sourceware.org>

https://gcc.gnu.org/g:a575c519169184bef374009c8ed6e805ebac609a

commit r17-190-ga575c519169184bef374009c8ed6e805ebac609a
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 22:31:27 2026 -0300

    libstdc++: simd: map 64-bit long double to double on sse [PR124657]
    
    When long double is as wide as double on x86 (-mlong-double-64), make
    the __intrinsic_type a vector of double.
    
    
    for  libstdc++-v3/ChangeLog
    
            PR libstdc++/124657
            * include/experimental/bits/simd.h (__intrinsic_type::type):
            Map long double to double.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index b96818af6e6f..8c30c8af2688 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -2477,7 +2477,8 @@ template <typename _Tp, size_t _Bytes>
     static constexpr size_t _S_VBytes = _Bytes <= 16 ? 16 : _Bytes <= 32 ? 32 : 64;
 
     using type [[__gnu__::__vector_size__(_S_VBytes)]]
-      = conditional_t<is_integral_v<_Tp>, long long int, _Tp>;
+      = conditional_t<is_integral_v<_Tp>, long long int,
+		      conditional_t<is_same_v<_Tp, long double>, double, _Tp> >;
   };
 #endif // _GLIBCXX_SIMD_HAVE_SSE

From aoliva@gcc.gnu.org  Wed Apr 29 02:01:00 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 29 Apr 2026 02:01:00 +0000 (GMT)
Subject: [gcc r17-191] libstdc++: simd: x86: accept 64-bit long double as
 double [PR124657]
Message-ID: <20260429020100.9DF014BBC0DF@sourceware.org>

https://gcc.gnu.org/g:8b52a53987ccec7760f023468c9400459c4fdf28

commit r17-191-g8b52a53987ccec7760f023468c9400459c4fdf28
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 22:31:32 2026 -0300

    libstdc++: simd: x86: accept 64-bit long double as double [PR124657]
    
    Various simd_x86 functions that handle double need to be adjusted to
    match 64-bit long double as well.
    
    Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them
    instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,
    respectively.
    
    
    for  libstdc++-v3/ChangeLog
    
            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.

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 82 ++++++++++++++---------
 1 file changed, 50 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 74c7a61998e0..5d4ed5ad58c8 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>
 #endif
 
 // ISA & type detection {{{
+template <typename _Tp>
+  constexpr bool
+  __is_x86_ps()
+  {
+    return is_same_v<_Tp, float>;
+  }
+
+template <typename _Tp>
+  constexpr bool
+  __is_x86_pd()
+  {
+#if __LDBL_MANT_DIG == __DBL_MANT_DIG
+    if constexpr (is_same_v<_Tp, long double>)
+      return true;
+#endif
+    return is_same_v<_Tp, double>;
+  }
+
 template <typename _Tp, size_t _Np>
   constexpr bool
   __is_sse_ps()
   {
     return __have_sse
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -429,8 +447,8 @@ template <typename _Tp, size_t _Np>
   __is_sse_pd()
   {
     return __have_sse2
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;
   }
 
 template <typename _Tp, size_t _Np>
@@ -438,8 +456,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_ps()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -447,8 +465,8 @@ template <typename _Tp, size_t _Np>
   __is_avx_pd()
   {
     return __have_avx
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;
   }
 
 template <typename _Tp, size_t _Np>
@@ -456,8 +474,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_ps()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_ps<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 template <typename _Tp, size_t _Np>
@@ -465,8 +483,8 @@ template <typename _Tp, size_t _Np>
   __is_avx512_pd()
   {
     return __have_avx512f
-	   && is_same_v<_Tp,
-			double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
+	   && __is_x86_pd<_Tp>()
+	   && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;
   }
 
 // }}}
@@ -2397,9 +2415,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2422,9 +2440,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2447,9 +2465,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);
@@ -2505,9 +2523,9 @@ template <typename _Abi, typename>
 	    [[maybe_unused]] const auto __yi = __to_intrin(__y);
 	    if constexpr (sizeof(__xi) == 64)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2530,9 +2548,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 32)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -2555,9 +2573,9 @@ template <typename _Abi, typename>
 	      }
 	    else if constexpr (sizeof(__xi) == 16)
 	      {
-		if constexpr (is_same_v<_Tp, float>)
+		if constexpr (__is_x86_ps<_Tp> ())
 		  return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);
-		else if constexpr (is_same_v<_Tp, double>)
+		else if constexpr (__is_x86_pd<_Tp> ())
 		  return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);
 		else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)
 		  return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);
@@ -5021,10 +5039,10 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))
 		     == (1 << _Np) - 1;
 	    else
@@ -5084,9 +5102,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 == __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;
 	    else
 	      return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))
@@ -5120,9 +5138,9 @@ template <typename _Abi, typename>
 		else
 		  return 0 != __testz(__a, __a);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      return (__movemask(__a) & ((1 << _Np) - 1)) == 0;
 	    else
 	      return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))
@@ -5150,13 +5168,13 @@ template <typename _Abi, typename>
 		  = _Abi::template _S_implicit_mask_intrin<_Tp>();
 		return 0 != __testnzc(__a, __b);
 	      }
-	    else if constexpr (is_same_v<_Tp, float>)
+	    else if constexpr (__is_x86_ps<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_ps(__a) & __allbits;
 		return __tmp > 0 && __tmp < __allbits;
 	      }
-	    else if constexpr (is_same_v<_Tp, double>)
+	    else if constexpr (__is_x86_pd<_Tp> ())
 	      {
 		constexpr int __allbits = (1 << _Np) - 1;
 		const auto __tmp = _mm_movemask_pd(__a) & __allbits;

From tkaminsk@gcc.gnu.org  Wed Apr 29 09:42:18 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 29 Apr 2026 09:42:18 +0000 (GMT)
Subject: [gcc r17-199] libstdc++: Test ATOMIC_*_LOCK_FREE macros for
 <stdatomic.h>
Message-ID: <20260429094218.969C64BA2E36@sourceware.org>

https://gcc.gnu.org/g:efe29124c7486a72f23d002e40376fc0f38c21fc

commit r17-199-gefe29124c7486a72f23d002e40376fc0f38c21fc
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 29 09:39:01 2026 +0200

    libstdc++: Test ATOMIC_*_LOCK_FREE macros for <stdatomic.h>
    
    Coverage for LWG 4480, "<stdatomic.h> should provide ATOMIC_CHAR8_T_LOCK_FREE".
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/29_atomics/headers/stdatomic.h/macros.cc:
            Copy of ../atomic/macros.cc with header include changed.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../29_atomics/headers/stdatomic.h/macros.cc       | 96 ++++++++++++++++++++++
 1 file changed, 96 insertions(+)

diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.cc
new file mode 100644
index 000000000000..ec8f877a5636
--- /dev/null
+++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.cc
@@ -0,0 +1,96 @@
+// { dg-do preprocess { target c++23 } }
+
+// Copyright (C) 2008-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <stdatomic.h>
+
+#ifndef ATOMIC_BOOL_LOCK_FREE 
+# error "ATOMIC_BOOL_LOCK_FREE must be a macro"
+#elif ATOMIC_BOOL_LOCK_FREE != 1 && ATOMIC_BOOL_LOCK_FREE != 2
+# error "ATOMIC_BOOL_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_CHAR_LOCK_FREE 
+# error "ATOMIC_CHAR_LOCK_FREE must be a macro"
+#elif ATOMIC_CHAR_LOCK_FREE != 1 && ATOMIC_CHAR_LOCK_FREE != 2
+# error "ATOMIC_CHAR_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifdef _GLIBCXX_USE_CHAR8_T
+# ifndef ATOMIC_CHAR8_T_LOCK_FREE
+#  error "ATOMIC_CHAR8_T_LOCK_FREE must be a macro"
+# elif ATOMIC_CHAR8_T_LOCK_FREE != 1 && ATOMIC_CHAR8_T_LOCK_FREE != 2
+#  error "ATOMIC_CHAR8_T_LOCK_FREE must be 1 or 2"
+# endif
+#endif
+
+#ifndef ATOMIC_CHAR16_T_LOCK_FREE 
+# error "ATOMIC_CHAR16_T_LOCK_FREE must be a macro"
+#elif ATOMIC_CHAR16_T_LOCK_FREE != 1 && ATOMIC_CHAR16_T_LOCK_FREE != 2
+# error "ATOMIC_CHAR16_T_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_CHAR32_T_LOCK_FREE 
+# error "ATOMIC_CHAR32_T_LOCK_FREE must be a macro"
+#elif ATOMIC_CHAR32_T_LOCK_FREE != 1 && ATOMIC_CHAR32_T_LOCK_FREE != 2
+# error "ATOMIC_CHAR32_T_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_WCHAR_T_LOCK_FREE 
+# error "ATOMIC_WCHAR_T_LOCK_FREE must be a macro"
+#elif ATOMIC_WCHAR_T_LOCK_FREE != 1 && ATOMIC_WCHAR_T_LOCK_FREE != 2
+# error "ATOMIC_WCHAR_T_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_SHORT_LOCK_FREE 
+# error "ATOMIC_SHORT_LOCK_FREE must be a macro"
+#elif ATOMIC_SHORT_LOCK_FREE != 1 && ATOMIC_SHORT_LOCK_FREE != 2
+# error "ATOMIC_SHORT_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_INT_LOCK_FREE 
+# error "ATOMIC_INT_LOCK_FREE must be a macro"
+#elif ATOMIC_INT_LOCK_FREE != 1 && ATOMIC_INT_LOCK_FREE != 2
+# error "ATOMIC_INT_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_LONG_LOCK_FREE 
+# error "ATOMIC_LONG_LOCK_FREE must be a macro"
+#elif ATOMIC_LONG_LOCK_FREE != 1 && ATOMIC_LONG_LOCK_FREE != 2
+# error "ATOMIC_LONG_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_LLONG_LOCK_FREE 
+# error "ATOMIC_LLONG_LOCK_FREE must be a macro"
+#elif ATOMIC_LLONG_LOCK_FREE != 1 && ATOMIC_LLONG_LOCK_FREE != 2
+# error "ATOMIC_LLONG_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_POINTER_LOCK_FREE 
+# error "ATOMIC_POINTER_LOCK_FREE must be a macro"
+#elif ATOMIC_POINTER_LOCK_FREE != 1 && ATOMIC_POINTER_LOCK_FREE != 2
+# error "ATOMIC_POINTER_LOCK_FREE must be 1 or 2"
+#endif
+
+#ifndef ATOMIC_FLAG_INIT
+    #error "ATOMIC_FLAG_INIT_must_be_a_macro"
+#endif
+
+#ifndef ATOMIC_VAR_INIT
+    #error "ATOMIC_VAR_INIT_must_be_a_macro"
+#endif

From meissner@gcc.gnu.org  Wed Apr 29 13:52:53 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Wed, 29 Apr 2026 13:52:53 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work244)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260429135253.9DC144BB58BE@sourceware.org>

https://gcc.gnu.org/g:449c82b0c16bb2cd98c4e0b94b01adf999d4c503

commit 449c82b0c16bb2cd98c4e0b94b01adf999d4c503
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Apr 27 21:44:44 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..ab27329ae3a6
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work244 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..3d5a272e5816
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work244, baseline ====================
+
+2026-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-27  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From redi@gcc.gnu.org  Wed Apr 29 14:11:46 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 29 Apr 2026 14:11:46 +0000 (GMT)
Subject: [gcc r16-8822] libstdc++: Update leap seconds expiry to 2026a value
Message-ID: <20260429141146.25CB84BB58B6@sourceware.org>

https://gcc.gnu.org/g:4142043bb8e13e830d06860448842ea63df4ce8b

commit r16-8822-g4142043bb8e13e830d06860448842ea63df4ce8b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update leap seconds expiry to 2026a value
    
    Set the new leap seconds expiry date from the 2026a tzdata release.
    
    This is a partial backport of r17-57-gb8fd759dc61c0a taking only the
    updated leapseconds expiry date, not the tzdata.zi changes. Most users
    get tzdata.zi from /usr/share/zoneinfo/tzdata.zi supplied by the OS, so
    the embedded copy isn't needed. The leap second expiry is hardcoded
    though so updating the value avoids calling into the shared library for
    dates after 2026-06-28 (and before the new expiry, 2026-12-28).
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/std/chrono | 2 +-
 libstdc++-v3/src/c++20/tzdb.cc  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 7c887f56cc23..674f867dcdc7 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3254,7 +3254,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index eb6ac7d07c72..b0fbfc46a6d3 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1256,8 +1256,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-06-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/06/28};
+    // This list is valid until at least 2026-12-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/12/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From meissner@gcc.gnu.org  Wed Apr 29 14:26:47 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Wed, 29 Apr 2026 14:26:47 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work245)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260429142647.F3C914BBC0F0@sourceware.org>

https://gcc.gnu.org/g:42b05b636bd2c765fedf2834613a56e05bce2d43

commit 42b05b636bd2c765fedf2834613a56e05bce2d43
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 29 10:26:19 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..595d3fb32d75
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work245 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..715eb19f3d36
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work245, baseline ====================
+
+2026-04-29   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-04-29  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From gccadmin@gcc.gnu.org  Thu Apr 30 00:16:59 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 30 Apr 2026 00:16:59 +0000 (GMT)
Subject: [gcc r17-216] Daily bump.
Message-ID: <20260430001659.C7A414B920E6@sourceware.org>

https://gcc.gnu.org/g:4695252ee8493236c6267892b52b204c22106d37

commit r17-216-g4695252ee8493236c6267892b52b204c22106d37
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 30 00:16:31 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 457 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/c-family/ChangeLog  |  12 ++
 gcc/c/ChangeLog         |  12 ++
 gcc/cp/ChangeLog        |  42 +++++
 gcc/fortran/ChangeLog   |   9 +
 gcc/testsuite/ChangeLog | 131 ++++++++++++++
 libsanitizer/ChangeLog  |   5 +
 libstdc++-v3/ChangeLog  |  27 +++
 9 files changed, 696 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8ec41237655d..f331efbdc127 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,460 @@
+2026-04-29  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/113379
+	* match.pd (min(a,b) {<=,>,<,>=} max(a,b)): New patterns.
+
+2026-04-29  John David Anglin  <danglin@gcc.gnu.org>
+
+	* doc/install.texi (hppa64-hp-hpux11*): Remove incorrect
+	statement.
+
+2026-04-29  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	* config/aarch64/aarch64.opt (mpc-relative-literal-loads):
+	Deprecate.
+	* config/aarch64/aarch64.cc (aarch64_override_options):
+	Add deprecated warning for -mpc-relative-literal-loads.
+	* doc/invoke.texi (mpc-relative-literal-loads): Update docs.
+
+2026-04-29  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	* config/aarch64/aarch64.h (HAS_LONG_COND_BRANCH): Unused, remove.
+	(HAS_LONG_UNCOND_BRANCH): unused, remove.
+	* config/aarch64/aarch64.cc (aarch64_use_pseudo_pic_reg): Declare.
+	(aarch64_rtx_costs): Update.
+	(aarch64_override_options_after_change_1): Likewise.
+	(initialize_aarch64_code_model): Simplify.
+	(aarch64_classify_tls_symbol): Likewise.
+	(aarch64_classify_symbol): Simplify, remove duplicated code.
+	(aarch64_asm_preferred_eh_data_format): Update.
+	(aarch64_use_pseudo_pic_reg): Update.
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):
+	Remove uses of AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC,
+	and AARCH64_CMODEL_SMALL_SPIC.
+	* config/aarch64/aarch64-opts.h (aarch64_code_model):
+	Remove AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC and
+	AARCH64_CMODEL_SMALL_SPIC.
+
+2026-04-29  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* lra-remat.cc (do_remat): Use the right nregs for pseudo hard reg
+	when updating live hard regs.
+
+2026-04-29  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* lra-remat.cc (reg_overlap_for_remat_p): Use the right mode for
+	regno2.
+
+2026-04-29  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-conflicts.cc (build_object_conflicts): Use the right
+	conflicting allocno.
+
+2026-04-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125080
+	* tree-vect-slp.cc (vect_bb_slp_mark_stmts_vectorized): Only
+	add instance root stmts to scalar coverage if they do not
+	appear in externs.
+
+2026-04-29  Xin Liu  <liulxx@hygon.cn>
+	    Zhaoling Bao  <baozhaoling@hygon.cn>
+
+	* common/config/i386/cpuinfo.h (get_hygon_cpu): Detect the specific
+	type of HYGON CPU and return HYGON CPU name.
+	(cpu_indicator_init): Handle HYGON CPU.
+	* common/config/i386/i386-common.cc (processor_names): Add HYGON
+	C86-4G processors c86-4g-m{4,6,7}.
+	(processor_alias_table): Add hygon, hygonfam18h and c86-4g-m{4,6,7}
+	entries.
+	(ARRAY_SIZE): Update as new entries added.
+	* common/config/i386/i386-cpuinfo.h (enum processor_vendor): Add
+	VENDOR_HYGON.
+	(enum processor_types): Add HYGONFAM18H.
+	(enum processor_subtypes): Add HYGONFAM18H_C86_4G_M{4,6,7}.
+	* config.gcc: Add support for c86_4g_m{4,6,7}.
+	* config/i386/cpuid.h (signature_HYGON_ebx):  Add signature for HYGON.
+	(signature_HYGON_ecx): Ditto.
+	(signature_HYGON_edx): Ditto.
+	* config/i386/driver-i386.cc (host_detect_local_cpu): Support HYGON
+	c86-4g-m4{4,6,7} processors.
+	* config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
+	* config/i386/i386-options.cc (m_C86_4G_M4): New definition.
+	(m_C86_4G_M6): Ditto.
+	(m_C86_4G_M7): Ditto.
+	(m_C86_4G): Ditto.
+	(processor_cost_table): Add cost entries for c86-4g-m4{4,6,7}.
+	* config/i386/i386.cc (ix86_reassociation_width): Add handlings for
+	PROCESSOR_C86_4G_M{4,6,7}.
+	* config/i386/i386.h (enum processor_type): Define
+	PROCESSOR_C86_4G_M{4,6,7}.
+	(PTA_C86_4G_M4): New define.
+	(PTA_C86_4G_M6): Ditto.
+	(PTA_C86_4G_M7): Ditto.
+	* config/i386/x86-tune-costs.h (c86_4g_m4_memcpy): New stringop_algs.
+	(c86_4g_m4_cost): New processor_costs.
+	(c86_4g_m6_cost): Ditto.
+	(c86_4g_m7_cost): Ditto.
+	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Handle
+	PROCESSOR_C86_4G_M{4,6,7}.
+	(ix86_adjust_cost): Ditto.
+	* config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Handle m_C86_4G.
+	(X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
+	(X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
+	(X86_TUNE_USE_LEAVE): Ditto.
+	(X86_TUNE_PUSH_MEMORY): Ditto.
+	(X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
+	(X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
+	(X86_TUNE_USE_SAHF): Ditto.
+	(X86_TUNE_USE_BT): Ditto.
+	(X86_TUNE_AVOID_MFENCE): Ditto.
+	(X86_TUNE_USE_FFREEP): Ditto.
+	(X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
+	(X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL): Ditto.
+	(X86_TUNE_SSE_TYPELESS_STORES): Ditto.
+	(X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
+	(X86_TUNE_USE_GATHER_2PARTS): Ditto.
+	(X86_TUNE_USE_GATHER_4PARTS): Ditto.
+	(X86_TUNE_USE_GATHER_8PARTS): Ditto.
+	(X86_TUNE_AVOID_128FMA_CHAINS): Ditto.
+	(X86_TUNE_AVOID_256FMA_CHAINS): Ditto.
+	(X86_TUNE_USE_RCR): Ditto.
+	(X86_TUNE_AVX256_MOVE_BY_PIECES): Handle m_C86_4G_M{4,6}.
+	(X86_TUNE_USE_SCATTER_2PARTS): Handle m_C86_4G_M7.
+	(X86_TUNE_USE_SCATTER_4PARTS): Ditto.
+	(X86_TUNE_USE_SCATTER_8PARTS): Ditto.
+	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Ditto.
+	(X86_TUNE_AVX512_SPLIT_REGS): Ditto.
+	(X86_TUNE_AVX512_MOVE_BY_PIECES): Ditto.
+	(X86_TUNE_AVX512_MASKED_EPILOGUES): Ditto.
+	* doc/extend.texi: Document about hygonfam18h and c86-4g-m{4,6,7}.
+	* doc/invoke.texi: Document about c86-4g-m{4,6,7}.
+	* config/i386/c86-4g-m7.md: New file for c86-4g-m7 scheduling model
+	information.
+	* config/i386/c86-4g.md: New file for c86-4g-m{4,6} scheduling model
+	information.
+	* config/i386/i386.md (cpu attr): Add c86_4g_m{4,6,7}.
+	(c86-4g.md): New include.
+	(c86-4g-m7.md): Ditto.
+	(*cmpi<unord>xf_i387): Set attr c86_decode.
+	(*cmpi<unord><MODEF:mode>): Ditto.
+	(swap<mode>): Ditto.
+	(*swap<mode>): Ditto.
+	(extendhisi2): Ditto.
+	(floathi<mode>2): Ditto.
+	(float<SWI48x:mode>xf2): Ditto.
+	(*float<SWI48:mode><MODEF:mode>2): Ditto.
+	(*floatdi<MODEF:mode>2_i387): Ditto.
+	(*anddi_1_bt): Ditto.
+	(*iordi_1_bts): Ditto.
+	(*xordi_1_btc): Ditto.
+	(*<btsc><mode>): Ditto.
+	(*btr<mode>): Ditto.
+	(*btsq_imm): Ditto.
+	(*btrq_imm): Ditto.
+	(*btcq_imm): Ditto.
+	(*tzcnt<mode>_1): Ditto.
+	(*tzcnt<mode>_1_falsedep): Ditto.
+	(*bsf<mode>_1): Ditto.
+	(*ctz<mode>2_falsedep): Ditto.
+	(*ctzsi2_zext): Ditto.
+	(*ctzsi2_zext_falsedep): Ditto.
+	(bsr_rex64): Ditto.
+	(bsr_rex64_1): Ditto.
+	(bsr_rex64_1_zext): Ditto.
+	(bsr): Ditto.
+	(bsr_1): Ditto.
+	(bsr_zext_1): Ditto.
+	(*bswaphi2_movbe): Ditto.
+	(*bswaphi2): Ditto.
+	(bswaphisi2_lowpart): Ditto.
+	(fpremxf4_i387): Ditto.
+	(fprem1xf4_i387): Ditto.
+	(<sincos>xf2): Ditto.
+	(sincosxf3): Ditto.
+	(fptanxf4_i387): Ditto.
+	(atan2xf3): Ditto.
+	(fyl2xxf3_i387): Ditto.
+	(fyl2xp1xf3_i387): Ditto.
+	(fxtractxf3_i387): Ditto.
+	(*f2xm1xf2_i387): Ditto.
+	(fscalexf4_i387): Ditto.
+	(rintxf2): Ditto.
+	(*movxi_internal_avx512f): Set attr c86_attr.
+	(*movoi_internal_avx): Ditto.
+	(*movti_internal): Ditto.
+	(*movdi_internal): Ditto.
+	(*movsi_internal): Ditto.
+	(*movhi_internal): Ditto.
+	(*movtf_internal): Ditto.
+	(*movdf_internal): Ditto.
+	(*movsf_internal): Ditto.
+	(*zero_extendsidi2): Ditto.
+	(sqrtxf2): Ditto.
+	(<smaxmin:code><mode>3): Ditto.
+	(*ieee_s<ieee_maxmin><mode>3): Ditto.
+	* config/i386/mmx.md (*mmx_maskmovq): Set attr c86_decode.
+	(*mmx_maskmovq): Ditto.
+	(sse_movntq): Set attr c86_attr.
+	(*mmx_blendps): Ditto.
+	(mmx_blendvps): Ditto.
+	(*mmx_pmaddwd): Ditto.
+	(mmx_pblendvb_v8qi): Ditto.
+	(mmx_pblendvb_<mode>): Ditto.
+	(sse4_1_<code>v4qiv4hi2): Ditto.
+	(sse4_1_<code>v2hiv2si2): Ditto.
+	(sse4_1_<code>v2qiv2si2): Ditto.
+	(sse4_1_<code>v2qiv2hi2): Ditto.
+	(*mmx_pinsrd): Ditto.
+	(*mmx_pinsrw): Ditto.
+	(*mmx_pinsrb): Ditto.
+	(*mmx_pextrw): Ditto.
+	(*mmx_pextrw<mode>): Ditto.
+	(*mmx_pextrw_zext): Ditto.
+	(*mmx_pextrb): Ditto.
+	(*mmx_pextrb_zext): Ditto.
+	(*mmx_pblendw64): Ditto.
+	(*mmx_pblendw32): Ditto.
+	(*vec_extractv2si_1): Ditto.
+	(*vec_extractv2si_1_zext): Ditto.
+	(*pinsrw): Ditto.
+	(*pinsrb): Ditto.
+	(*pextrw): Ditto.
+	(*pextrw<mode>): Ditto.
+	(*pextrw_zext): Ditto.
+	(*pextrb): Ditto.
+	(*pextrb_zext): Ditto.
+	(*mmx_psadbw): Ditto.
+	* config/i386/sse.md (ktest<mode>): Set attr c86_decode.
+	(*kortest<mode>): Ditto.
+	(sse_cvtsi2ss<rex64namesuffix><round_name>): Ditto.
+	(sse2_cvtsi2sd): Ditto.
+	(sse2_maskmovdqu): Ditto.
+	(*<sse>_dp<ssemodesuffix><avxsizesuffix>): Ditto.
+	(*<sse4_1_avx2>_mpsadbw): Ditto.
+	(pclmulqdq): Ditto.
+	(<mask_codefor>conflict<mode><mask_name>): Ditto.
+	(<avx512>_blendm<mode>): Set attr c86_attr.
+	(sse2_movnti<mode>): Ditto.
+	(<sse>_movnt<mode>): Ditto.
+	(<sse2>_movnt<mode>): Ditto.
+	(<sse>_rcp<mode>2): Ditto.
+	(sse_vmrcpv4sf2): Ditto.
+	(<mask_codefor>rcp14<mode><mask_name>): Ditto.
+	(srcp14<mode>): Ditto.
+	(srcp14<mode>_mask): Ditto.
+	(<sse>_sqrt<mode>2<mask_name><round_name>): Ditto.
+	(<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): Ditto.
+	(*<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): Ditto.
+	(<mask_codefor>rsqrt14<mode><mask_name>): Ditto.
+	(rsqrt14<mode>): Ditto.
+	(rsqrt14_<mode>_mask"): Ditto.
+	(*<code><mode>3<mask_name><round_saeonly_name>): Ditto.
+	(ieee_<ieee_maxmin><mode>3<mask_name><round_saeonly_name>): Ditto.
+	(*<sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>):
+	Ditto.
+	(<sse>_ieee_vm<ieee_maxmin><mode>3<mask_scalar_name>
+	<round_saeonly_scalar_name>): Ditto.
+	(*ieee_<ieee_maxmin><mode>3): Ditto.
+	(avx_h<insn>v4df3): Ditto.
+	(*sse3_haddv2df3): Ditto.
+	(sse3_hsubv2df3): Ditto.
+	(*sse3_haddv2df3_low): Ditto.
+	(*sse3_hsubv2df3_low): Ditto.
+	(avx_h<insn>v8sf3): Ditto.
+	(sse3_h<insn>v4sf3): Ditto.
+	(*<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): Ditto.
+	(reduces<mode><mask_scalar_name><round_saeonly_scalar_name>): Ditto.
+	(*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Ditto.
+	(<sse>_andnot<mode>3<mask_name>): Ditto.
+	(*<code><mode>3<mask_name>): Ditto.
+	(*andnot<mode>3): Ditto.
+	(<code><mode>3): Ditto.
+	(*<code>tf3): Ditto.
+	(vec_set<mode>_0): Ditto.
+	(@vec_set<mode>_0): Ditto.
+	(*sse4_1_extractps): Ditto.
+	(vec_extract<mode>): Ditto.
+	(<mask_codefor><avx512>_align<mode><mask_name>): Ditto.
+	(avx512bw_pmaddwd512<mode><mask_name>): Ditto.
+	(*avx2_pmaddw): Ditto.
+	(*sse2_pmaddwd): Ditto.
+	(*avx2_<code><mode>3): Ditto.
+	(*avx512f_<code><mode>3<mask_name>): Ditto.
+	(*avx512bw_<code><mode>3<mask_name>): Ditto.
+	(*sse4_1_<code><mode>3<mask_name>): Ditto.
+	(*<code>v8hi3): Ditto.
+	(*<code>v16qi3): Ditto.
+	(*andnot<mode>3_mask): Ditto.
+	(*<code><mode>3): Ditto.
+	(<code>v1ti3): Ditto.
+	(<sse2p4_1>_pinsr<ssemodesuffix>): Ditto.
+	(*<extract_type>_vinsert<shuffletype><extract_suf>_0): Ditto.
+	(<mask_codefor><extract_type>_vinsert<shuffletype><extract_suf>
+	_1<mask_name>): Ditto.
+	(vec_set_lo_<mode><mask_name>): Ditto.
+	(vec_set_hi_<mode><mask_name>): Ditto.
+	(<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Ditto.
+	(avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ditto.
+	(*avx512f_shuf_<shuffletype>64x2_1<mask_name>_1): Ditto.
+	(avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Ditto.
+	(avx512f_shuf_<shuffletype>32x4_1<mask_name>): Ditto.
+	(*avx512f_shuf_<shuffletype>32x4_1<mask_name>_1): Ditto.
+	(*vec_extract<mode>): Ditto.
+	(*vec_extract<PEXTR_MODE12:mode>_zext): Ditto.
+	(*vec_extractv16qi_zext): Ditto.
+	(*vec_extractv4si): Ditto.
+	(*vec_extractv4si_zext): Ditto.
+	(*vec_extractv2di_1): Ditto.
+	(*vec_concatv2si_sse4_1): Ditto.
+	(vec_concatv2di): Ditto.
+	(*<sse2_avx2>_uavg<mode>3<mask_name>): Ditto.
+	(*<sse2_avx2>_psadbw): Ditto.
+	(<sse>_movmsk<ssemodesuffix><avxsizesuffix>): Ditto.
+	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Ditto.
+	(<sse2_avx2>_pmovmskb): Ditto.
+	(*<sse2_avx2>_pmovmskb_zext): Ditto.
+	(*sse2_maskmovdqu): Ditto.
+	(avx2_ph<plusminus_mnemonic>wv16hi3): Ditto.
+	(ssse3_ph<plusminus_mnemonic>wv8hi3): Ditto.
+	(ssse3_ph<plusminus_mnemonic>dv4si3): Ditto.
+	(avx2_ph<plusminus_mnemonic>dv8si3): Ditto.
+	(avx2_pmaddubsw256): Ditto.
+	(avx512bw_pmaddubsw512<mode><mask_name>): Ditto.
+	(ssse3_pmaddubsw128): Ditto.
+	(<ssse3_avx2>_psign<mode>3): Ditto.
+	(ssse3_psign<mode>3): Ditto.
+	(*abs<mode>2): Ditto.
+	(abs<mode>2_mask): Ditto.
+	(abs<mode>2_mask): Ditto.
+	(sse4a_movnt<mode>): Ditto.
+	(sse4a_vmmovnt<mode>): Ditto.
+	(<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Ditto.
+	(<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Ditto.
+	(sse4_1_blendv<ssemodesuffix>): Ditto.
+	(<vi8_sse4_1_avx2_avx512>_movntdqa): Ditto.
+	(<sse4_1_avx2>_pblendvb): Ditto.
+	(sse4_1_pblend<ssemodesuffix>): Ditto.
+	(*avx2_pblend<ssemodesuffix>): Ditto.
+	(avx2_pblendd<mode>): Ditto.
+	(avx2_<code>v16qiv16hi2<mask_name>): Ditto.
+	(avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
+	(sse4_1_<code>v8qiv8hi2<mask_name>): Ditto.
+	(*sse4_1_<code>v8qiv8hi2<mask_name>_1): Ditto.
+	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
+	(avx2_<code>v8qiv8si2<mask_name>): Ditto.
+	(*avx2_<code>v8qiv8si2<mask_name>_1): Ditto.
+	(sse4_1_<code>v4qiv4si2<mask_name>): Ditto.
+	(*sse4_1_<code>v4qiv4si2<mask_name>_1): Ditto.
+	(avx512f_<code>v16hiv16si2<mask_name>): Ditto.
+	(avx2_<code>v8hiv8si2<mask_name>): Ditto.
+	(sse4_1_<code>v4hiv4si2<mask_name>): Ditto.
+	(*sse4_1_<code>v4hiv4si2<mask_name>_1): Ditto.
+	(avx512f_<code>v8qiv8di2<mask_name>): Ditto.
+	(*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
+	(avx2_<code>v4qiv4di2<mask_name>): Ditto.
+	(*avx2_<code>v4qiv4di2<mask_name>_1): Ditto.
+	(sse4_1_<code>v2qiv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2qiv2di2<mask_name>_1): Ditto.
+	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
+	(avx2_<code>v4hiv4di2<mask_name>): Ditto.
+	(*avx2_<code>v4hiv4di2<mask_name>_1): Ditto.
+	(sse4_1_<code>v2hiv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2hiv2di2<mask_name>_1): Ditto.
+	(avx512f_<code>v8siv8di2<mask_name>): Ditto.
+	(avx2_<code>v4siv4di2<mask_name>): Ditto.
+	(sse4_1_<code>v2siv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2siv2di2<mask_name>_1): Ditto.
+	(sse4_1_round<ssescalarmodesuffix>): Ditto.
+	(*sse4_1_round<ssescalarmodesuffix>"): Ditto.
+	(sse4_2_pcmpestri): Ditto.
+	(sse4_2_pcmpestrm): Ditto.
+	(sse4_2_pcmpestr_cconly): Ditto.
+	(sse4_2_pcmpistri): Ditto.
+	(sse4_2_pcmpistrm): Ditto.
+	(sse4_2_pcmpistr_cconly): Ditto.
+	(xop_phadd<u>bw): Ditto.
+	(xop_phadd<u>bd): Ditto.
+	(xop_phadd<u>bq): Ditto.
+	(xop_phadd<u>wd): Ditto.
+	(xop_phadd<u>wq): Ditto.
+	(xop_phadd<u>dq): Ditto.
+	(xop_phsubbw): Ditto.
+	(xop_phsubwd): Ditto.
+	(xop_phsubdq): Ditto.
+	(aesenc): Ditto.
+	(aesenclast): Ditto.
+	(aesdec): Ditto.
+	(aesdeclast): Ditto.
+	(aesimc): Ditto.
+	(aeskeygenassist): Ditto.
+	(<avx2_avx512>_permvar<mode><mask_name>): Ditto.
+	(avx2_perm<mode>_1<mask_name>): Ditto.
+	(<avx512>_permvar<mode><mask_name>): Ditto.
+	(avx512f_perm<mode>_1<mask_name>): Ditto.
+	(<mask_codefor>avx512f_broadcast<mode><mask_name>): Ditto.
+	(avx_vbroadcastf128_<mode>): Ditto.
+	(<mask_codefor>avx512vl_broadcast<mode><mask_name>_1): Ditto.
+	(<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
+	(*<avx512>_vpermi2var<mode>3_mask): Ditto.
+	(<avx512>_vpermt2var<mode>3<sd_maskz_name>): Ditto.
+	(<avx512>_vpermt2var<mode>3_mask): Ditto.
+	(*avx_vperm2f128<mode>_nozero): Ditto.
+	(vec_set_lo_<mode><mask_name>): Ditto.
+	(vec_set_hi_<mode><mask_name>): Ditto.
+	(vec_set_lo_<mode>): Ditto.
+	(vec_set_hi_<mode>): Ditto.
+	(vec_set_lo_v32qi): Ditto.
+	(<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Ditto.
+	(<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
+	(avx_vec_concat<mode>): Ditto.
+	(<avx512>_compress<mode>_mask): Ditto.
+	(compress<mode>_mask): Ditto.
+	(<avx512>_compressstore<mode>_mask): Ditto.
+	(compressstore<mode>_mask): Ditto.
+	(expand<mode>_mask): Ditto.
+	(<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Ditto.
+	(clz<mode>2<mask_name>): Ditto.
+	(vpmadd52<vpmadd52type>v8di): Ditto.
+	(vpmadd52<vpmadd52type><mode>): Ditto.
+	(vpmadd52<vpmadd52type><mode>_maskz_1): Ditto.
+	(vpmadd52<vpmadd52type><mode>_mask): Ditto.
+	(vaesdec_<mode>): Ditto.
+	(vaesdeclast_<mode>): Ditto.
+	(vaesenc_<mode>): Ditto.
+	(vaesenclast_<mode>): Ditto.
+
+2026-04-29  Pan Li  <pan2.li@intel.com>
+
+	* config/riscv/predicates.md: Add ltu to swappable
+	cmp operator.
+	* config/riscv/riscv-v.cc (get_swapped_cmp_rtx_code): Handle
+	the swapped rtx code as well.
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
+	Move obj_nelts/atype computation before bitint_extended handling.  For
+	bitint_big_endian in the bitint_extended handling use size_zero_node
+	only for limb_access_type calls, otherwise use
+	size_int (nelts - obj_nelts) and pass NULL_TREE as first argument to
+	limb_access calls.
+
+2026-04-29  Raghesh Aloor  <Raghesh.Aloor@amd.com>
+
+	* tree-vect-slp.cc (vect_slp_linearize_chain): Optional parameter
+	allow_alt_code added (default true), check added not to follow
+	MINUS_EXPR, when false.
+	(vect_slp_check_for_roots): Calls vect_slp_linearize_chain with
+	parameter allow_alt_code set to false.
+
 2026-04-28  David Malcolm  <dmalcolm@redhat.com>
 
 	PR analyzer/124217
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 9d1459a9cd52..500371a7ade1 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260429
+20260430
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 6851725b2b4b..aa40526bd079 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-29  Julian Brown  <julian@codesourcery.com>
+
+	* c-common.h (c_omp_region_type): Add C_ORT_EXIT_DATA,
+	C_ORT_OMP_EXIT_DATA.
+	(c_omp_instantiate_mappers): Add region type parameter.
+	* c-omp.cc (omp_split_map_kind, omp_join_map_kind,
+	omp_map_decayed_kind): New functions.
+	(omp_instantiate_mapper): Add ORT parameter.  Implement map kind decay
+	for instantiated mapper clauses.
+	(c_omp_instantiate_mappers): Add ORT parameter, pass to
+	omp_instantiate_mapper.
+
 2026-04-28  Jakub Jelinek  <jakub@redhat.com>
 
 	* c-common.cc (c_common_signed_or_unsigned_type): Use
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 305041fb081c..a8edc7f4c450 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,15 @@
+2026-04-29  Julian Brown  <julian@codesourcery.com>
+
+	* c-parser.cc (c_parser_omp_target_data): Instantiate mappers for
+	'omp target data'.
+	(c_parser_omp_target_enter_data): Instantiate mappers for 'omp target
+	enter data'.
+	(c_parser_omp_target_exit_data): Instantiate mappers for 'omp target
+	exit data'.
+	(c_parser_omp_target): Add c_omp_region_type argument to
+	c_omp_instantiate_mappers call.
+	* c-tree.h (c_omp_instantiate_mappers): Remove spurious prototype.
+
 2026-04-28  Jakub Jelinek  <jakub@redhat.com>
 
 	* c-decl.cc (finish_declspecs) <case cts_bitint>: Implement
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 786cb94b48b0..08f64a95e4e5 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,45 @@
+2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125035
+	* module.cc (merge_key): Add iobj_p and xobj_p bits.
+	(trees_out::key_mergeable) <case MK_named>: Set and stream
+	merge_key's iobj_p and xobj_p bits.
+	(check_mergeable_decl) <case FUNCTION_DECL>: Compare merge_key's
+	iobj_p and xobj_p bits with that of the given function.
+	(trees_in::key_mergeable): Stream merge_key's iobj_p and xobj_p
+	bits.
+
+2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124582
+	PR c++/123810
+	* module.cc (check_mergeable_decl) <case TYPE_DECL>: Handle
+	merging a typedef to an unnamed type with the -freflection
+	representation.
+
+2026-04-29  Julian Brown  <julian@codesourcery.com>
+
+	* parser.cc (cp_parser_omp_target_data): Instantiate mappers for 'omp
+	target data'.
+	(cp_parser_omp_target_enter_data): Instantiate mappers for 'omp target
+	enter data'.
+	(cp_parser_omp_target_exit_data): Instantiate mappers for 'omp target
+	exit data'.
+	(cp_parser_omp_target): Add c_omp_region_type argument to
+	c_omp_instantiate_mappers call.
+	* pt.cc (tsubst_omp_clauses): Instantiate mappers for OMP regions other
+	than just C_ORT_OMP_TARGET.
+	(tsubst_expr): Update call to tsubst_omp_clauses for OMP_TARGET_UPDATE,
+	OMP_TARGET_ENTER_DATA, OMP_TARGET_EXIT_DATA stanza.
+	* semantics.cc (cxx_omp_map_array_section): Avoid calling
+	build_array_ref for non-array/non-pointer bases (error reported
+	already).
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (compare_reflection): For REFLECT_BASE use lhs == rhs rather
+	than cp_tree_equal.
+
 2026-04-28  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/124756
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6fc08d9ccedb..e62e800ec3d7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	PR fortran/125021
+	* coarray.cc (check_add_new_comp_handle_array): Prefix internal
+	symbols by two underscores.
+	(create_get_callback): Same.
+	(create_allocated_callback): Same.
+	(create_send_callback): Same.
+
 2026-04-21  Paul Thomas  <pault@gcc.gnu.org>
 
 	PR fortran/117077
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5e7e1f3056b0..c05e82cc90a8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,134 @@
+2026-04-29  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/113379
+	* gcc.dg/tree-ssa/pr113379.c: New test.
+
+2026-04-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* g++.dg/tree-ssa/cond-add-vec-1.C: Add a check to make sure COND_ADD
+	is not there either.
+	* g++.dg/tree-ssa/cond-add-vec-2.C: Change the check for VEC_COND_EXPR
+	to allow for COND_ADD.
+
+2026-04-29  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	* gcc.target/aarch64/pr123791.c: Add -Wno-deprecated.
+	* gcc.target/aarch64/pr78733.c: Likewise.
+	* gcc.target/aarch64/pr79041-2.c: Likewise.
+	* gcc.target/aarch64/pr94530.c: Likewise.
+
+2026-04-29  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125080
+	* gcc.dg/torture/pr125080.c: New testcase.
+
+2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125035
+	* g++.dg/modules/merge-22.h: New test.
+	* g++.dg/modules/merge-22_a.H: New test.
+	* g++.dg/modules/merge-22_b.C: New test.
+
+2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124582
+	PR c++/123810
+	* g++.dg/modules/anon-4.h: New test.
+	* g++.dg/modules/anon-4_a.H: New test.
+	* g++.dg/modules/anon-4_b.C: New test.
+
+2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	PR fortran/125021
+	* gfortran.dg/coarray/pr125021.f90: New test.
+
+2026-04-29  Xin Liu  <liulxx@hygon.cn>
+	    Zhaoling Bao  <baozhaoling@hygon.cn>
+
+	* gcc.target/i386/builtin_target.c: Add handling for HYGON CPUs by
+	validating the vendor and invoking HYGON-specific CPU detection.
+	* gcc.target/i386/funcspec-56.inc: Test function target attribute on
+	{arch,tune}=c86-4g-m{4,6,7}.
+	* g++.target/i386/mv33.C: New test.
+
+2026-04-29  Julian Brown  <julian@codesourcery.com>
+
+	* c-c++-common/gomp/declare-mapper-15.c: New test.
+	* c-c++-common/gomp/declare-mapper-16.c: New test.
+	* g++.dg/gomp/declare-mapper-1.C: Adjust expected scan output.
+
+2026-04-29  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+	for vmsgtu.vx.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Add test
+	helper macro.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Add test
+	data for run test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u16.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u32.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u64.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u8.c: New test.
+
+2026-04-29  Raghesh Aloor  <Raghesh.Aloor@amd.com>
+
+	* gcc.dg/vect/bb-slp-sum-of-diffs.c: New test.
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/compare12.C: New test.
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/uglification_plugin.cc (plugin_check_tree): Walk
+	REQUIRES_EXPR_PARMS of REQUIRES_EXPR.
+	(plugin_walk_decl): Walk TEMPLATE_PARMS_CONSTRAINTS using
+	plugin_check_tree.  Walk DECL_INITIAL of CONCEPT_DECL as well.
+	* g++.dg/plugin/uglification.C: Add tests for non-uglified names
+	in lambda parameters, lambda captures and requires expressions.
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/plugin.exp: Set PLUGIN_DEFAULT_REPO.  Add
+	set*module*exports* to plugin_test_list.  Remove *.gcm files
+	at the start and end.
+	* g++.dg/plugin/std_module_exports_plugin.cc: New file.
+	* g++.dg/plugin/std-module-exports-c++20.C: New test.
+	* g++.dg/plugin/std-module-exports-c++23.C: New test.
+	* g++.dg/plugin/std-module-exports-c++26.C: New test.
+
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/plugin.exp (plugin_test_list): Add uglification tests.
+	* g++.dg/plugin/uglification_plugin.cc: New file.
+	* g++.dg/plugin/uglification.C: New test.
+	* g++.dg/plugin/uglification-c++98.C: New test.
+	* g++.dg/plugin/uglification-c++11.C: New test.
+	* g++.dg/plugin/uglification-c++14.C: New test.
+	* g++.dg/plugin/uglification-c++17.C: New test.
+	* g++.dg/plugin/uglification-c++20.C: New test.
+	* g++.dg/plugin/uglification-c++23.C: New test.
+	* g++.dg/plugin/uglification-c++26.C: New test.
+
+2026-04-29  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/shouldfail-abort.c: New.
+	* gcc.dg/shouldfail-exit-neg.c: New.
+	* gcc.dg/shouldfail-exit-pos.c: New.
+	* gcc.dg/shouldfail-return-neg.c: New.
+	* gcc.dg/shouldfail-return-pos.c: New.
+
 2026-04-28  David Malcolm  <dmalcolm@redhat.com>
 
 	PR analyzer/124217
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index a58e7de581be..0fdc7f57e007 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,8 @@
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* sanitizer_common/sanitizer_platform_limits_posix.cpp: Cherry picked
+	from LLVM commit 3dc4fd6dd41100f051a63642f449b16324389c96.
+
 2026-04-28  Maximilian Ciric  <max.ciric@gmail.com>
 
 	* configure.tgt: Enable HWASAN support for RISC-V target.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0a9136386ba9..83250ce01b88 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,30 @@
+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.

From gccadmin@gcc.gnu.org  Thu Apr 30 00:24:36 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 30 Apr 2026 00:24:36 +0000 (GMT)
Subject: [gcc r16-8823] Daily bump.
Message-ID: <20260430002436.97AD54AA0946@sourceware.org>

https://gcc.gnu.org/g:b3a5eb026d3ed7a3499b5d6f03044c2e05477af0

commit r16-8823-gb3a5eb026d3ed7a3499b5d6f03044c2e05477af0
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Apr 30 00:24:22 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          | 2 +-
 libsanitizer/ChangeLog | 8 ++++++++
 libstdc++-v3/ChangeLog | 7 +++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 9d1459a9cd52..500371a7ade1 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260429
+20260430
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 60bc501754c8..f033924b7375 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,11 @@
+2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* sanitizer_common/sanitizer_platform_limits_posix.cpp: Cherry picked
+	from LLVM commit 3dc4fd6dd41100f051a63642f449b16324389c96.
+
 2026-04-21  Marian Buschsieweke  <maribu@users.noreply.github.com>
 
 	PR sanitizer/124248
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 2e325cb25f58..9bb4024e0de6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-29  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.
+
 2026-04-28  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From aoliva@gcc.gnu.org  Thu Apr 30 04:44:44 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Thu, 30 Apr 2026 04:44:44 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] testsuite:
 semaphore/try_acquire_until: reorder clock::now calls
Message-ID: <20260430044444.E4C0E4A97360@sourceware.org>

https://gcc.gnu.org/g:de57a2518b877444b03aecd389acfcc911c6e06b

commit de57a2518b877444b03aecd389acfcc911c6e06b
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Apr 29 22:27:00 2026 -0300

    testsuite: semaphore/try_acquire_until: reorder clock::now calls
    
    Clock calls on VxWorks are slow, so the odds that the consecutive
    calls of *clock::now() will yield a different result are not
    negligible.  Reordering the calls avoids false positives.
    
    
    for  libstdc++-v3/ChangeLog
    
            * testsuite/30_threads/semaphore/try_acquire_until.cc
            (test01): Reorder calls.

Diff:
---
 libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
index 44b2b90431a4..a22799d88508 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
@@ -43,8 +43,11 @@ void test01()
   }
 
   {
-    auto const at = std::chrono::system_clock::now() + dur;
+    // Set the base time T0 first, so that even if there's a delay before the
+    // deadline AT is computed, it won't shrink the measured DIFF to the point
+    // of making it seem shorter than the required wait DURation.
     auto const t0 = std::chrono::steady_clock::now();
+    auto const at = std::chrono::system_clock::now() + dur;
     VERIFY( !s.try_acquire_until(at) );
     auto const diff = std::chrono::steady_clock::now() - t0;
     VERIFY( diff >= dur );

From aoliva@gcc.gnu.org  Thu Apr 30 04:44:50 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Thu, 30 Apr 2026 04:44:50 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260430044450.095374A97360@sourceware.org>

https://gcc.gnu.org/g:e2e3dca171e30d7b40fea3bb76ee8000ff8a9f77

commit e2e3dca171e30d7b40fea3bb76ee8000ff8a9f77
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:37 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool at the user-visible class; an assert in the _impl class would
    fuse errors whose malformed type starts a shared tail.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.  Move implementation down.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 142 +++++++++++----------
 .../logical_traits/requirements/junction_neg.cc    |  31 +++++
 2 files changed, 105 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..58923aacd90e 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -213,74 +213,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
   /// @endcond
 
-#ifdef __cpp_lib_logical_traits // C++ >= 17
-
-  /// @cond undocumented
-  template<typename... _Bn>
-    inline constexpr bool __or_v = __or_<_Bn...>::value;
-  template<typename... _Bn>
-    inline constexpr bool __and_v = __and_<_Bn...>::value;
-
-  namespace __detail
-  {
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __disjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
-
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __conjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
-  } // namespace __detail
-  /// @endcond
-
-  template<typename... _Bn>
-    struct conjunction
-    : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct conjunction<>
-    : true_type
-    { };
-
-  template<typename... _Bn>
-    struct disjunction
-    : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct disjunction<>
-    : false_type
-    { };
-
-  template<typename _Pp>
-    struct negation
-    : __not_<_Pp>::type
-    { };
-
-  /** @ingroup variable_templates
-   * @{
-   */
-  template<typename... _Bn>
-    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
-
-  template<typename... _Bn>
-    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
-
-  template<typename _Pp>
-    inline constexpr bool negation_v = negation<_Pp>::value;
-  /// @}
-
-#endif // __cpp_lib_logical_traits
-
   // Forward declarations
   template<typename>
     struct is_object;
@@ -3871,6 +3803,80 @@ template<typename _Ret, typename _Fn, typename... _Args>
 /// @}
 #endif // __cpp_lib_type_trait_variable_templates
 
+#ifdef __cpp_lib_logical_traits // C++ >= 17
+
+  /// @cond undocumented
+  template<typename... _Bn>
+    inline constexpr bool __or_v = __or_<_Bn...>::value;
+  template<typename... _Bn>
+    inline constexpr bool __and_v = __and_<_Bn...>::value;
+
+  namespace __detail
+  {
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __disjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
+
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __conjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
+  } // namespace __detail
+  /// @endcond
+
+  template<typename... _Bn>
+    struct conjunction
+    : __detail::__conjunction_impl<void, _Bn...>::type
+    {
+      using __detail::__conjunction_impl<void, _Bn...>::type::value;
+      static_assert(is_convertible_v<decltype(value), bool>);
+    };
+
+  template<>
+    struct conjunction<>
+    : true_type
+    { };
+
+  template<typename... _Bn>
+    struct disjunction
+    : __detail::__disjunction_impl<void, _Bn...>::type
+    {
+      using __detail::__disjunction_impl<void, _Bn...>::type::value;
+      static_assert(is_convertible_v<decltype(value), bool>);
+    };
+
+  template<>
+    struct disjunction<>
+    : false_type
+    { };
+
+  template<typename _Pp>
+    struct negation
+    : __not_<_Pp>::type
+    { };
+
+  /** @ingroup variable_templates
+   * @{
+   */
+  template<typename... _Bn>
+    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
+
+  template<typename... _Bn>
+    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
+
+  template<typename _Pp>
+    inline constexpr bool negation_v = negation<_Pp>::value;
+  /// @}
+
+#endif // __cpp_lib_logical_traits
+
 #ifdef __cpp_lib_has_unique_object_representations // C++ >= 17 && HAS_UNIQ_OBJ_REP
   /// has_unique_object_representations
   /// @since C++17
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..ff2558d5ce6c
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,31 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+// ctT and dfT test that we don't fuse error messages when the type that
+// doesn't satisfy the requirements start a shared tail of types in the _impl
+// instantiations.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctT; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfT;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfT; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtT;
+
+// { dg-prune-output "static assertion failed|evaluates to false" }

From tkaminsk@gcc.gnu.org  Thu Apr 30 05:48:06 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 30 Apr 2026 05:48:06 +0000 (GMT)
Subject: [gcc r17-217] libstdc++: Rework P0952 generate_cannonical tests.
Message-ID: <20260430054806.DCC9E4A9E062@sourceware.org>

https://gcc.gnu.org/g:a3a46ae2204a5355e649648dcda00c58a39e5075

commit r17-217-ga3a46ae2204a5355e649648dcda00c58a39e5075
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Jan 13 10:35:42 2026 +0100

    libstdc++: Rework P0952 generate_cannonical tests.
    
    This expands on the changes from test fix r16-6710-gda5a5c55284969:
    * test name now reflect the size of the generator range,
    * extracted code repeated between tests was exctracted to run_generator,
    * expanded non-power of two ranges types to cover all IEC559 floating point,
    * select values to test based on the size of mantisa instead of type,
      handling different long double representations.
    
    The test now cover the cases, where mutliple value greater than one are
    produced (and skipped) in the row. To avoid test running infinite loop,
    the number of skips per element is limited by max_skips_per_elem template
    parameter of run_generator.
    
    The values checked in test_2p31m1<double> differs from their old test03<double>
    counterpart, as we now request mantissa - 5 bits for each type (48bits for
    ieee64) instead of previously hardoced 30bits.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
            Updated tests.
    
    Reviewed-by: Nathan Myers <ncm@cantrip.org>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 .../operators/gencanon.cc                          | 328 +++++++++++----------
 1 file changed, 166 insertions(+), 162 deletions(-)

diff --git a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
index 7ef81c656934..ae93ec13b7a3 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc
@@ -15,16 +15,11 @@ struct local_rng : std::mt19937
   static constexpr std::uint64_t min() { return 0; }
   static constexpr std::uint64_t max() { return max_val; }
   std::uint64_t operator()()
-    { return static_cast<std::mt19937&>(*this)() % (max() + 1); }
+  { return std::mt19937::operator()() % (max() + 1); }
+  
   local_rng(std::mt19937 const& arg) : std::mt19937(arg) {}
 };
 
-// Verify P0952R2 implementation requiring a second round-trip
-// if first yields exactly 1. In this test, the RNG delivering
-// 32 bits per call is seeded such that this occurs once on the
-// sixth iteration for float, and not at all for double.
-// However, each double iteration requires two calls to the RNG.
-
 template<typename T>
 int ifloor(T t)
 { return static_cast<int>(std::floor(t)); }
@@ -34,39 +29,40 @@ int ifloor(__float128 t)
 { return static_cast<int>(t); }
 #endif
 
-template <typename T, typename RNG>
-void
-test01(RNG& rng, RNG& rng2, int& skips)
+// Verify P0952R2 implementation requiring a second round-trip
+// if first yields exactly 1. 
+template<typename T, size_t bits,
+	 size_t call_per_elem, size_t max_skips_per_elem,
+	 typename RNG>
+int run_generator(const RNG& rng, int& deviation, int& max, int& rms, int& zeros)
 {
-  constexpr size_t mantissa = std::numeric_limits<T>::digits;
-  constexpr size_t call_per_elem = (mantissa + 31) / 32;
-
-  const auto size = 1000000, buckets = 100;
+  constexpr int iters = 1000000, buckets = 100;
   std::array<int, buckets> histo{};
-  int zero = 0;
-  for (auto i = 0; i != size; ++i) {
-    T sample = std::generate_canonical<T, -1u>(rng);
+
+  RNG rng1(rng), rng2(rng);
+  int skips = 0;
+  for (auto i = 0; i != iters; ++i) {
+    T sample = std::generate_canonical<T, bits>(rng1);
     VERIFY(sample >= T(0.0));
     VERIFY(sample < T(1.0));  // libstdc++/64351
     if (sample == T(0.0)) {
-      ++zero;
+      ++zeros;
     }
     auto bucket = ifloor(sample * buckets);
     ++histo[bucket];
     rng2.discard(call_per_elem);
-    if (rng != rng2) {
-      ++skips;
+    for (int j = 0; j < max_skips_per_elem; ++j) {
+      if (rng1 == rng2)
+	break;
       rng2.discard(call_per_elem);
-      VERIFY(rng == rng2);
+      ++skips;
     }
+    VERIFY(rng1 == rng2);
   }
 
-  if (!std::numeric_limits<T>::is_iec559)
-    return;
-
-  int deviation = 0, max = 0, rms = 0, devsquare = 0;
+  int devsquare = 0;
+  const int expected = iters / buckets;
   for (int i = 0; i < buckets; ++i) {
-    const auto expected = size / buckets;
     auto count = histo[i];
     auto diff = count - expected;
     if (diff < 0) diff = -diff;
@@ -76,26 +72,51 @@ test01(RNG& rng, RNG& rng2, int& skips)
   }
   rms = std::sqrt(devsquare);
 
+  return skips;
+}
+
+// In this test, the RNG delivering 32 bits per call is seeded
+// such that this occurs once on the sixth iteration for float,
+// and not at all for double and other types requiring two
+// calls to the RNG.
+template <typename T>
+void
+test_2p32(const std::mt19937& rng)
+{
+  if (!std::numeric_limits<T>::is_iec559)
+    return;
+
+  constexpr size_t mantissa = std::numeric_limits<T>::digits;
+  constexpr size_t call_per_elem = (mantissa + 31) / 32;
+
+  int deviation = 0, max = 0, rms = 0, zeros = 0;
+  int skips = run_generator<T, -1u, call_per_elem, 1u>
+		(rng, deviation, max, rms, zeros);
+  if (call_per_elem == 1)
+    VERIFY(skips == 1);
+  else // would require constitutive elements with all bits set
+    VERIFY(skips == 0);
+
   switch (mantissa)
   {
   case 24: // ieee32
     VERIFY(deviation == 7032);
     VERIFY(max == 276);
     VERIFY(rms == 906);
-    VERIFY(zero == 0);
+    VERIFY(zeros == 0);
     break;
   case 53: // ieee64
   case 64: // ieee80 
     VERIFY(deviation == 7650);
     VERIFY(max == 259);
     VERIFY(rms == 975);
-    VERIFY(zero == 0);
+    VERIFY(zeros == 0);
     break;
   case 113: // ieee128
     VERIFY(deviation == 9086);
     VERIFY(max == 290);
     VERIFY(rms == 1142);
-    VERIFY(zero == 0);
+    VERIFY(zeros == 0);
     break;
   default:
     VERIFY(false);
@@ -103,158 +124,141 @@ test01(RNG& rng, RNG& rng2, int& skips)
   }
 }
 
-// This one is for use with local_rng
-template <typename T, typename RNG>
+// Uses a generate that emits range of size 10^6.
+// The elements are multiplied and then dividided,
+// skips are more common.
+template <typename T>
 void
-test02(RNG& rng, RNG& rng2,
-  int& deviation, int& max, int& rms, int& zero, int& skips)
+test_10p6(const std::mt19937& rng)
 {
-  const auto size = 1000000, buckets = 100;
-  std::array<int, buckets> histo{};
-  for (auto i = 0; i != size; ++i) {
-    T sample = std::generate_canonical<T, -1u>(rng);
-    VERIFY(sample >= T(0.0));
-    VERIFY(sample < T(1.0));  // libstdc++/64351
-    if (sample == T(0.0)) {
-      ++zero;
-    }
-    auto bucket = static_cast<int>(std::floor(sample * buckets));
-    ++histo[bucket];
-    rng2.discard(2);
-    if (rng != rng2) {
-      ++skips;
-      rng2.discard(2);
-      VERIFY(rng == rng2);
-    }
-  }
-  int devsquare = 0;
-  for (int i = 0; i < buckets; ++i) {
-    const auto expected = size / buckets;
-    auto count = histo[i];
-    auto diff = count - expected;
-    if (diff < 0) diff = -diff;
-    deviation += diff;
-    devsquare += diff * diff;
-    if (diff > max) max = diff;
+  if (!std::numeric_limits<T>::is_iec559)
+    return;
+
+  constexpr size_t mantissa = std::numeric_limits<T>::digits;
+  static_assert(mantissa < 120);
+  constexpr size_t call_per_elem = (mantissa / 20) + 1;
+  const local_rng<999999ULL> lrng{rng};
+
+  int deviation = 0, max = 0, rms = 0, zeros = 0;
+  int skips = run_generator<T, -1u, call_per_elem, 2u>
+		(lrng, deviation, max, rms, zeros);
+
+  switch (mantissa)
+  {
+  case 24: // ieee32
+    VERIFY(skips == 18);
+    VERIFY(deviation == 8146);
+    VERIFY(max == 250);
+    VERIFY(rms == 1021);
+    VERIFY(zeros == 0);
+    break;
+  case 53: // ieee64
+    VERIFY(skips == 211);
+    VERIFY(deviation == 7492);
+    VERIFY(max == 235);
+    VERIFY(rms == 921);
+    VERIFY(zeros == 0);
+    break;
+  case 64: // ieee80 
+    VERIFY(skips == 1);
+    VERIFY(deviation == 7774);
+    VERIFY(max == 250);
+    VERIFY(rms == 958);
+    VERIFY(zeros == 0);
+    break;
+  case 113: // ieee128
+    VERIFY(skips == 3074);
+    VERIFY(deviation == 7568);
+    VERIFY(max == 282);
+    VERIFY(rms == 1001);
+    VERIFY(zeros == 0);
+    break;
+  default:
+    VERIFY(false);
+    break;
   }
-  rms = std::sqrt(devsquare);
 }
 
-// This one is for the edge-case local_rng. It takes a bit count
-// to use that is smaller than the floating point mantissa's.
-template <typename T, unsigned bits, typename RNG>
+// Uses a generate that emits range of size 2^31-1.
+// It takes a bit count to use that is smaller than the floating point mantissa's.
+template <typename T>
 void
-test03(RNG& rng, RNG& rng2,
-  int& deviation, int& max, int& rms, int& zero, int& skips)
+test_2p31m1(const std::mt19937& rng)
 {
-  const auto size = 1000000, buckets = 100;
-  std::array<int, buckets> histo{};
-  for (auto i = 0; i != size; ++i) {
-    T sample = std::generate_canonical<T, bits>(rng);
-    VERIFY(sample >= T(0.0));
-    VERIFY(sample < T(1.0));  // libstdc++/64351
-    if (sample == T(0.0)) {
-      ++zero;
-    }
-    auto bucket = static_cast<int>(std::floor(sample * buckets));
-    ++histo[bucket];
-    rng2.discard(2);
-    if (rng != rng2) {
-      ++skips;
-      rng2.discard(2);
-      VERIFY(rng == rng2);
-    }
-  }
-  int devsquare = 0;
-  for (int i = 0; i < buckets; ++i) {
-    const auto expected = size / buckets;
-    auto count = histo[i];
-    auto diff = count - expected;
-    if (diff < 0) diff = -diff;
-    deviation += diff;
-    devsquare += diff * diff;
-    if (diff > max) max = diff;
+  if (!std::numeric_limits<T>::is_iec559)
+    return;
+
+  constexpr size_t mantissa = std::numeric_limits<T>::digits;
+  constexpr size_t bits = mantissa - 5;
+  static_assert(bits < 124);
+  constexpr size_t call_per_elem = (bits / 31) + 1;
+  const local_rng<0x07ffffffeULL> lrng{rng};
+
+  int deviation = 0, max = 0, rms = 0, zeros = 0;
+  int skips = run_generator<T, bits, call_per_elem, 6u>
+		(lrng, deviation, max, rms, zeros);
+
+  switch (mantissa)
+  {
+  case 24: // ieee32
+    VERIFY(skips == 215);
+    VERIFY(deviation == 7624);
+    VERIFY(max == 217);
+    VERIFY(rms == 933);
+    VERIFY(zeros == 1);
+    break;
+  case 53: // ieee64
+    VERIFY(skips == 62);
+    VERIFY(deviation == 7698);
+    VERIFY(max == 234);
+    VERIFY(rms == 937);
+    VERIFY(zeros == 0);
+    break;
+  case 64: // ieee80 
+    VERIFY(skips == 143342);
+    VERIFY(deviation == 7788);
+    VERIFY(max == 296);
+    VERIFY(rms == 977);
+    VERIFY(zeros == 0);
+    break;
+  case 113: // ieee128
+    VERIFY(skips == 8);
+    VERIFY(deviation == 8824);
+    VERIFY(max == 334);
+    VERIFY(rms == 1086);
+    VERIFY(zeros == 0);
+    break;
+  default:
+    VERIFY(false);
+    break;
   }
-  rms = std::sqrt(devsquare);
 }
 
-void
-test00()
+int main()
 {
   std::mt19937 rng(8890);
   std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
   rng.seed(sequence);
   rng.discard(12 * 629143);
+      
+  test_2p32<float>(rng);
+  test_10p6<float>(rng);
+  test_2p31m1<float>(rng);
+
+  test_2p32<double>(rng);
+  test_10p6<double>(rng);
+  test_2p31m1<double>(rng);
+
+  test_2p32<long double>(rng);
+  test_10p6<long double>(rng);
+  test_2p31m1<long double>(rng);
 
-  { // float
-    int skips{};
-    auto rng2{rng};
-    auto rng3{rng};
-    test01<float>(rng2, rng3, skips);
-    VERIFY(skips == 1);
-  }
-  { // double
-    int skips{};
-    auto rng2{rng};
-    auto rng3{rng};
-    test01<double>(rng2, rng3, skips);
-    VERIFY(skips == 0);
-  }
-  { // long double
-#if __LDBL_MANT_DIG__ != 106 // disable this for IBM double double
-    int skips{};
-    auto rng2{rng};
-    auto rng3{rng};
-    test01<long double>(rng2, rng3, skips);
-    VERIFY(skips == 0);
-#endif
-  }
 #ifndef _GLIBCXX_GENERATE_CANONICAL_STRICT
 #  ifdef __SIZEOF_FLOAT128__
-  {
-    int skips{};
-    auto rng2{rng};
-    auto rng3{rng};
-    test01<__float128>(rng2, rng3, skips);
-    VERIFY(skips == 0);
-  }
+  test_2p32<__float128>(rng);
+  test_10p6<__float128>(rng);
+  test_2p31m1<__float128>(rng);
 #  endif
 #endif
-
-  { // local RNG, returns [0..999'999)
-    int deviation{}, max{}, rms{}, zero{}, skips{};
-    local_rng<999999ULL> rng2{rng};
-    local_rng<999999ULL> rng3{rng};
-    test02<float>(rng2, rng3, deviation, max, rms, zero, skips);
-
-    if (std::numeric_limits<float>::is_iec559)
-    {
-      VERIFY(deviation == 8146);
-      VERIFY(max == 250);
-      VERIFY(rms == 1021);
-      VERIFY(zero == 0);
-    }
-    VERIFY(skips == 18);
-  }
-
-  { // local RNG, returns [0..0x0'7fff'fffe)
-    int deviation{}, max{}, rms{}, zero{}, skips{};
-    local_rng<0x07ffffffeULL> rng2{rng};
-    local_rng<0x07ffffffeULL> rng3{rng};
-    test03<double, 32u>(rng2, rng3, deviation, max, rms, zero, skips);
-
-    if (std::numeric_limits<double>::is_iec559)
-    {
-      VERIFY(deviation == 7820);
-      VERIFY(max == 240);
-      VERIFY(rms == 950);
-      VERIFY(zero == 0);
-    }
-    VERIFY(skips == 0);
-  }
 }
 
-int main()
-{
-  test00();
-}

From gccadmin@gcc.gnu.org  Thu Apr 30 08:34:31 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 30 Apr 2026 08:34:31 +0000 (GMT)
Subject: [gcc r16-8825] Update ChangeLog and version files for release
Message-ID: <20260430083431.6160D436A059@sourceware.org>

https://gcc.gnu.org/g:6afcc4f6da931eb93f3ab001a0dd9650ea71d1ea

commit r16-8825-g6afcc4f6da931eb93f3ab001a0dd9650ea71d1ea
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Apr 30 08:34:22 2026 +0000

    Update ChangeLog and version files for release

Diff:
---
 ChangeLog                         | 4 ++++
 c++tools/ChangeLog                | 4 ++++
 config/ChangeLog                  | 4 ++++
 contrib/ChangeLog                 | 4 ++++
 contrib/header-tools/ChangeLog    | 4 ++++
 contrib/reghunt/ChangeLog         | 4 ++++
 contrib/regression/ChangeLog      | 4 ++++
 fixincludes/ChangeLog             | 4 ++++
 gcc/BASE-VER                      | 2 +-
 gcc/ChangeLog                     | 4 ++++
 gcc/DEV-PHASE                     | 1 -
 gcc/ada/ChangeLog                 | 4 ++++
 gcc/algol68/ChangeLog             | 4 ++++
 gcc/analyzer/ChangeLog            | 4 ++++
 gcc/c-family/ChangeLog            | 4 ++++
 gcc/c/ChangeLog                   | 4 ++++
 gcc/cobol/ChangeLog               | 4 ++++
 gcc/cp/ChangeLog                  | 4 ++++
 gcc/d/ChangeLog                   | 4 ++++
 gcc/fortran/ChangeLog             | 4 ++++
 gcc/go/ChangeLog                  | 4 ++++
 gcc/jit/ChangeLog                 | 4 ++++
 gcc/lto/ChangeLog                 | 4 ++++
 gcc/m2/ChangeLog                  | 4 ++++
 gcc/objc/ChangeLog                | 4 ++++
 gcc/objcp/ChangeLog               | 4 ++++
 gcc/po/ChangeLog                  | 4 ++++
 gcc/rust/ChangeLog                | 4 ++++
 gcc/testsuite/ChangeLog           | 4 ++++
 gnattools/ChangeLog               | 4 ++++
 gotools/ChangeLog                 | 4 ++++
 include/ChangeLog                 | 4 ++++
 libada/ChangeLog                  | 4 ++++
 libatomic/ChangeLog               | 4 ++++
 libbacktrace/ChangeLog            | 4 ++++
 libcc1/ChangeLog                  | 4 ++++
 libcody/ChangeLog                 | 4 ++++
 libcpp/ChangeLog                  | 4 ++++
 libcpp/po/ChangeLog               | 4 ++++
 libdecnumber/ChangeLog            | 4 ++++
 libffi/ChangeLog                  | 4 ++++
 libga68/ChangeLog                 | 4 ++++
 libgcc/ChangeLog                  | 4 ++++
 libgcc/config/avr/libf7/ChangeLog | 4 ++++
 libgcc/config/libbid/ChangeLog    | 4 ++++
 libgcobol/ChangeLog               | 4 ++++
 libgfortran/ChangeLog             | 4 ++++
 libgm2/ChangeLog                  | 4 ++++
 libgomp/ChangeLog                 | 4 ++++
 libgrust/ChangeLog                | 4 ++++
 libiberty/ChangeLog               | 4 ++++
 libitm/ChangeLog                  | 4 ++++
 libobjc/ChangeLog                 | 4 ++++
 libphobos/ChangeLog               | 4 ++++
 libquadmath/ChangeLog             | 4 ++++
 libsanitizer/ChangeLog            | 4 ++++
 libssp/ChangeLog                  | 4 ++++
 libstdc++-v3/ChangeLog            | 4 ++++
 libvtv/ChangeLog                  | 4 ++++
 lto-plugin/ChangeLog              | 4 ++++
 maintainer-scripts/ChangeLog      | 4 ++++
 zlib/ChangeLog                    | 4 ++++
 62 files changed, 241 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4069580a5294..55c51aba2f68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-01  David Faust  <david.faust@oracle.com>
 
 	* MAINTAINERS: Add my bugzilla account.
diff --git a/c++tools/ChangeLog b/c++tools/ChangeLog
index 5afd874fcbe6..9d19e031f4a7 100644
--- a/c++tools/ChangeLog
+++ b/c++tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-06-02  Kito Cheng  <kito.cheng@sifive.com>
 
 	* configure.ac: Don't check `--enable-default-pie`.
diff --git a/config/ChangeLog b/config/ChangeLog
index 92b186f0d7b0..e0a8abb90f09 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-13  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	PR target/69639
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index e1da606fd276..4bb99e76f1d2 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* gcc-changelog/git_update_version.py: Add
diff --git a/contrib/header-tools/ChangeLog b/contrib/header-tools/ChangeLog
index 3875953ab9fb..475cdb9112cc 100644
--- a/contrib/header-tools/ChangeLog
+++ b/contrib/header-tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2024-06-05  Jonathan Wakely  <jwakely@redhat.com>
 
 	* README: Fix spelling and capitalization typos.
diff --git a/contrib/reghunt/ChangeLog b/contrib/reghunt/ChangeLog
index eb8d8d4a6558..93dc8366e081 100644
--- a/contrib/reghunt/ChangeLog
+++ b/contrib/reghunt/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR bootstrap/105831
diff --git a/contrib/regression/ChangeLog b/contrib/regression/ChangeLog
index 82abb1f96566..fe3b94b0d348 100644
--- a/contrib/regression/ChangeLog
+++ b/contrib/regression/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2023-11-23  Hans-Peter Nilsson  <hp@axis.com>
 
 	* btest-gcc.sh (--handle-xpass-as-fail): New option.
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index cffe20394d34..f8ac0ff58140 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-02-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	PR libstdc++/113450
diff --git a/gcc/BASE-VER b/gcc/BASE-VER
index 7141108f17c9..e0228cf18265 100644
--- a/gcc/BASE-VER
+++ b/gcc/BASE-VER
@@ -1 +1 @@
-16.0.1
+16.1.0
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4ef0ac8642f3..326943d7efa9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-27  Richard Biener  <rguenther@suse.de>
 
 	Backported from master:
diff --git a/gcc/DEV-PHASE b/gcc/DEV-PHASE
index 373fbc60bb98..e69de29bb2d1 100644
--- a/gcc/DEV-PHASE
+++ b/gcc/DEV-PHASE
@@ -1 +0,0 @@
-prerelease
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2ccadd470302..443130f736ef 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-20  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/124918
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index df31218f5031..a526518366a1 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-23  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
 
 	Backported from master:
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 055739a4a70b..f462332ef83b 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-16  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	* engine.cc (impl_region_model_context::on_unexpected_tree_code): Print
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index d5036a2ac39d..ef96f8199b20 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-22  Jakub Jelinek  <jakub@redhat.com>
 
 	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index c185fd6bfa3c..6160445b8f98 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-22  Jakub Jelinek  <jakub@redhat.com>
 
 	PR sanitizer/124969
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index a1741e4f2989..81650820003d 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-02  Robert Dubner  <rdubner@symas.com>
 
 	* cobol1.cc (cobol_langhook_handle_option): Handle OPT_Wrecording_mode.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 418015a93e4b..2504d15a2692 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-23  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 4e66d322f157..3f7c78639a59 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* dmd/MERGE: Merge upstream dmd d1fbbb1a2f.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6fc08d9ccedb..7363bfc2439f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Paul Thomas  <pault@gcc.gnu.org>
 
 	PR fortran/117077
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index 1e278ed3b9c7..5b1ba5cfeff3 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* gospec.cc (lang_specific_driver): Switch to HAVE_SOLARIS_LD.
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index c3cd50b51655..964ec392b1ff 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-11  Jakub Jelinek  <jakub@redhat.com>
 
 	* docs/_build/texinfo/libgccjit.texi: Fix comment typo, shold -> should.
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index fb798f446484..0873ad507f1a 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-09  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* Make-lang.in (create_fdas_for_lto1): Use $(AFDO_PROFILER) when passing
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 4f3b364999f7..9fcb2a931597 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 7e54d7f3eca0..764b91069ed9 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
 
 	* objc-act.h (TYPE_OBJC_INFO): Define to info.objc_info
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index bb81b5af8d81..345a9941f96b 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
 
 	* objcp-decl.h (TYPE_OBJC_INFO): Define to info.objc_info
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 0e1a8e6c7552..521f49b6cdb1 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-27  Joseph Myers  <josmyers@redhat.com>
 
 	* sv.po: Update.
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 10dcdb27a0c3..0e272426b954 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-14  jayant chauhan  <0001jayant@gmail.com>
 
 	* backend/rust-compile-item.cc (CompileItem::visit): Do not insert
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1f87e833a311..0a2806e1684d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-27  Richard Biener  <rguenther@suse.de>
 
 	Backported from master:
diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog
index 6dcb5f5cd319..961d7f5d1ceb 100644
--- a/gnattools/ChangeLog
+++ b/gnattools/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-08  Olivier Hainque  <hainque@adacore.com>
 	    Alexandre Oliva  <oliva@adacore.com>
 
diff --git a/gotools/ChangeLog b/gotools/ChangeLog
index 628a67e37b73..1b119a2ffa40 100644
--- a/gotools/ChangeLog
+++ b/gotools/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2024-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile.am (install-exec-local, uninstall-local): Add goals
diff --git a/include/ChangeLog b/include/ChangeLog
index 99f84263f479..1d0f73bf158f 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-02-05  Matthieu Longo  <matthieu.longo@arm.com>
 
 	* doubly-linked-list.h
diff --git a/libada/ChangeLog b/libada/ChangeLog
index 4aa38abb0776..1a51cb6dcb89 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2023-08-07  John Ericson  <git@JohnEricson.me>
 
 	* configure: Regenerate.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 5e6f24ba224b..e4d5c114dbe2 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-02-21  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile.am (all-local): Depend on stmp-libatomic and otherwise
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index 2866e1bb22c6..98e3ddd906b0 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog
index 11eb11a2e51c..6b10e9de460d 100644
--- a/libcc1/ChangeLog
+++ b/libcc1/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-15  Marek Polacek  <polacek@redhat.com>
 	    Jakub Jelinek  <jakub@redhat.com>
 
diff --git a/libcody/ChangeLog b/libcody/ChangeLog
index c5b5479afa6d..1c49c559719e 100644
--- a/libcody/ChangeLog
+++ b/libcody/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
 
 	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 0fe3dbd09577..7ba6a8089c7a 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Marek Polacek  <polacek@redhat.com>
 
 	PR preprocessor/124930
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 38e10b6d70dd..be8a76c15e0b 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-07  Joseph Myers  <josmyers@redhat.com>
 
 	* sr.po: Update.
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 2a04cafe602f..4f97f931443f 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-09  Ben Boeckel  <ben.boeckel@kitware.com>
 
 	* configure: Regenerate.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 7ea25625fdf3..2350449c4e03 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	PR libffi/117635
diff --git a/libga68/ChangeLog b/libga68/ChangeLog
index 25fdb0b09bef..a22bcdb363d7 100644
--- a/libga68/ChangeLog
+++ b/libga68/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-03-21  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* ga68-math.c: New file.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 0b0dc62992e2..1fa1ca35d205 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
 	* config/arm/sfp-exceptions.c: New file.
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index c6e9cc647c88..231eb1c6c9f9 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
 
 	PR target/122222
diff --git a/libgcc/config/libbid/ChangeLog b/libgcc/config/libbid/ChangeLog
index 486bd1507a8e..1430e7bdb350 100644
--- a/libgcc/config/libbid/ChangeLog
+++ b/libgcc/config/libbid/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-10-07  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR target/120691
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index f522db177158..3002eb9a8daa 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-02  Robert Dubner  <rdubner@symas.com>
 
 	* Makefile.am: Include new libgcobol/inspect.cc file.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index f05d112ae960..531707f597e7 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-17  Steven G. Kargl  <kargl@gcc.gnu.org>
 
 	PR libfortran/120431
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 87519a19d224..d8afc7a66f6c 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index b3dc5f4ade33..87f6b156f7bb 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-17  Thomas Schwinge  <tschwinge@baylibre.com>
 
 	* testsuite/libgomp.c/declare-variant-3-sm50.c: New.
diff --git a/libgrust/ChangeLog b/libgrust/ChangeLog
index 4e8b286d8479..4d4a647c0dba 100644
--- a/libgrust/ChangeLog
+++ b/libgrust/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 7de0bb4d2546..9c1666cd7f46 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/124365
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 0b5643508252..38591464b1ed 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-02-12  Pietro Monteiro  <pietro@sociotechnical.xyz>
 	    Jakub Jelinek   <jakub@redhat.com>
 
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 58c07bfff9b6..d8cd98ee066d 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index b2ccfde771c0..71ccf54188b1 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* libdruntime/MERGE: Merge upstream druntime d1fbbb1a2f.
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 06d93467f6c9..79e608b4bd3c 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-01  Jakub Jelinek  <jakub@redhat.com>
 
 	* libquadmath.texi: Bump @copying's copyright year.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index f033924b7375..7fff15b162c4 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-29  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index c4073bed9bed..1e29ef6d66c6 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9bb4024e0de6..74d2a85eb4c6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-04-29  Jonathan Wakely  <jwakely@redhat.com>
 
 	* include/std/chrono (chrono::__detail::__get_leap_second_info):
diff --git a/libvtv/ChangeLog b/libvtv/ChangeLog
index 871456c4b39b..036f06fa9708 100644
--- a/libvtv/ChangeLog
+++ b/libvtv/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index ab80bf987e7e..abc172822dee 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
index 0eee23141338..efb5978d2345 100644
--- a/maintainer-scripts/ChangeLog
+++ b/maintainer-scripts/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2026-01-26  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* update_web_docs_git (MANUALS): Add ga68-coding-guidelines.
diff --git a/zlib/ChangeLog b/zlib/ChangeLog
index da6bd3012fc7..7a0cff16c406 100644
--- a/zlib/ChangeLog
+++ b/zlib/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Release Manager
+
+	* GCC 16.1.0 released.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.

From jakub@gcc.gnu.org  Thu Apr 30 11:10:18 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 30 Apr 2026 11:10:18 +0000 (GMT)
Subject: [gcc r16-8831] libstdc++: Fix up std::is_scalar for std::meta::info
 [PR125024]
Message-ID: <20260430111018.CC5E6436A045@sourceware.org>

https://gcc.gnu.org/g:237521ba8af2fcd69ad87d721d731996a09fca03

commit r16-8831-g237521ba8af2fcd69ad87d721d731996a09fca03
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Apr 27 13:30:58 2026 +0200

    libstdc++: Fix up std::is_scalar for std::meta::info [PR125024]
    
    https://eel.is/c++draft/basic.types.general#9.sentence-1 says that
    std::meta::info and its cv-qualified versions are scalar types too
    (and in https://eel.is/c++draft/basic.fundamental#19.sentence-1
    that they are fundamental types too).
    Now, on the reflection side, eval_is_scalar_type is handled
    in the compiler and uses SCALAR_TYPE_P (type) which includes
    REFLECTION_TYPE_P check and eval_is_fundamental_type includes that
    explicitly too.
    std::is_fundamental uses
       template<typename _Tp>
         struct is_fundamental
         : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,
                        is_null_pointer<_Tp>
     #if __cpp_impl_reflection >= 202506L
                        , is_reflection<_Tp>
     #endif
                        >::type
         { };
    but for std::is_scalar we apparently forgot to include is_reflection.
    
    The following patch fixes that.
    
    2026-04-26  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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 7f4cc8140e3eae85e77c755fc14991456649af7e)

Diff:
---
 libstdc++-v3/include/std/type_traits                   |  6 +++++-
 libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc | 13 +++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 59be925e10a6..1c03c22e8eed 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -871,7 +871,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp>
     struct is_scalar
     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
-                   is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
+                   is_member_pointer<_Tp>, is_null_pointer<_Tp>
+#if __cpp_impl_reflection >= 202506L
+		   , is_reflection<_Tp>
+#endif
+		   >::type
     { };
 
   /// is_compound
diff --git a/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc b/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc
new file mode 100644
index 000000000000..d5ea9a4a5200
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/is_scalar/reflection.cc
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <type_traits>
+#include <testsuite_tr1.h>
+
+void test01()
+{
+  using std::is_scalar;
+  using namespace __gnu_test;
+
+  static_assert(test_category<is_scalar, decltype (^^::)>(true), "");
+}

From redi@gcc.gnu.org  Thu Apr 30 20:44:48 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 30 Apr 2026 20:44:48 +0000 (GMT)
Subject: [gcc r17-237] libstdc++: Add <bits/binders.h> to freestanding headers
 [PR125112]
Message-ID: <20260430204448.B3FBF436F3F4@sourceware.org>

https://gcc.gnu.org/g:d4ca6c0d87626c0e065525a87ea278bedfceb68d

commit r17-237-gd4ca6c0d87626c0e065525a87ea278bedfceb68d
Author: Felix Morgner <felix.morgner@gmail.com>
Date:   Thu Apr 30 17:24:07 2026 +0100

    libstdc++: Add <bits/binders.h> to freestanding headers [PR125112]
    
    The <ranges> header was added to the freestanding headers in
    r16-3575-g1a41e52d7ecb58 but bits/binders.h that it depends on was not
    moved, making <ranges> unusable with --disable-libstdcxx-hosted.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125112
            * include/Makefile.am: Move bits/binders.h from bits_headers to
            bits_freestanding.
            * include/Makefile.in:

Diff:
---
 libstdc++-v3/include/Makefile.am | 2 +-
 libstdc++-v3/include/Makefile.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index e9e46139da2f..ec932181a966 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -129,6 +129,7 @@ bits_freestanding = \
 	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
 	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/binders.h \
 	${bits_srcdir}/boost_concept_check.h \
 	${bits_srcdir}/concept_check.h \
 	${bits_srcdir}/char_traits.h \
@@ -201,7 +202,6 @@ bits_headers = \
 	${bits_srcdir}/basic_ios.tcc \
 	${bits_srcdir}/basic_string.h \
 	${bits_srcdir}/basic_string.tcc \
-	${bits_srcdir}/binders.h \
 	${bits_srcdir}/charconv.h \
 	${bits_srcdir}/chrono.h \
 	${bits_srcdir}/chrono_io.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index f3d2f58dbe42..00ae5209f604 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -487,6 +487,7 @@ bits_freestanding = \
 	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
 	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/binders.h \
 	${bits_srcdir}/boost_concept_check.h \
 	${bits_srcdir}/concept_check.h \
 	${bits_srcdir}/char_traits.h \
@@ -557,7 +558,6 @@ bits_freestanding = \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_ios.tcc \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.tcc \
-@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/binders.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/charconv.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono_io.h \

From redi@gcc.gnu.org  Thu Apr 30 20:45:32 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 30 Apr 2026 20:45:32 +0000 (GMT)
Subject: [gcc r16-8843] libstdc++: Add <bits/binders.h> to freestanding
 headers [PR125112]
Message-ID: <20260430204532.5DB40436F3F4@sourceware.org>

https://gcc.gnu.org/g:b52db041d2beaf11f31339be36305fc9abcf20e7

commit r16-8843-gb52db041d2beaf11f31339be36305fc9abcf20e7
Author: Felix Morgner <felix.morgner@gmail.com>
Date:   Thu Apr 30 17:24:07 2026 +0100

    libstdc++: Add <bits/binders.h> to freestanding headers [PR125112]
    
    The <ranges> header was added to the freestanding headers in
    r16-3575-g1a41e52d7ecb58 but bits/binders.h that it depends on was not
    moved, making <ranges> unusable with --disable-libstdcxx-hosted.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125112
            * include/Makefile.am: Move bits/binders.h from bits_headers to
            bits_freestanding.
            * include/Makefile.in:
    
    (cherry picked from commit d4ca6c0d87626c0e065525a87ea278bedfceb68d)

Diff:
---
 libstdc++-v3/include/Makefile.am | 2 +-
 libstdc++-v3/include/Makefile.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index e9e46139da2f..ec932181a966 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -129,6 +129,7 @@ bits_freestanding = \
 	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
 	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/binders.h \
 	${bits_srcdir}/boost_concept_check.h \
 	${bits_srcdir}/concept_check.h \
 	${bits_srcdir}/char_traits.h \
@@ -201,7 +202,6 @@ bits_headers = \
 	${bits_srcdir}/basic_ios.tcc \
 	${bits_srcdir}/basic_string.h \
 	${bits_srcdir}/basic_string.tcc \
-	${bits_srcdir}/binders.h \
 	${bits_srcdir}/charconv.h \
 	${bits_srcdir}/chrono.h \
 	${bits_srcdir}/chrono_io.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index f3d2f58dbe42..00ae5209f604 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -487,6 +487,7 @@ bits_freestanding = \
 	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
 	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/binders.h \
 	${bits_srcdir}/boost_concept_check.h \
 	${bits_srcdir}/concept_check.h \
 	${bits_srcdir}/char_traits.h \
@@ -557,7 +558,6 @@ bits_freestanding = \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_ios.tcc \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.tcc \
-@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/binders.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/charconv.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono.h \
 @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono_io.h \

From gccadmin@gcc.gnu.org  Fri May  1 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri,  1 May 2026 00:16:54 +0000 (GMT)
Subject: [gcc r17-240] Daily bump.
Message-ID: <20260501001654.A02734BB5906@sourceware.org>

https://gcc.gnu.org/g:2a5b03d40ee9590b4e44ac6a8db0d78e35a91f3e

commit r17-240-g2a5b03d40ee9590b4e44ac6a8db0d78e35a91f3e
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 1 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   4 ++
 contrib/ChangeLog       |   4 ++
 gcc/ChangeLog           | 114 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |  14 ++++++
 gcc/testsuite/ChangeLog |  54 +++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  12 +++++
 7 files changed, 203 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 6e67c1dc4e8e..ec571b7cf9df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Christopher Bazley  <chris.bazley@arm.com>
+
+	* MAINTAINERS: Add myself to write after approval.
+
 2026-04-28  Bohan Lei  <garthlei@linux.alibaba.com>
 
 	* MAINTAINERS: Add myself to write after approval and DCO.
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 162e66ef98e7..96731fa4e2be 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* gennews (files): Add files for GCC 16.
+
 2026-04-22  Jakub Jelinek  <jakub@redhat.com>
 
 	* gcc-changelog/git_update_version.py (active_refs): Add
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f331efbdc127..c7a32f7a056e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,117 @@
+2026-04-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/124878
+	* config/i386/i386.cc (x86_64_int_return_registers): Remove
+	DI_REG and SI_REG.
+	(ix86_function_value_regno_p): Remove DI_REG and SI_REG cases.
+	(function_value_64): Replace X86_64_REGPARM_MAX and
+	X86_64_SSE_REGPARM_MAX with X86_64_MAX_RETURN_NREGS and
+	X86_64_MAX_SSE_RETURN_NREGS for the number of registers used
+	in return values.
+	* config/i386/i386.h (X86_64_MAX_RETURN_NREGS): New.  Defined
+	to 2.
+	(X86_64_MAX_SSE_RETURN_NREGS): Likewise.
+
+2026-04-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125102
+	* config/i386/mmx.md (V_16_32_64:*mov<mode>_imm): Disable
+	16-bit immediate integer store if TARGET_LCP_STALL is true.
+
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* Makefile.in (COVERAGE_FLAGS): Remove obsolete comment.
+
+2026-04-30  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-costs.cc (record_reg_classes): Process correctly case
+	op_class == NO_REGS.
+
+2026-04-30  Vladimir N. Makarov  <vmakarov@redhat.com>
+
+	* ira-color.cc (assign_hard_reg): Use the right allocno mode to
+	call note_conflict.
+
+2026-04-30  Heiko Ei?feldt  <heiko.Eissfeldt@hexco.de>
+
+	PR middle-end/124805
+	* tree-ssa.cc (verify_vssa):
+	replace recursive calls with iteration for lower stack usage
+
+2026-04-30  Tomas H?rdin  <git@haerdin.se>
+
+	* toplev.cc (output_stack_usage_1): Pass RINT_DECL_UNIQUE_NAME
+	instead of PRINT_DECL_NAME to print_decl_identifier.
+
+2026-04-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* match.pd (`(a !=/== b) &\| ((a|b) ==/!= 0)`):
+	Simplify patterns using for loop and remove the `:c`
+	on the inner ne/eq.
+
+2026-04-30  Christopher Bazley  <chris.bazley@arm.com>
+
+	* config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse):
+	Pass &global_options_set as an argument to
+	aarch64_override_options_internal.
+	* config/aarch64/aarch64-protos.h (aarch64_override_options_internal):
+	Add a parameter declaration for opts_set.
+	* config/aarch64/aarch64.cc (aarch64_override_options_internal):
+	Add a parameter declaration for opts_set and use the argument
+	when invoking SET_OPTION_IF_UNSET.
+	(aarch64_override_options): Pass &global_options_set as an argument to
+	aarch64_override_options_internal.
+	(aarch64_option_restore): As above.
+	(aarch64_set_current_function): As above.
+	(aarch64_option_valid_attribute_p): As above.
+	(aarch64_option_valid_version_attribute_p): As above.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125088
+	* tree-vect-slp.cc (vect_bb_slp_scalar_cost): Refactor and
+	simplify.
+	* tree-vect-stmts.cc (vect_nop_conversion_p): Exclude
+	copies with memory accesses.
+
+2026-04-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125026
+	PR target/125032
+	* config/i386/i386-features.cc (ix86_place_single_vector_set):
+	Don't check CONST_VECTOR load size.
+	(replace_vector_const): Handle constant integer load.
+	(x86_cse::x86_cse): Convert CONST_VECTOR load no larger than
+	integer to constant integer load and keep redundant constant
+	integer load.  Generate zero CONST_VECTOR load.
+
+2026-04-30  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+
+	* doc/params.texi: Added --param=max-niter-dominators-walk.
+	* params.opt: Added --param=max-niter-dominators-walk.
+	* tree-ssa-loop-niter.cc (MAX_DOMINATORS_TO_WALK): Removed.
+	(determine_value_range): Updated.
+	(bound_difference): Updated.
+	(simplify_using_initial_conditions): Updated.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120398
+	PR tree-optimization/123603
+	* config/i386/i386.opt (ix86-vect-compare-costs): Default to 1.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	* config/i386/i386.cc (ix86_vector_costs::better_epilogue_loop_than_p):
+	New.  If the other loop suggests this as epilog prefer other.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vector_costs::vinfo): New accessor.
+	* config/i386/i386.cc (ix86_vector_costs::better_main_loop_than_p):
+	Prefer a masked main loop if we can elide enough of (vector)
+	epilog loop iterations.
+
 2026-04-29  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
 
 	PR tree-optimization/113379
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 500371a7ade1..c409c973e9fc 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260430
+20260501
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 17d113140cea..a5ce7a928fb4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/110336
+	* gcc-interface/Makefile.in (COVERAGE_FLAGS): New variable
+	(GCC_LINK_FLAGS): Add $(COVERAGE_FLAGS).
+	(ALL_CFLAGS): Likewise.
+	(enable_host_pie): Fold into single use.
+
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/125044
+	* sem_disp.adb (Check_Controlling_Formals): Apply the same massaging
+	to the result subtype as to the parameter subtypes.
+
 2026-04-22  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/85766
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c05e82cc90a8..3c2b7109cb8d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,57 @@
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/task6.ads, gnat.dg/task6.adb: New test.
+
+2026-04-30  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125026
+	PR target/125032
+	* gcc.target/i386/pr125026.c: New test.
+	* gcc.target/i386/pr125032-1.c: Likewise.
+	* gcc.target/i386/pr125032-2.c: Likewise.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120398
+	PR tree-optimization/123603
+	* gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c: New testcase.
+	* gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c: Adjust.
+	* gcc.target/i386/vect-alignment-peeling-1.c: Likewise.
+	* gcc.target/i386/vect-alignment-peeling-2.c: Likewise.
+	* gcc.target/i386/vect-epilogues-10.c: Add -fno-vect-cost-model.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	* gcc.target/i386/shift-gf2p8affine-1.c: Disable epilogue
+	vectorization.
+	* gcc.target/i386/shift-gf2p8affine-3.c: Likewise.
+	* gcc.target/i386/shift-gf2p8affine-7.c: Likewise.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	* gcc.target/i386/vect-epilogues-2.c: Add
+	--param ix86-vect-compare-costs=0.
+	* gcc.target/i386/vect-epilogues-2b.c: Duplicate from
+	gcc.target/i386/vect-epilogues-2.c, add
+	--param ix86-vect-compare-costs=1 and adjust expected
+	vectorization.
+	* gcc.target/i386/vect-pr113078.c: Likewise.
+	* gcc.target/i386/vect-pr113078b.c: Likewise.
+
+2026-04-30  Richard Biener  <rguenther@suse.de>
+
+	* gcc.target/i386/vect-strided-1.c: Disable vector cost
+	comparison.
+	* gcc.target/i386/vect-strided-2.c: Likewise.
+	* gcc.target/i386/vect-strided-3.c: Likewise.
+	* gcc.target/i386/vect-strided-4.c: Likewise.
+	* gcc.target/i386/vect-strided-1b.c: Copy of
+	gcc.target/i386/vect-strided-1.c, enable vector cost comparison
+	and adjust expected code generation.
+	* gcc.target/i386/vect-strided-2b.c: Likewise.
+	* gcc.target/i386/vect-strided-3b.c: Likewise.
+	* gcc.target/i386/vect-strided-4b.c: Likewise.
+
 2026-04-29  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
 
 	PR tree-optimization/113379
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 83250ce01b88..b7aeb09a39b8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+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:

From gccadmin@gcc.gnu.org  Fri May  1 00:21:17 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri,  1 May 2026 00:21:17 +0000 (GMT)
Subject: [gcc r16-8844] Daily bump.
Message-ID: <20260501002117.6C0F64BB5906@sourceware.org>

https://gcc.gnu.org/g:ef9d7b9e2dcd19831eaa2904b4947eca7dec1734

commit r16-8844-gef9d7b9e2dcd19831eaa2904b4947eca7dec1734
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 1 00:20:46 2026 +0000

    Daily bump.

Diff:
---
 contrib/ChangeLog       |   7 +++
 gcc/ChangeLog           |  53 ++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |   6 +++
 gcc/cp/ChangeLog        |  65 ++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 131 ++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  21 ++++++++
 7 files changed, 284 insertions(+), 1 deletion(-)

diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 4bb99e76f1d2..1e51730fdc1d 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,10 @@
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* gennews (files): Add files for GCC 16.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 326943d7efa9..14bc9c447c01 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,56 @@
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
+	Move obj_nelts/atype computation before bitint_extended handling.  For
+	bitint_big_endian in the bitint_extended handling use size_zero_node
+	only for limb_access_type calls, otherwise use
+	size_int (nelts - obj_nelts) and pass NULL_TREE as first argument to
+	limb_access calls.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* range-op-float.cc (operator_not_equal::fold_range): Call
+	empty_range_varying when not calling frelop_early_resolve.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* config/rs6000/rs6000-c.cc (c_fold_convert): New function.
+	(c_fold_build2_loc): Likewise.
+	(fully_fold_convert): Use c_fold_convert instead of fold_convert.
+	(altivec_build_resolved_builtin): Likewise.  Use c_fold_build2_loc
+	instead of fold_build2.
+	(resolve_vec_mul, resolve_vec_adde_sube, resolve_vec_addec_subec):
+	Use c_fold_build2_loc instead of fold_build2_loc.
+	(resolve_vec_splats, resolve_vec_extract): Use c_fold_convert instead
+	of fold_convert.
+	(resolve_vec_insert): Use c_fold_build2_loc instead of fold_build2.
+	(altivec_resolve_overloaded_builtin): Use c_fold_convert instead
+	of fold_convert.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	PR tree-optimization/124988
+	* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
+	Handle bitint_extend.
+	(bitint_large_huge::lower_addsub_overflow): Fix up comment spelling.
+	For bitint_extended extend the partial limb if any.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 500371a7ade1..c409c973e9fc 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260430
+20260501
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 443130f736ef..fed250461d00 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/125044
+	* sem_disp.adb (Check_Controlling_Formals): Apply the same massaging
+	to the result subtype as to the parameter subtypes.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2504d15a2692..2a9e7617bdb9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,68 @@
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125035
+	* module.cc (merge_key): Add iobj_p and xobj_p bits.
+	(trees_out::key_mergeable) <case MK_named>: Set and stream
+	merge_key's iobj_p and xobj_p bits.
+	(check_mergeable_decl) <case FUNCTION_DECL>: Compare merge_key's
+	iobj_p and xobj_p bits with that of the given function.
+	(trees_in::key_mergeable): Stream merge_key's iobj_p and xobj_p
+	bits.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124582
+	PR c++/123810
+	* module.cc (check_mergeable_decl) <case TYPE_DECL>: Handle
+	merging a typedef to an unnamed type with the -freflection
+	representation.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124953
+	* module.cc (trees_in::tree_node) <tt_nttp_var>: Push the result
+	of get_template_parm_object to post_load_decls.
+	(post_load_processing): Call cp_finish_decl on any not yet
+	completed NTTP objects.
+	* pt.cc (get_template_parm_object): Don't call cp_finish_decl
+	when !check_init.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	* module.cc (trees_out::core_vals) <case PTRMEM_CST>:
+	Stream PTRMEM_CST_LOCATION.
+	<case TRAIT_EXPR>: Stream TRAIT_EXPR_LOCATION.
+	(trees_in::core_vals): As in trees_out::core_vals.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124981
+	* module.cc (trees_in::core_vals) <case PTRMEM_CST>: Use RTU
+	instead of RT to stream PTRMEM_CST_MEMBER.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* reflect.cc (compare_reflection): For REFLECT_BASE use lhs == rhs rather
+	than cp_tree_equal.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0a2806e1684d..e77a8f7ab83b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,134 @@
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125035
+	* g++.dg/modules/merge-22.h: New test.
+	* g++.dg/modules/merge-22_a.H: New test.
+	* g++.dg/modules/merge-22_b.C: New test.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-29  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124582
+	PR c++/123810
+	* g++.dg/modules/anon-4.h: New test.
+	* g++.dg/modules/anon-4_a.H: New test.
+	* g++.dg/modules/anon-4_b.C: New test.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-27  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124953
+	* g++.dg/modules/tpl-nttp-3_a.H: New test.
+	* g++.dg/modules/tpl-nttp-3_b.C: New test.
+
+2026-04-30  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-23  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124981
+	* g++.dg/modules/ptrmem-1_a.C: New test.
+	* g++.dg/modules/ptrmem-1_b.C: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/reflect/compare12.C: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/uglification_plugin.cc (plugin_check_tree): Walk
+	REQUIRES_EXPR_PARMS of REQUIRES_EXPR.
+	(plugin_walk_decl): Walk TEMPLATE_PARMS_CONSTRAINTS using
+	plugin_check_tree.  Walk DECL_INITIAL of CONCEPT_DECL as well.
+	* g++.dg/plugin/uglification.C: Add tests for non-uglified names
+	in lambda parameters, lambda captures and requires expressions.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/plugin.exp: Set PLUGIN_DEFAULT_REPO.  Add
+	set*module*exports* to plugin_test_list.  Remove *.gcm files
+	at the start and end.
+	* g++.dg/plugin/std_module_exports_plugin.cc: New file.
+	* g++.dg/plugin/std-module-exports-c++20.C: New test.
+	* g++.dg/plugin/std-module-exports-c++23.C: New test.
+	* g++.dg/plugin/std-module-exports-c++26.C: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* g++.dg/plugin/plugin.exp (plugin_test_list): Add uglification tests.
+	* g++.dg/plugin/uglification_plugin.cc: New file.
+	* g++.dg/plugin/uglification.C: New test.
+	* g++.dg/plugin/uglification-c++98.C: New test.
+	* g++.dg/plugin/uglification-c++11.C: New test.
+	* g++.dg/plugin/uglification-c++14.C: New test.
+	* g++.dg/plugin/uglification-c++17.C: New test.
+	* g++.dg/plugin/uglification-c++20.C: New test.
+	* g++.dg/plugin/uglification-c++23.C: New test.
+	* g++.dg/plugin/uglification-c++26.C: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* gcc.c-torture/compile/pr125039.c: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-27  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124988
+	* gcc.dg/torture/bitint-95.c: Add bitint effective targets and
+	guard parts of test which need _BitInt(192) support with
+	__BITINT_MAXWIDTH__ >= 192.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* g++.target/powerpc/pr124133-1.C: New test.
+	* g++.target/powerpc/pr124133-2.C: New test.
+
+2026-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/123635
+	PR tree-optimization/124988
+	* gcc.dg/torture/bitint-91.c: New test.
+	* gcc.dg/torture/bitint-92.c: New test.
+	* gcc.dg/torture/bitint-93.c: New test.
+	* gcc.dg/torture/bitint-94.c: New test.
+	* gcc.dg/torture/bitint-95.c: New test.
+
+2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/task6.ads, gnat.dg/task6.adb: New test.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 74d2a85eb4c6..bb07f05e657c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,24 @@
+2026-04-30  Felix Morgner  <felix.morgner@gmail.com>
+
+	Backported from master:
+	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  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	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-30  Release Manager
 
 	* GCC 16.1.0 released.

From redi@gcc.gnu.org  Fri May  1 11:42:13 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri,  1 May 2026 11:42:13 +0000 (GMT)
Subject: [gcc r17-246] libstdc++: Do not assume URBG::result_type exists
 [PR121919]
Message-ID: <20260501114213.4C9984A97362@sourceware.org>

https://gcc.gnu.org/g:0a2b9dc9655f12e43a0e67f26ea21ff4f4e038fe

commit r17-246-g0a2b9dc9655f12e43a0e67f26ea21ff4f4e038fe
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 13:27:48 2026 +0100

    libstdc++: Do not assume URBG::result_type exists [PR121919]
    
    The ranges::sample and ranges::shuffle algorithms are supposed to work
    with types which model std::uniform_random_bit_generator, which means
    they should not assume that G::result_type is present. That isn't needed
    to satisfy the concept. Change the algorithms to use decltype(__g())
    instead of using result_type.
    
    This isn't sufficient to fix the bug though, because those algorithms
    use std::uniform_int_distribution and that class template's operator()
    overloads depend on the more restrictive uniform random bit generator
    requirements, which do include the presence of a nested result_type
    member.
    
    We need to change std::uniform_int_distribution to also use decltype
    instead of the nested result_type, even though the standard says that
    std::uniform_int_distribution is allowed to assume that result_type
    exists.
    
    There's yet another problem, which is that a type that returns random
    bool values can model the concept, but doesn't meet the named
    requirements and can't be used with std::uniform_int_distribution. That
    isn't addressed by this change.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Nathan Myers <nmyers@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  7 ++----
 libstdc++-v3/include/bits/uniform_int_dist.h       |  4 ++--
 .../testsuite/25_algorithms/sample/121919.cc       | 28 ++++++++++++++++++++++
 .../testsuite/25_algorithms/shuffle/121919.cc      | 25 +++++++++++++++++++
 4 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 0d1928d52a2f..4330d3e70b84 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1850,8 +1850,7 @@ namespace ranges
 	    using __distrib_type = uniform_int_distribution<_Size>;
 	    using __param_type = typename __distrib_type::param_type;
 	    using _USize = __detail::__make_unsigned_like_t<_Size>;
-	    using __uc_type
-	      = common_type_t<typename remove_reference_t<_Gen>::result_type, _USize>;
+	    using __uc_type = common_type_t<decltype(__g()), _USize>;
 
 	    if (__first == __last)
 	      return __out;
@@ -1964,9 +1963,7 @@ namespace ranges
 	using __ud_type = __detail::__make_unsigned_like_t<_DistanceType>;
 	using __distr_type = std::uniform_int_distribution<__ud_type>;
 	using __p_type = typename __distr_type::param_type;
-
-	using __uc_type
-	  = common_type_t<typename remove_reference_t<_Gen>::result_type, __ud_type>;
+	using __uc_type = common_type_t<decltype(__g()), __ud_type>;
 
 	if constexpr (sized_sentinel_for<_Sent, _Iter>)
 	  {
diff --git a/libstdc++-v3/include/bits/uniform_int_dist.h b/libstdc++-v3/include/bits/uniform_int_dist.h
index dcf763ae7649..9c5514c7c138 100644
--- a/libstdc++-v3/include/bits/uniform_int_dist.h
+++ b/libstdc++-v3/include/bits/uniform_int_dist.h
@@ -288,7 +288,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       operator()(_UniformRandomBitGenerator& __urng,
 		 const param_type& __param)
       {
-	typedef typename _UniformRandomBitGenerator::result_type _Gresult_type;
+	typedef decltype(__urng()) _Gresult_type;
 	typedef typename make_unsigned<result_type>::type __utype;
 	typedef typename common_type<_Gresult_type, __utype>::type __uctype;
 
@@ -386,7 +386,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		      const param_type& __param)
       {
 	__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
-	typedef typename _UniformRandomBitGenerator::result_type _Gresult_type;
+	typedef decltype(__urng()) _Gresult_type;
 	typedef typename make_unsigned<result_type>::type __utype;
 	typedef typename common_type<_Gresult_type, __utype>::type __uctype;
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc
new file mode 100644
index 000000000000..9fdfbf560c71
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc
@@ -0,0 +1,28 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 121919 ranges::sample assumes a uniform_random_bit_generator
+// provides result_type
+
+#include <algorithm>
+#include <testsuite_iterators.h>
+
+struct G
+{
+  constexpr static unsigned min() { return 0;  }
+  constexpr static unsigned max() { return 10; }
+  unsigned operator()() const;
+};
+
+static_assert(std::uniform_random_bit_generator<G>);
+
+void
+test_pr121919()
+{
+  int i2[2]{ 1, 2 };
+  __gnu_test::test_random_access_range from(i2);
+  int i1[1];
+  __gnu_test::test_random_access_range to(i1);
+  std::ranges::sample(from, std::ranges::begin(to), 1, G{});
+  std::ranges::sample(std::ranges::begin(from), std::ranges::end(to),
+		      std::ranges::begin(to), 1, G{});
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc
new file mode 100644
index 000000000000..9425394c50ee
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc
@@ -0,0 +1,25 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 121919 ranges::shuffle assumes a uniform_random_bit_generator
+// provides result_type
+
+#include <algorithm>
+#include <testsuite_iterators.h>
+
+struct G
+{
+  constexpr static unsigned min() { return 0;  }
+  constexpr static unsigned max() { return 10; }
+  unsigned operator()() const;
+};
+
+static_assert(std::uniform_random_bit_generator<G>);
+
+void
+test_pr121919()
+{
+  int arr[2]{ 1, 2 };
+  __gnu_test::test_random_access_range r(arr);
+  std::ranges::shuffle(r, G{});
+  std::ranges::shuffle(std::ranges::begin(r), std::ranges::end(r), G{});
+}

From redi@gcc.gnu.org  Fri May  1 12:31:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri,  1 May 2026 12:31:33 +0000 (GMT)
Subject: [gcc r17-247] libstdc++: Improve Doxygen comments for <iterator>
 contents
Message-ID: <20260501123133.752F3437420C@sourceware.org>

https://gcc.gnu.org/g:8050bda5ec6892c312bfaafa753532cba7b54d8c

commit r17-247-g8050bda5ec6892c312bfaafa753532cba7b54d8c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 1 12:15:17 2026 +0100

    libstdc++: Improve Doxygen comments for <iterator> contents
    
    Use markdown and suppress unwanted docs for internal helpers.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/bits/stl_iterator.h           |  4 +++
 .../include/bits/stl_iterator_base_funcs.h         | 32 +++++++++++++++-------
 .../include/bits/stl_iterator_base_types.h         | 17 ++++++++----
 3 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index 6439deb608a6..ea083543c1d4 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -2619,6 +2619,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<input_iterator _It> class basic_const_iterator;
 
+  /// @cond undocumented
   namespace __detail
   {
     template<typename _It>
@@ -2646,11 +2647,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       struct __basic_const_iterator_iter_cat<_It>
       { using iterator_category = __iter_category_t<_It>; };
   } // namespace detail
+  /// @endcond
 
   template<input_iterator _It>
     using const_iterator
       = __conditional_t<__detail::__constant_iterator<_It>, _It, basic_const_iterator<_It>>;
 
+  /// @cond undocumented
   namespace __detail
   {
     template<typename _Sent>
@@ -2661,6 +2664,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       struct __const_sentinel<_Sent>
       { using type = const_iterator<_Sent>; };
   } // namespace __detail
+  /// @endcond
 
   template<semiregular _Sent>
     using const_sentinel = typename __detail::__const_sentinel<_Sent>::type;
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
index d85b39365400..2762090c6e48 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
@@ -131,8 +131,10 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
 #endif
 
 #ifdef __glibcxx_concepts
+/// @cond undocumented
 namespace __detail
 {
+
   // Satisfied if ITER_TRAITS(Iter)::iterator_category is valid and is
   // at least as strong as ITER_TRAITS(Iter)::iterator_concept.
   template<typename _Iter>
@@ -149,21 +151,24 @@ namespace __detail
       = input_iterator<_Iter>
 	  && requires { typename __iter_traits<_Iter>::iterator_concept; }
 	  && ! __iter_category_converts_to_concept<_Iter>;
+
 } // namespace __detail
+/// @endcond
 #endif
 
   /**
    *  @brief A generalization of pointer arithmetic.
-   *  @param  __first  An input iterator.
-   *  @param  __last  An input iterator.
+   *  @param  __first,__last Input iterators that form a valid range.
    *  @return  The distance between them.
    *
-   *  Returns @c n such that __first + n == __last.  This requires
-   *  that @p __last must be reachable from @p __first.  Note that @c
-   *  n may be negative.
+   *  Returns `n` such that `__first + n == __last`.
+   *  This requires that `__last` must be reachable from `__first`, or
+   *  for random access iterators either `__last` is reachable from `__first`
+   *  or `__first` is reachable from `__last`. In the latter case, `n`
+   *  may be negative.
    *
-   *  For random access iterators, this uses their @c + and @c - operations
-   *  and are constant time.  For other %iterator classes they are linear time.
+   *  For random access iterators, this uses their `+` and `-` operations
+   *  and is constant time.  For other %iterator classes they are linear time.
   */
   template<typename _InputIterator>
     _GLIBCXX_NODISCARD __attribute__((__always_inline__))
@@ -194,6 +199,8 @@ namespace __detail
 			     std::__iterator_category(__first));
     }
 
+  /// @cond undocumented
+
   template<typename _InputIterator, typename _Distance>
     inline _GLIBCXX14_CONSTEXPR void
     __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
@@ -244,15 +251,17 @@ namespace __detail
     __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete;
 #endif
 
+  /// @endcond
+
   /**
    *  @brief A generalization of pointer arithmetic.
    *  @param  __i  An input iterator.
    *  @param  __n  The @a delta by which to change @p __i.
    *
-   *  This increments @p i by @p n.  For bidirectional and random access
-   *  iterators, @p __n may be negative, in which case @p __i is decremented.
+   *  This increments `i` by `n`.  For bidirectional and random access
+   *  iterators, `__n` may be negative, in which case `__i` is decremented.
    *
-   *  For random access iterators, this uses their @c + and @c - operations
+   *  For random access iterators, this uses their `+` and `-` operations
    *  and are constant time.  For other %iterator classes they are linear time.
   */
   template<typename _InputIterator, typename _Distance>
@@ -316,6 +325,7 @@ namespace __detail
 
 #endif // C++11
 
+  /// @cond undocumented
 #if __glibcxx_algorithm_iterator_requirements // C++ >= 20
   template<typename _Iter>
     consteval auto
@@ -373,6 +383,8 @@ namespace __detail
 #define _GLIBCXX_ITER_MOVE(__it) _GLIBCXX_MOVE(*__it)
 #endif
 
+  /// @endcond
+
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_types.h b/libstdc++-v3/include/bits/stl_iterator_base_types.h
index 9c008276b98f..2366b5b5ce3e 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_types.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_types.h
@@ -122,7 +122,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  used in specializations and overloading.
    *
    *  In particular, there are no default implementations of requirements
-   *  such as @c operator++ and the like.  (How could there be?)
+   *  such as `operator++` and the like.  (How could there be?)
+   *
+   *  @deprecated Deprecated since C++17. The recommended alternative is to
+   *  simply define the typedefs directly in your iterator class.
   */
   template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
            typename _Pointer = _Tp*, typename _Reference = _Tp&>
@@ -144,9 +147,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Traits class for iterators.
    *
    *  This class does nothing but define nested typedefs.  The general
-   *  version simply @a forwards the nested typedefs from the Iterator
-   *  argument.  Specialized versions for pointers and pointers-to-const
-   *  provide tighter, more correct semantics.
+   *  version simply declares aliases for the nested typedefs from the Iterator
+   *  argument.  Partial specializations for pointers define the typedefs
+   *  appropriately for the semantics of pointers.
   */
   template<typename _Iterator>
     struct iterator_traits;
@@ -230,6 +233,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 #endif
 
+  /// @cond undocumented
   /**
    *  This function is not a part of the C++ standard but is syntactic
    *  sugar for internal library use only.
@@ -241,8 +245,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     __iterator_category(const _Iter&)
     { return typename iterator_traits<_Iter>::iterator_category(); }
 
-  ///@}
-
 #if __cplusplus >= 201103L
   template<typename _Iter>
     using __iter_category_t
@@ -281,6 +283,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { enum { __value = __is_base_of(random_access_iterator_tag, _Cat) }; };
 #endif
 
+  /// @endcond
+  /// @}
+
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace

From redi@gcc.gnu.org  Fri May  1 12:31:38 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri,  1 May 2026 12:31:38 +0000 (GMT)
Subject: [gcc r17-248] libstdc++: Suppress Doxygen docs for internals in
 <bits/locale_conv.h>
Message-ID: <20260501123138.954434AA096C@sourceware.org>

https://gcc.gnu.org/g:59cf910a43dca038ddab7655215171577e1df238

commit r17-248-g59cf910a43dca038ddab7655215171577e1df238
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 1 12:36:20 2026 +0100

    libstdc++: Suppress Doxygen docs for internals in <bits/locale_conv.h>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/locale_conv.h: Prevent namespace __detail from
            being documented as part of the Locales topic.

Diff:
---
 libstdc++-v3/include/bits/locale_conv.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libstdc++-v3/include/bits/locale_conv.h b/libstdc++-v3/include/bits/locale_conv.h
index b331d7d67327..5ef557cc1e1f 100644
--- a/libstdc++-v3/include/bits/locale_conv.h
+++ b/libstdc++-v3/include/bits/locale_conv.h
@@ -48,6 +48,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
+  /// @cond undocumented
+
   template<typename _OutStr, typename _InChar, typename _Codecvt,
 	   typename _State, typename _Fn>
     bool
@@ -255,6 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_Tp* _M_ptr;
       };
   }
+  /// @endcond
 
 _GLIBCXX_BEGIN_NAMESPACE_CXX11

From redi@gcc.gnu.org  Fri May  1 12:31:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri,  1 May 2026 12:31:43 +0000 (GMT)
Subject: [gcc r17-249] libstdc++: Tweak Doxygen comments for experimental simd
Message-ID: <20260501123143.C24864A9C031@sourceware.org>

https://gcc.gnu.org/g:bbe8fff16e366976bd95b981c138e5f12caf9010

commit r17-249-gbbe8fff16e366976bd95b981c138e5f12caf9010
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 1 10:58:57 2026 +0100

    libstdc++: Tweak Doxygen comments for experimental simd
    
    I noticed that Doxygen was not documenting the contents of
    <experimental/simd> as part of namespace std, because it didn't know
    about the _GLIBCXX_SIMD_BEGIN_NAMESPACE and _GLIBCXX_SIMD_END_NAMESPACE
    macros which open and close namespace std::experimental::parallelism_v2.
    
    After defining those macros in the Doxygen config, the Doxygen comments
    in experimental/bits/simd.h were causing namespace std to be documented
    as part of the Parallelism TS v2. That's because the preprocessed code
    looks like:
    
    /** @ingroup ts_simd
     * @{
     */
    namespace std::experimental::inline parallelism_v2 {
    
    This causes Doxygen to apply the @ingroup command to all three of
    namespace std, namespace std::experimental, and namespace
    std::experimental::parallelism_v2. I don't know if this is the intended
    behaviour, but it doesn't seem useful so I've opened an issue about it:
    https://github.com/doxygen/doxygen/issues/12114
    
    To workaround this, we can move the _GLIBCXX_SIMD_BEGIN_NAMESPACE macro
    before the @{ group and document it separately with a @namespace
    comment. That makes the @ingroup only apply to the namespace named by
    the @namespace command, not to its enclosing namespaces as well. Moving
    the position of the BEGIN macro also fixes the nesting, as previously we
    had @{ then BEGIN then @} then END. Now we have BEGIN @{ @} END which
    seems preferable.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/doc/doxygen/user.cfg.in          | 2 ++
 libstdc++-v3/include/experimental/bits/simd.h | 6 +++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in
index fc82debd1b4b..9393d5dfb437 100644
--- a/libstdc++-v3/doc/doxygen/user.cfg.in
+++ b/libstdc++-v3/doc/doxygen/user.cfg.in
@@ -2912,6 +2912,8 @@ PREDEFINED             = __cplusplus=202603L \
 			 _GLIBCXX_HAVE_ICONV=1 \
 			 "_GLIBCXX_DOXYGEN_ONLY(X)=X " \
 			 __exception_ptr=__unspecified__ \
+			 "_GLIBCXX_SIMD_BEGIN_NAMESPACE=namespace std::experimental::inline parallelism_v2 {" \
+			 "_GLIBCXX_SIMD_END_NAMESPACE=}" \
 
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index 8c30c8af2688..ce0867fd8eb8 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -55,6 +55,11 @@
 #include <arm_sve.h>
 #endif
 
+/** @namespace std::experimental::parallelism_v2
+ *  @ingroup ts_simd
+ */
+_GLIBCXX_SIMD_BEGIN_NAMESPACE
+
 /** @ingroup ts_simd
  * @{
  */
@@ -78,7 +83,6 @@
  * Variable names:
  * __k: mask object (vector- or bitmask)
  */
-_GLIBCXX_SIMD_BEGIN_NAMESPACE
 
 #if !_GLIBCXX_SIMD_X86INTRIN
 using __m128  [[__gnu__::__vector_size__(16)]] = float;

From jakub@gcc.gnu.org  Fri May  1 15:18:11 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri,  1 May 2026 15:18:11 +0000 (GMT)
Subject: [gcc(refs/vendors/redhat/heads/gcc-16-branch)] Merge commit
 'r16-8852-g100164d1aa600aba59d780841661b20e359ebb0c' into
 redhat/gcc-16-branch
Message-ID: <20260501151811.3271646A9CD6@sourceware.org>

https://gcc.gnu.org/g:f4e68dc3bdc8f1c5d202db92c8c7bcd89c638688

commit f4e68dc3bdc8f1c5d202db92c8c7bcd89c638688
Merge: 1ce031bfa84b 100164d1aa60
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri May 1 17:17:42 2026 +0200

    Merge commit 'r16-8852-g100164d1aa600aba59d780841661b20e359ebb0c' into redhat/gcc-16-branch

Diff:

 ChangeLog                                          |     4 +
 c++tools/ChangeLog                                 |     4 +
 config/ChangeLog                                   |     4 +
 contrib/ChangeLog                                  |    11 +
 contrib/gennews                                    |     1 +
 contrib/header-tools/ChangeLog                     |     4 +
 contrib/reghunt/ChangeLog                          |     4 +
 contrib/regression/ChangeLog                       |     4 +
 fixincludes/ChangeLog                              |     4 +
 gcc/BASE-VER                                       |     2 +-
 gcc/ChangeLog                                      |   252 +
 gcc/DATESTAMP                                      |     2 +-
 gcc/DEV-PHASE                                      |     1 -
 gcc/ada/ChangeLog                                  |    44 +
 gcc/ada/gcc-interface/Makefile.in                  |    45 +-
 gcc/ada/sem_disp.adb                               |    23 +-
 gcc/ada/sem_res.adb                                |    14 +-
 gcc/ada/urealp.adb                                 |    16 +-
 gcc/algol68/ChangeLog                              |    12 +
 gcc/algol68/Make-lang.in                           |     4 +-
 gcc/analyzer/ChangeLog                             |     9 +
 gcc/c-family/ChangeLog                             |    18 +
 gcc/c-family/c-cppbuiltin.cc                       |     2 +-
 gcc/c-family/c-ubsan.cc                            |    12 +-
 gcc/c/ChangeLog                                    |    11 +
 gcc/c/c-typeck.cc                                  |     4 +-
 gcc/cobol/ChangeLog                                |     4 +
 gcc/config.gcc                                     |     2 +-
 gcc/config/aarch64/aarch64-narrow-gp-writes.cc     |    17 +-
 gcc/config/aarch64/aarch64.md                      |     2 +-
 gcc/config/aarch64/tuning_models/generic.h         |     2 +-
 gcc/config/arm/constraints.md                      |    10 +-
 gcc/config/arm/vfp.md                              |     4 +-
 gcc/config/i386/i386-expand.cc                     |     6 +-
 gcc/config/microblaze/microblaze.md                |     6 +
 gcc/config/nvptx/gen-multilib-matches-tests        |    53 +-
 gcc/config/nvptx/nvptx-gen.h                       |     1 +
 gcc/config/nvptx/nvptx-gen.opt                     |     3 +
 gcc/config/nvptx/nvptx-opts.h                      |     1 +
 gcc/config/nvptx/nvptx-sm.def                      |     1 +
 gcc/config/nvptx/nvptx.cc                          |     6 +
 gcc/config/nvptx/nvptx.h                           |     1 +
 gcc/config/nvptx/nvptx.opt                         |     5 +-
 gcc/config/riscv/thead.cc                          |     2 +-
 gcc/config/rs6000/rs6000-c.cc                      |    64 +-
 gcc/cp/ChangeLog                                   |   223 +
 gcc/cp/constexpr.cc                                |    28 +-
 gcc/cp/contracts.cc                                |    12 +
 gcc/cp/cp-gimplify.cc                              |     5 +-
 gcc/cp/cp-tree.h                                   |     2 +-
 gcc/cp/lex.cc                                      |     5 +-
 gcc/cp/module.cc                                   |    65 +-
 gcc/cp/parser.cc                                   |    33 +-
 gcc/cp/pt.cc                                       |    38 +-
 gcc/cp/reflect.cc                                  |    48 +-
 gcc/cse.cc                                         |    18 +
 gcc/d/ChangeLog                                    |    41 +
 gcc/d/d-attribs.cc                                 |    20 +
 gcc/d/d-codegen.cc                                 |    21 +-
 gcc/d/d-tree.h                                     |     1 +
 gcc/d/dmd/MERGE                                    |     2 +-
 gcc/d/dmd/dinterpret.d                             |     4 +-
 gcc/d/dmd/expressionsem.d                          |     2 -
 gcc/d/dmd/hdrgen.d                                 |    13 +-
 gcc/d/expr.cc                                      |    65 +-
 gcc/d/types.cc                                     |    48 +-
 gcc/doc/extend.texi                                |    17 +-
 gcc/doc/gm2.texi                                   |   110 +-
 gcc/doc/invoke.texi                                |     4 +-
 gcc/fortran/ChangeLog                              |    29 +
 gcc/fortran/invoke.texi                            |     4 +-
 gcc/fortran/lang.opt.urls                          |     6 +
 gcc/fortran/trans-expr.cc                          |    12 +-
 gcc/gensupport.cc                                  |     2 +-
 gcc/gimple-crc-optimization.cc                     |    24 +-
 gcc/gimple-lower-bitint.cc                         |   253 +-
 gcc/go/ChangeLog                                   |     4 +
 gcc/ipa-devirt.cc                                  |    86 +-
 gcc/ipa-polymorphic-call.cc                        |     6 +-
 gcc/jit/ChangeLog                                  |     4 +
 gcc/lto/ChangeLog                                  |     4 +
 gcc/m2/ChangeLog                                   |    10 +
 gcc/m2/gm2-compiler/M2Options.mod                  |     2 +
 gcc/objc/ChangeLog                                 |     4 +
 gcc/objcp/ChangeLog                                |     4 +
 gcc/po/ChangeLog                                   |    16 +
 gcc/po/gcc.pot                                     | 12014 ++++++++++---------
 gcc/po/sv.po                                       |  1628 ++-
 gcc/range-op-float.cc                              |     3 +
 gcc/rust/ChangeLog                                 |     4 +
 gcc/testsuite/ChangeLog                            |   513 +
 .../group2/FUNCTION_DATE___TIME_OMNIBUS.cob        |     1 +
 gcc/testsuite/g++.dg/DRs/dr2581-2.C                |     2 +-
 .../contracts/cpp26/expr.prim.lambda.closure.p10.C |    20 +-
 gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C  |     3 +
 gcc/testsuite/g++.dg/cpp26/expansion-stmt41.C      |    28 +
 gcc/testsuite/g++.dg/cpp2a/constexpr-union11.C     |    29 +
 gcc/testsuite/g++.dg/modules/anon-4.h              |     3 +
 gcc/testsuite/g++.dg/modules/anon-4_a.H            |     6 +
 gcc/testsuite/g++.dg/modules/anon-4_b.C            |     6 +
 gcc/testsuite/g++.dg/modules/consteval-1_a.C       |    36 +
 gcc/testsuite/g++.dg/modules/consteval-1_b.C       |     8 +
 gcc/testsuite/g++.dg/modules/merge-22.h            |    39 +
 gcc/testsuite/g++.dg/modules/merge-22_a.H          |     4 +
 gcc/testsuite/g++.dg/modules/merge-22_b.C          |     5 +
 gcc/testsuite/g++.dg/modules/ptrmem-1_a.C          |    21 +
 gcc/testsuite/g++.dg/modules/ptrmem-1_b.C          |    10 +
 gcc/testsuite/g++.dg/modules/tpl-nttp-3_a.H        |    11 +
 gcc/testsuite/g++.dg/modules/tpl-nttp-3_b.C        |     5 +
 gcc/testsuite/g++.dg/plugin/plugin.exp             |    23 +
 .../g++.dg/plugin/std-module-exports-c++20.C       |    11 +
 .../g++.dg/plugin/std-module-exports-c++23.C       |    11 +
 .../g++.dg/plugin/std-module-exports-c++26.C       |    11 +
 .../g++.dg/plugin/std_module_exports_plugin.cc     |   219 +
 gcc/testsuite/g++.dg/plugin/uglification-c++11.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++14.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++17.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++20.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++23.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++26.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification-c++98.C   |     9 +
 gcc/testsuite/g++.dg/plugin/uglification.C         |   163 +
 gcc/testsuite/g++.dg/plugin/uglification_plugin.cc |   364 +
 gcc/testsuite/g++.dg/reflect/compare12.C           |    12 +
 gcc/testsuite/g++.dg/reflect/ctad1.C               |    28 +
 gcc/testsuite/g++.dg/reflect/ctad2.C               |    41 +
 gcc/testsuite/g++.dg/reflect/data_member_spec7.C   |     9 +
 gcc/testsuite/g++.dg/reflect/dep14.C               |     7 +-
 gcc/testsuite/g++.dg/reflect/dep15.C               |    85 +
 gcc/testsuite/g++.dg/reflect/dep16.C               |    28 +
 gcc/testsuite/g++.dg/reflect/error10.C             |     5 +-
 gcc/testsuite/g++.dg/reflect/error13.C             |    30 +
 gcc/testsuite/g++.dg/reflect/feat1.C               |     8 +-
 gcc/testsuite/g++.dg/reflect/feat2.C               |     4 +-
 gcc/testsuite/g++.dg/reflect/feat3.C               |     4 +-
 gcc/testsuite/g++.dg/reflect/identifier_of3.C      |    17 +-
 gcc/testsuite/g++.dg/reflect/mangle3.C             |     2 -
 gcc/testsuite/g++.dg/reflect/mangle4.C             |     5 +-
 gcc/testsuite/g++.dg/reflect/member24.C            |    25 +
 gcc/testsuite/g++.dg/reflect/null6.C               |     8 +
 gcc/testsuite/g++.dg/reflect/pr123612.C            |    13 +-
 gcc/testsuite/g++.dg/reflect/splice12.C            |    21 +
 gcc/testsuite/g++.dg/reflect/splice13.C            |    23 +
 gcc/testsuite/g++.dg/reflect/splice14.C            |    12 +
 gcc/testsuite/g++.dg/reflect/type11.C              |    10 +
 gcc/testsuite/g++.dg/reflect/type9.C               |     2 +-
 gcc/testsuite/g++.dg/torture/pr120098.C            |    47 +
 gcc/testsuite/g++.dg/vect/vect-pr124037.cc         |     2 -
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C       |     4 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C       |     4 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C       |     4 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C       |     4 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C       |     5 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C       |     5 +-
 gcc/testsuite/g++.target/powerpc/pr124133-1.C      |    12 +
 gcc/testsuite/g++.target/powerpc/pr124133-2.C      |    14 +
 gcc/testsuite/gcc.c-torture/compile/pr124643.c     |     8 +
 gcc/testsuite/gcc.c-torture/compile/pr125039.c     |    12 +
 gcc/testsuite/gcc.dg/bitint-129.c                  |    14 +
 gcc/testsuite/gcc.dg/bitintext.h                   |     4 +-
 gcc/testsuite/gcc.dg/hoist-register-pressure-1.c   |     2 +-
 gcc/testsuite/gcc.dg/hoist-register-pressure-2.c   |     2 +-
 gcc/testsuite/gcc.dg/hoist-register-pressure-3.c   |     2 +-
 gcc/testsuite/gcc.dg/match-shift-cmp-3.c           |     6 +-
 gcc/testsuite/gcc.dg/pr125019.c                    |    12 +
 gcc/testsuite/gcc.dg/pr125117.c                    |    31 +
 gcc/testsuite/gcc.dg/strlenopt-97.c                |    33 +
 gcc/testsuite/gcc.dg/torture/bitint-86.c           |     1 -
 gcc/testsuite/gcc.dg/torture/bitint-87.c           |     1 -
 gcc/testsuite/gcc.dg/torture/bitint-88.c           |    95 +
 gcc/testsuite/gcc.dg/torture/bitint-89.c           |    99 +
 gcc/testsuite/gcc.dg/torture/bitint-90.c           |    57 +
 gcc/testsuite/gcc.dg/torture/bitint-91.c           |   140 +
 gcc/testsuite/gcc.dg/torture/bitint-92.c           |   140 +
 gcc/testsuite/gcc.dg/torture/bitint-93.c           |   140 +
 gcc/testsuite/gcc.dg/torture/bitint-94.c           |   140 +
 gcc/testsuite/gcc.dg/torture/bitint-95.c           |    26 +
 gcc/testsuite/gcc.dg/torture/builtin-math-6.c      |    55 +-
 gcc/testsuite/gcc.dg/torture/pr113026-1.c          |     2 +-
 gcc/testsuite/gcc.dg/torture/pr121649.c            |    14 +-
 gcc/testsuite/gcc.dg/ubsan/pr124969-1.c            |    14 +
 gcc/testsuite/gcc.dg/ubsan/pr124969-2.c            |    15 +
 .../vect/complex/fast-math-complex-mls-double.c    |     2 +-
 .../vect/complex/fast-math-complex-mls-float.c     |     2 +-
 gcc/testsuite/gcc.dg/vect/vect-pr124037.c          |     2 +-
 gcc/testsuite/gcc.target/aarch64/crc-1.c           |    24 +
 gcc/testsuite/gcc.target/aarch64/crc-2.c           |    24 +
 gcc/testsuite/gcc.target/aarch64/crc-3.c           |    24 +
 gcc/testsuite/gcc.target/aarch64/crc-4.c           |    24 +
 .../gcc.target/aarch64/sme/streaming_mode_1.c      |    14 +-
 gcc/testsuite/gcc.target/aarch64/sme/za_state_1.c  |    14 +-
 gcc/testsuite/gcc.target/aarch64/sme/za_state_2.c  |    10 +-
 gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c |    16 +-
 gcc/testsuite/gcc.target/arm/pr124933.c            |    17 +
 gcc/testsuite/gcc.target/i386/builtin-memmove-10.c |    32 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-15.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c |     2 +-
 gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c |     2 +-
 gcc/testsuite/gcc.target/i386/pr122021-0.c         |     2 +-
 gcc/testsuite/gcc.target/microblaze/isa/pr103383.c |    20 +
 gcc/testsuite/gcc.target/nvptx/march-map=sm_50.c   |     4 +-
 gcc/testsuite/gcc.target/nvptx/march=sm_50.c       |    19 +
 gcc/testsuite/gcc.target/nvptx/mptx=4.0.c          |    19 +
 gcc/testsuite/gcc.target/riscv/pr124984.c          |    10 +
 gcc/testsuite/gdc.dg/attr_no_split_stack.d         |    21 +
 gcc/testsuite/gdc.dg/pr123411.d                    |    15 +
 gcc/testsuite/gdc.dg/pr124922.d                    |    11 +
 gcc/testsuite/gdc.test/compilable/diag20916.d      |     3 +
 gcc/testsuite/gdc.test/compilable/test11720.d      |    49 +
 gcc/testsuite/gdc.test/compilable/test21039.d      |     5 +
 gcc/testsuite/gdc.test/compilable/test21073.d      |    16 +
 gcc/testsuite/gdc.test/compilable/test21543.d      |   116 +
 gcc/testsuite/gdc.test/compilable/test21637.d      |    26 +
 gcc/testsuite/gdc.test/compilable/test21707.d      |    51 +
 gcc/testsuite/gdc.test/compilable/test23857.d      |    15 +
 gcc/testsuite/gdc.test/compilable/test24055.d      |    15 +
 gcc/testsuite/gdc.test/compilable/test24061.d      |    15 +
 gcc/testsuite/gdc.test/compilable/test5973.d       |    41 +
 gcc/testsuite/gdc.test/compilable/test6777.d       |    11 +
 .../gdc.test/fail_compilation/enum_member.d        |    23 +
 gcc/testsuite/gdc.test/fail_compilation/fail5851.d |    16 +
 .../gdc.test/fail_compilation/finalswitch.d        |    96 +
 .../gdc.test/fail_compilation/mixinexpr.d          |    11 +
 .../named_arguments_struct_literal.d               |    15 +
 .../gdc.test/fail_compilation/test23145.d          |    49 +
 gcc/testsuite/gdc.test/fail_compilation/test8662.d |    38 +
 gcc/testsuite/gdc.test/runnable/test22659.d        |    16 +
 gcc/testsuite/gdc.test/runnable/testconst.d        |    34 +
 .../omp.f95 => goacc-gomp/nesting-fail-1.f95}      |     3 -
 .../omp-108382.f90 => goacc-gomp/pr108382.f90}     |     3 -
 .../{goacc/omp-fixed.f => goacc-gomp/pr63858.f}    |     2 -
 .../gfortran.dg/{goacc => goacc-gomp}/pr93329.f90  |     3 +-
 .../gfortran.dg/{goacc => goacc-gomp}/pr93463.f90  |     2 -
 gcc/testsuite/gfortran.dg/pr117077.f90             |    56 +
 gcc/testsuite/gfortran.dg/pr125117.f90             |    23 +
 .../gfortran.dg/spread_scalar_zerosize.f90         |    29 +
 gcc/testsuite/gnat.dg/specs/float_literal1.ads     |     5 +
 gcc/testsuite/gnat.dg/specs/float_literal2.ads     |     5 +
 gcc/testsuite/gnat.dg/task6.adb                    |    15 +
 gcc/testsuite/gnat.dg/task6.ads                    |    13 +
 gcc/testsuite/lib/target-supports.exp              |     1 +
 gcc/testsuite/rust/compile/compile.exp             |    17 +-
 gcc/testsuite/rust/compile/issue_4402_foo.rs       |     1 +
 .../rust/compile/macros/builtin/builtin_macro.exp  |     3 -
 .../rust/compile/macros/mbe/mbe_macro.exp          |     3 -
 .../rust/compile/macros/proc/proc_macro.exp        |     3 -
 gcc/testsuite/rust/compile/torture/compile.exp     |     3 -
 gcc/testsuite/rust/compile/xfail/xfail.exp         |     3 -
 gcc/tree-ssa-sccvn.cc                              |    10 +-
 gcc/tree-ssa-strlen.cc                             |    13 +-
 gcc/tree-vect-loop.cc                              |     2 +-
 gnattools/ChangeLog                                |     4 +
 gotools/ChangeLog                                  |     4 +
 include/ChangeLog                                  |     4 +
 libada/ChangeLog                                   |     4 +
 libatomic/ChangeLog                                |     4 +
 libbacktrace/ChangeLog                             |     4 +
 libcc1/ChangeLog                                   |     4 +
 libcody/ChangeLog                                  |     4 +
 libcpp/ChangeLog                                   |    10 +
 libcpp/charset.cc                                  |     4 +-
 libcpp/po/ChangeLog                                |     4 +
 libdecnumber/ChangeLog                             |     4 +
 libffi/ChangeLog                                   |     4 +
 libga68/ChangeLog                                  |     4 +
 libgcc/ChangeLog                                   |    12 +
 libgcc/config/arm/sfp-exceptions.c                 |    52 +
 libgcc/config/arm/sfp-machine.h                    |    30 +
 libgcc/config/arm/t-softfp                         |     1 +
 libgcc/config/avr/libf7/ChangeLog                  |     4 +
 libgcc/config/libbid/ChangeLog                     |     4 +
 libgcobol/ChangeLog                                |     4 +
 libgfortran/ChangeLog                              |    24 +
 libgfortran/generated/spread_c10.c                 |     3 +-
 libgfortran/generated/spread_c16.c                 |     3 +-
 libgfortran/generated/spread_c17.c                 |     3 +-
 libgfortran/generated/spread_c4.c                  |     3 +-
 libgfortran/generated/spread_c8.c                  |     3 +-
 libgfortran/generated/spread_i1.c                  |     3 +-
 libgfortran/generated/spread_i16.c                 |     3 +-
 libgfortran/generated/spread_i2.c                  |     3 +-
 libgfortran/generated/spread_i4.c                  |     3 +-
 libgfortran/generated/spread_i8.c                  |     3 +-
 libgfortran/generated/spread_r10.c                 |     3 +-
 libgfortran/generated/spread_r16.c                 |     3 +-
 libgfortran/generated/spread_r17.c                 |     3 +-
 libgfortran/generated/spread_r4.c                  |     3 +-
 libgfortran/generated/spread_r8.c                  |     3 +-
 libgfortran/m4/spread.m4                           |     3 +-
 libgm2/ChangeLog                                   |    18 +
 libgm2/libm2iso/m2rts.h                            |    14 +-
 libgomp/ChangeLog                                  |    22 +
 .../testsuite/libgomp.c/declare-variant-3-sm50.c   |     9 +
 libgomp/testsuite/libgomp.c/declare-variant-3.h    |     8 +
 .../testsuite/libgomp.c/omp_target_is_present.c    |     3 +
 .../{target-var.f90 => pr95551-1.f90}              |     6 +-
 .../testsuite/libgomp.oacc-fortran/pr95551-1.f90   |     4 +
 libgrust/ChangeLog                                 |     4 +
 libiberty/ChangeLog                                |     4 +
 libitm/ChangeLog                                   |     4 +
 libobjc/ChangeLog                                  |     4 +
 libphobos/ChangeLog                                |    16 +
 libphobos/libdruntime/MERGE                        |     2 +-
 .../libdruntime/core/internal/array/capacity.d     |    10 +-
 libphobos/libdruntime/core/sys/posix/sys/stat.d    |     8 +-
 libphobos/libdruntime/gcc/attributes.d             |    16 +
 libquadmath/ChangeLog                              |     4 +
 libsanitizer/ChangeLog                             |    18 +
 .../sanitizer_platform_limits_posix.cpp            |    24 +-
 libssp/ChangeLog                                   |     4 +
 libstdc++-v3/ChangeLog                             |   266 +
 .../post/aarch64-linux-gnu/baseline_symbols.txt    |    65 +
 .../abi/post/i386-linux-gnu/baseline_symbols.txt   |   193 +-
 .../post/i386-solaris/amd64/baseline_symbols.txt   |    65 +
 .../abi/post/i386-solaris/baseline_symbols.txt     |    65 +
 .../abi/post/i486-linux-gnu/baseline_symbols.txt   |    65 +
 .../abi/post/ia64-linux-gnu/baseline_symbols.txt   |    65 +
 .../abi/post/m68k-linux-gnu/baseline_symbols.txt   |    65 +
 .../post/powerpc-linux-gnu/baseline_symbols.txt    |    65 +
 .../powerpc64-linux-gnu/32/baseline_symbols.txt    |    65 +
 .../post/powerpc64-linux-gnu/baseline_symbols.txt  |    65 +
 .../powerpc64le-linux-gnu/baseline_symbols.txt     |    65 +
 .../post/riscv64-linux-gnu/baseline_symbols.txt    |    65 +
 .../abi/post/s390x-linux-gnu/baseline_symbols.txt  |    68 +
 .../abi/post/sparc-solaris/baseline_symbols.txt    |    65 +
 .../sparc-solaris/sparcv9/baseline_symbols.txt     |    65 +
 .../post/sparc64-linux-gnu/32/baseline_symbols.txt |    65 +
 .../post/sparc64-linux-gnu/baseline_symbols.txt    |    65 +
 .../post/x86_64-linux-gnu/32/baseline_symbols.txt  |    65 +
 .../abi/post/x86_64-linux-gnu/baseline_symbols.txt |    65 +
 .../post/x86_64-linux-gnu/x32/baseline_symbols.txt |    65 +
 libstdc++-v3/config/abi/pre/gnu.ver                |     4 +
 libstdc++-v3/doc/html/index.html                   |     4 +-
 libstdc++-v3/doc/html/manual/status.html           |    70 +-
 libstdc++-v3/doc/html/manual/using.html            |     7 +-
 libstdc++-v3/doc/html/manual/using_macros.html     |     9 +
 libstdc++-v3/doc/xml/manual/status_cxx1998.xml     |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2011.xml     |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2014.xml     |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2017.xml     |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2020.xml     |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxx2023.xml     |    56 +-
 libstdc++-v3/doc/xml/manual/status_cxxtr1.xml      |     2 +-
 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml  |     2 +-
 libstdc++-v3/doc/xml/manual/using.xml              |    20 +-
 libstdc++-v3/include/Makefile.am                   |     4 +-
 libstdc++-v3/include/Makefile.in                   |     4 +-
 libstdc++-v3/include/bits/align.h                  |     5 +-
 libstdc++-v3/include/bits/alloc_traits.h           |     2 +-
 libstdc++-v3/include/bits/atomic_wait.h            |    27 +-
 libstdc++-v3/include/bits/chrono_io.h              |     2 +
 libstdc++-v3/include/bits/indirect.h               |     4 +-
 libstdc++-v3/include/bits/ostream_print.h          |   161 +
 libstdc++-v3/include/bits/print.h                  |   351 +
 libstdc++-v3/include/bits/simd_details.h           |     9 -
 libstdc++-v3/include/bits/simd_mask.h              |    17 +-
 libstdc++-v3/include/bits/simd_vec.h               |    22 +-
 libstdc++-v3/include/bits/version.def              |     4 +-
 libstdc++-v3/include/bits/version.h                |     6 +-
 libstdc++-v3/include/std/chrono                    |    18 +-
 libstdc++-v3/include/std/condition_variable        |     2 +
 libstdc++-v3/include/std/format                    |     4 +
 libstdc++-v3/include/std/mdspan                    |     6 +-
 libstdc++-v3/include/std/meta                      |     8 +-
 libstdc++-v3/include/std/optional                  |     7 +
 libstdc++-v3/include/std/ostream                   |   112 +-
 libstdc++-v3/include/std/print                     |   297 +-
 libstdc++-v3/include/std/type_traits               |     6 +-
 libstdc++-v3/src/Makefile.am                       |     6 +-
 libstdc++-v3/src/Makefile.in                       |     6 +-
 libstdc++-v3/src/c++20/atomic.cc                   |    74 +
 libstdc++-v3/src/c++20/tzdb.cc                     |     4 +-
 libstdc++-v3/src/c++23/Makefile.am                 |    45 +-
 libstdc++-v3/src/c++23/Makefile.in                 |    76 +-
 libstdc++-v3/src/c++23/print.cc                    |    13 +-
 libstdc++-v3/src/c++23/std.cc.in                   |     2 +-
 .../testsuite/20_util/is_scalar/reflection.cc      |    13 +
 .../20_util/is_sufficiently_aligned/2_neg.cc       |    12 +
 .../testsuite/20_util/optional/constexpr/124910.cc |    74 +
 .../testsuite/23_containers/mdspan/mdspan.cc       |    19 +
 .../operators/gencanon.cc                          |     2 +
 .../testsuite/std/memory/indirect/124890.cc        |     9 +
 libstdc++-v3/testsuite/std/simd/arithmetic.cc      |    35 +-
 libstdc++-v3/testsuite/std/simd/mask.cc            |     6 +-
 libstdc++-v3/testsuite/std/simd/simd_alg.cc        |     5 +-
 libstdc++-v3/testsuite/std/simd/traits_common.cc   |     4 +-
 libstdc++-v3/testsuite/std/simd/traits_math.cc     |     2 +-
 libvtv/ChangeLog                                   |     4 +
 lto-plugin/ChangeLog                               |     4 +
 maintainer-scripts/ChangeLog                       |     4 +
 zlib/ChangeLog                                     |     4 +
 401 files changed, 16070 insertions(+), 7811 deletions(-)

From gccadmin@gcc.gnu.org  Sat May  2 00:16:58 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat,  2 May 2026 00:16:58 +0000 (GMT)
Subject: [gcc r17-270] Daily bump.
Message-ID: <20260502001658.70A214AA0968@sourceware.org>

https://gcc.gnu.org/g:9f6ac583e44d602479eaa53982d464cd20c245a4

commit r17-270-g9f6ac583e44d602479eaa53982d464cd20c245a4
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat May 2 00:16:28 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |  10 +++
 gcc/ChangeLog           | 189 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |   9 +++
 gcc/algol68/ChangeLog   |   4 +
 gcc/c/ChangeLog         |   5 ++
 gcc/cp/ChangeLog        |  16 ++++
 gcc/po/ChangeLog        |   6 ++
 gcc/testsuite/ChangeLog |  80 ++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  35 +++++++++
 10 files changed, 355 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index ec571b7cf9df..61c0a92ca56b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-01  Manuel Jacob  <me@manueljacob.de>
+
+	* configure.ac: Set default for CPP_FOR_BUILD environment variable in all cases.
+	* configure: Regenerate.
+
+2026-05-01  Manuel Jacob  <me@manueljacob.de>
+
+	* configure.ac: Preserve *_FOR_BUILD environment variables in all cases.
+	* configure: Regenerate.
+
 2026-04-30  Christopher Bazley  <chris.bazley@arm.com>
 
 	* MAINTAINERS: Add myself to write after approval.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c7a32f7a056e..c12ecdb1cac0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,192 @@
+2026-05-01  Sam James  <sam@gentoo.org>
+
+	* Makefile.in (MOSTLYCLEANFILES): Fix typo of '$(exeext)'.
+
+2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/119420
+	* match.pd(`(A>>bool) EQ 0 -> (unsigned)A LE bool`): New
+	pattern.
+
+2026-05-01  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR rtl-optimization/123967
+	* match.pd(`if (cond) (A | CST1) : (A & ~CST1)`)`: New pattern.
+
+2026-05-01  Daniel Henrique Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR tree-optimization/110010
+	* match.pd (`(A>>C) NE|EQ (B>>C) -> (A^B) GE|LT (1<<C)`): New
+	pattern.
+
+2026-05-01  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+
+	* config.gcc: Added riscv-fusion.o
+	* config/riscv/riscv-protos.h (enum riscv_fusion_pairs):
+	(riscv_macro_fusion_p): Added declaration.
+	(riscv_macro_fusion_pair_p): Idem.
+	(riscv_get_fusible_ops): Idem.
+	* config/riscv/riscv.cc (enum riscv_fusion_pairs):
+	(riscv_macro_fusion_p): Moved to riscv-fusion.cc
+	(riscv_fusion_enabled_p): Idem.
+	(riscv_set_is_add): Idem.
+	(riscv_set_is_addi): Idem.
+	(riscv_set_is_adduw): Idem.
+	(riscv_set_is_shNadd): Idem.
+	(riscv_set_is_shNadduw): Idem.
+	(riscv_macro_fusion_pair_p): Idem.
+	(riscv_get_fusible_ops): New function to access tune_param->fusible_ops
+	from riscv-fusion.cc.
+	* config/riscv/t-riscv: Added riscv-fusion.cc
+	* config/riscv/riscv-fusion.cc: New file.
+
+2026-05-01  Kewen Lin  <linkewen@hygon.cn>
+
+	* config/i386/c86-4g-m7.md (c86_4g_m7_idiv): New automaton.
+	(c86_4g_m7_fdiv): Ditto.
+	(c86-4g-m7-idiv): New unit.
+	(c86-4g-m7-fdiv): Ditto.
+	(c86_4g_m7_idiv_DI): Adjust unit in the reservation.
+	(c86_4g_m7_idiv_SI): Ditto.
+	(c86_4g_m7_idiv_HI): Ditto.
+	(c86_4g_m7_idiv_QI): Ditto.
+	(c86_4g_m7_idiv_DI_load): Ditto.
+	(c86_4g_m7_idiv_SI_load): Ditto.
+	(c86_4g_m7_idiv_HI_load): Ditto.
+	(c86_4g_m7_idiv_QI_load): Ditto.
+	(c86_4g_m7_fp_div): Ditto.
+	(c86_4g_m7_fp_div_load): Ditto.
+	(c86_4g_m7_fp_idiv_load): Ditto.
+	(c86_4g_m7_avx512_ssediv): Ditto.
+	(c86_4g_m7_avx512_ssediv_mem): Ditto.
+	(c86_4g_m7_avx512_ssediv_z): Ditto.
+	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_load): Ditto.
+	(c86_4g_m7_fp_sqrt): Ditto.  Rename from ...
+	(c86_4g_m7fp_sqrt): ... here.
+	* config/i386/c86-4g.md (c86_4g_idiv): New automaton.
+	(c86_4g_fdiv): Ditto.
+	(c86-4g-idiv): New unit.
+	(c86-4g-fdiv): Ditto.
+	(c86_4g_idiv_DI): Ditto.
+	(c86_4g_idiv_SI): Ditto.
+	(c86_4g_idiv_HI): Ditto.
+	(c86_4g_idiv_QI): Ditto.
+	(c86_4g_idiv_mem_DI): Ditto.
+	(c86_4g_idiv_mem_SI): Ditto.
+	(c86_4g_idiv_mem_HI): Ditto.
+	(c86_4g_idiv_mem_QI): Ditto.
+	(c86_4g_fp_sqrt): Ditto.
+	(c86_4g_sse_sqrt_sf): Ditto.
+	(c86_4g_sse_sqrt_sf_mem): Ditto.
+	(c86_4g_sse_sqrt_df): Ditto.
+	(c86_4g_sse_sqrt_df_mem): Ditto.
+	(c86_4g_fp_op_div): Ditto.
+	(c86_4g_fp_op_div_load): Ditto.
+	(c86_4g_fp_op_idiv_load): Ditto.
+	(c86_4g_ssediv_ss_ps): Ditto.
+	(c86_4g_ssediv_ss_ps_load): Ditto.
+	(c86_4g_ssediv_ss_pd): Ditto.
+	(c86_4g_ssediv_ss_pd_load): Ditto.
+	(c86_4g_ssediv_avx256_ps): Ditto.
+	(c86_4g_ssediv_avx256_ps_load): Ditto.
+	(c86_4g_ssediv_avx256_pd): Ditto.
+	(c86_4g_ssediv_avx256_pd_load): Ditto.
+
+2026-05-01  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+	    Artemiy Volkov  <artemiyv@acm.org>
+	    Luis Silva  <luiss@synopsys.com>
+
+	* config/riscv/riscv-cores.def (RISCV_TUNE): Add arc-v-rmx-100-series.
+	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
+	Add arcv_rmx100.
+	(enum arcv_mpy_option_enum): New enum for ARC-V multiply options.
+	* config/riscv/riscv-protos.h (arcv_mpy_1c_bypass_p): New declaration.
+	(arcv_mpy_2c_bypass_p): New declaration.
+	(arcv_mpy_10c_bypass_p): New declaration.
+	* config/riscv/riscv.cc (arcv_mpy_1c_bypass_p): New function.
+	(arcv_mpy_2c_bypass_p): New function.
+	(arcv_mpy_10c_bypass_p): New function.
+	* config/riscv/riscv.md: Add arcv_rmx100.
+	* config/riscv/riscv.opt: New option for RMX-100 multiply unit
+	configuration.
+	* doc/riscv-mtune.texi: Document arc-v-rmx-100-series.
+	* config/riscv/arcv-rmx100.md: New file.
+
+2026-05-01  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+	    Artemiy Volkov  <artemiyv@acm.org>
+	    Luis Silva  <luiss@synopsys.com>
+
+	* config/riscv/riscv-cores.def (RISCV_TUNE): Add arc-v-rhx-100-series.
+	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add
+	arcv_rhx100.
+	* config/riscv/riscv.cc (arcv_rhx100_tune_info): New riscv_tune_param.
+	* config/riscv/riscv.md: Add arcv_rhx100 to tune attribute.
+	* doc/riscv-mtune.texi: Add RHX-100 documentation.
+	* config/riscv/arcv-rhx100.md: New file.
+
+2026-05-01  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* config/riscv/riscv.cc (riscv_expand_conditional_move):
+	Convert unsigned comparisons against power-of-2 boundaries
+	to shift-based equality tests.
+
+2026-05-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.ac: Test solaris_as, solaris_ld instead of gas, gnu_ld.
+	(gcc_cv_as_working_gdwarf_n_flag): Escape '.' in filename.
+	* acinclude.m4 (gcc_cv_initfini_array): Test solaris_as,
+	solaris_ld instead of gas, gnu_ld.
+	* configure: Regenerate.
+
+2026-05-01  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv.cc (riscv_rtx_costs): Add missing braces
+	around the if body for the slli.uw pattern in the AND case.
+
+2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* tree-ssa-strlen.cc (get_string_length): Transform
+	__strcat_chk (x, y, z) when we need strlen (x) afterwards into
+	l1 = strlen (x); l = __stpcpy_chk (x + l1, y, z - l1) - x;
+	where l is the strlen (x), instead of using z as last __stpcpy_chk
+	argument.
+
+2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/124559
+	* config/riscv/riscv-protos.h (riscv_move_integer): Drop mode argument.
+	* config/riscv/riscv.cc (riscv_move_integer): Pass mode after promotions
+	to riscv_build_integer.  All callers changed.
+	* config/riscv/riscv.md: Corresponding changes.
+	* cse.cc (cse_insn): Try to derive one constant from another using NOT/NEG.
+
+2026-05-01  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125117
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Generate
+	last_4x_vec_label when min_size <= 4 * MOVE_MAX.
+
+2026-05-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+
+	* config/s390/s390.cc (s390_secondary_reload): Add cases for HF
+	vector modes.
+	* config/s390/s390.md: Add modes V{1,2,4,8}HF to mode iterator
+	ALL.
+
+2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* tree-vect-loop.cc (vectorizable_reduction): Remove pointless
+	&& 1.
+
+2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/96692
+	* config/riscv/bitmanip.md (xor+xor+ior splitters): New splitters
+	that ultimately generate andn+xor when possible.
+
 2026-04-30  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR target/124878
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index c409c973e9fc..0869c9aefd84 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260501
+20260502
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a5ce7a928fb4..6e92259bfde0 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/87936
+	* gnatlink.adb (Gnatlink): Rename local variable and add Output_PIE
+	local variable; when it is set, compile the binder file with -fPIE.
+	(Process_Args): Set Output_PIE upon seeing -pie.
+	(Process_Binder_File): Append "_pic" to the name of the static Ada
+	runtime if Output_PIE is set.
+
 2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/110336
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index 4ed20081940a..aba43d87e23a 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-01  Peter Damianov  <peter0x44@disroot.org>
+
+	* Make-lang.in: Correct typo exeect -> exeext
+
 2026-04-22  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
 
 	* Make-lang.in (algol68.install-html): Fix
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index a8edc7f4c450..aaf983533439 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124576
+	* c-decl.cc (declspecs_add_type): Add save_expr.
+
 2026-04-29  Julian Brown  <julian@codesourcery.com>
 
 	* c-parser.cc (c_parser_omp_target_data): Instantiate mappers for
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 08f64a95e4e5..ef341f726312 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125115
+	* module.cc (trees_in::is_matching_decl): Turn e_type into a
+	reference and use it instead of TREE_TYPE (e_inner).  Always
+	use build_exception_variant to propagate an already-instantiated
+	noexcept.
+
+2026-05-01  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125096
+	* pt.cc (tsubst_splice_scope): Don't return early for
+	dependent_splice_p.  Propagate cv-qualifiers from the
+	SPLICE_SCOPE to the result.
+	* reflect.cc (valid_splice_scope_p): Accept SPLICE_SCOPE.
+
 2026-04-29  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/125035
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 0e1a8e6c7552..ebf0e9ce8cca 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-01  Joseph Myers  <josmyers@redhat.com>
+
+	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
+	ja.po, ka.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po,
+	zh_CN.po, zh_TW.po: Update.
+
 2026-04-27  Joseph Myers  <josmyers@redhat.com>
 
 	* sv.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3c2b7109cb8d..c2db35f99400 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,83 @@
+2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/119420
+	* gcc.dg/tree-ssa/pr119420.c: New test.
+
+2026-05-01  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR rtl-optimization/123967
+	* gcc.dg/tree-ssa/pr123967-2.c: New test.
+	* gcc.dg/tree-ssa/pr123967-3.c: New test.
+	* gcc.dg/tree-ssa/pr123967.c: New test.
+
+2026-05-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124576
+	* gcc.dg/pr124576.c: New test.
+
+2026-05-01  Daniel Henrique Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR tree-optimization/110010
+	* gcc.dg/tree-ssa/pr110010.c: New test.
+
+2026-05-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125115
+	* g++.dg/modules/auto-9.h: New test.
+	* g++.dg/modules/auto-9_a.H: New test.
+	* g++.dg/modules/auto-9_b.C: New test.
+
+2026-05-01  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+
+	* gcc.target/riscv/fusion-auipc-addi.c: New test.
+	* gcc.target/riscv/fusion-lui-addi.c: New test.
+	* gcc.target/riscv/fusion-zexth.c: New test.
+	* gcc.target/riscv/fusion-zextw.c: New test.
+
+2026-05-01  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+
+	* gcc.target/riscv/zicond-shift-cond.c: New test.
+
+2026-05-01  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125096
+	* g++.dg/reflect/mangle4.C: Move dg-error.
+	* g++.dg/reflect/dep16.C: New test.
+
+2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* gcc.dg/strlenopt-97.c: New test.
+
+2026-05-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/pie1.adb: New file.
+
+2026-05-01  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125117
+	* gcc.dg/pr125117.c: New test.
+	* gfortran.dg/pr125117.f90: Likewise.
+	* gcc.target/i386/builtin-memmove-10.c: Updated.
+	* gcc.target/i386/builtin-memmove-15.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2d.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-5b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-5c.c: Likewise.
+
+2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/96692
+	* gcc.target/riscv/pr96692.c: New test.
+
 2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gnat.dg/task6.ads, gnat.dg/task6.adb: New test.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b7aeb09a39b8..44bf8d55eb5e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,38 @@
+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

From aoliva@gcc.gnu.org  Sat May  2 01:53:30 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat,  2 May 2026 01:53:30 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260502015330.094564A968F9@sourceware.org>

https://gcc.gnu.org/g:89cdfae1f36f51b92ae1f14f6b61ce19d9efda3f

commit 89cdfae1f36f51b92ae1f14f6b61ce19d9efda3f
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:37 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool at the user-visible class; an assert in the _impl class would
    fuse errors whose malformed type starts a shared tail.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.  Move implementation down.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 142 +++++++++++----------
 .../logical_traits/requirements/junction_neg.cc    |  31 +++++
 2 files changed, 105 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..ee0c7388dedf 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -213,74 +213,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
   /// @endcond
 
-#ifdef __cpp_lib_logical_traits // C++ >= 17
-
-  /// @cond undocumented
-  template<typename... _Bn>
-    inline constexpr bool __or_v = __or_<_Bn...>::value;
-  template<typename... _Bn>
-    inline constexpr bool __and_v = __and_<_Bn...>::value;
-
-  namespace __detail
-  {
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __disjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
-
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __conjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
-  } // namespace __detail
-  /// @endcond
-
-  template<typename... _Bn>
-    struct conjunction
-    : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct conjunction<>
-    : true_type
-    { };
-
-  template<typename... _Bn>
-    struct disjunction
-    : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct disjunction<>
-    : false_type
-    { };
-
-  template<typename _Pp>
-    struct negation
-    : __not_<_Pp>::type
-    { };
-
-  /** @ingroup variable_templates
-   * @{
-   */
-  template<typename... _Bn>
-    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
-
-  template<typename... _Bn>
-    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
-
-  template<typename _Pp>
-    inline constexpr bool negation_v = negation<_Pp>::value;
-  /// @}
-
-#endif // __cpp_lib_logical_traits
-
   // Forward declarations
   template<typename>
     struct is_object;
@@ -3871,6 +3803,80 @@ template<typename _Ret, typename _Fn, typename... _Args>
 /// @}
 #endif // __cpp_lib_type_trait_variable_templates
 
+#ifdef __cpp_lib_logical_traits // C++ >= 17
+
+  /// @cond undocumented
+  template<typename... _Bn>
+    inline constexpr bool __or_v = __or_<_Bn...>::value;
+  template<typename... _Bn>
+    inline constexpr bool __and_v = __and_<_Bn...>::value;
+
+  namespace __detail
+  {
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __disjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
+
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __conjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
+  } // namespace __detail
+  /// @endcond
+
+  template<typename... _Bn>
+    struct conjunction
+    : __detail::__conjunction_impl<void, _Bn...>::type
+    {
+      using __type = __detail::__conjunction_impl<void, _Bn...>::type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct conjunction<>
+    : true_type
+    { };
+
+  template<typename... _Bn>
+    struct disjunction
+    : __detail::__disjunction_impl<void, _Bn...>::type
+    {
+      using __type = __detail::__disjunction_impl<void, _Bn...>::type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct disjunction<>
+    : false_type
+    { };
+
+  template<typename _Pp>
+    struct negation
+    : __not_<_Pp>::type
+    { };
+
+  /** @ingroup variable_templates
+   * @{
+   */
+  template<typename... _Bn>
+    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
+
+  template<typename... _Bn>
+    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
+
+  template<typename _Pp>
+    inline constexpr bool negation_v = negation<_Pp>::value;
+  /// @}
+
+#endif // __cpp_lib_logical_traits
+
 #ifdef __cpp_lib_has_unique_object_representations // C++ >= 17 && HAS_UNIQ_OBJ_REP
   /// has_unique_object_representations
   /// @since C++17
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..a9090659459e
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,31 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+// ctT and dfT test that we don't fuse error messages when the type that
+// doesn't satisfy the requirements start a shared tail of types in the _impl
+// instantiations.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctT; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfT;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfT; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtT;
+
+// { dg-prune-output "static assertion failed|could not convert|evaluates to false" }

From aoliva@gcc.gnu.org  Sat May  2 03:07:11 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat,  2 May 2026 03:07:11 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260502030711.B7D5E469D692@sourceware.org>

https://gcc.gnu.org/g:15935b3f0f51670f7b69cc0f83ae8c48fb05de30

commit 15935b3f0f51670f7b69cc0f83ae8c48fb05de30
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:37 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool at the user-visible class; an assert in the _impl class would
    fuse errors whose malformed type starts a shared tail.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.  Move implementation down.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 142 +++++++++++----------
 .../logical_traits/requirements/junction_neg.cc    |  31 +++++
 2 files changed, 105 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..d8de3f013a73 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -213,74 +213,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
   /// @endcond
 
-#ifdef __cpp_lib_logical_traits // C++ >= 17
-
-  /// @cond undocumented
-  template<typename... _Bn>
-    inline constexpr bool __or_v = __or_<_Bn...>::value;
-  template<typename... _Bn>
-    inline constexpr bool __and_v = __and_<_Bn...>::value;
-
-  namespace __detail
-  {
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __disjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
-
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __conjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
-  } // namespace __detail
-  /// @endcond
-
-  template<typename... _Bn>
-    struct conjunction
-    : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct conjunction<>
-    : true_type
-    { };
-
-  template<typename... _Bn>
-    struct disjunction
-    : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct disjunction<>
-    : false_type
-    { };
-
-  template<typename _Pp>
-    struct negation
-    : __not_<_Pp>::type
-    { };
-
-  /** @ingroup variable_templates
-   * @{
-   */
-  template<typename... _Bn>
-    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
-
-  template<typename... _Bn>
-    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
-
-  template<typename _Pp>
-    inline constexpr bool negation_v = negation<_Pp>::value;
-  /// @}
-
-#endif // __cpp_lib_logical_traits
-
   // Forward declarations
   template<typename>
     struct is_object;
@@ -3871,6 +3803,80 @@ template<typename _Ret, typename _Fn, typename... _Args>
 /// @}
 #endif // __cpp_lib_type_trait_variable_templates
 
+#ifdef __cpp_lib_logical_traits // C++ >= 17
+
+  /// @cond undocumented
+  template<typename... _Bn>
+    inline constexpr bool __or_v = __or_<_Bn...>::value;
+  template<typename... _Bn>
+    inline constexpr bool __and_v = __and_<_Bn...>::value;
+
+  namespace __detail
+  {
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __disjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
+
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __conjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
+  } // namespace __detail
+  /// @endcond
+
+  template<typename... _Bn>
+    struct conjunction
+    : __detail::__conjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__conjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct conjunction<>
+    : true_type
+    { };
+
+  template<typename... _Bn>
+    struct disjunction
+    : __detail::__disjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__disjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct disjunction<>
+    : false_type
+    { };
+
+  template<typename _Pp>
+    struct negation
+    : __not_<_Pp>::type
+    { };
+
+  /** @ingroup variable_templates
+   * @{
+   */
+  template<typename... _Bn>
+    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
+
+  template<typename... _Bn>
+    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
+
+  template<typename _Pp>
+    inline constexpr bool negation_v = negation<_Pp>::value;
+  /// @}
+
+#endif // __cpp_lib_logical_traits
+
 #ifdef __cpp_lib_has_unique_object_representations // C++ >= 17 && HAS_UNIQ_OBJ_REP
   /// has_unique_object_representations
   /// @since C++17
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..a9090659459e
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,31 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+// ctT and dfT test that we don't fuse error messages when the type that
+// doesn't satisfy the requirements start a shared tail of types in the _impl
+// instantiations.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctT; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfT;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfT; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtT;
+
+// { dg-prune-output "static assertion failed|could not convert|evaluates to false" }

From aoliva@gcc.gnu.org  Sat May  2 06:16:48 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat,  2 May 2026 06:16:48 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260502061648.4C62246A9CCC@sourceware.org>

https://gcc.gnu.org/g:a77b4dbdcd8a9cda98478ffec0a2202cba485445

commit a77b4dbdcd8a9cda98478ffec0a2202cba485445
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:37 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool at the user-visible class; an assert in the _impl class would
    fuse errors whose malformed type starts a shared tail.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.  Move implementation down.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 142 +++++++++++----------
 .../logical_traits/requirements/junction_neg.cc    |  31 +++++
 2 files changed, 105 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..d8de3f013a73 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -213,74 +213,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
   /// @endcond
 
-#ifdef __cpp_lib_logical_traits // C++ >= 17
-
-  /// @cond undocumented
-  template<typename... _Bn>
-    inline constexpr bool __or_v = __or_<_Bn...>::value;
-  template<typename... _Bn>
-    inline constexpr bool __and_v = __and_<_Bn...>::value;
-
-  namespace __detail
-  {
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __disjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
-
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __conjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
-  } // namespace __detail
-  /// @endcond
-
-  template<typename... _Bn>
-    struct conjunction
-    : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct conjunction<>
-    : true_type
-    { };
-
-  template<typename... _Bn>
-    struct disjunction
-    : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct disjunction<>
-    : false_type
-    { };
-
-  template<typename _Pp>
-    struct negation
-    : __not_<_Pp>::type
-    { };
-
-  /** @ingroup variable_templates
-   * @{
-   */
-  template<typename... _Bn>
-    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
-
-  template<typename... _Bn>
-    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
-
-  template<typename _Pp>
-    inline constexpr bool negation_v = negation<_Pp>::value;
-  /// @}
-
-#endif // __cpp_lib_logical_traits
-
   // Forward declarations
   template<typename>
     struct is_object;
@@ -3871,6 +3803,80 @@ template<typename _Ret, typename _Fn, typename... _Args>
 /// @}
 #endif // __cpp_lib_type_trait_variable_templates
 
+#ifdef __cpp_lib_logical_traits // C++ >= 17
+
+  /// @cond undocumented
+  template<typename... _Bn>
+    inline constexpr bool __or_v = __or_<_Bn...>::value;
+  template<typename... _Bn>
+    inline constexpr bool __and_v = __and_<_Bn...>::value;
+
+  namespace __detail
+  {
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __disjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
+
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __conjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
+  } // namespace __detail
+  /// @endcond
+
+  template<typename... _Bn>
+    struct conjunction
+    : __detail::__conjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__conjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct conjunction<>
+    : true_type
+    { };
+
+  template<typename... _Bn>
+    struct disjunction
+    : __detail::__disjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__disjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct disjunction<>
+    : false_type
+    { };
+
+  template<typename _Pp>
+    struct negation
+    : __not_<_Pp>::type
+    { };
+
+  /** @ingroup variable_templates
+   * @{
+   */
+  template<typename... _Bn>
+    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
+
+  template<typename... _Bn>
+    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
+
+  template<typename _Pp>
+    inline constexpr bool negation_v = negation<_Pp>::value;
+  /// @}
+
+#endif // __cpp_lib_logical_traits
+
 #ifdef __cpp_lib_has_unique_object_representations // C++ >= 17 && HAS_UNIQ_OBJ_REP
   /// has_unique_object_representations
   /// @since C++17
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..e34f01798f48
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,31 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+// ctT and dfT test that we don't fuse error messages when the type that
+// doesn't satisfy the requirements start a shared tail of types in the _impl
+// instantiations.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctT; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfT;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfT; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtT;
+
+// { dg-prune-output {static assertion failed|could not convert[^\n]*to .bool.} }

From aoliva@gcc.gnu.org  Sat May  2 06:35:45 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat,  2 May 2026 06:35:45 +0000 (GMT)
Subject: [gcc r17-272] testsuite: semaphore/try_acquire_until: reorder
 clock::now calls
Message-ID: <20260502063545.AF2E24BB3BE1@sourceware.org>

https://gcc.gnu.org/g:dcc21c5517eeaec3d41cbf7790e833f24a1f8c87

commit r17-272-gdcc21c5517eeaec3d41cbf7790e833f24a1f8c87
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Sat May 2 03:28:07 2026 -0300

    testsuite: semaphore/try_acquire_until: reorder clock::now calls
    
    Clock calls on VxWorks are slow, so the odds that the consecutive
    calls of *clock::now() will yield a different result are not
    negligible.  Reordering the calls avoids false positives.
    
    
    for  libstdc++-v3/ChangeLog
    
            * testsuite/30_threads/semaphore/try_acquire_until.cc
            (test01): Reorder calls.

Diff:
---
 libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
index 44b2b90431a4..a22799d88508 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
@@ -43,8 +43,11 @@ void test01()
   }
 
   {
-    auto const at = std::chrono::system_clock::now() + dur;
+    // Set the base time T0 first, so that even if there's a delay before the
+    // deadline AT is computed, it won't shrink the measured DIFF to the point
+    // of making it seem shorter than the required wait DURation.
     auto const t0 = std::chrono::steady_clock::now();
+    auto const at = std::chrono::system_clock::now() + dur;
     VERIFY( !s.try_acquire_until(at) );
     auto const diff = std::chrono::steady_clock::now() - t0;
     VERIFY( diff >= dur );

From aoliva@gcc.gnu.org  Sat May  2 07:44:59 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Sat,  2 May 2026 07:44:59 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: check value in
 std::{con, dis}junction
Message-ID: <20260502074459.0FF0A46A9CE3@sourceware.org>

https://gcc.gnu.org/g:b3df01f5fdc87bd4f16a0c3a1674cdd98affad25

commit b3df01f5fdc87bd4f16a0c3a1674cdd98affad25
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Apr 28 14:45:37 2026 -0300

    libstdc++: check value in std::{con,dis}junction
    
    When std::{con,dis}junction is passed a type that doesn't have a
    "value" static data member, or whose value doesn't convert to bool, is
    ambiguous or inaccessible, we stop iterating over the types and use
    that type for the {con,dis}junction, without any diagnostic.
    
    We'd get a diagnostic when attempting to use its value data member as
    a bool, but if the member isn't used, compilation is successful,
    despite the failure to meet the requirements for "value" in
    [meta.logical]/4.
    
    Check that the selected type parameter's value member is convertible
    to bool at the user-visible class; an assert in the _impl class would
    fuse errors whose malformed type starts a shared tail.
    
    
    for  libstdc++-v3/ChangeLog
    
            * include/std/type_traits (disjunction, conjunction): Check
            that value converts to bool.  Move implementation down.

Diff:
---
 libstdc++-v3/include/std/type_traits               | 142 +++++++++++----------
 .../logical_traits/requirements/junction_neg.cc    |  31 +++++
 2 files changed, 105 insertions(+), 68 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..d8de3f013a73 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -213,74 +213,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
   /// @endcond
 
-#ifdef __cpp_lib_logical_traits // C++ >= 17
-
-  /// @cond undocumented
-  template<typename... _Bn>
-    inline constexpr bool __or_v = __or_<_Bn...>::value;
-  template<typename... _Bn>
-    inline constexpr bool __and_v = __and_<_Bn...>::value;
-
-  namespace __detail
-  {
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __disjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
-
-    template<typename /* = void */, typename _B1, typename... _Bn>
-      struct __conjunction_impl
-      { using type = _B1; };
-
-    template<typename _B1, typename _B2, typename... _Bn>
-      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
-      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
-  } // namespace __detail
-  /// @endcond
-
-  template<typename... _Bn>
-    struct conjunction
-    : __detail::__conjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct conjunction<>
-    : true_type
-    { };
-
-  template<typename... _Bn>
-    struct disjunction
-    : __detail::__disjunction_impl<void, _Bn...>::type
-    { };
-
-  template<>
-    struct disjunction<>
-    : false_type
-    { };
-
-  template<typename _Pp>
-    struct negation
-    : __not_<_Pp>::type
-    { };
-
-  /** @ingroup variable_templates
-   * @{
-   */
-  template<typename... _Bn>
-    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
-
-  template<typename... _Bn>
-    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
-
-  template<typename _Pp>
-    inline constexpr bool negation_v = negation<_Pp>::value;
-  /// @}
-
-#endif // __cpp_lib_logical_traits
-
   // Forward declarations
   template<typename>
     struct is_object;
@@ -3871,6 +3803,80 @@ template<typename _Ret, typename _Fn, typename... _Args>
 /// @}
 #endif // __cpp_lib_type_trait_variable_templates
 
+#ifdef __cpp_lib_logical_traits // C++ >= 17
+
+  /// @cond undocumented
+  template<typename... _Bn>
+    inline constexpr bool __or_v = __or_<_Bn...>::value;
+  template<typename... _Bn>
+    inline constexpr bool __and_v = __and_<_Bn...>::value;
+
+  namespace __detail
+  {
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __disjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __disjunction_impl<__enable_if_t<!bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __disjunction_impl<void, _B2, _Bn...>::type; };
+
+    template<typename /* = void */, typename _B1, typename... _Bn>
+      struct __conjunction_impl
+      { using type = _B1; };
+
+    template<typename _B1, typename _B2, typename... _Bn>
+      struct __conjunction_impl<__enable_if_t<bool(_B1::value)>, _B1, _B2, _Bn...>
+      { using type = typename __conjunction_impl<void, _B2, _Bn...>::type; };
+  } // namespace __detail
+  /// @endcond
+
+  template<typename... _Bn>
+    struct conjunction
+    : __detail::__conjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__conjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct conjunction<>
+    : true_type
+    { };
+
+  template<typename... _Bn>
+    struct disjunction
+    : __detail::__disjunction_impl<void, _Bn...>::type
+    {
+      typedef typename __detail::__disjunction_impl<void, _Bn...>::type __type;
+      static_assert(is_convertible_v<decltype(__type::value), bool>);
+    };
+
+  template<>
+    struct disjunction<>
+    : false_type
+    { };
+
+  template<typename _Pp>
+    struct negation
+    : __not_<_Pp>::type
+    { };
+
+  /** @ingroup variable_templates
+   * @{
+   */
+  template<typename... _Bn>
+    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
+
+  template<typename... _Bn>
+    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
+
+  template<typename _Pp>
+    inline constexpr bool negation_v = negation<_Pp>::value;
+  /// @}
+
+#endif // __cpp_lib_logical_traits
+
 #ifdef __cpp_lib_has_unique_object_representations // C++ >= 17 && HAS_UNIQ_OBJ_REP
   /// has_unique_object_representations
   /// @since C++17
diff --git a/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
new file mode 100644
index 000000000000..bfa502fe0311
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/logical_traits/requirements/junction_neg.cc
@@ -0,0 +1,31 @@
+// { dg-do compile { target c++17 } }
+
+#include <type_traits>
+
+class S {}; // not convertible to bool
+
+struct T {
+  static constexpr S value{};
+};
+
+// 4 Every template type argument for which Bi::value is instantiated shall be
+// usable as a base class and shall have a member value which is convertible to
+// bool, is not hidden, and is unambiguously available in the type.
+
+// ctT and dfT test that we don't fuse error messages when the type that
+// doesn't satisfy the requirements start a shared tail of types in the _impl
+// instantiations.
+
+std::conjunction<T> cT; // { dg-error "here" }
+std::conjunction<T, std::true_type> cTt; // { dg-error "here" }
+std::conjunction<T, std::false_type> cTf; // { dg-error "here" }
+std::conjunction<std::true_type, T> ctT; // { dg-error "here" }
+std::conjunction<std::false_type, T> cfT;
+
+std::disjunction<T> dT; // { dg-error "here" }
+std::disjunction<T, std::false_type> dTf; // { dg-error "here" }
+std::disjunction<T, std::true_type> dTt; // { dg-error "here" }
+std::disjunction<std::false_type, T> dfT; // { dg-error "here" }
+std::disjunction<std::true_type, T> dtT;
+
+// { dg-prune-output {(static assertion failed|could not convert|evaluates to false)} }

From gccadmin@gcc.gnu.org  Sun May  3 00:16:49 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun,  3 May 2026 00:16:49 +0000 (GMT)
Subject: [gcc r17-282] Daily bump.
Message-ID: <20260503001649.570294BB3BE6@sourceware.org>

https://gcc.gnu.org/g:71b75e91739e5ef7c81dbdd9eb44460257b18f6d

commit r17-282-g71b75e91739e5ef7c81dbdd9eb44460257b18f6d
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun May 3 00:16:23 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 20 ++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 17 +++++++++++++
 gcc/testsuite/ChangeLog | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  5 ++++
 5 files changed, 107 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c12ecdb1cac0..d414a2dda573 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,23 @@
+2026-05-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiopt.cc (pass_phiopt::execute): Set cfgcleanup
+	if cselim_limited returns true.
+
+2026-05-02  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/109038
+	* config/riscv/bitmanip.md (rotate_with_masking_to_shift): New pattern.
+
+2026-05-02  Michiel Derhaeg  <Michiel.Derhaeg@synopsys.com>
+
+	* config/riscv/riscv.opt.urls: Add temp fix for -mmpy-option.
+
+2026-05-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125139
+	* match.pd (`(A>>bool) EQ 0 -> (unsigned)A LE bool`): Enable
+	only for INTEGRAL_TYPE_P types.
+
 2026-05-01  Sam James  <sam@gentoo.org>
 
 	* Makefile.in (MOSTLYCLEANFILES): Fix typo of '$(exeext)'.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0869c9aefd84..37fae2a53d2b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260502
+20260503
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e62e800ec3d7..4e6b0bd0e8ce 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,20 @@
+2026-05-02  Tobias Burnus  <tburnus@baylibre.com>
+	    Julian Brown  <julian@codesourcery.com>
+
+	* gfortran.h (enum gfc_omp_list_type): Add this name
+	to the existing OMP_LIST... enum; add OMP_LIST_NONE.
+	(gfc_free_omp_namelist): Take that enum as arg instead of bool args.
+	* match.cc (gfc_free_omp_namelist): Update.
+	* openmp.cc (gfc_free_omp_clauses, gfc_free_omp_declare_variant_list,
+	gfc_match_omp_clause_reduction, gfc_match_omp_clauses,
+	gfc_match_omp_allocate, gfc_match_omp_flush,
+	gfc_match_omp_declare_target, resolve_omp_clauses,
+	gfc_resolve_omp_parallel_blocks, resolve_omp_do,
+	gfc_resolve_oacc_blocks, gfc_resolve_oacc_declare): Update
+	gfc_free_omp_namelist call and used enum type instead of
+	int.
+	* st.cc (gfc_free_statement): Likewise.
+
 2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
 
 	PR fortran/125021
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c2db35f99400..d576ef5e47aa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,67 @@
+2026-05-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* gcc.dg/tree-ssa/cselim-5.c: New test.
+
+2026-05-02  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/109038
+	* gcc.target/riscv/pr109038.c: New test.
+
+2026-05-02  Xi Ruoyao  <xry111@xry111.site>
+
+	PR testsuite/70150
+	* gcc.dg/ipa/pr122458.c (dg-options): Add -no-pie.
+	* gcc.dg/lto/toplevel-extended-asm-1_0.c (dg-lto-options): Add
+	-no-pie.
+	* gcc.dg/lto/toplevel-simple-asm-1_0.c (dg-lto-options): Add
+	-no-pie.
+
+2026-05-02  Xi Ruoyao  <xry111@xry111.site>
+
+	PR testsuite/70150
+	* gcc.target/i386/builtin-memmove-13.c (dg-options): Add
+	-fno-pie.
+	* g++.target/i386/memset-pr108585-1a.C: Likewise.
+	* g++.target/i386/memset-pr108585-1b.C: Likewise.
+	* gcc.target/i386/memcpy-pr120683-2.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-3.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-4.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-5.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-6.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-7.c: Likewise.
+	* gcc.target/i386/memset-pr120683-13.c: Likewise.
+	* gcc.target/i386/memset-pr120683-17.c: Likewise.
+	* gcc.target/i386/memset-pr120683-18.c: Likewise.
+	* gcc.target/i386/memset-pr120683-19.c: Likewise.
+	* gcc.target/i386/memset-pr120683-20.c: Likewise.
+	* gcc.target/i386/memset-pr120683-21.c: Likewise.
+	* gcc.target/i386/memset-pr120683-22.c: Likewise.
+	* gcc.target/i386/memset-pr120683-23.c: Likewise.
+	* gcc.target/i386/pr111657-1.c: Likewise.
+	* gcc.target/i386/pr120881-2a.c: Likewise.
+
+2026-05-02  Xi Ruoyao  <xry111@xry111.site>
+
+	* g++.target/i386/memset-pr108585-1a.C (dg-options): Add
+	-fno-stack-protector.
+	* g++.target/i386/memset-pr108585-1b.C (dg-options): Likewise.
+	* gcc.target/i386/auto-init-padding-9.c (dg-options): Likewise.
+	* gcc.target/i386/memset-pr70308-1a.c (dg-options): Likewise.
+	* gcc.target/i386/memset-pr70308-1b.c (dg-options): Likewise.
+
+2026-05-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/valid_scalars2.adb: Remove -O0 option.
+	* gnat.dg/validity_check3.ads: Rename to...
+	* gnat.dg/valid_scalars3.ads: ...this.
+	* gnat.dg/validity_check3.adb: Rename to...
+	* gnat.dg/valid_scalars3.adb: ...this.
+
+2026-05-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125139
+	* gcc.dg/torture/pr125139-1.c: New test.
+
 2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
 
 	PR tree-optimization/119420
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 44bf8d55eb5e..299ee3ad307f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+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

From tkaminsk@gcc.gnu.org  Tue May  5 07:52:24 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  5 May 2026 07:52:24 +0000 (GMT)
Subject: [gcc r17-327] libstdc++: Remove duplicated
 __mdspan::__is_constant_wrapper.
Message-ID: <20260505075224.4FC9C4B9DB65@sourceware.org>

https://gcc.gnu.org/g:108fdf003e70643c921d9e40220c1312338e767c

commit r17-327-g108fdf003e70643c921d9e40220c1312338e767c
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 30 20:09:25 2026 +0200

    libstdc++: Remove duplicated __mdspan::__is_constant_wrapper.
    
    Replace it with std::__is_constant_wrapper_v from utility.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/mdspan | 69 ++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 38 deletions(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index a3ab64633ac3..5938bf09a940 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -838,7 +838,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     template<typename _Mapping>
       constexpr bool __is_padded_mapping = __is_left_padded_mapping<_Mapping>
-        || __is_right_padded_mapping<_Mapping>;
+	|| __is_right_padded_mapping<_Mapping>;
 #endif
 
     template<typename _PaddedMapping>
@@ -904,13 +904,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    && std::cmp_less_equal(__value, __max);
       }
 
-    template<typename _Tp>
-      constexpr bool __is_constant_wrapper = false;
-
-    template<_CwFixedValue _Xv, typename _Tp>
-      constexpr bool __is_constant_wrapper<constant_wrapper<_Xv, _Tp>>
-	= true;
-
     template<size_t _Index, typename _Extents>
       constexpr auto
       __extract_extent(const _Extents& __exts)
@@ -922,7 +915,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     template<typename _Slice, typename _IndexType>
       concept __acceptable_slice_type = same_as<_Slice, full_extent_t>
-	  || same_as<_Slice, _IndexType> || __is_constant_wrapper<_Slice>
+	  || same_as<_Slice, _IndexType> || __is_constant_wrapper_v<_Slice>
 	  || __is_extent_slice<_Slice>;
 
     template<typename _IndexType, typename... _Slices>
@@ -1003,7 +996,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return _Extent;
 	else if constexpr (same_as<_Slice, constant_wrapper<_IndexType(0)>>)
 	  return 0;
-	else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)
+	else if constexpr (__is_constant_wrapper_v<typename _Slice::extent_type>)
 	  return _Slice::extent_type::value;
 	else
 	  return dynamic_extent;
@@ -1204,7 +1197,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     template<typename _Slice>
       concept __is_unit_stride_slice = (__mdspan::__is_extent_slice<_Slice>
-	  && __mdspan::__is_constant_wrapper<typename _Slice::stride_type>
+	  && __is_constant_wrapper_v<typename _Slice::stride_type>
 	  && _Slice::stride_type::value == 1)
 	|| std::same_as<_Slice, full_extent_t>;
 
@@ -1534,7 +1527,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _OExtents>
 	requires is_constructible_v<extents_type, _OExtents>
 	constexpr explicit(!(extents_type::rank() == 0
-	                     && is_convertible_v<_OExtents, extents_type>))
+			     && is_convertible_v<_OExtents, extents_type>))
 	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
 	{ __glibcxx_assert(*this == __other); }
@@ -1710,7 +1703,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _OExtents>
 	requires is_constructible_v<extents_type, _OExtents>
 	constexpr explicit(!(extents_type::rank() == 0
-	                     && is_convertible_v<_OExtents, extents_type>))
+			     && is_convertible_v<_OExtents, extents_type>))
 	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
 	{ __glibcxx_assert(*this == __other); }
@@ -3308,10 +3301,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  .extent = __span,
 	  .stride = cw<_IndexType(1)>
 	};
-      else if constexpr (__is_constant_wrapper<_StrideType>)
-        {
+      else if constexpr (__is_constant_wrapper_v<_StrideType>)
+	{
 	  static_assert(_StrideType::value > 0);
-	  if constexpr (__is_constant_wrapper<_SpanType>)
+	  if constexpr (__is_constant_wrapper_v<_SpanType>)
 	    return extent_slice{
 	      .offset = __offset,
 	      .extent = cw<_IndexType(1 + (_SpanType::value - 1) / _StrideType::value)>,
@@ -3323,7 +3316,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      .extent = _IndexType(__span > 0 ? 1 + (__span - 1) / _StrideType::value : 0),
 	      .stride = __stride
 	    };
-        }
+	}
       else if (__span == 0 || __stride == 1)
 	return extent_slice{
 	  .offset = __offset,
@@ -3331,7 +3324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  .stride = _IndexType(1)
 	};
       else
-        {
+	{
 	  __glibcxx_assert(__stride > 0);
 	  return extent_slice{
 	    .offset = __offset,
@@ -3386,7 +3379,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __check_inrange_index(const extents<_IndexType, _Extent>& __ext,
 			   const _OIndexType& __idx)
       {
-	if constexpr (__is_constant_wrapper<_OIndexType>
+	if constexpr (__is_constant_wrapper_v<_OIndexType>
 		      && _Extent != dynamic_extent)
 	  {
 	    static_assert(_OIndexType::value >= 0);
@@ -3401,7 +3394,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __check_valid_index(const extents<_IndexType, _Extent>& __ext,
 			   const _OIndexType& __idx)
       {
-	if constexpr (__is_constant_wrapper<_OIndexType>
+	if constexpr (__is_constant_wrapper_v<_OIndexType>
 		      && _Extent != dynamic_extent)
 	  {
 	    static_assert(_OIndexType::value >= 0);
@@ -3427,31 +3420,31 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				    constant_wrapper<_IndexType(0)>>)
 	      __mdspan::__check_valid_index(__ext, __slice.offset);
 	    else if constexpr (is_same_v<typename _Slice::extent_type,
-				         constant_wrapper<_IndexType(1)>>)
-              __mdspan::__check_inrange_index(__ext, __slice.offset);
-	    else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)
+					 constant_wrapper<_IndexType(1)>>)
+	      __mdspan::__check_inrange_index(__ext, __slice.offset);
+	    else if constexpr (__is_constant_wrapper_v<typename _Slice::extent_type>)
 	      { 
-              	__mdspan::__check_inrange_index(__ext, __slice.offset);
-		if constexpr (__is_constant_wrapper<typename _Slice::stride_type>)
+	      	__mdspan::__check_inrange_index(__ext, __slice.offset);
+		if constexpr (__is_constant_wrapper_v<typename _Slice::stride_type>)
 		  static_assert(_Slice::stride_type::value > 0);
 		else
 		  __glibcxx_assert(__slice.stride > 0);
 
 		if constexpr (_Extent != dynamic_extent
-		     && __is_constant_wrapper<typename _Slice::offset_type>)
-                  static_assert(std::cmp_greater_equal(
+		     && __is_constant_wrapper_v<typename _Slice::offset_type>)
+		  static_assert(std::cmp_greater_equal(
 		    _Extent - _Slice::offset_type::value,
 		    _Slice::extent_type::value));
 		if constexpr (_Extent != dynamic_extent
-		     && __is_constant_wrapper<typename _Slice::stride_type>)
-                  static_assert(std::cmp_greater(
+		     && __is_constant_wrapper_v<typename _Slice::stride_type>)
+		  static_assert(std::cmp_greater(
 		    _Extent,
 		    (_Slice::extent_type::value - 1) * _Slice::stride_type::value));
 
 		if constexpr (_Extent != dynamic_extent
-		     && __is_constant_wrapper<typename _Slice::offset_type>
-	             && __is_constant_wrapper<typename _Slice::stride_type>)
-                  static_assert(std::cmp_greater(
+		     && __is_constant_wrapper_v<typename _Slice::offset_type>
+		     && __is_constant_wrapper_v<typename _Slice::stride_type>)
+		  static_assert(std::cmp_greater(
 		    _Extent - _Slice::offset_type::value,
 		    (_Slice::extent_type::value - 1) * _Slice::stride_type::value));
 		else
@@ -3460,18 +3453,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		    (_Slice::extent_type::value - 1) * __slice.stride));
 	      }
 	    else if constexpr (is_same_v<typename _Slice::stride_type,
-                                         constant_wrapper<_IndexType(1)>>)
+				         constant_wrapper<_IndexType(1)>>)
 	      {
-	        __mdspan::__check_valid_index(__ext, __slice.offset);
+		__mdspan::__check_valid_index(__ext, __slice.offset);
 		__glibcxx_assert(std::cmp_greater_equal(
 		  __ext.extent(0) - __slice.offset,
 		  __slice.extent));
-              }
+	      }
 	    else if (__slice.extent == 0)
 	      __mdspan::__check_valid_index(__ext, __slice.offset);
 	    else
 	      {
-	        __glibcxx_assert(__slice.offset < __ext.extent(0));
+		__glibcxx_assert(__slice.offset < __ext.extent(0));
 		__glibcxx_assert(__slice.extent == 1 || __slice.stride > 0);
 		__glibcxx_assert(__slice.extent == 1 || std::cmp_greater(
 		  __ext.extent(0) - __slice.offset,
@@ -3479,7 +3472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      }
 	  }
 	else if constexpr (!is_same_v<_Slice, full_extent_t>)
-          __mdspan::__check_inrange_index(__ext, __slice);
+	  __mdspan::__check_inrange_index(__ext, __slice);
       }
 
     template<typename _Extents, typename... _Slices>
@@ -3548,7 +3541,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	   typename _Accessor, typename... _RawSlices>
     requires (sizeof...(_RawSlices) == _Extents::rank()
 	&& __mdspan::__sliceable_mapping<typename _Layout::template mapping<_Extents>,
-	                                 __mdspan::__full_extent_t<_RawSlices>...>)
+					 __mdspan::__full_extent_t<_RawSlices>...>)
     constexpr auto
     submdspan(
 	const mdspan<_ElementType, _Extents, _Layout, _Accessor>& __md,

From redi@gcc.gnu.org  Tue May  5 09:02:32 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 09:02:32 +0000 (GMT)
Subject: [gcc r17-332] libstdc++: Make std::unique_ptr<void>::operator*
 SFINAE-friendly
Message-ID: <20260505090232.B36204BA79AE@sourceware.org>

https://gcc.gnu.org/g:72fc51b1ac6451b2986d3351158b46b36827caf6

commit r17-332-g72fc51b1ac6451b2986d3351158b46b36827caf6
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 19:39:44 2026 +0100

    libstdc++: Make std::unique_ptr<void>::operator* SFINAE-friendly
    
    This implements LWG 4324, "unique_ptr<void>::operator* is not
    SFINAE-friendly", approved in Croydon, 2026.
    
    The noexcept-specifier added to C++23 by LWG 2762 is ill-formed if the
    pointer type cannot be dereferenced, which means that code which was
    checking whether the function exists (e.g. in a SFINAE context) no
    longer works. Such code was always questionable, because the function
    body was ill-formed if the pointer isn't dereferenceable, so the SFINAE
    check was probably giving the wrong answer, but it was possible to ask
    the question. Since LWG 2762 just asking the question can produce an
    error outside the immediate context, so operator* is no longer
    SFINAE-friendly.
    
    LWG 4324 adds a constraint to the function, so that it doesn't
    participate in overload resolution if it would be ill-formed. That's
    easy to implement for C++20 because we can just add a requires-clause.
    
    For C++11/14/17 we can't constrain it easily, so just adjust the
    noexcept-specifier so that it's not ill-formed. This still means you get
    the wrong answer (i.e. it looks like unique_ptr<void>::operator* is
    callable) but there's no error outside the immediate context. This
    restores the original semantics before the LWG 2762 change, for better
    or worse.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/unique_ptr.h             | 21 ++++++++++++++++++++-
 .../testsuite/20_util/unique_ptr/lwg4324.cc        | 22 ++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index 5b7c8938ff74..f4b2e33d13de 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -289,6 +289,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __not_<is_array<_Up>>
         >;
 
+#if ! __cpp_concepts
+      template<typename _Ptr, typename = void>
+	struct _Nothrow_deref
+	: false_type { };
+
+      template<typename _Ptr>
+	struct _Nothrow_deref<_Ptr, __void_t<decltype(*std::declval<_Ptr>())>>
+	: __bool_constant<noexcept(*std::declval<_Ptr>())> { };
+#endif
+
     public:
       // Constructors.
 
@@ -442,7 +452,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /// Dereference the stored pointer.
       _GLIBCXX23_CONSTEXPR
       typename add_lvalue_reference<element_type>::type
-      operator*() const noexcept(noexcept(*std::declval<pointer>()))
+      operator*() const
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 2762. unique_ptr operator*() should be noexcept
+      // 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+#if __cpp_concepts
+      noexcept(noexcept(*std::declval<pointer>()))
+      requires requires { *std::declval<pointer>(); }
+#else
+      noexcept(_Nothrow_deref<pointer>::value)
+#endif
       {
 #if _GLIBCXX_USE_BUILTIN_TRAIT(__reference_converts_from_temporary)
 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
new file mode 100644
index 000000000000..13ebfb929fca
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
@@ -0,0 +1,22 @@
+// { dg-do compile { target c++11 } }
+
+// LWG 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+
+#include <memory>
+
+template<class T, bool = true>
+struct nothrow_dereference
+: std::false_type { };
+
+template<class T>
+struct nothrow_dereference<T, noexcept(*std::declval<T>())>
+: std::true_type { };
+
+static_assert( nothrow_dereference<std::unique_ptr<int>>::value, "");
+static_assert( ! nothrow_dereference<std::unique_ptr<void>>::value, "");
+
+#if __cplusplus >= 202002L // C++20
+template<class T> concept dereferenceable = requires(T& t) { *t; };
+static_assert( dereferenceable<std::unique_ptr<int>>);
+static_assert(!dereferenceable<std::unique_ptr<void>>);
+#endif

From redi@gcc.gnu.org  Tue May  5 09:05:03 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 09:05:03 +0000 (GMT)
Subject: [gcc r15-11131] libstdc++: Update C++23 status table
Message-ID: <20260505090503.907FD4BA79AE@sourceware.org>

https://gcc.gnu.org/g:0affd0554f6407ef3f7f56467474acc5706c454f

commit r15-11131-g0affd0554f6407ef3f7f56467474acc5706c454f
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 18:09:15 2026 +0100

    libstdc++: Update C++23 status table
    
    The common_reference change was backported to the gcc-15 branch.
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/status_cxx2023.xml: Update status table.
            * doc/html/manual/status.html: Regenerate.

Diff:
---
 libstdc++-v3/doc/html/manual/status.html       | 4 ++--
 libstdc++-v3/doc/xml/manual/status_cxx2023.xml | 3 +--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 93b4aed40220..f2aacf2f6bc1 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1974,14 +1974,14 @@ or any notes about the implementation.
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf" target="_top">
         P2674R1
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr><td align="left">
 	<code class="code">common_reference_t</code> of <code class="code">reference_wrapper</code>
 	Should Be a Reference Type
       </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2655r3.html" target="_top">
         P2655R3
         </a>
-      </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
+      </td><td align="center"> 15.3 </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2614r2.pdf" target="_top">
         P2614R2
         </a>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index c77272416fdd..b65d2f5a5afd 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -570,7 +570,6 @@ or any notes about the implementation.
     </row>
 
     <row>
-      <?dbhtml bgcolor="#C8B0B0" ?>
       <entry>
 	<code>common_reference_t</code> of <code>reference_wrapper</code>
 	Should Be a Reference Type
@@ -580,7 +579,7 @@ or any notes about the implementation.
         P2655R3
         </link>
       </entry>
-      <entry align="center"> </entry>
+      <entry align="center"> 15.3 </entry>
       <entry> <code>__cpp_lib_common_reference &gt;= 202302L</code> </entry>
     </row>

From redi@gcc.gnu.org  Tue May  5 10:16:34 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 10:16:34 +0000 (GMT)
Subject: [gcc r17-334] libstdc++: Fix mainpage.html link to Doxygen docs
 [PR109965]
Message-ID: <20260505101634.38E104BA79A8@sourceware.org>

https://gcc.gnu.org/g:f95c05fe96af1de24929575b5ee8a05438fcfbcc

commit r17-334-gf95c05fe96af1de24929575b5ee8a05438fcfbcc
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 10:16:36 2026 +0100

    libstdc++: Fix mainpage.html link to Doxygen docs [PR109965]
    
    Doxygen renamed the "Modules" documentation to "Topics" a few years ago
    to avoid confusion with C++20 Modules:
    https://github.com/doxygen/doxygen/issues/8772
    
    This updates our internal link to 'modules.html' so that it refers to
    'topics.html' instead.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/109965
            * doc/doxygen/mainpage.html: Link to topics.html instead of
            modules.html

Diff:
---
 libstdc++-v3/doc/doxygen/mainpage.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/mainpage.html b/libstdc++-v3/doc/doxygen/mainpage.html
index b54482a74e99..03a3adfaf65f 100644
--- a/libstdc++-v3/doc/doxygen/mainpage.html
+++ b/libstdc++-v3/doc/doxygen/mainpage.html
@@ -38,7 +38,7 @@
 
 <p>Here are entry points to all the pages generated by Doxygen:
    <ul>
-    <li><a href="modules.html">Modules</a></li>
+    <li><a href="topics.html">Topics</a></li>
 
     <li>Namespaces
     <ul>

From redi@gcc.gnu.org  Tue May  5 10:39:50 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 10:39:50 +0000 (GMT)
Subject: [gcc r16-8867] libstdc++: Do not assume URBG::result_type exists
 [PR121919]
Message-ID: <20260505103950.5748D4BA900D@sourceware.org>

https://gcc.gnu.org/g:0a19c6cbabd60737967df931f9455c800630faff

commit r16-8867-g0a19c6cbabd60737967df931f9455c800630faff
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 13:27:48 2026 +0100

    libstdc++: Do not assume URBG::result_type exists [PR121919]
    
    The ranges::sample and ranges::shuffle algorithms are supposed to work
    with types which model std::uniform_random_bit_generator, which means
    they should not assume that G::result_type is present. That isn't needed
    to satisfy the concept. Change the algorithms to use decltype(__g())
    instead of using result_type.
    
    This isn't sufficient to fix the bug though, because those algorithms
    use std::uniform_int_distribution and that class template's operator()
    overloads depend on the more restrictive uniform random bit generator
    requirements, which do include the presence of a nested result_type
    member.
    
    We need to change std::uniform_int_distribution to also use decltype
    instead of the nested result_type, even though the standard says that
    std::uniform_int_distribution is allowed to assume that result_type
    exists.
    
    There's yet another problem, which is that a type that returns random
    bool values can model the concept, but doesn't meet the named
    requirements and can't be used with std::uniform_int_distribution. That
    isn't addressed by this change.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Nathan Myers <nmyers@redhat.com>
    (cherry picked from commit 0a2b9dc9655f12e43a0e67f26ea21ff4f4e038fe)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  7 ++----
 libstdc++-v3/include/bits/uniform_int_dist.h       |  4 ++--
 .../testsuite/25_algorithms/sample/121919.cc       | 28 ++++++++++++++++++++++
 .../testsuite/25_algorithms/shuffle/121919.cc      | 25 +++++++++++++++++++
 4 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 0d1928d52a2f..4330d3e70b84 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1850,8 +1850,7 @@ namespace ranges
 	    using __distrib_type = uniform_int_distribution<_Size>;
 	    using __param_type = typename __distrib_type::param_type;
 	    using _USize = __detail::__make_unsigned_like_t<_Size>;
-	    using __uc_type
-	      = common_type_t<typename remove_reference_t<_Gen>::result_type, _USize>;
+	    using __uc_type = common_type_t<decltype(__g()), _USize>;
 
 	    if (__first == __last)
 	      return __out;
@@ -1964,9 +1963,7 @@ namespace ranges
 	using __ud_type = __detail::__make_unsigned_like_t<_DistanceType>;
 	using __distr_type = std::uniform_int_distribution<__ud_type>;
 	using __p_type = typename __distr_type::param_type;
-
-	using __uc_type
-	  = common_type_t<typename remove_reference_t<_Gen>::result_type, __ud_type>;
+	using __uc_type = common_type_t<decltype(__g()), __ud_type>;
 
 	if constexpr (sized_sentinel_for<_Sent, _Iter>)
 	  {
diff --git a/libstdc++-v3/include/bits/uniform_int_dist.h b/libstdc++-v3/include/bits/uniform_int_dist.h
index dcf763ae7649..9c5514c7c138 100644
--- a/libstdc++-v3/include/bits/uniform_int_dist.h
+++ b/libstdc++-v3/include/bits/uniform_int_dist.h
@@ -288,7 +288,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       operator()(_UniformRandomBitGenerator& __urng,
 		 const param_type& __param)
       {
-	typedef typename _UniformRandomBitGenerator::result_type _Gresult_type;
+	typedef decltype(__urng()) _Gresult_type;
 	typedef typename make_unsigned<result_type>::type __utype;
 	typedef typename common_type<_Gresult_type, __utype>::type __uctype;
 
@@ -386,7 +386,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		      const param_type& __param)
       {
 	__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
-	typedef typename _UniformRandomBitGenerator::result_type _Gresult_type;
+	typedef decltype(__urng()) _Gresult_type;
 	typedef typename make_unsigned<result_type>::type __utype;
 	typedef typename common_type<_Gresult_type, __utype>::type __uctype;
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc
new file mode 100644
index 000000000000..9fdfbf560c71
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc
@@ -0,0 +1,28 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 121919 ranges::sample assumes a uniform_random_bit_generator
+// provides result_type
+
+#include <algorithm>
+#include <testsuite_iterators.h>
+
+struct G
+{
+  constexpr static unsigned min() { return 0;  }
+  constexpr static unsigned max() { return 10; }
+  unsigned operator()() const;
+};
+
+static_assert(std::uniform_random_bit_generator<G>);
+
+void
+test_pr121919()
+{
+  int i2[2]{ 1, 2 };
+  __gnu_test::test_random_access_range from(i2);
+  int i1[1];
+  __gnu_test::test_random_access_range to(i1);
+  std::ranges::sample(from, std::ranges::begin(to), 1, G{});
+  std::ranges::sample(std::ranges::begin(from), std::ranges::end(to),
+		      std::ranges::begin(to), 1, G{});
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc
new file mode 100644
index 000000000000..9425394c50ee
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc
@@ -0,0 +1,25 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 121919 ranges::shuffle assumes a uniform_random_bit_generator
+// provides result_type
+
+#include <algorithm>
+#include <testsuite_iterators.h>
+
+struct G
+{
+  constexpr static unsigned min() { return 0;  }
+  constexpr static unsigned max() { return 10; }
+  unsigned operator()() const;
+};
+
+static_assert(std::uniform_random_bit_generator<G>);
+
+void
+test_pr121919()
+{
+  int arr[2]{ 1, 2 };
+  __gnu_test::test_random_access_range r(arr);
+  std::ranges::shuffle(r, G{});
+  std::ranges::shuffle(std::ranges::begin(r), std::ranges::end(r), G{});
+}

From redi@gcc.gnu.org  Tue May  5 10:40:00 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 10:40:00 +0000 (GMT)
Subject: [gcc r16-8868] libstdc++: Make std::unique_ptr<void>::operator*
 SFINAE-friendly
Message-ID: <20260505104000.A75B24BABF05@sourceware.org>

https://gcc.gnu.org/g:2a0f7d010e38e06c479ab37caf012509eae8e7d2

commit r16-8868-g2a0f7d010e38e06c479ab37caf012509eae8e7d2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 19:39:44 2026 +0100

    libstdc++: Make std::unique_ptr<void>::operator* SFINAE-friendly
    
    This implements LWG 4324, "unique_ptr<void>::operator* is not
    SFINAE-friendly", approved in Croydon, 2026.
    
    The noexcept-specifier added to C++23 by LWG 2762 is ill-formed if the
    pointer type cannot be dereferenced, which means that code which was
    checking whether the function exists (e.g. in a SFINAE context) no
    longer works. Such code was always questionable, because the function
    body was ill-formed if the pointer isn't dereferenceable, so the SFINAE
    check was probably giving the wrong answer, but it was possible to ask
    the question. Since LWG 2762 just asking the question can produce an
    error outside the immediate context, so operator* is no longer
    SFINAE-friendly.
    
    LWG 4324 adds a constraint to the function, so that it doesn't
    participate in overload resolution if it would be ill-formed. That's
    easy to implement for C++20 because we can just add a requires-clause.
    
    For C++11/14/17 we can't constrain it easily, so just adjust the
    noexcept-specifier so that it's not ill-formed. This still means you get
    the wrong answer (i.e. it looks like unique_ptr<void>::operator* is
    callable) but there's no error outside the immediate context. This
    restores the original semantics before the LWG 2762 change, for better
    or worse.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 72fc51b1ac6451b2986d3351158b46b36827caf6)

Diff:
---
 libstdc++-v3/include/bits/unique_ptr.h             | 21 ++++++++++++++++++++-
 .../testsuite/20_util/unique_ptr/lwg4324.cc        | 22 ++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index 5b7c8938ff74..f4b2e33d13de 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -289,6 +289,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __not_<is_array<_Up>>
         >;
 
+#if ! __cpp_concepts
+      template<typename _Ptr, typename = void>
+	struct _Nothrow_deref
+	: false_type { };
+
+      template<typename _Ptr>
+	struct _Nothrow_deref<_Ptr, __void_t<decltype(*std::declval<_Ptr>())>>
+	: __bool_constant<noexcept(*std::declval<_Ptr>())> { };
+#endif
+
     public:
       // Constructors.
 
@@ -442,7 +452,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /// Dereference the stored pointer.
       _GLIBCXX23_CONSTEXPR
       typename add_lvalue_reference<element_type>::type
-      operator*() const noexcept(noexcept(*std::declval<pointer>()))
+      operator*() const
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 2762. unique_ptr operator*() should be noexcept
+      // 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+#if __cpp_concepts
+      noexcept(noexcept(*std::declval<pointer>()))
+      requires requires { *std::declval<pointer>(); }
+#else
+      noexcept(_Nothrow_deref<pointer>::value)
+#endif
       {
 #if _GLIBCXX_USE_BUILTIN_TRAIT(__reference_converts_from_temporary)
 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
new file mode 100644
index 000000000000..13ebfb929fca
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
@@ -0,0 +1,22 @@
+// { dg-do compile { target c++11 } }
+
+// LWG 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+
+#include <memory>
+
+template<class T, bool = true>
+struct nothrow_dereference
+: std::false_type { };
+
+template<class T>
+struct nothrow_dereference<T, noexcept(*std::declval<T>())>
+: std::true_type { };
+
+static_assert( nothrow_dereference<std::unique_ptr<int>>::value, "");
+static_assert( ! nothrow_dereference<std::unique_ptr<void>>::value, "");
+
+#if __cplusplus >= 202002L // C++20
+template<class T> concept dereferenceable = requires(T& t) { *t; };
+static_assert( dereferenceable<std::unique_ptr<int>>);
+static_assert(!dereferenceable<std::unique_ptr<void>>);
+#endif

From redi@gcc.gnu.org  Tue May  5 10:43:02 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 10:43:02 +0000 (GMT)
Subject: [gcc r16-8869] libstdc++: Fix mainpage.html link to Doxygen docs
 [PR109965]
Message-ID: <20260505104302.498374BA9018@sourceware.org>

https://gcc.gnu.org/g:25925f2a16c7d0f435867b512f904334760eac29

commit r16-8869-g25925f2a16c7d0f435867b512f904334760eac29
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 10:16:36 2026 +0100

    libstdc++: Fix mainpage.html link to Doxygen docs [PR109965]
    
    Doxygen renamed the "Modules" documentation to "Topics" a few years ago
    to avoid confusion with C++20 Modules:
    https://github.com/doxygen/doxygen/issues/8772
    
    This updates our internal link to 'modules.html' so that it refers to
    'topics.html' instead.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/109965
            * doc/doxygen/mainpage.html: Link to topics.html instead of
            modules.html
    
    (cherry picked from commit f95c05fe96af1de24929575b5ee8a05438fcfbcc)

Diff:
---
 libstdc++-v3/doc/doxygen/mainpage.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/mainpage.html b/libstdc++-v3/doc/doxygen/mainpage.html
index b54482a74e99..03a3adfaf65f 100644
--- a/libstdc++-v3/doc/doxygen/mainpage.html
+++ b/libstdc++-v3/doc/doxygen/mainpage.html
@@ -38,7 +38,7 @@
 
 <p>Here are entry points to all the pages generated by Doxygen:
    <ul>
-    <li><a href="modules.html">Modules</a></li>
+    <li><a href="topics.html">Topics</a></li>
 
     <li>Namespaces
     <ul>

From redi@gcc.gnu.org  Tue May  5 13:13:04 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 13:13:04 +0000 (GMT)
Subject: [gcc r15-11132] libstdc++: Make std::unique_ptr<void>::operator*
 SFINAE-friendly
Message-ID: <20260505131304.2EE894BA798F@sourceware.org>

https://gcc.gnu.org/g:6bb02808bf788a6822b151574844ffd2a3f8ea0d

commit r15-11132-g6bb02808bf788a6822b151574844ffd2a3f8ea0d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 19:39:44 2026 +0100

    libstdc++: Make std::unique_ptr<void>::operator* SFINAE-friendly
    
    This implements LWG 4324, "unique_ptr<void>::operator* is not
    SFINAE-friendly", approved in Croydon, 2026.
    
    The noexcept-specifier added to C++23 by LWG 2762 is ill-formed if the
    pointer type cannot be dereferenced, which means that code which was
    checking whether the function exists (e.g. in a SFINAE context) no
    longer works. Such code was always questionable, because the function
    body was ill-formed if the pointer isn't dereferenceable, so the SFINAE
    check was probably giving the wrong answer, but it was possible to ask
    the question. Since LWG 2762 just asking the question can produce an
    error outside the immediate context, so operator* is no longer
    SFINAE-friendly.
    
    LWG 4324 adds a constraint to the function, so that it doesn't
    participate in overload resolution if it would be ill-formed. That's
    easy to implement for C++20 because we can just add a requires-clause.
    
    For C++11/14/17 we can't constrain it easily, so just adjust the
    noexcept-specifier so that it's not ill-formed. This still means you get
    the wrong answer (i.e. it looks like unique_ptr<void>::operator* is
    callable) but there's no error outside the immediate context. This
    restores the original semantics before the LWG 2762 change, for better
    or worse.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 72fc51b1ac6451b2986d3351158b46b36827caf6)

Diff:
---
 libstdc++-v3/include/bits/unique_ptr.h             | 21 ++++++++++++++++++++-
 .../testsuite/20_util/unique_ptr/lwg4324.cc        | 22 ++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index cf8ee65b1507..e4bdfe979d37 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -289,6 +289,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __not_<is_array<_Up>>
         >;
 
+#if ! __cpp_concepts
+      template<typename _Ptr, typename = void>
+	struct _Nothrow_deref
+	: false_type { };
+
+      template<typename _Ptr>
+	struct _Nothrow_deref<_Ptr, __void_t<decltype(*std::declval<_Ptr>())>>
+	: __bool_constant<noexcept(*std::declval<_Ptr>())> { };
+#endif
+
     public:
       // Constructors.
 
@@ -442,7 +452,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /// Dereference the stored pointer.
       _GLIBCXX23_CONSTEXPR
       typename add_lvalue_reference<element_type>::type
-      operator*() const noexcept(noexcept(*std::declval<pointer>()))
+      operator*() const
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 2762. unique_ptr operator*() should be noexcept
+      // 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+#if __cpp_concepts
+      noexcept(noexcept(*std::declval<pointer>()))
+      requires requires { *std::declval<pointer>(); }
+#else
+      noexcept(_Nothrow_deref<pointer>::value)
+#endif
       {
 #if _GLIBCXX_USE_BUILTIN_TRAIT(__reference_converts_from_temporary)
 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
new file mode 100644
index 000000000000..13ebfb929fca
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/lwg4324.cc
@@ -0,0 +1,22 @@
+// { dg-do compile { target c++11 } }
+
+// LWG 4324. unique_ptr<void>::operator* is not SFINAE-friendly
+
+#include <memory>
+
+template<class T, bool = true>
+struct nothrow_dereference
+: std::false_type { };
+
+template<class T>
+struct nothrow_dereference<T, noexcept(*std::declval<T>())>
+: std::true_type { };
+
+static_assert( nothrow_dereference<std::unique_ptr<int>>::value, "");
+static_assert( ! nothrow_dereference<std::unique_ptr<void>>::value, "");
+
+#if __cplusplus >= 202002L // C++20
+template<class T> concept dereferenceable = requires(T& t) { *t; };
+static_assert( dereferenceable<std::unique_ptr<int>>);
+static_assert(!dereferenceable<std::unique_ptr<void>>);
+#endif

From redi@gcc.gnu.org  Tue May  5 13:13:09 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 13:13:09 +0000 (GMT)
Subject: [gcc r15-11133] libstdc++: Fix mainpage.html link to Doxygen docs
 [PR109965]
Message-ID: <20260505131309.558714BA79B4@sourceware.org>

https://gcc.gnu.org/g:6d8bd4968da00255b6f643055db078b04f784772

commit r15-11133-g6d8bd4968da00255b6f643055db078b04f784772
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 10:16:36 2026 +0100

    libstdc++: Fix mainpage.html link to Doxygen docs [PR109965]
    
    Doxygen renamed the "Modules" documentation to "Topics" a few years ago
    to avoid confusion with C++20 Modules:
    https://github.com/doxygen/doxygen/issues/8772
    
    This updates our internal link to 'modules.html' so that it refers to
    'topics.html' instead.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/109965
            * doc/doxygen/mainpage.html: Link to topics.html instead of
            modules.html
    
    (cherry picked from commit f95c05fe96af1de24929575b5ee8a05438fcfbcc)

Diff:
---
 libstdc++-v3/doc/doxygen/mainpage.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/mainpage.html b/libstdc++-v3/doc/doxygen/mainpage.html
index b54482a74e99..03a3adfaf65f 100644
--- a/libstdc++-v3/doc/doxygen/mainpage.html
+++ b/libstdc++-v3/doc/doxygen/mainpage.html
@@ -38,7 +38,7 @@
 
 <p>Here are entry points to all the pages generated by Doxygen:
    <ul>
-    <li><a href="modules.html">Modules</a></li>
+    <li><a href="topics.html">Topics</a></li>
 
     <li>Namespaces
     <ul>

From redi@gcc.gnu.org  Tue May  5 19:32:54 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  5 May 2026 19:32:54 +0000 (GMT)
Subject: [gcc r17-339] libstdc++: Fix experimental::__is_x86_pd() [PR124657]
Message-ID: <20260505193254.C06CA4BA903D@sourceware.org>

https://gcc.gnu.org/g:8d287bd70446e5ec3b0eb909d32d03dd65c67bae

commit r17-339-g8d287bd70446e5ec3b0eb909d32d03dd65c67bae
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 19:12:58 2026 +0100

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

Diff:
---
 libstdc++-v3/include/experimental/bits/simd_x86.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h
index 5d4ed5ad58c8..b2d564676b0c 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86.h
@@ -426,11 +426,14 @@ template <typename _Tp>
   constexpr bool
   __is_x86_pd()
   {
-#if __LDBL_MANT_DIG == __DBL_MANT_DIG
-    if constexpr (is_same_v<_Tp, long double>)
+    if constexpr (is_same_v<_Tp, double>)
+      return true;
+#if __LDBL_MANT_DIG__ == __DBL_MANT_DIG__
+    else if constexpr (is_same_v<_Tp, long double>)
       return true;
 #endif
-    return is_same_v<_Tp, double>;
+    else
+      return false;
   }
 
 template <typename _Tp, size_t _Np>

From gccadmin@gcc.gnu.org  Wed May  6 00:16:59 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  6 May 2026 00:16:59 +0000 (GMT)
Subject: [gcc r17-345] Daily bump.
Message-ID: <20260506001659.F125D4BA23FA@sourceware.org>

https://gcc.gnu.org/g:2cd9325e3ec1c14e6759e1ca798f2ea141dd145d

commit r17-345-g2cd9325e3ec1c14e6759e1ca798f2ea141dd145d
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 6 00:16:29 2026 +0000

    Daily bump.

Diff:
---
 config/ChangeLog        |  4 +++
 gcc/ChangeLog           | 44 ++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/analyzer/ChangeLog  |  4 +++
 gcc/cp/ChangeLog        | 24 +++++++++++++++++
 gcc/d/ChangeLog         |  9 +++++++
 gcc/po/ChangeLog        |  4 +++
 gcc/testsuite/ChangeLog | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
 libatomic/ChangeLog     | 10 ++++++++
 libgfortran/ChangeLog   |  9 +++++++
 libgomp/ChangeLog       | 10 ++++++++
 libitm/ChangeLog        | 10 ++++++++
 libssp/ChangeLog        |  6 +++++
 libstdc++-v3/ChangeLog  | 28 ++++++++++++++++++++
 14 files changed, 231 insertions(+), 1 deletion(-)

diff --git a/config/ChangeLog b/config/ChangeLog
index 92b186f0d7b0..f0cc6330e446 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* visibility.m4: New file.
+
 2026-04-13  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	PR target/69639
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ebc157b23a64..0ead28c8e988 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,47 @@
+2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/120587
+	PR target/125155
+	* config/or1k/or1k.cc (or1k_hard_regno_mode_ok): Allow condition
+	condition flag register in SImode.
+
+2026-05-05  wangzicong  <wangzicong@masscore.cn>
+
+	* config/riscv/riscv.cc (riscv_modes_tieable_p): Make tuple modes
+	not tieable to some modes.
+
+2026-05-05  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* doc/gm2.texi (Building a shared library): Rewrite the
+	description of the shared library and include complete code into
+	the example.
+
+2026-05-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125185
+	* tree-vect-slp.cc (vect_analyze_slp_reduc_chain): Guard
+	first vect_slp_linearize_chain call.
+
+2026-05-05  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc (xtensa_legitimize_address):
+	Modify to extend the upper limit of the coverable offset if the
+	address displacement of the corresponding machine instruction is
+	greater than 255.
+
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125180
+	* config/i386/i386.md (HI/SI test -> QI test splitter): Punt if
+	operands[2] is a volatile MEM.
+
+2026-05-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125124
+	* tree-vect-slp.cc (vect_bb_slp_scalar_cost): Disable
+	BB SLP partitioning sanity-check.
+
 2026-05-04  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR c/121911
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6174e3d1a443..3bc992c09c39 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260505
+20260506
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 909aef682b53..099b32ecf922 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* kf.cc (kf_strcasecmp::impl_call_post): Remove unused variable.
+
 2026-05-04  David Malcolm  <dmalcolm@redhat.com>
 
 	* svalue.cc (binop_svalue::maybe_get_value_range): Update for
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 78a7e33ca845..ee5795c7fe5a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124957
+	* class.cc (check_tag): Set ABI_TAG_INHERITED on the TREE_LIST
+	of an inherited tag.  Adjust after ABI_TAG_IMPLICIT renaming.
+	* cp-tree.h (ABI_TAG_IMPLICIT): Rename to ...
+	(ABI_TAG_NOT_MANGLED): ... this.
+	(equal_abi_tags): Adjust forward declaration.
+	* mangle.cc (write_unqualified_name): Adjust equal_abi_tags call.
+	(sorted_abi_tags): New ignore_inherited_p parameter, for ignoring
+	ABI_TAG_INHERITED tags.  Adjust after ABI_TAG_INHERITED renaming.
+	(write_abi_tags): Adjust sorted_abi_tags call.
+	(equal_abi_tags): New ignore_inherited_p parameter.  Pass it to
+	sorted_abi_tags.
+	* module.cc (trees_in::check_abi_tags): Pass
+	ignore_inherited_p=true to equal_abi_tags iff there's a
+	mangled-ness mismatch.
+
+2026-05-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* module.cc (elf_out::create_mapping) [MAPPED_WRITING]
+	(elf_out::create_mapping) [HAVE_POSIX_FALLOCATE]: Allow for
+	ENOTSUP return from posix_fallocate.
+
 2026-05-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR c++/65271
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 4e66d322f157..83e7eefe3089 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* types.cc (finish_aggregate_mode): Explicitly set TYPE_MODE of
+	non-POD types here.
+	(finish_aggregate_type): Propagate TREE_ADDRESSABLE to all variants.
+	(TypeVisitor::visit (TypeStruct *)): Set TREE_ADDRESSABLE before
+	visiting struct members.
+
 2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* dmd/MERGE: Merge upstream dmd d1fbbb1a2f.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index ebf0e9ce8cca..6e5a99ab0a2c 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-05  Joseph Myers  <josmyers@redhat.com>
+
+	* de.po: Update.
+
 2026-05-01  Joseph Myers  <josmyers@redhat.com>
 
 	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1147c5065eca..9654d7692d41 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,71 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* gdc.dg/pr125089.d: New test.
+
+2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/120587
+	PR target/125155
+	* gcc.target/or1k/pr125155.c: New test.
+
+2026-05-05  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/rvv/vsetvl/avl_single-26.c: Update expected output.
+
+2026-05-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124957
+	* g++.dg/modules/attrib-6_a.C: New test.
+	* g++.dg/modules/attrib-6_b.C: New test.
+	* g++.dg/modules/attrib-6_c.C: New test.
+
+2026-05-05  wangzicong  <wangzicong@masscore.cn>
+
+	* gcc.target/riscv/rvv/autovec/pr124448.c: New test.
+
+2026-05-05  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/120189
+	* gm2/examples/cppcallingm2/run/pass/README: New test.
+	* gm2/examples/cppcallingm2/run/pass/a.def: New test.
+	* gm2/examples/cppcallingm2/run/pass/a.mod: New test.
+	* gm2/examples/cppcallingm2/run/pass/b.def: New test.
+	* gm2/examples/cppcallingm2/run/pass/b.mod: New test.
+	* gm2/examples/cppcallingm2/run/pass/c.def: New test.
+	* gm2/examples/cppcallingm2/run/pass/c.mod: New test.
+	* gm2/examples/cppcallingm2/run/pass/test.cc: New test.
+
+2026-05-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125185
+	* gcc.dg/torture/pr125185.c: New testcase.
+
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/122569
+	* gcc.dg/tree-ssa/pr122569-1.c: Only require __builtin_ctz/.CTZ
+	on ctzll 64-bit targets.
+	* gcc.dg/tree-ssa/pr122569-2.c: Only require __builtin_clz/.CLZ
+	on clzll 64-bit targets.
+
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125180
+	* gcc.target/i386/pr125180.c: New test.
+
+2026-05-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125124
+	* gcc.dg/torture/pr125124.c: New testcase.
+
+2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
+
+	* gcc.target/i386/shift-gf2p8affine-2.c (do_test): New function.
+	Extracted from main.
+	(main): Drop __builtin_cpu_init.  Call do_test only if
+	__builtin_cpu_supports ("gfni") returns true.
+
 2026-05-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR c++/65271
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 5e6f24ba224b..e34ce934e652 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* Makefile.in: Regenerate.
+	* acinclude.m4: Delete LIBAT_CHECK_ATTRIBUTE_VISIBILITY.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+	* configure.ac: Use GCC_CHECK_ATTRIBUTE_VISIBILITY instead of
+	LIBAT_CHECK_ATTRIBUTE_VISIBILITY.
+	* testsuite/Makefile.in: Regenerate.
+
 2026-02-21  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile.am (all-local): Depend on stmp-libatomic and otherwise
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index f05d112ae960..4af531e07f95 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* Makefile.in: Regenerate.
+	* acinclude.m4: Delete LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+	* configure.ac: Use GCC_CHECK_ATTRIBUTE_VISIBILITY istead of
+	LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY.
+
 2026-04-17  Steven G. Kargl  <kargl@gcc.gnu.org>
 
 	PR libfortran/120431
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 341984ff04bf..877606b7f685 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* Makefile.in: Regenerate.
+	* acinclude.m4: Delete LIGOMP_CHECK_ATTRIBUTE_VISIBILITY.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+	* configure.ac: Use GCC_CHECK_ATTRIBUTE_VISIBILITY instead of
+	LIGOMP_CHECK_ATTRIBUTE_VISIBILITY.
+	* testsuite/Makefile.in: Regenerate.
+
 2026-04-28  Tobias Burnus  <tburnus@baylibre.com>
 
 	* testsuite/libgomp.fortran/map-subarray-6.f90: Fix, extend, and
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 0b5643508252..a98bc1bcda28 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* Makefile.in: Regenerate.
+	* acinclude.m4: Delete LIBITM_CHECK_ATTRIBUTE_VISIBILITY.
+	* aclocal.m4: Regenerate.
+	* configure: Likewise.
+	* configure.ac: Use GCC_CHECK_ATTRIBUTE_VISIBILITY instead of
+	LIBITM_CHECK_ATTRIBUTE_VISIBILITY.
+	* testsuite/Makefile.in: Regenerate.
+
 2026-02-12  Pietro Monteiro  <pietro@sociotechnical.xyz>
 	    Jakub Jelinek   <jakub@redhat.com>
 
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index c4073bed9bed..55f864102dd5 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c/121911
+	* ssp.c: Include <stdint.h>.  Change __stack_chk_guard to
+	uintptr_t.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 299ee3ad307f..41af9f518ebd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,31 @@
+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

From gccadmin@gcc.gnu.org  Wed May  6 00:20:40 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  6 May 2026 00:20:40 +0000 (GMT)
Subject: [gcc r15-11135] Daily bump.
Message-ID: <20260506002040.B6D254BA23FC@sourceware.org>

https://gcc.gnu.org/g:bcd3e3ff5aa7bdbc529ae3935d05a28a1c902a64

commit r15-11135-gbcd3e3ff5aa7bdbc529ae3935d05a28a1c902a64
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 6 00:20:10 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |  2 +-
 gcc/d/ChangeLog         | 12 ++++++++++++
 gcc/testsuite/ChangeLog |  8 ++++++++
 libstdc++-v3/ChangeLog  | 24 ++++++++++++++++++++++++
 4 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6174e3d1a443..3bc992c09c39 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260505
+20260506
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index aa88dd943771..01c7cd0b8c20 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	Backported from master:
+	2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* types.cc (finish_aggregate_mode): Explicitly set TYPE_MODE of
+	non-POD types here.
+	(finish_aggregate_type): Propagate TREE_ADDRESSABLE to all variants.
+	(TypeVisitor::visit (TypeStruct *)): Set TREE_ADDRESSABLE before
+	visiting struct members.
+
 2026-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 67994da0d721..ef6684519b03 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	Backported from master:
+	2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* gdc.dg/pr125089.d: New test.
+
 2026-05-01  Marek Polacek  <polacek@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 90303fdd8940..5461893406b0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-05  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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>
+
+	Backported from master:
+	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  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/xml/manual/status_cxx2023.xml: Update status table.
+	* doc/html/manual/status.html: Regenerate.
+
 2026-04-16  Tomasz Kami?ski  <tkaminsk@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Wed May  6 00:21:23 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed,  6 May 2026 00:21:23 +0000 (GMT)
Subject: [gcc r16-8872] Daily bump.
Message-ID: <20260506002123.0CE1B4BA23FA@sourceware.org>

https://gcc.gnu.org/g:321832daa7e1c8e9452c811b659cd66b459fdec2

commit r16-8872-g321832daa7e1c8e9452c811b659cd66b459fdec2
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 6 00:20:53 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  9 +++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/d/ChangeLog         | 12 ++++++++++++
 gcc/po/ChangeLog        |  4 ++++
 gcc/testsuite/ChangeLog | 16 ++++++++++++++++
 libstdc++-v3/ChangeLog  | 34 ++++++++++++++++++++++++++++++++++
 6 files changed, 76 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05a60783822b..6a2d42abd1db 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125180
+	* config/i386/i386.md (HI/SI test -> QI test splitter): Punt if
+	operands[2] is a volatile MEM.
+
 2026-05-04  Nathan Myers  <ncm@cantrip.org>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6174e3d1a443..3bc992c09c39 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260505
+20260506
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 3f7c78639a59..e855225e13fc 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	Backported from master:
+	2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* types.cc (finish_aggregate_mode): Explicitly set TYPE_MODE of
+	non-POD types here.
+	(finish_aggregate_type): Propagate TREE_ADDRESSABLE to all variants.
+	(TypeVisitor::visit (TypeStruct *)): Set TREE_ADDRESSABLE before
+	visiting struct members.
+
 2026-04-30  Release Manager
 
 	* GCC 16.1.0 released.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 5269a212f631..939a06afb7ff 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-05  Joseph Myers  <josmyers@redhat.com>
+
+	* de.po: Update.
+
 2026-05-01  Joseph Myers  <josmyers@redhat.com>
 
 	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 651b2b2e522d..2363f03349db 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	Backported from master:
+	2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	PR d/125089
+	* gdc.dg/pr125089.d: New test.
+
+2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125180
+	* gcc.target/i386/pr125180.c: New test.
+
 2026-05-01  Jeff Law  <jeffrey.law@oss.qualcomm.com>
 
 	Revert:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index bb07f05e657c..d5975d6f96d4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,37 @@
+2026-05-05  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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>
+
+	Backported from master:
+	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  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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>
 
 	Backported from master:

From redi@gcc.gnu.org  Wed May  6 08:30:02 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  6 May 2026 08:30:02 +0000 (GMT)
Subject: [gcc r17-349] libstdc++: Improve docs for range access functions
 [PR97001]
Message-ID: <20260506083002.B6C354BA23EB@sourceware.org>

https://gcc.gnu.org/g:d8cde7c0859004e07c0cfd9733a8eb0272b3300a

commit r17-349-gd8cde7c0859004e07c0cfd9733a8eb0272b3300a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 20:19:45 2026 +0100

    libstdc++: Improve docs for range access functions [PR97001]
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/97001
            * include/bits/range_access.h: Improve Doxygen comments.

Diff:
---
 libstdc++-v3/include/bits/range_access.h | 38 ++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h
index ddf74f3296fd..5a748257f197 100644
--- a/libstdc++-v3/include/bits/range_access.h
+++ b/libstdc++-v3/include/bits/range_access.h
@@ -47,6 +47,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to the first element of
    *          the container.
    *  @param  __cont  Container.
+   *  @since  C++11
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -71,6 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to one past the last element of
    *          the container.
    *  @param  __cont  Container.
+   *  @since  C++11
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -83,6 +85,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to one past the last element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++11
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -94,6 +97,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return an iterator pointing to the first element of the array.
    *  @param  __arr  Array.
+   *  @since  C++11
    */
   template<typename _Tp, size_t _Nm>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -105,6 +109,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to one past the last element
    *          of the array.
    *  @param  __arr  Array.
+   *  @since  C++11
    */
   template<typename _Tp, size_t _Nm>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -125,6 +130,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to the first element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -137,6 +143,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return an iterator pointing to one past the last element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -149,6 +156,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing to the last element of
    *          the container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -161,6 +169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing to the last element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -173,6 +182,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing one past the first element of
    *          the container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -185,6 +195,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing one past the first element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -197,6 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing to the last element of
    *          the array.
    *  @param  __arr  Array.
+   *  @since  C++14
    */
   template<typename _Tp, size_t _Nm>
     [[__nodiscard__]]
@@ -208,6 +220,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing one past the first element of
    *          the array.
    *  @param  __arr  Array.
+   *  @since  C++14
    */
   template<typename _Tp, size_t _Nm>
     [[__nodiscard__]]
@@ -219,6 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing to the last element of
    *          the initializer_list.
    *  @param  __il  initializer_list.
+   *  @since  C++14
    */
   template<typename _Tp>
     [[__nodiscard__]]
@@ -230,6 +244,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing one past the first element of
    *          the initializer_list.
    *  @param  __il  initializer_list.
+   *  @since  C++14
    */
   template<typename _Tp>
     [[__nodiscard__]]
@@ -241,6 +256,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing to the last element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -253,6 +269,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Return a reverse iterator pointing one past the first element of
    *          the const container.
    *  @param  __cont  Container.
+   *  @since  C++14
    */
   template<typename _Container>
     [[__nodiscard__, __gnu__::__always_inline__]]
@@ -267,6 +284,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return the size of a container.
    *  @param  __cont  Container.
+   *  @since  C++17
    */
   template <typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -277,6 +295,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /**
    *  @brief  Return the size of an array.
+   *  @param  - An array.
+   *  @return The number of elements in the array.
+   *  @since  C++17
    */
   template <typename _Tp, size_t _Nm>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -287,6 +308,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return whether a container is empty.
    *  @param  __cont  Container.
+   *  @since  C++17
    */
   template <typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -297,6 +319,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /**
    *  @brief  Return whether an array is empty (always false).
+   *  @param  - An array.
+   *  @since  C++17
    */
   template <typename _Tp, size_t _Nm>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -307,6 +331,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return whether an initializer_list is empty.
    *  @param  __il  Initializer list.
+   *  @since  C++17
    */
   template <typename _Tp>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -317,6 +342,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return the data pointer of a container.
    *  @param  __cont  Container.
+   *  @since  C++17
    */
   template <typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -328,6 +354,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return the data pointer of a const container.
    *  @param  __cont  Container.
+   *  @since  C++17
    */
   template <typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -339,6 +366,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return the data pointer of an array.
    *  @param  __array  Array.
+   *  @since  C++17
    */
   template <typename _Tp, size_t _Nm>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -349,6 +377,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /**
    *  @brief  Return the data pointer of an initializer list.
    *  @param  __il  Initializer list.
+   *  @since  C++17
    */
   template <typename _Tp>
     [[nodiscard, __gnu__::__always_inline__]]
@@ -358,6 +387,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif // __glibcxx_nonmember_container_access
 
 #ifdef __glibcxx_ssize // C++ >= 20
+  /**
+   *  @brief  Return the size of a container, as a signed integer.
+   *  @param  __cont  Container.
+   *  @since  C++20
+   */
   template<typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
     constexpr auto
@@ -368,6 +402,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return static_cast<common_type_t<ptrdiff_t, type>>(__cont.size());
     }
 
+  /**
+   *  @brief  Return the length of an array, as a signed integer.
+   *  @since  C++20
+   */
   template<typename _Tp, ptrdiff_t _Num>
     [[nodiscard, __gnu__::__always_inline__]]
     constexpr ptrdiff_t

From redi@gcc.gnu.org  Wed May  6 09:53:31 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  6 May 2026 09:53:31 +0000 (GMT)
Subject: [gcc r17-352] libstdc++: Use hardware_destructive_interference_size
 in atomic.cc
Message-ID: <20260506095331.070B04BA23EE@sourceware.org>

https://gcc.gnu.org/g:a6ffae6d7f0fb4515103a5f056b691301988268d

commit r17-352-ga6ffae6d7f0fb4515103a5f056b691301988268d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 16:06:11 2026 +0100

    libstdc++: Use hardware_destructive_interference_size in atomic.cc
    
    This code was moved from a header into the library, so is no longer
    affected by compiler options used when including the headers. We can
    just use std::hardware_destructive_interference_size now, and remove the
    comment.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/src/c++20/atomic.cc | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/src/c++20/atomic.cc b/libstdc++-v3/src/c++20/atomic.cc
index 3e02f437db3c..3fbc05c2e682 100644
--- a/libstdc++-v3/src/c++20/atomic.cc
+++ b/libstdc++-v3/src/c++20/atomic.cc
@@ -289,12 +289,9 @@ namespace
   // The state used by atomic waiting and notifying functions.
   struct __waitable_state
   {
-    // Don't use std::hardware_destructive_interference_size here because we
-    // don't want the layout of library types to depend on compiler options.
-    static constexpr auto _S_align = 64;
-
     // Count of threads blocked waiting on this state.
-    alignas(_S_align) __platform_wait_t _M_waiters = 0;
+    alignas(std::hardware_destructive_interference_size)
+      __platform_wait_t _M_waiters = 0;
 
 #ifndef _GLIBCXX_HAVE_PLATFORM_WAIT
     mutex _M_mtx;
@@ -310,7 +307,8 @@ namespace
     // If we can't do a platform wait on the atomic variable itself,
     // we use this member as a proxy for the atomic variable and we
     // use this for waiting and notifying functions instead.
-    alignas(_S_align) __platform_wait_t _M_ver = 0;
+    alignas(std::hardware_destructive_interference_size)
+      __platform_wait_t _M_ver = 0;
 
 #ifndef _GLIBCXX_HAVE_PLATFORM_WAIT
     __condvar _M_cv;

From tkaminsk@gcc.gnu.org  Wed May  6 11:26:51 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  6 May 2026 11:26:51 +0000 (GMT)
Subject: [gcc r17-353] libstdc++: Avoid double indirection in function_ref
 when possible
Message-ID: <20260506112651.44CA24BA23EF@sourceware.org>

https://gcc.gnu.org/g:c56ec55c797daee08681354b229f4475558c1342

commit r17-353-gc56ec55c797daee08681354b229f4475558c1342
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 15 17:04:22 2025 +0200

    libstdc++: Avoid double indirection in function_ref when possible
    
    This implements the P3961R1: Less double indirection in function_ref.
    
    This patch uses provision provided by the paper for implementations, and
    expands the set of the compatible signatures to include ParamType&& and
    ParamType, and by value return types that differs only in cv-qualifiers.
    This follows the move_only_function approach from the r16-617-g708d40ff109c6e.
    Futhermore the optimization is also applied when function_ref<Ret(Args...) const>
    is constructed from function_ref<Ret(Args...)>, even if the underyling target
    is be mutated by the call.
    
    The implementations moves the _M_ptrs members to newly defined base class
    __polyfunc::_Ref_base. This allows us to reuse existing __base_of and
    __invoker_of accessor in the implementation (after befriending them).
    The accessors functions are also now marked as constexpr. Furthermore,
    _Ref_base default constructor initializes the _M_ptrs._M_obj to nullptr,
    and _M_init function is transfered to it, making it instantiations
    independent from callback signature.
    
    To check signature compatiblity required by standard for assignment, new
    __is_funcref_assignable function is used, and _ArgsSignature and _TargetQuals
    member typedef are defined in function_ref. To avoid confusion between adjusted
    and specified signature, _Signature typedef is removed from all wrappers, and
    __is_invoker_convertible is updated to use _Invoker::_Signature instead.
    
    Per SG-10 guidance __cpp_lib_function_ref feature test macro is updated to
    202604, differntiating from P3948R1 paper accepted at the same time.
    
            PR libstdc++/119126
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/cpyfunc_impl.h           |   7 +-
 libstdc++-v3/include/bits/funcref_impl.h           |  57 +++++++-----
 libstdc++-v3/include/bits/funcwrap.h               |  51 +++++++++-
 libstdc++-v3/include/bits/mofunc_impl.h            |   7 +-
 libstdc++-v3/include/bits/version.def              |   3 +-
 libstdc++-v3/include/bits/version.h                |   4 +-
 .../testsuite/20_util/function_ref/cons.cc         |   2 +-
 .../testsuite/20_util/function_ref/conv.cc         | 103 ++++++++++++++++-----
 .../testsuite/20_util/function_ref/dangling.cc     |  17 +++-
 .../testsuite/20_util/function_ref/dangling_neg.cc |   8 ++
 10 files changed, 194 insertions(+), 65 deletions(-)

diff --git a/libstdc++-v3/include/bits/cpyfunc_impl.h b/libstdc++-v3/include/bits/cpyfunc_impl.h
index f1918ddf87a3..580295a5d635 100644
--- a/libstdc++-v3/include/bits/cpyfunc_impl.h
+++ b/libstdc++-v3/include/bits/cpyfunc_impl.h
@@ -70,7 +70,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       using _Base = __polyfunc::_Cpy_base;
       using _Invoker = __polyfunc::_Invoker<_Noex, _Res, _ArgTypes...>;
-      using _Signature = _Invoker::_Signature;
 
       template<typename _Tp>
 	using __callable
@@ -252,14 +251,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typename _Invoker::__storage_func_t _M_invoke = nullptr;
 
       template<typename _Func>
-	friend auto&
+	friend constexpr auto&
 	__polyfunc::__invoker_of(_Func&) noexcept;
 
       template<typename _Func>
-	friend auto&
+	friend constexpr auto&
 	__polyfunc::__base_of(_Func&) noexcept;
 
-      template<typename _Dst, typename _Src>
+      template<typename _Src, typename _Dst>
 	friend consteval bool
 	__polyfunc::__is_invoker_convertible() noexcept;
     };
diff --git a/libstdc++-v3/include/bits/funcref_impl.h b/libstdc++-v3/include/bits/funcref_impl.h
index 9fcab570803f..9fc8432b42be 100644
--- a/libstdc++-v3/include/bits/funcref_impl.h
+++ b/libstdc++-v3/include/bits/funcref_impl.h
@@ -67,13 +67,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Res, typename... _ArgTypes, bool _Noex>
     class function_ref<_Res(_ArgTypes...) _GLIBCXX_MOF_CV
 		       noexcept(_Noex)>
+    : __polyfunc::_Ref_base
     {
       static_assert(
 	(std::__is_complete_or_unbounded(__type_identity<_ArgTypes>()) && ...),
 	"each parameter type must be a complete class");
 
+      using _Base = __polyfunc::_Ref_base;
       using _Invoker = __polyfunc::_Invoker<_Noex, _Res, _ArgTypes...>;
-      using _Signature = _Invoker::_Signature;
+      using _ArgsSignature = _Res(_ArgTypes...) noexcept(_Noex);
+      using _TargetQuals = int _GLIBCXX_MOF_CV&;
 
       // [func.wrap.ref.ctor]/1 is-invokable-using
       template<typename... _Tps>
@@ -89,8 +92,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	function_ref(_Fn* __fn) noexcept
 	{
 	  __glibcxx_assert(__fn != nullptr);
-	  _M_invoke = _Invoker::template _S_ptrs<_Fn*>();
 	  _M_init(__fn);
+	  _M_invoke = _Invoker::template _S_ptrs<_Fn*>();
 	}
 
       /// Target and bound object is object referenced by parameter.
@@ -108,21 +111,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  using _Fd = remove_cv_t<_Vt>;
 	  if constexpr (__is_std_op_wrapper<_Fd>)
-	    {
-	      _M_invoke = _Invoker::template _S_nttp<_Fd{}>;
-	      _M_ptrs._M_obj = nullptr;
-	    }
+	    _M_invoke = _Invoker::template _S_nttp<_Fd{}>;
 	  else if constexpr (requires (_ArgTypes&&... __args) {
 		    _Fd::operator()(std::forward<_ArgTypes>(__args)...);
 		  })
+	    _M_invoke = _Invoker::template _S_static<_Fd>;
+	  else if constexpr (__is_function_ref_v<_Fd>
+	       && __polyfunc::__is_invoker_convertible<_Fd, function_ref>())
 	    {
-	      _M_invoke = _Invoker::template _S_static<_Fd>;
-	      _M_ptrs._M_obj = nullptr;
+	      _Base::operator=(__polyfunc::__base_of(__f));
+	      _M_invoke = __polyfunc::__invoker_of(__f);
 	    }
           else
 	    {
-	      _M_invoke = _Invoker::template _S_ptrs<_Vt _GLIBCXX_MOF_CV&>();
 	      _M_init(std::addressof(__f));
+	      _M_invoke = _Invoker::template _S_ptrs<_Vt _GLIBCXX_MOF_CV&>();
 	    }
 	}
 
@@ -146,7 +149,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    static_assert(__fn != nullptr);
 
 	  _M_invoke = &_Invoker::template _S_nttp<__fn>;
-	  _M_ptrs._M_obj = nullptr;
 	}
 
       /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
@@ -162,6 +164,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 
+	  _M_init(std::addressof(__ref));
 	  if constexpr (is_member_pointer_v<_Fn>
 			  && same_as<_Td, typename __inv_unwrap<_Td>::type>)
 	    // N.B. invoking member pointer on lvalue produces the same effects,
@@ -169,7 +172,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    _M_invoke = &_Invoker::template _S_bind_ptr<__fn, _Td _GLIBCXX_MOF_CV>;
 	  else
 	    _M_invoke = &_Invoker::template _S_bind_ref<__fn, _Td _GLIBCXX_MOF_CV&>;
-	  _M_init(std::addressof(__ref));
 	}
 
       /// Target object is equivalent to std::bind_front<_fn>(__ptr).
@@ -185,13 +187,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  if constexpr (is_member_pointer_v<_Fn>)
 	    __glibcxx_assert(__ptr != nullptr);
 
-	  _M_invoke = &_Invoker::template _S_bind_ptr<__fn, _Td _GLIBCXX_MOF_CV>;
 	  _M_init(__ptr);
+	  _M_invoke = &_Invoker::template _S_bind_ptr<__fn, _Td _GLIBCXX_MOF_CV>;
 	}
 
       template<typename _Tp>
-	requires (!is_same_v<_Tp, function_ref>) && (!is_pointer_v<_Tp>)
+	requires (!is_same_v<_Tp, function_ref>)
+		 && (!is_pointer_v<_Tp>)
 		 && (!__is_constant_wrapper_v<_Tp>)
+		 && (!__polyfunc::__is_funcref_assignable<function_ref, _Tp>())
 	function_ref&
 	operator=(_Tp) = delete;
 
@@ -206,18 +210,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return _M_invoke(_M_ptrs, std::forward<_ArgTypes>(__args)...); }
 
     private:
-      template<typename _Tp>
-	constexpr void
-	_M_init(_Tp* __ptr) noexcept
-	{
-	  if constexpr (is_function_v<_Tp>)
-	    _M_ptrs._M_func = reinterpret_cast<void(*)()>(__ptr);
-	  else
-	    _M_ptrs._M_obj = __ptr;
-	}
-
       typename _Invoker::__ptrs_func_t _M_invoke;
-      __polyfunc::_Ptrs _M_ptrs;
+
+      template<typename _Func>
+	friend constexpr auto&
+	__polyfunc::__invoker_of(_Func&) noexcept;
+
+      template<typename _Func>
+	friend constexpr auto&
+	__polyfunc::__base_of(_Func&) noexcept;
+
+      template<typename _Src, typename _Dst>
+	friend consteval bool
+	__polyfunc::__is_invoker_convertible() noexcept;
+
+      template<typename _Dst, typename _Src>
+        friend consteval bool
+        __polyfunc::__is_funcref_assignable() noexcept;
     };
 
 #undef _GLIBCXX_MOF_CV
diff --git a/libstdc++-v3/include/bits/funcwrap.h b/libstdc++-v3/include/bits/funcwrap.h
index b835e075295b..07163f3a5a32 100644
--- a/libstdc++-v3/include/bits/funcwrap.h
+++ b/libstdc++-v3/include/bits/funcwrap.h
@@ -231,12 +231,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
      using _Invoker = _Base_invoker<_Noex, remove_cv_t<_Ret>, __param_t<_Args>...>;
 
    template<typename _Func>
-     auto&
+     constexpr auto&
      __invoker_of(_Func& __f) noexcept
      { return __f._M_invoke; }
 
    template<typename _Func>
-     auto&
+     constexpr auto&
      __base_of(_Func& __f) noexcept
      { return static_cast<__like_t<_Func&, typename _Func::_Base>>(__f); }
 
@@ -244,9 +244,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
      consteval bool
      __is_invoker_convertible() noexcept
      {
-       if constexpr (requires { typename _Src::_Signature; })
-	 return is_convertible_v<typename _Src::_Signature,
-				 typename _Dst::_Signature>;
+       if constexpr (requires { typename _Src::_Invoker::_Signature; })
+	 return is_convertible_v<typename _Src::_Invoker::_Signature,
+				 typename _Dst::_Invoker::_Signature>;
        else
 	 return false;
      }
@@ -539,6 +539,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// @cond undocumented
   namespace __polyfunc
   {
+    struct _Ref_base
+    {
+      constexpr
+      _Ref_base() noexcept
+      { _M_ptrs._M_obj = nullptr; }
+
+      template<typename _Tp>
+	constexpr void
+	_M_init(_Tp* __ptr) noexcept
+	{
+	  if constexpr (is_function_v<_Tp>)
+	    _M_ptrs._M_func = reinterpret_cast<void(*)()>(__ptr);
+	  else
+	    _M_ptrs._M_obj = __ptr;
+	}
+
+      _Ptrs _M_ptrs;
+    };
+
     template<typename _Sig>
       struct __skip_first_arg;
 
@@ -585,6 +604,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     function_ref(constant_wrapper<__cwfn, _Fn>, _Tp&&)
       -> function_ref<remove_pointer_t<_SignaturePtr>>;
 
+  /// @cond undocumented
+  template<typename _Tp>
+    constexpr bool __is_function_ref_v = false;
+  template<typename _Tp>
+    constexpr bool __is_function_ref_v<function_ref<_Tp>> = true;
+
+  namespace __polyfunc
+  {
+    template<typename _Dst, typename _Src>
+      consteval bool
+      __is_funcref_assignable() noexcept
+      {
+	if constexpr (__is_function_ref_v<_Src>)
+	  if constexpr (is_convertible_v<typename _Src::_ArgsSignature*,
+					 typename _Dst::_ArgsSignature*>)
+	    return is_convertible_v<typename _Dst::_TargetQuals,
+				    typename _Src::_TargetQuals>;
+	return false;
+      }
+  } // namespace __polyfunc
+  /// @endcond
+
 #endif // __glibcxx_function_ref
 
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/mofunc_impl.h b/libstdc++-v3/include/bits/mofunc_impl.h
index 468e6855fc6b..91a78bfca018 100644
--- a/libstdc++-v3/include/bits/mofunc_impl.h
+++ b/libstdc++-v3/include/bits/mofunc_impl.h
@@ -70,7 +70,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       using _Base = __polyfunc::_Mo_base;
       using _Invoker = __polyfunc::_Invoker<_Noex, _Res, _ArgTypes...>;
-      using _Signature = _Invoker::_Signature;
 
       template<typename _Tp>
 	using __callable
@@ -236,14 +235,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typename _Invoker::__storage_func_t _M_invoke = nullptr;
 
       template<typename _Func>
-	friend auto&
+	friend constexpr auto&
 	__polyfunc::__invoker_of(_Func&) noexcept;
 
       template<typename _Func>
-	friend auto&
+	friend constexpr auto&
 	__polyfunc::__base_of(_Func&) noexcept;
 
-      template<typename _Dst, typename _Src>
+      template<typename _Src, typename _Dst>
 	friend consteval bool
 	__polyfunc::__is_invoker_convertible() noexcept;
     };
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 4db17a6d98c7..1f0d3a2670e5 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1985,9 +1985,10 @@ ftms = {
   // 202306 P0792R14 function_ref: a non-owning reference to a Callable
   // 202511 P3774R1  Rename std::nontype, and make it broadly useful
   // 202603 P3948R1  constant_wrapper is the only tool needed for passing...
+  // 202604 P3961R1  Less double indirection in function_ref (RU-220)
   name = function_ref;
   values = {
-    v = 202603;
+    v = 202604;
     cxxmin = 26;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 62bc83f7ea12..66ac0ebef680 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2208,9 +2208,9 @@
 
 #if !defined(__cpp_lib_function_ref)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_function_ref 202603L
+#  define __glibcxx_function_ref 202604L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_function_ref)
-#   define __cpp_lib_function_ref 202603L
+#   define __cpp_lib_function_ref 202604L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_function_ref) */
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
index e6c13e3e538c..33f30099c54e 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/cons.cc
@@ -5,7 +5,7 @@
 
 #ifndef __cpp_lib_function_ref
 # error "Feature-test macro for function_ref missing in <functional>"
-#elif __cpp_lib_function_ref != 202603L
+#elif __cpp_lib_function_ref != 202604L
 # error "Feature-test macro for function_ref has wrong value in <functional>"
 #endif
 
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/conv.cc b/libstdc++-v3/testsuite/20_util/function_ref/conv.cc
index 7606d265f986..8c6d6b66a8b8 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/conv.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/conv.cc
@@ -36,8 +36,33 @@ static_assert( std::is_same_v<std::function_ref<void(int const[5])>,
 static_assert( std::is_same_v<std::function_ref<void(FuncType)>,
 			      std::function_ref<void(FuncType*)>>);
 
-// The C++26 [func.wrap.general] p2 does not currently cover funciton_ref,
-// so we make extra copies of arguments.
+// Compatible signatures per standard, function_ref is assignable
+static_assert( std::is_assignable_v<std::function_ref<int(long) noexcept>&,
+				    std::function_ref<int(long) const noexcept>> );
+static_assert( std::is_assignable_v<std::function_ref<int(long) const>&,
+				    std::function_ref<int(long) const noexcept>> );
+static_assert( std::is_assignable_v<std::function_ref<int(long)>&,
+				    std::function_ref<int(long) const noexcept>> );
+
+// Incompatible signatures per standard,  not assignable
+static_assert( !std::is_assignable_v<std::function_ref<int(long) const>&,
+				     std::function_ref<int(long)>> );
+static_assert( !std::is_assignable_v<std::function_ref<int(int)>&,
+				     std::function_ref<int(long)>> );
+static_assert( !std::is_assignable_v<std::function_ref<long(long)>&,
+				     std::function_ref<int(long)>> );
+static_assert( !std::is_assignable_v<std::function_ref<long(int)>&,
+				     std::function_ref<int(long)>> );
+
+// Implementation-specific compatible signatures, function_ref is not assingable
+static_assert( !std::is_assignable_v<std::function_ref<int(CountedArg)>&,
+				     std::function_ref<int(CountedArg&&)>> );
+static_assert( !std::is_assignable_v<std::function_ref<CountedArg()>&,
+				     std::function_ref<const CountedArg(long)>> );
+static_assert( !std::is_assignable_v<std::function_ref<const CountedArg()>&,
+				     std::function_ref<CountedArg(long)>> );
+static_assert( !std::is_assignable_v<std::function_ref<int(long) const>&,
+				     std::function_ref<int(long)>> );
 
 void
 test01()
@@ -54,26 +79,40 @@ test01()
   VERIFY( r2c(c) == 2 );
 
   std::function_ref<int(CountedArg) const> r3r(r1);
-  VERIFY( r3r(c) == 2 );
+  VERIFY( r3r(c) == 1 );
   std::function_ref<int(CountedArg) const> r3m(m1);
   VERIFY( r3m(c) == 2 );
   std::function_ref<int(CountedArg) const> r3c(c1);
   VERIFY( r3c(c) == 2 );
 
-  std::function_ref<int(CountedArg)> r4r(r1);
-  VERIFY( r4r(c) == 2 );
-  std::function_ref<int(CountedArg)> r4m(m1);
+  std::function_ref<int(CountedArg) noexcept> r4r(r1);
+  VERIFY( r4r(c) == 1 );
+  std::function_ref<int(CountedArg) noexcept> r4m(m1);
   VERIFY( r4m(c) == 2 );
-  std::function_ref<int(CountedArg)> r4c(c1);
+  std::function_ref<int(CountedArg) noexcept> r4c(c1);
   VERIFY( r4c(c) == 2 );
 
+  std::function_ref<int(CountedArg)> r5r(r1);
+  VERIFY( r4r(c) == 1 );
+  std::function_ref<int(CountedArg)> r5m(m1);
+  VERIFY( r4m(c) == 2 );
+  std::function_ref<int(CountedArg)> r5c(c1);
+  VERIFY( r4c(c) == 2 );
+
+  r3r = r1;
+  VERIFY( r3r(c) == 1 );
+  r4r = r1;
+  VERIFY( r4r(c) == 1 );
+  r5r = r1;
+  VERIFY( r5r(c) == 1 );
+
   // Incompatible signatures
-  std::function_ref<long(CountedArg) const noexcept> r5r(r1);
-  VERIFY( r5r(c) == 2 );
-  std::function_ref<long(CountedArg) const noexcept> r5m(m1);
-  VERIFY( r5r(c) == 2 );
-  std::function_ref<long(CountedArg) const noexcept> r5c(c1);
-  VERIFY( r5r(c) == 2 );
+  std::function_ref<long(CountedArg) const noexcept> r6r(r1);
+  VERIFY( r6r(c) == 2 );
+  std::function_ref<long(CountedArg) const noexcept> r6m(m1);
+  VERIFY( r6r(c) == 2 );
+  std::function_ref<long(CountedArg) const noexcept> r6c(c1);
+  VERIFY( r6r(c) == 2 );
 }
 
 void
@@ -110,7 +149,7 @@ test03()
   // Call const overload as std::function_ref<int(CountedArg) const>
   // inside std::function_ref<int(CountedArg)> would do.
   std::function_ref<int(CountedArg)> r2(r1);
-  VERIFY( r2(c) == 1002 );
+  VERIFY( r2(c) == 1001 );
   std::move_only_function<int(CountedArg)> m2(r1);
   VERIFY( m2(c) == 1002 );
 
@@ -119,7 +158,7 @@ test03()
   std::function_ref<int(CountedArg)> r3(f);
   VERIFY( r3(c) == 1 );
   std::function_ref<int(CountedArg) const> r4(r3);
-  VERIFY( r4(c) == 2 );
+  VERIFY( r4(c) == 1 );
   std::move_only_function<int(CountedArg) const> m4(r3);
   VERIFY( m4(c) == 2 );
 }
@@ -234,7 +273,7 @@ test07()
   std::function_ref<int()> r3r(r1);
   VERIFY( r3r() == 2 );
   r1 = f1;
-  VERIFY( r3r() == 1 ); // converting-constructor
+  VERIFY( r3r() == 2 ); // converting-constructor
 
   std::function_ref<int()> r3m(m1);
   VERIFY( r3m() == 2 );
@@ -263,6 +302,19 @@ test08()
 void
 test09()
 {
+  auto f = [](CountedArg arg) noexcept { return arg.counter; };
+  // For non-tirival types Param and Param&& are compatible.
+  std::function_ref<int(CountedArg) const noexcept> r1(f);
+  VERIFY( r1({}) == 1 );
+  std::function_ref<int(CountedArg&&) const noexcept> r2(r1);
+  VERIFY( r2({}) == 1 );
+
+  auto fs = [](CountedArg const& arg, std::string) noexcept { return arg.counter; };
+  std::function_ref<int(CountedArg, std::string) const noexcept> rs1(fs);
+  VERIFY( rs1(c, "") == 1 );
+  std::function_ref<int(CountedArg, std::string&&) const noexcept> rs2(rs1);
+  VERIFY( rs2(c, "") == 1 );
+
   // Scalar types and small trivially move constructible types are passed
   // by value to invoker. So int&& signature is not compatible for such types.
   auto fi = [](CountedArg const& arg, int) noexcept { return arg.counter; };
@@ -271,11 +323,20 @@ test09()
   std::function_ref<int(CountedArg, int&&) const noexcept> ri2(ri1);
   VERIFY( ri2(c, 0) == 2 );
 
-  auto fs = [](CountedArg const& arg, std::string_view) noexcept { return arg.counter; };
-  std::function_ref<int(CountedArg, std::string_view) const noexcept> rs1(fs);
-  VERIFY( rs1(c, "") == 1 );
-  std::function_ref<int(CountedArg, std::string_view&&) const noexcept> rs2(rs1);
-  VERIFY( rs2(c, "") == 2 );
+  auto fv = [](CountedArg const& arg, std::string_view) noexcept { return arg.counter; };
+  std::function_ref<int(CountedArg, std::string_view) const noexcept> rv1(fv);
+  VERIFY( rv1(c, "") == 1 );
+  std::function_ref<int(CountedArg, std::string_view&&) const noexcept> rv2(rv1);
+  VERIFY( rv2(c, "") == 2 );
+
+  // CV-qual on by-value return is also ignored
+  auto fr = [](CountedArg const& arg) noexcept { return arg; };
+  std::function_ref<CountedArg(CountedArg) const noexcept> rr1(fr);
+  VERIFY( rr1(c).counter == 2 );
+  std::function_ref<const CountedArg(CountedArg) const noexcept> rr2(rr1);
+  VERIFY( rr2(c).counter == 2 );
+  std::function_ref<CountedArg(CountedArg)> rr3(rr2);
+  VERIFY( rr3(c).counter == 2 );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc b/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
index 4ef5d067555d..4a7b102c7889 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/dangling.cc
@@ -1,12 +1,13 @@
 // { dg-do compile { target c++26 } }
 
 #include <functional>
+#include <string>
 
-template<typename F>
-constexpr std::function_ref<int(int, int) const>
+template<typename Signature = int(int, int) const, typename F>
+constexpr std::function_ref<Signature>
 create(F f)
 {
-  std::function_ref<int(int, int) const> fr(f);
+  std::function_ref<Signature> fr(f);
   return fr;
 }
 
@@ -72,3 +73,13 @@ struct StaticWinsET {
 
 constexpr auto vStaticWinsET = create(StaticWinsET{});
 
+auto func = [](std::string s) noexcept -> int
+{ return s.size(); };
+
+constexpr std::function_ref<int(std::string)> stdCompatibleFRef
+  = std::function_ref<int(std::string) const noexcept>(func);
+constexpr std::function_ref<int(std::string&&)> implCompatible1FRef
+  = std::function_ref<int(std::string)>(func);
+constexpr std::function_ref<int(std::string) const> implCompatible2FRef
+  = std::function_ref<int(std::string)>(func);
+
diff --git a/libstdc++-v3/testsuite/20_util/function_ref/dangling_neg.cc b/libstdc++-v3/testsuite/20_util/function_ref/dangling_neg.cc
index 16033014703e..4e99f82a50cc 100644
--- a/libstdc++-v3/testsuite/20_util/function_ref/dangling_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/function_ref/dangling_neg.cc
@@ -74,3 +74,11 @@ struct InstanceWinsET {
 
 constexpr auto vInstanceWinsET = create(InstanceWinsET{}); // { dg-error "is not a constant expression" }
 
+constexpr auto func = [](std::string s) noexcept -> int
+{ return s.size(); };
+
+constexpr std::function_ref<int(const std::string&)> incompatible1FRef
+  = std::function_ref<int(std::string)>(func); // { dg-error "is not a constant expression" }
+constexpr std::function_ref<long(std::string)> incompatible2FRef
+  = std::function_ref<int(std::string)>(func); // { dg-error "is not a constant expression" }
+

From redi@gcc.gnu.org  Wed May  6 12:18:45 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  6 May 2026 12:18:45 +0000 (GMT)
Subject: [gcc r17-354] libstdc++: Remove non-concepts fallback for
 std::make_shared_for_overwrite
Message-ID: <20260506121845.015704BA5435@sourceware.org>

https://gcc.gnu.org/g:5d225c5aa3d40cbf479d99c0bb2ca22291a11568

commit r17-354-g5d225c5aa3d40cbf479d99c0bb2ca22291a11568
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 14:03:04 2026 +0100

    libstdc++: Remove non-concepts fallback for std::make_shared_for_overwrite
    
    Clang 10 added support for concepts, so we no longer need to support
    C++20 compilers that don't define __cpp_concepts.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/shared_ptr.h      | 18 ------------------
 libstdc++-v3/include/bits/shared_ptr_base.h |  5 -----
 2 files changed, 23 deletions(-)

diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index fd00384df223..ada32d3d3cb9 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -114,38 +114,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __glibcxx_shared_ptr_arrays >= 201707L
   // Constraint for overloads taking array types with unknown bound, U[].
-#if __cpp_concepts
   template<typename _Tp>
     requires is_array_v<_Tp> && (extent_v<_Tp> == 0)
     using _UnboundedArray = _Tp;
-#else
-  template<typename _Tp>
-    using _UnboundedArray
-      = __enable_if_t<__is_array_unknown_bounds<_Tp>::value, _Tp>;
-#endif
 
   // Constraint for overloads taking array types with known bound, U[N].
-#if __cpp_concepts
   template<typename _Tp>
     requires (extent_v<_Tp> != 0)
     using _BoundedArray = _Tp;
-#else
-  template<typename _Tp>
-    using _BoundedArray
-      = __enable_if_t<__is_array_known_bounds<_Tp>::value, _Tp>;
-#endif
 
 #if __glibcxx_smart_ptr_for_overwrite
   // Constraint for overloads taking either non-array or bounded array, U[N].
-#if __cpp_concepts
   template<typename _Tp>
     requires (!is_array_v<_Tp>) || (extent_v<_Tp> != 0)
     using _NotUnboundedArray = _Tp;
-#else
-  template<typename _Tp>
-    using _NotUnboundedArray
-      = __enable_if_t<!__is_array_unknown_bounds<_Tp>::value, _Tp>;
-#endif
 #endif // smart_ptr_for_overwrite
 #endif // shared_ptr_arrays
 
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index b92e3a4c90e4..cfaee6df37b1 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -727,14 +727,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // Partial specialization used for make_shared_for_overwrite<non-array>().
   // This partial specialization is used when the allocator's value type
   // is the special _Sp_overwrite_tag type.
-#if __cpp_concepts
   template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
     requires is_same_v<typename _Alloc::value_type, _Sp_overwrite_tag>
     class _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> final
-#else
-  template<typename _Tp, template<typename> class _Alloc, _Lock_policy _Lp>
-    class _Sp_counted_ptr_inplace<_Tp, _Alloc<_Sp_overwrite_tag>, _Lp> final
-#endif
     : public _Sp_counted_base<_Lp>
     {
       [[no_unique_address]] _Alloc _M_alloc;

From tkaminsk@gcc.gnu.org  Wed May  6 13:17:34 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  6 May 2026 13:17:34 +0000 (GMT)
Subject: [gcc r17-356] libstdc++: Format all contiguous ranges usign spoan.
Message-ID: <20260506131734.702664BA2E17@sourceware.org>

https://gcc.gnu.org/g:9b076412e6aecac70504607b5181483ef3e6d754

commit r17-356-g9b076412e6aecac70504607b5181483ef3e6d754
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Apr 29 16:06:16 2026 +0200

    libstdc++: Format all contiguous ranges usign spoan.
    
    We convert all contiguous ranges into span of the possibly-const qualified
    _Tp (__format::__maybe_const<_Tp, _CharT>). The span object is const qualifed,
    to trigger _M_format<const span<T>> specialization, that is already used by
    formatter specialization for ranges.
    
    This conversion is applied regardless if range is sized, and ranges::distance
    to compute the size. Even for user-defined iterators, they will observe range
    being iterated only once.
    
    Finally, using raw pointers to iterate range during formatting guarantees,
    that no stdio lock will be taken. In consequence it would be now possible
    to enable_nonlocking_formatter_optimization for all contiguous ranges.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/format (range_formatter::format): Format all
            contiguous ranges as span<__format::__maybe_const<_Tp, _CharT>>.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/format | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 4627381fa9e7..60adca93b5d8 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -6175,7 +6175,13 @@ namespace __format
 	format(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
 	{
 	  using _Range = remove_reference_t<_Rg>;
-	  if constexpr (__format::__simply_formattable_range<_Range, _CharT>)
+	  if constexpr (ranges::contiguous_range<_Rg>)
+	    {
+	      const span<__format::__maybe_const<_Tp, _CharT>>
+		__spn(ranges::data(__rg), size_t(ranges::distance(__rg)));
+	      return _M_format(__spn, __fc);
+	    }
+	  else if constexpr (__format::__simply_formattable_range<_Range, _CharT>)
 	    return _M_format<const _Range>(__rg, __fc);
 	  else
 	    return _M_format(__rg, __fc);

From redi@gcc.gnu.org  Wed May  6 14:15:56 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  6 May 2026 14:15:56 +0000 (GMT)
Subject: [gcc r17-362] libstdc++: Replace uses of EBO with
 [[no_unique_address]]
Message-ID: <20260506141556.4E47F4BA23D3@sourceware.org>

https://gcc.gnu.org/g:c30bf3aee78bbe9bd557c7bcd5d2d5533f6a216e

commit r17-362-gc30bf3aee78bbe9bd557c7bcd5d2d5533f6a216e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 13:39:24 2026 +0100

    libstdc++: Replace uses of EBO with [[no_unique_address]]
    
    Clang 9 added support for [[__no_unique_address__]] and we don't support
    Intel icc any longer, so we can remove the code in <tuple> that works
    around the absence of that attribute. We can also address a FIXME in
    <bits/shared_ptr_base.h> and replace uses of EBO with the attribute.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/shared_ptr_base.h | 65 +++++++++++-------------
 libstdc++-v3/include/std/tuple              | 77 +++++++----------------------
 2 files changed, 49 insertions(+), 93 deletions(-)

diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index cfaee6df37b1..4a8c67703999 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -513,57 +513,52 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline void
     _Sp_counted_ptr<nullptr_t, _S_atomic>::_M_dispose() noexcept { }
 
-  // FIXME: once __has_cpp_attribute(__no_unique_address__)) is true for
-  // all supported compilers we can greatly simplify _Sp_ebo_helper.
+#if ! __has_cpp_attribute(__no_unique_address__)
+#error "support for [[__no_unique_address__]] attribute is required"
+#endif
+
+#if ! _GLIBCXX_INLINE_VERSION
   // N.B. unconditionally applying the attribute could change layout for
   // final types, which currently cannot use EBO so have a unique address.
-
-  template<int _Nm, typename _Tp,
-	   bool __use_ebo = !__is_final(_Tp) && __is_empty(_Tp)>
+  template<typename _Tp, bool = !__is_final(_Tp) && __is_empty(_Tp)>
     struct _Sp_ebo_helper;
+#else
+  template<typename _Tp, bool = true>
+    struct _Sp_ebo_helper;
+#endif
 
-  /// Specialization using EBO.
-  template<int _Nm, typename _Tp>
-    struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp
+  /// Specialization using [[no_unique_address]].
+  template<typename _Tp>
+    struct _Sp_ebo_helper<_Tp, true>
     {
-      explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { }
-      explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { }
-
-      static _Tp&
-      _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); }
+      [[__no_unique_address__]] _Tp _M_obj;
     };
 
-  /// Specialization not using EBO.
-  template<int _Nm, typename _Tp>
-    struct _Sp_ebo_helper<_Nm, _Tp, false>
+#if ! _GLIBCXX_INLINE_VERSION
+  /// Specialization not using [[no_unique_address]].
+  template<typename _Tp>
+    struct _Sp_ebo_helper<_Tp, false>
     {
-      explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { }
-      explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { }
-
-      static _Tp&
-      _S_get(_Sp_ebo_helper& __eboh)
-      { return __eboh._M_tp; }
-
-    private:
-      _Tp _M_tp;
+      _Tp _M_obj;
     };
+#endif
 
   // Support for custom deleter and/or allocator
   template<typename _Ptr, typename _Deleter, typename _Alloc, _Lock_policy _Lp>
     class _Sp_counted_deleter final : public _Sp_counted_base<_Lp>
     {
-      class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc>
+      class _Impl
       {
-	typedef _Sp_ebo_helper<0, _Deleter>	_Del_base;
-	typedef _Sp_ebo_helper<1, _Alloc>	_Alloc_base;
+	[[__no_unique_address__]] _Sp_ebo_helper<_Deleter> _M_d;
+	[[__no_unique_address__]] _Sp_ebo_helper<_Alloc>   _M_a;
 
       public:
 	_Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
-	: _Del_base(std::move(__d)), _Alloc_base(__a), _M_ptr(__p)
+	: _M_d{std::move(__d)}, _M_a{__a}, _M_ptr(__p)
 	{ }
 
-	_Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); }
-	_Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); }
+	_Deleter& _M_del() noexcept { return _M_d._M_obj; }
+	_Alloc& _M_alloc() noexcept { return _M_a._M_obj; }
 
 	_Ptr _M_ptr;
       };
@@ -645,14 +640,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
     class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp>
     {
-      class _Impl : _Sp_ebo_helper<0, _Alloc>
+      class _Impl
       {
-	typedef _Sp_ebo_helper<0, _Alloc>	_A_base;
+	[[__no_unique_address__]] _Sp_ebo_helper<_Alloc> _M_a;
 
       public:
-	explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { }
+	explicit _Impl(_Alloc __a) noexcept : _M_a{std::move(__a)} { }
 
-	_Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); }
+	_Alloc& _M_alloc() noexcept { return _M_a._M_obj; }
 
 	__gnu_cxx::__aligned_buffer<__remove_cv_t<_Tp>> _M_storage;
       };
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index f7caa79cda04..cbacd5a3c977 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -68,15 +68,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename... _Elements>
     class tuple;
 
+#if ! __has_cpp_attribute(__no_unique_address__)
+#error "support for [[__no_unique_address__]] attribute is required"
+#endif
+
   /// @cond undocumented
+#if ! _GLIBCXX_INLINE_VERSION
   template<typename _Tp>
     struct __is_empty_non_tuple : is_empty<_Tp> { };
 
   // Using EBO for elements that are tuples causes ambiguous base errors.
+  // Although we have replaced EBO with [[no_unique_address]] we have to
+  // preserve the original layout for ABI compatibility.
   template<typename _El0, typename... _El>
     struct __is_empty_non_tuple<tuple<_El0, _El...>> : false_type { };
 
-  // Use the Empty Base-class Optimization for empty, non-final types.
+  // Use [[no_unique_address]] for empty, non-final types that are not tuples.
   template<typename _Tp>
     using __empty_not_final
     = __conditional_t<__is_final(_Tp), false_type,
@@ -85,10 +92,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<size_t _Idx, typename _Head,
 	   bool = __empty_not_final<_Head>::value>
     struct _Head_base;
+#else
+  // For the unstable ABI we always use [[no_unique_address]].
+  template<size_t _Idx, typename _Head, bool = true>
+    struct _Head_base;
+#endif
 
-#if __has_cpp_attribute(__no_unique_address__)
-  template<size_t _Idx, typename _Head>
-    struct _Head_base<_Idx, _Head, true>
+  // Primary template uses [[no_unique_address]].
+  template<size_t _Idx, typename _Head, bool /* = true */>
+    struct _Head_base
     {
       constexpr _Head_base()
       : _M_head_impl() { }
@@ -141,61 +153,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       [[__no_unique_address__]] _Head _M_head_impl;
     };
-#else
-  template<size_t _Idx, typename _Head>
-    struct _Head_base<_Idx, _Head, true>
-    : public _Head
-    {
-      constexpr _Head_base()
-      : _Head() { }
-
-      constexpr _Head_base(const _Head& __h)
-      : _Head(__h) { }
-
-      constexpr _Head_base(const _Head_base&) = default;
-      constexpr _Head_base(_Head_base&&) = default;
-
-      template<typename _UHead>
-        constexpr _Head_base(_UHead&& __h)
-	: _Head(std::forward<_UHead>(__h)) { }
-
-      _GLIBCXX20_CONSTEXPR
-      _Head_base(allocator_arg_t, __uses_alloc0)
-      : _Head() { }
-
-      template<typename _Alloc>
-	_GLIBCXX20_CONSTEXPR
-	_Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
-	: _Head(allocator_arg, *__a._M_a) { }
-
-      template<typename _Alloc>
-	_GLIBCXX20_CONSTEXPR
-	_Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
-	: _Head(*__a._M_a) { }
-
-      template<typename _UHead>
-	_GLIBCXX20_CONSTEXPR
-	_Head_base(__uses_alloc0, _UHead&& __uhead)
-	: _Head(std::forward<_UHead>(__uhead)) { }
-
-      template<typename _Alloc, typename _UHead>
-	_GLIBCXX20_CONSTEXPR
-	_Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
-	: _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { }
-
-      template<typename _Alloc, typename _UHead>
-	_GLIBCXX20_CONSTEXPR
-	_Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
-	: _Head(std::forward<_UHead>(__uhead), *__a._M_a) { }
-
-      static constexpr _Head&
-      _M_head(_Head_base& __b) noexcept { return __b; }
-
-      static constexpr const _Head&
-      _M_head(const _Head_base& __b) noexcept { return __b; }
-    };
-#endif
 
+#if ! _GLIBCXX_INLINE_VERSION
+  // Partial specialization that doesn't use [[no_unique_address]].
   template<size_t _Idx, typename _Head>
     struct _Head_base<_Idx, _Head, false>
     {
@@ -250,6 +210,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       _Head _M_head_impl;
     };
+#endif
 
 #if __cpp_lib_tuple_like // >= C++23
   struct __tuple_like_tag_t { explicit __tuple_like_tag_t() = default; };

From redi@gcc.gnu.org  Wed May  6 14:16:01 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  6 May 2026 14:16:01 +0000 (GMT)
Subject: [gcc r17-363] libstdc++: Simplify std::shared_ptr internals
Message-ID: <20260506141601.7A4524BA23D3@sourceware.org>

https://gcc.gnu.org/g:57a8b54cc4d9d7750d8e98f1df1cbbb1aacfad09

commit r17-363-g57a8b54cc4d9d7750d8e98f1df1cbbb1aacfad09
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 13:54:02 2026 +0100

    libstdc++: Simplify std::shared_ptr internals
    
    Now that we don't use the EBO we can flatten the _Sp_counted_deleter and
    _Sp_counted_ptr_inplace layouts by removing their _Impl classes.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/out_ptr.h         |  2 +-
 libstdc++-v3/include/bits/shared_ptr_base.h | 60 ++++++++---------------------
 2 files changed, 18 insertions(+), 44 deletions(-)

diff --git a/libstdc++-v3/include/bits/out_ptr.h b/libstdc++-v3/include/bits/out_ptr.h
index cc5a8a3adacb..f5fdc6cf910f 100644
--- a/libstdc++-v3/include/bits/out_ptr.h
+++ b/libstdc++-v3/include/bits/out_ptr.h
@@ -257,7 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    auto& __pi = _M_smart._M_refcount._M_pi;
 
 	    if (_Sp __ptr = _M_smart.get())
-	      static_cast<_Scd*>(__pi)->_M_impl._M_ptr = __ptr;
+	      static_cast<_Scd*>(__pi)->_M_ptr = __ptr;
 	    else // Destroy the control block manually without invoking deleter.
 	      std::__exchange(__pi, nullptr)->_M_destroy();
 	  }
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 4a8c67703999..7366f1e04702 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -547,32 +547,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Ptr, typename _Deleter, typename _Alloc, _Lock_policy _Lp>
     class _Sp_counted_deleter final : public _Sp_counted_base<_Lp>
     {
-      class _Impl
-      {
-	[[__no_unique_address__]] _Sp_ebo_helper<_Deleter> _M_d;
-	[[__no_unique_address__]] _Sp_ebo_helper<_Alloc>   _M_a;
-
-      public:
-	_Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
-	: _M_d{std::move(__d)}, _M_a{__a}, _M_ptr(__p)
-	{ }
-
-	_Deleter& _M_del() noexcept { return _M_d._M_obj; }
-	_Alloc& _M_alloc() noexcept { return _M_a._M_obj; }
-
-	_Ptr _M_ptr;
-      };
-
     public:
       using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>;
 
       // __d(__p) must not throw.
       _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept
-      : _M_impl(__p, std::move(__d), _Alloc()) { }
+      : _M_del{std::move(__d)}, _M_alloc{}, _M_ptr(__p) { }
 
       // __d(__p) must not throw.
       _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
-      : _M_impl(__p, std::move(__d), __a) { }
+      : _M_del{std::move(__d)}, _M_alloc{__a}, _M_ptr(__p) { }
 
 #pragma GCC diagnostic push // PR tree-optimization/122197
 #pragma GCC diagnostic ignored "-Wfree-nonheap-object"
@@ -582,12 +566,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       virtual void
       _M_dispose() noexcept
-      { _M_impl._M_del()(_M_impl._M_ptr); }
+      { _M_del._M_obj(_M_ptr); }
 
       virtual void
       _M_destroy() noexcept
       {
-	__allocator_type __a(_M_impl._M_alloc());
+	__allocator_type __a(_M_alloc._M_obj);
 	__allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
 	this->~_Sp_counted_deleter();
       }
@@ -598,19 +582,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #if __cpp_rtti
 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
 	// 2400. shared_ptr's get_deleter() should use addressof()
-        return __ti == typeid(_Deleter)
-	  ? std::__addressof(_M_impl._M_del())
-	  : nullptr;
-#else
-        return nullptr;
+	if (__ti == typeid(_Deleter))
+	  return std::__addressof(_M_del._M_obj);
 #endif
+	return nullptr;
       }
 
     private:
 #ifdef __glibcxx_out_ptr
       template<typename, typename, typename...> friend class out_ptr_t;
 #endif
-      _Impl _M_impl;
+
+      [[__no_unique_address__]] _Sp_ebo_helper<_Deleter> _M_del;
+      [[__no_unique_address__]] _Sp_ebo_helper<_Alloc>   _M_alloc;
+      _Ptr _M_ptr;
     };
 
   // helpers for make_shared / allocate_shared
@@ -640,25 +625,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
     class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp>
     {
-      class _Impl
-      {
-	[[__no_unique_address__]] _Sp_ebo_helper<_Alloc> _M_a;
-
-      public:
-	explicit _Impl(_Alloc __a) noexcept : _M_a{std::move(__a)} { }
-
-	_Alloc& _M_alloc() noexcept { return _M_a._M_obj; }
-
-	__gnu_cxx::__aligned_buffer<__remove_cv_t<_Tp>> _M_storage;
-      };
-
     public:
       using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>;
 
       // Alloc parameter is not a reference so doesn't alias anything in __args
       template<typename... _Args>
 	_Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
-	: _M_impl(__a)
+	: _M_alloc{__a}
 	{
 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
 	  // 2070.  allocate_shared should use allocator_traits<A>::construct
@@ -674,14 +647,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       virtual void
       _M_dispose() noexcept
       {
-	allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
+	allocator_traits<_Alloc>::destroy(_M_alloc._M_obj, _M_ptr());
       }
 
       // Override because the allocator needs to know the dynamic type
       virtual void
       _M_destroy() noexcept
       {
-	__allocator_type __a(_M_impl._M_alloc());
+	__allocator_type __a(_M_alloc._M_obj);
 	__allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
 	this->~_Sp_counted_ptr_inplace();
       }
@@ -711,9 +684,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
       __remove_cv_t<_Tp>*
-      _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); }
+      _M_ptr() noexcept { return _M_storage._M_ptr(); }
 
-      _Impl _M_impl;
+      [[__no_unique_address__]] _Sp_ebo_helper<_Alloc> _M_alloc;
+      __gnu_cxx::__aligned_buffer<__remove_cv_t<_Tp>> _M_storage;
     };
 
 #ifdef __glibcxx_smart_ptr_for_overwrite // C++ >= 20 && HOSTED

From gccadmin@gcc.gnu.org  Thu May  7 00:16:51 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu,  7 May 2026 00:16:51 +0000 (GMT)
Subject: [gcc r17-369] Daily bump.
Message-ID: <20260507001651.662034BA23D1@sourceware.org>

https://gcc.gnu.org/g:36e4ffe36eebd790106117dd7046cfb077774fae

commit r17-369-g36e4ffe36eebd790106117dd7046cfb077774fae
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu May 7 00:16:25 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 150 +++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/analyzer/ChangeLog  | 262 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog         |   7 ++
 gcc/cp/ChangeLog        |   9 ++
 gcc/testsuite/ChangeLog |  59 +++++++++++
 libgfortran/ChangeLog   |   9 ++
 libstdc++-v3/ChangeLog  |  78 ++++++++++++++
 8 files changed, 575 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0ead28c8e988..43fbd776157f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,153 @@
+2026-05-06  Jason Merrill  <jason@redhat.com>
+
+	* Makefile.in (TAGS): Add diagnostics/ and text-art/.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* range-op-float.cc (fop_unordered): Make static and const.
+	(fop_ordered): Likewise.
+	(fop_unordered_lt): Likewise.
+	(fop_unordered_le): Likewise.
+	(fop_unordered_gt): Likewise.
+	(fop_unordered_ge): Likewise.
+	(fop_unordered_equal): Likewise.
+	(fop_ltgt): Likewise.
+	(fop_div): Likewise.
+	* range-op-ptr.cc (op_pointer_plus): Likewise.
+	(op_pointer_diff): Likewise.
+	* range-op.cc (op_equal): Likewise.
+	(op_not_equal): Likewise.
+	(op_lt): Likewise.
+	(op_le): Likewise.
+	(op_gt): Likewise.
+	(op_ge): Likewise.
+	(op_ident): Likewise.
+	(op_cst): Likewise.
+	(op_cast): Likewise.
+	(op_view): Likewise.
+	(op_plus): Likewise.
+	(op_abs): Likewise.
+	(op_minus): Likewise.
+	(op_negate): Likewise.
+	(op_mult): Likewise.
+	(op_addr): Likewise.
+	(op_bitwise_not): Likewise.
+	(op_bitwise_xor): Likewise.
+	(op_bitwise_and): Likewise.
+	(op_bitwise_or): Likewise.
+	(op_min): Likewise.
+	(op_max): Likewise.
+	(operator_table): Make static.  Fix typo in comment.
+	(range_op_handler::range_op_handler): Fix typo in leading comment.
+	(range_op_handler::range_op): Make returned ptr const.  Use
+	nullptr.
+	(RO_III): Make static.
+	(RO_IFI): Likewise.
+	(RO_IFF): Likewise.
+	(RO_FFF): Likewise.
+	(RO_FIF): Likewise.
+	(RO_FII): Likewise.
+	(RO_PPP): Likewise.
+	(RO_PPI): Likewise.
+	(RO_IPP): Likewise.
+	(RO_IPI): Likewise.
+	(RO_PIP): Likewise.
+	(RO_PII): Likewise.
+	(op_trunc_div): Make const.
+	(op_floor_div): Likewise.
+	(op_round_div): Likewise.
+	(op_ceil_div): Likewise.
+	* range-op.h (range_op_handler::range_op): Make returned ptr
+	const.
+	(range_op_handler::m_operator): Make const.
+	(range_op_table::operator[]): Make const.  Make returned ptr
+	const.
+	(range_op_table::set): Make range_operator const.
+	(range_op_table::m_range_tree): Make ptrs const.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* value-range.cc (value_range::print): New, based on
+	value_range::dump.
+	* value-range.h (value_range::print): New decl.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* value-range.h: Remove stray slash in comment.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* Makefile.in (ANALYZER_OBJS): Add analyzer/state-transition.o.
+	* digraph.cc (test_path::append_edge): New.
+	(test_path::reverse): New.
+	* shortest-paths.h (get_shortest_path): Use append_edge and
+	reverse.
+	* tree-diagnostic.h
+	(tree_dump_pretty_printer::~tree_dump_pretty_printer): Only flush
+	when the buffer's stream is non-null.
+
+2026-05-06  Andrew MacLeod  <amacleod@redhat.com>
+
+	* value-range-storage.cc (prange_storage::alloc): Use prange_format.
+	(prange_storage::prange_storage): Likewise.
+	(prange_format::prange_format): New.
+	(prange_storage::set_prange): Use prange_foramt and only write
+	required words to storage.
+	(prange_storage::get_prange): Only read required words.
+	(prange_storage::equal_p): Adjust for new enum.
+	(prange_storage::fits_p): Use prange_format to determine size.
+	* value-range-storage.h (enum prange_kind): New.
+	(class prange_format): New.
+	(get_low, get_high, get_value, get_mask): Replace with get_word.
+	(set_low, set_high, set_value, set_mask): Replace with set_word.
+	(get_word): New.
+	(set_word): New.
+
+2026-05-06  Andrew MacLeod  <amacleod@redhat.com>
+
+	* gimple-fold.cc (get_maxval_strlen): Return the same value if
+	passed a constant.
+
+2026-05-06  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+
+	PR target/122558
+	* config/riscv/riscv-vector-costs.cc (get_lmul_cost_scaling):
+	New function to calculate multiplicative scaling factors.
+	(costs::adjust_stmt_cost): Apply LMUL scaling uniformly to all
+	vector statements.
+
+2026-05-06  Lulu Cheng  <chenglulu@loongson.cn>
+
+	* config/loongarch/loongarch.cc (loongarch_rtx_costs): Add
+	RTX cost handling for the ORDERED RTX code.
+
+2026-05-06  Lulu Cheng  <chenglulu@loongson.cn>
+
+	PR target/125057
+	* config/loongarch/loongarch.cc
+	(loongarch_split_vector_move): Complete the split condition.
+	* config/loongarch/loongarch.h (LSX_REG_RTX_P): Delete.
+	(LASX_REG_RTX_P): Delete.
+	(GP_REG_RTX_P): Define macro.
+
+2026-05-06  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* config/riscv/riscv-protos.h (whole_reg_to_reg_move_p):
+	Rename from this...
+	(whole_reg_move_p): ...to this.
+	(whole_reg_loadstore_p): Declare.
+	* config/riscv/riscv-v.cc (whole_reg_to_reg_move_p): Ditto.
+	(whole_reg_move_p): Ditto.
+	(whole_reg_loadstore_p): New function.
+	* config/riscv/thead-vector.md: Use renamed function.
+	* config/riscv/vector.md (@pred_store<mode>): Use new function.
+
+2026-05-06  Richard Biener  <rguenther@suse.de>
+
+	* config/i386/x86-tune.def (avx512_two_epilogues): Enable
+	for m_ZNVER6.
+	(avx512_masked_epilogues): Likewise.
+
 2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR target/120587
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 3bc992c09c39..4700f4f5c2f7 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260506
+20260507
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 099b32ecf922..24ee876fce95 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,265 @@
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* svalue.cc (svalue::make_dump_widget): Show value ranges in
+	svalue dumps.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* analyzer-logging.h (class text_art::canvas): New forward decl.
+	(logger::log_canvas): New decl.
+	* diagnostic-manager.cc (path_builder::get_supergraph): New.
+	(logger::log_canvas): New.
+	(dump_to_logger): New.
+	(log_region_model): New.
+	(epath_rewind_context::epath_rewind_context): Add params
+	src_model and dst_model, using them to initialize m_src_model and
+	m_dst_model.
+	(epath_rewind_context::get_src_region_model): New.
+	(epath_rewind_context::get_dst_region_model): New.
+	(epath_rewind_context::m_src_model): New.
+	(epath_rewind_context::m_dst_model): New.
+	(make_raw_dst_region_model): New.
+	(diagnostic_manager::annotate_exploded_path): Walk EPATH forwards,
+	populating new vectors src_models and dst_models without state
+	purging or merging, so that we can reliably rewind state.  Pass
+	these models to epath_rewind_context when rewinding state.
+	* engine.cc (interprocedural_call::try_to_rewind_data_flow): Get
+	src and dst region_model instances via vfuncs of ctxt, rather than
+	accessing the eedge.
+	* ops.cc (rewind_context::on_data_origin): Get src and dst
+	region_model instances via vfuncs of ctxt, rather than accessing
+	the eedge.
+	(greturn_op::try_to_rewind_data_flow): Likewise.
+	* ops.h (rewind_context::rewind_context): Drop param "eedge".
+	(rewind_context::get_src_region_model): New vfunc.
+	(rewind_context::get_dst_region_model): New vfunc.
+	(rewind_context::m_eedge): Drop field.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* analyzer.cc (printable_expr_p): New.
+	* call-info.cc: Include "analyzer/state-transition.h".
+	(call_info::add_events_to_path): Add state_transition param.
+	* call-info.h (call_info::add_events_to_path): Likewise.
+	* callsite-expr.h: New file, based on material from supergraph.h.
+	(class callsite_expr_element): New.
+	* checker-event.cc: Include "analyzer/callsite-expr.h" and
+	"analyzer/state-transition.h".
+	(event_kind_to_string): Handle event_kind::state_transition.
+	(state_transition_event::print_desc): New.
+	(state_transition_event::prepare_for_emission): New.
+	(function_entry_event::function_entry_event): Drop.
+	(function_entry_event::print_desc): Use any m_state_trans.
+	(function_entry_event::prepare_for_emission): New.
+	(call_event::call_event): Add "state_trans" param and store it in
+	m_state_trans.
+	(call_event::print_desc): Use m_state_trans if present to call
+	describe_call_with_state, adding a fallback wording for
+	pending_diagnostic subclasses that don't implement it.
+	(call_event::prepare_for_emission): New, storing event id into
+	state_transition.
+	(return_event::return_event): Add "state_trans" param and store it
+	in m_state_trans.
+	(return_event::print_desc): Use m_state_trans if present to call
+	describe_return_of_state.
+	(return_event::prepare_for_emission): New, storing event id into
+	state_transition.
+	* checker-event.h (enum class event_kind): Add state_transition.
+	(class state_transition_event): New.
+	(function_entry_event::function_entry_event): Add "state_trans"
+	param and store it in m_state_trans.  Drop 2nd ctor.
+	(function_entry_event::prepare_for_emission): New decl.
+	(function_entry_event::get_state_transition_at_call): New.
+	(function_entry_event::m_state_trans): New.
+	(call_event::call_event): Add "state_trans" param.
+	(call_event::prepare_for_emission): New decl.
+	(call_event::get_state_transition_at_call): New.
+	(call_event::m_state_trans): New.
+	(return_event::return_event): Add "state_trans" param.
+	(return_event::prepare_for_emission): New decl.
+	(return_event::m_state_trans): New.
+	* common.h: Define INCLUDE_ALGORITHM.
+	(class state_transition): New forward decl
+	(class state_transition_at_call): New forward decl
+	(class state_transition_at_return): New forward decl
+	(printable_expr_p): New decl.
+	(struct diagnostic_state): New.
+	(struct rewind_context): New forward decl.
+	(custom_edge_info::add_events_to_path): Add "state_trans" param.
+	(try_to_rewind_data_flow): New vfunc.
+	* diagnostic-manager.cc (compatible_epath_p): Update for change
+	from m_edges to m_elements.
+	(diagnostic_manager::emit_saved_diagnostic):  Make "epath"
+	non-const.  Call annotate_exploded_path on it and log before and
+	after.  Update for new param to add_events_for_eedge.
+	(class epath_rewind_context): New.
+	(diagnostic_manager::annotate_exploded_path): New.
+	(diagnostic_manager::build_emission_path): Update for change from
+	m_edges to m_elements.  Pass any state transition to
+	add_events_for_eedge.
+	(diagnostic_manager::add_events_for_eedge): Add "state_trans"
+	parameter.  Pass it when creating events, and if we don't create
+	an event referencing it, make a state_transition_event for it.
+	(diagnostic_manager::prune_for_sm_diagnostic): Handl
+	event_kind::state_transition.
+	* diagnostic-manager.h (saved_diagnostic::get_best_epath): Drop
+	"const" from return value.
+	(diagnostic_manager::annotate_exploded_path): New decl.
+	(diagnostic_manager::add_events_for_eedge): Add "state_trans"
+	param.
+	* engine.cc: Include "pretty-print-markup.h".
+	(leak_ploc_fixer_for_epath::fixup_for_epath): Update for change
+	from m_edges to m_elements.
+	(throw_custom_edge::add_events_to_path): Add state_transition
+	param.
+	(unwind_custom_edge::add_events_to_path): Likewise.
+	(interprocedural_call::print): Use get_gcall.
+	(interprocedural_call::update_model): Likewise.
+	(interprocedural_call::add_events_to_path): Likewise.  Pass
+	state_transition if of correct subclass.
+	(interprocedural_call::try_to_rewind_data_flow): New.
+	(interprocedural_call::get_gcall): New.
+	(interprocedural_return::add_events_to_path): Add state_transition
+	param and pass if of correct subclass.
+	(interprocedural_return::try_to_rewind_data_flow): New.
+	(tainted_args_function_info::add_events_to_path): Add
+	state_transition param.
+	(tainted_args_call_info::add_events_to_path): Likewise.
+	* event-loc-info.h (event_loc_info_for_function_entry): New decl.
+	* exploded-graph.h (interprocedural_call::interprocedural_call):
+	Pass and store call_and_return_op rather than gcall.
+	(interprocedural_call::add_events_to_path): Add state_trans param.
+	(interprocedural_call::try_to_rewind_data_flow): New.
+	(interprocedural_call::m_call_stmt): Replace with...
+	(interprocedural_call::m_op): ...this.
+	(interprocedural_return::add_events_to_path): Add state_trans
+	param.
+	(interprocedural_return::try_to_rewind_data_flow): New.
+	(rewind_info_t::add_events_to_path): New.
+	* exploded-path.cc (exploded_path::exploded_path): Drop explicit
+	copy ctor.
+	(diagnostic_state::dump_to_pp): New.
+	(diagnostic_state::dump): New.
+	(exploded_path::find_stmt_backwards): Update for change from
+	m_edges to m_elements.
+	(exploded_path::get_final_enode): Likewise.
+	(exploded_path::feasible_p): Likewise.
+	(exploded_path::dump_to_pp): Likewise.  Dump state transitions.
+	(exploded_path::maybe_log): New.
+	(exploded_path::reverse): New.
+	* exploded-path.h: Include "analyzer/checker-event.h" and
+	"analyzer/state-transition.h".
+	(struct exploded_path::element_t): New.
+	(exploded_path::exploded_path): Replace ctors with "= default".
+	(exploded_path::length): Reimplement.
+	(exploded_path::maybe_log): New decl.
+	(exploded_path::append_edge): New.
+	(exploded_path::reverse): New.
+	(exploded_path::m_edges): Replace with...
+	(exploded_path::m_elements): ...this, using std::vector rather
+	than auto_vec.
+	* feasible-graph.cc (feasible_graph::make_epath): Update for
+	change from m_edges to m_elements.
+	* infinite-recursion.cc
+	(infinite_recursion_diagnostic::add_function_entry_event): Add
+	"state_trans" param and pass it to base class call.
+	(recursive_function_entry_event::recursive_function_entry_event):
+	Pass nullptr for state transition.
+	* ops.cc: Include "analyzer/callsite-expr.h" and
+	"analyzer/state-transition.h".
+	(event_loc_info_for_function_entry): New.
+	(rewind_context::on_data_origin): New.
+	(rewind_context::on_data_flow): New.
+	(gassign_op::try_to_rewind_data_flow): New.
+	(greturn_op::try_to_rewind_data_flow): New.
+	(call_and_return_op::execute): Update for change to
+	interprocedural_call.
+	(call_and_return_op::try_to_rewind_data_flow): New.
+	(phis_for_edge_op::try_to_rewind_data_flow): New.
+	* ops.h (struct rewind_context): New.
+	(operation::try_to_rewind_data_flow): New vfunc.
+	(gassign_op::try_to_rewind_data_flow): New.
+	(predict_op::try_to_rewind_data_flow): New.
+	(greturn_op::try_to_rewind_data_flow): New.
+	(call_and_return_op::try_to_rewind_data_flow): New.
+	(control_flow_op::try_to_rewind_data_flow): New.
+	(phis_for_edge_op::try_to_rewind_data_flow): New.
+	* pending-diagnostic.cc (interesting_t::add_read_region): New.
+	(interesting_t::dump_to_pp): Dump m_read_regions.
+	(pending_diagnostic::add_function_entry_event): Add "state_trans"
+	param and pass it to function_entry_event.  Call
+	event_loc_info_for_function_entry.
+	(pending_diagnostic::add_call_event): Add "state_trans" param and
+	pass it to call_event.
+	* pending-diagnostic.h: Include "analyzer/state-transition.h".
+	(struct interesting_t): Update leading comment.
+	(interesting_t::add_read_region): New.
+	(interesting_t::m_read_regions): New.
+	(struct origin_of_state): New.
+	(call_with_state::call_with_state): Add state_trans param and use
+	it to initialize m_state_trans and m_src_event_id.
+	(call_with_state::m_state_trans): New field.
+	(call_with_state::m_src_event_id): New field.
+	(return_of_state::return_of_state): Add state_trans param and use
+	it to initialize m_state_trans and m_src_event_id.
+	(return_of_state::m_state_trans): New field.
+	(return_of_state::m_src_event_id): New field.
+	(struct copy_of_state): New.
+	(struct use_of_state): New.
+	(pending_diagnostic::describe_origin_of_state): New vfunc.
+	(pending_diagnostic::describe_copy_of_state): New vfunc.
+	(pending_diagnostic::describe_use_of_state): New vfunc.
+	(pending_diagnostic::add_function_entry_event): Add "state_trans"
+	param.
+	(pending_diagnostic::add_call_event): Likewise.
+	* poisoned-value-diagnostic.cc
+	(poisoned_value_diagnostic::mark_interesting_stuff): Add call to
+	add_read_region.
+	* region-model.cc: Include "analyzer/state-transition.h".
+	(callsite_expr::maybe_get_param_location): New.
+	(callsite_expr::get_param_tree): New.
+	(div_by_zero_diagnostic::div_by_zero_diagnostic): Add
+	"divisor_reg" param and use it to initialize m_divisor_reg.
+	(div_by_zero_diagnostic::mark_interesting_stuff): New.
+	(div_by_zero_diagnostic::add_function_entry_event): New.
+	(div_by_zero_diagnostic::describe_origin_of_state): New.
+	(div_by_zero_diagnostic::describe_call_with_state): New.
+	(div_by_zero_diagnostic::describe_return_of_state): New.
+	(div_by_zero_diagnostic::describe_copy_of_state): New.
+	(div_by_zero_diagnostic::describe_use_of_state): New.
+	(div_by_zero_diagnostic::m_divisor_reg): New field.
+	(region_model::get_gassign_result): Pass region to calls to
+	make_shift_count_negative_diagnostic,
+	make_shift_count_overflow_diagnostic, and
+	div_by_zero_diagnostic.
+	(exception_thrown_from_unrecognized_call::add_events_to_path): Add
+	state_transition param.
+	* region-model.h (make_shift_count_negative_diagnostic): Add
+	"src_region" param.
+	(make_shift_count_overflow_diagnostic): Likewise.
+	* region.h: Include "analyzer/store.h" and
+	"text-art/tree-widget.h".
+	* setjmp-longjmp.cc (rewind_info_t::add_events_to_path): Add
+	state_transition param.
+	* shift-diagnostics.cc
+	(shift_count_negative_diagnostic::shift_count_negative_diagnostic):
+	Add src_region param and use it to initialize m_src_region.
+	(shift_count_negative_diagnostic::mark_interesting_stuff): New.
+	(shift_count_negative_diagnostic::m_src_region): New.
+	(make_shift_count_negative_diagnostic): Add src_region param.
+	(shift_count_overflow_diagnostic::shift_count_overflow_diagnostic):
+	Add src_region param and use it to initialize m_src_region.
+	(shift_count_overflow_diagnostic::mark_interesting_stuff): New.
+	(shift_count_overflow_diagnostic::m_src_region): New field.
+	(make_shift_count_overflow_diagnostic): Add src_region param.
+	* sm-signal.cc (signal_delivery_edge_info_t::add_events_to_path):
+	Add state_transition param.
+	* state-transition.cc: New file.
+	* state-transition.h: New file.
+	* supergraph.h (class callsite_expr): Move to callsite-expr.h.
+	* varargs.cc (va_arg_diagnostic::add_call_event): Add state_trans
+	param.
+
 2026-05-05  Jakub Jelinek  <jakub@redhat.com>
 
 	* kf.cc (kf_strcasecmp::impl_call_post): Remove unused variable.
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index aaf983533439..16d99dd4ed88 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-06  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124985
+	* c-decl.cc (pushtag): Update comment.
+	(declspecs_add_type): Mark TYPE_STUB_DECL as used.
+	* c-typeck.cc (function_to_pointer_conversion): Fix grammar in comment.
+
 2026-05-01  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/124576
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ee5795c7fe5a..64cd76833937 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-06  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125179
+	* reflect.cc: (consteval_only_type_r): Remove this cp_walk_tree
+	callback and replace with ...
+	(consteval_only_walker): ... this recursive memoized
+	implementation.
+	(consteval_only_p): Define in terms of consteval_only_walker.
+
 2026-05-05  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/124957
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9654d7692d41..3fff73c8423a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,62 @@
+2026-05-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR libfortran/125095
+	* gfortran.dg/namelist_102.f90: New test.
+
+2026-05-06  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/124985
+	* gcc.dg/Wreturn-nested-3.c: New test.
+	* gcc.dg/pr124985.c: New test.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* gcc.dg/analyzer/divide-by-zero-4.c: Drop option.
+	-fno-analyzer-state-merge.
+	* gcc.dg/analyzer/divide-by-zero-5.c: Likewise.
+	* gcc.dg/analyzer/divide-by-zero-6.c: Likewise.
+
+2026-05-06  David Malcolm  <dmalcolm@redhat.com>
+
+	* c-c++-common/analyzer/divide-by-zero-1.c: Add expected message
+	for origin of zero value.
+	* c-c++-common/analyzer/divide-by-zero-2.c: New test.
+	* c-c++-common/analyzer/divide-by-zero-3.c: New test.
+	* c-c++-common/analyzer/invalid-shift-1.c: Add expected messages
+	about call to op3 and about pertinent param of op3.
+	* c-c++-common/analyzer/invalid-shift-2.c: New test.
+	* c-c++-common/analyzer/invalid-shift-3.c: New test.
+	* c-c++-common/analyzer/invalid-shift-4.c: New test.
+	* g++.dg/analyzer/divide-by-zero-7.C: New test.
+	* gcc.dg/analyzer/divide-by-zero-4.c: New test.
+	* gcc.dg/analyzer/divide-by-zero-5.c: New test.
+	* gcc.dg/analyzer/divide-by-zero-6.c: New test.
+	* gcc.dg/analyzer/divide-by-zero-float.c: Add expected message
+	for origin of zero value.
+
+2026-05-06  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+
+	PR target/122558
+	* gcc.target/riscv/rvv/autovec/pr122558.c: New test.
+	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c: Update expected
+	dump counts after VLA LMUL cost scaling.
+	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c: Likewise.
+	* gcc.target/riscv/rvv/autovec/partial/slp-16.c: Likewise.
+	* gcc.target/riscv/rvv/autovec/partial/slp-5.c: Likewise.
+	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c: Likewise.
+
+2026-05-06  Lulu Cheng  <chenglulu@loongson.cn>
+
+	PR target/125057
+	* gcc.target/loongarch/vector/lasx/pr125057.c: New test.
+	* gcc.target/loongarch/vector/lsx/lsx-mov-2.c: New test.
+
+2026-05-06  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-4.c: Disable
+	instruction scheduling.
+	* gcc.target/riscv/rvv/base/vle-vl1r.c: New test.
+
 2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	PR d/125089
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 4af531e07f95..85aa2dfc90a5 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR libfortran/125095
+	* io/list_read.c (read_logical): Eat comments in namelist read mode.
+	(read_integer): Likewise.
+	(read_character): Likewise.
+	(read_complex): Likewise.
+	(read_real): Likewise.
+
 2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* Makefile.in: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 41af9f518ebd..607f56d44b9e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,81 @@
+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

From tkaminsk@gcc.gnu.org  Thu May  7 07:10:58 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu,  7 May 2026 07:10:58 +0000 (GMT)
Subject: [gcc r17-376] libstdc++: Rework istreambuf_iterator::_M_sbuf handling
 to slice null-dereference warning [PR105580]
Message-ID: <20260507071058.DAD3A4BA2E14@sourceware.org>

https://gcc.gnu.org/g:a068d1b7c9da60a9b21efa4baf65f7325211be12

commit r17-376-ga068d1b7c9da60a9b21efa4baf65f7325211be12
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Jan 7 14:01:41 2026 +0100

    libstdc++: Rework istreambuf_iterator::_M_sbuf handling to slice null-dereference warning [PR105580]
    
    The warning was produced by following sequence, given an istream_iterator<char>
    it, such that *it will result in hitting EoF in it->_M_get(), and thus clearing
    _M_sbuf, the subsequent call to ++it, will result in _M_sbuf->sbumpc() call on
    null pointer. This is however an false-positive, as in such situation
    it == istream_iteator() returns true, and the iterator should not be
    incremented in first place.
    
    This patch addresses the above by clearing the _M_sbuf in operator++, instead
    of _M_get(). This removes the need for making _M_sbuf mutable, and thus make
    the implementation conforming with regards to C++11 [res.on.data.races] p3.
    Also removes no longer needed "-Wnull-dereference" disabling pragmas from
    streambuf (see r16-7844-gbfc2b87f8244a1).
    
    This change should have zero or positive performance impact on the usual
    iteration patterns, in form:
      while (it != end) { process(*it); ++it; }
    In case when it is end-of-stream iterator, the it != end returns in one call
    of _M_sbuf->sgetc() both before and after the change. However we do not modify
    _M_sbuf in this case. For non-empty range, we replace call to _M_sbuf->sbumpc()
    with _M_sbuf->snextc() in pre-increment, and extract the check against EoF from
    *it to ++it. However, as _M_sbuf is now cleared during increment, so last
    it != end check avoids _M_sbuf->sgetc() call to check against EoF.
    
    However, this change impact the behavior of the post-increment (*it++), as
    we now load both current character (for return value) and next character (to
    check against EoF). In consequence we call both sgetc() and snextc(),
    in contrast to previous single sbumpc() call.
    
            PR libstdc++/105580
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/streambuf_iterator.h     | 20 +++----
 libstdc++-v3/include/std/streambuf                 |  5 --
 .../24_iterators/istreambuf_iterator/2.cc          | 63 +++++++++++++++++++++-
 3 files changed, 70 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h
index 93d3dd24f931..095928ca4d8f 100644
--- a/libstdc++-v3/include/bits/streambuf_iterator.h
+++ b/libstdc++-v3/include/bits/streambuf_iterator.h
@@ -112,8 +112,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // the "end of stream" iterator value.
       // NB: This implementation assumes the "end of stream" value
       // is EOF, or -1.
-      mutable streambuf_type*	_M_sbuf;
-      int_type			_M_c;
+      streambuf_type* _M_sbuf;
+      int_type        _M_c;
 
     public:
       ///  Construct end of input stream iterator.
@@ -172,7 +172,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				_M_message(__gnu_debug::__msg_inc_istreambuf)
 				._M_iterator(*this));
 
-	_M_sbuf->sbumpc();
+	if (_S_is_eof(_M_sbuf->snextc()))
+	  _M_sbuf = 0;
 	_M_c = traits_type::eof();
 	return *this;
       }
@@ -181,14 +182,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       istreambuf_iterator
       operator++(int)
       {
-	__glibcxx_requires_cond(_M_sbuf &&
-				(!_S_is_eof(_M_c) || !_S_is_eof(_M_sbuf->sgetc())),
-				_M_message(__gnu_debug::__msg_inc_istreambuf)
-				._M_iterator(*this));
-
 	istreambuf_iterator __old = *this;
-	__old._M_c = _M_sbuf->sbumpc();
-	_M_c = traits_type::eof();
+	__old._M_c = _M_sbuf->sgetc();
+	++*this;
 	return __old;
       }
 
@@ -206,8 +202,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_get() const
       {
 	int_type __ret = _M_c;
-	if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc()))
-	  _M_sbuf = 0;
+	if (_M_sbuf && _S_is_eof(__ret))
+	  __ret = _M_sbuf->sgetc();
 	return __ret;
       }
 
diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf
index f013aa06c28b..d6036bd5ddc4 100644
--- a/libstdc++-v3/include/std/streambuf
+++ b/libstdc++-v3/include/std/streambuf
@@ -490,10 +490,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       char_type*
       eback() const { return _M_in_beg; }
 
-// Required to silence false-positive warnings originating from istream_iterator::operator++,
-// see PR105580.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wnull-dereference"
       char_type*
       gptr()  const { return _M_in_cur;  }
 
@@ -509,7 +505,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       */
       void
       gbump(int __n) { _M_in_cur += __n; }
-#pragma GCC diagnostic pop
 
       /**
        *  @brief  Setting the three read area pointers.
diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
index 78701d71cee9..f84bd5d845f0 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
@@ -48,7 +48,7 @@ void test02(void)
   cistreambuf_iter istrb_it05(istrs01);
   cistreambuf_iter istrb_it06(istrs01.rdbuf());
   VERIFY( istrb_it05 == istrb_it06 );
-  
+
   // bool equal(istreambuf_iter& b)
   cistreambuf_iter istrb_it07(0);
   cistreambuf_iter istrb_it08;
@@ -109,8 +109,69 @@ void test02(void)
     }
 }
 
+void
+test_empty()
+{
+  std::istreambuf_iterator<char> null(0), end;
+  VERIFY( null == end );
+
+  std::istringstream ess;
+  // The specification seems to indicate that these iterators are not
+  // end-of-stream iterators, as they have non-null rdbuf pointers.
+  // (see LWG 2366: istreambuf_iterator end-of-stream equality).
+  // However we treat them as end-of-stream, as otherwise they would
+  // produce a range containing a single EOF character.
+  std::istreambuf_iterator<char> it1(ess), it2(ess);
+  VERIFY( it1 == end );
+  VERIFY( it2 == end );
+}
+
+void
+test_multi()
+{
+  // C++98 (and later) define operator* in [istreambuf.iterator.ops] as:
+  // Returns: The character obtained via the streambuf member sbuf_->sgetc().
+  // This means the behavior of multiple iterators to the same sequence
+  // is specified by the standard (which is not generally true for
+  // input iterators)
+  std::istringstream iss("abcd");
+  std::istreambuf_iterator<char> it1(iss), it2(iss), end;
+
+  VERIFY( it1 != end );
+  VERIFY( it2 != end );
+  VERIFY( *it1 == 'a' );
+  VERIFY( *it2 == 'a' );
+  ++it1;
+
+  VERIFY( it1 != end );
+  VERIFY( it2 != end );
+  VERIFY( *it1 == 'b' );
+  VERIFY( *it2 == 'b' );
+  ++it2;
+
+  VERIFY( it1 != end );
+  VERIFY( it2 != end );
+  VERIFY( *it1 == 'c' );
+  VERIFY( *it2 == 'c' );
+  ++it2;
+
+  VERIFY( it1 != end );
+  VERIFY( it2 != end );
+  VERIFY( *it1 == 'd' );
+  VERIFY( *it2 == 'd' );
+  // second dereference
+  VERIFY( *it1 == 'd' );
+  VERIFY( *it2 == 'd' );
+  ++it1;
+
+  VERIFY( it1 == end );
+  VERIFY( it2 == end );
+}
+
 int main()
 {
   test02();
+  test_empty();
+  test_multi();
   return 0;
 }

From redi@gcc.gnu.org  Thu May  7 08:31:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  7 May 2026 08:31:33 +0000 (GMT)
Subject: [gcc r17-377] libstdc++: Constrain tuple(tuple&&) [PR78302]
Message-ID: <20260507083133.5A9794BA5439@sourceware.org>

https://gcc.gnu.org/g:5154144864a669c722fbb2170e79416c3ae5ff50

commit r17-377-g5154144864a669c722fbb2170e79416c3ae5ff50
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 22 15:37:16 2026 +0100

    libstdc++: Constrain tuple(tuple&&) [PR78302]
    
    Since C++20 the std::tuple move constructor should be constrained (as
    modified by LWG 2899).
    
    We already define the move constructor as defaulted, but it's not
    implicitly defined as deleted for non-move-constructible element types
    because the _Tuple_impl(_Tuple_impl&&) constructor is user-provided and
    unconstrained. For C++20 and later we use a requires-clause to constrain
    the defaulted tuple(tuple&&) constructor.
    
    Ideally we'd make this change pre-C++20 as well, but that's harder to do
    without using a requires-clause, so this change is only for C++20 and
    later. I think that's OK, but if we need to change it for pre-C++20
    later we can consider inheriting from _Enable_copy_move<..., tuple> to
    make the defaulted move constructor defined as deleted.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/tuple                     |  4 +++-
 libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index cbacd5a3c977..64b96fe4f599 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -954,7 +954,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       constexpr tuple(const tuple&) = default;
 
-      constexpr tuple(tuple&&) = default;
+      constexpr
+      tuple(tuple&&) requires (is_move_constructible_v<_Elements> && ...)
+	= default;
 
       template<typename... _UTypes>
 	requires (__constructible<const _UTypes&...>())
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc
new file mode 100644
index 000000000000..6998a9e418a9
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc
@@ -0,0 +1,17 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 78302 is_move_constructible_v<tuple<nonmovable>> should be false
+// LWG 2899. is_(nothrow_)move_constructible and tuple, optional and unique_ptr
+
+#include <tuple>
+#include <type_traits>
+
+struct NotMovable { NotMovable(NotMovable&&) = delete; };
+static_assert(!std::is_move_constructible_v<std::tuple<NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int, NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int&, NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int&&, NotMovable>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&&>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&&, int&>>);

From gccadmin@gcc.gnu.org  Fri May  8 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri,  8 May 2026 00:16:55 +0000 (GMT)
Subject: [gcc r17-396] Daily bump.
Message-ID: <20260508001655.5E5F64BA2E23@sourceware.org>

https://gcc.gnu.org/g:d2558e55a6eb3baf204b6f67bd19b74bac967ec4

commit r17-396-gd2558e55a6eb3baf204b6f67bd19b74bac967ec4
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 8 00:16:28 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 120 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  63 +++++++++++++++++++++++++
 gcc/fortran/ChangeLog   |  28 +++++++++++
 gcc/testsuite/ChangeLog | 117 ++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  24 ++++++++++
 6 files changed, 353 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 43fbd776157f..d18eb640f1aa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,123 @@
+2026-05-07  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/109878
+	* match.pd(min/max (a & CST0, a & CST1)): New pattern.
+	(min/max (a, a & CST)): New pattern.
+
+2026-05-07  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/106244
+	* config/riscv/riscv.md ((and (ashift X Y) const_int 1)): New splitter.
+
+2026-05-07  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/123514
+	* match.pd ((x - (x<0)) ^ -(x<0) into ABS_EXPR<x>): New pattern.
+
+2026-05-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* rtlanal.cc (commutative_operand_precedence): Bump the precedence
+	of non-commutative binary arithmetic to 3.  Give comparisons a
+	precedence of 2.
+
+2026-05-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* combine.cc (make_compound_operation_int): Remove PLUS and MINUS
+	simplifications and PLUS operand order swapping.  Delegate those
+	tasks to simplify_gen_binary instead.
+
+2026-05-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* alloc-pool.h (object_allocator::allocate): Generalize to handle
+	non-default constructors.
+
+2026-05-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* rtl.h (post_ra_split_completed): Declare.
+	* final.cc (rest_of_clean_state): Set it to false.
+	* recog.cc (post_ra_split_completed): New variable.
+	(split_insn): Temporarily set post_ra_split_completed while walking
+	the new instructions.
+	(split_all_insns, split_all_insns_noflow): Set post_ra_split_completed
+	after completing a post-reload split.
+	* config/rx/rx.md (*cmpsi, *tstsi, *cmpsf, *conditional_branch)
+	(*sccc, *stcc, *stcc_reg, *abssi2_flags, *addsi3_flags, adc_internal)
+	(*adc_flags, *andsi3_flags, *negsi2_flags, *one_cmplsi2_flags)
+	(*iorsi3_flags, *rotlsi3_flags, *rotrsi3_flags, *ashrsi3_flags)
+	(*lshrsi3_flags, *ashlsi3_flags, *sat, *subsi3_flags, sbb_internal)
+	(*sbb_flags, *xorsi3_flags, *bmcc): Require post_ra_split_completed
+	rather than reload_completed.
+	(comparesi3_<extend_types:code><small_int_modes:mode>, addsi3_flags)
+	(subsi3_flags): Require post_ra_split_completed.
+
+2026-05-07  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/125214
+	* match.pd (min|max(a+|-c,b+|-c)): Add integral type check.
+
+2026-05-07  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR middle-end/122871
+	* expmed.cc (synth_mult): Handle doubleword left shifts by
+	BITS_PER_WORD bits or more, for scalar modes.
+	* optabs.cc (expand_doubleword_mult): Avoid generating multiply
+	instructions by immediate constants 0, 1 or 2.
+
+2026-05-07  Avinash Jayakar  <avinashd@linux.ibm.com>
+
+	* config/rs6000/crypto.md (UNSPEC_XXAESENCP): New unspec entry.
+	(UNSPEC_XXAES128ENCP): Likewise.
+	(UNSPEC_XXAES192ENCP): Likewise.
+	(UNSPEC_XXAES256ENCP): Likewise.
+	(UNSPEC_XXAESDECP): Likewise.
+	(UNSPEC_XXAES128DECP): Likewise.
+	(UNSPEC_XXAES192DECP): Likewise.
+	(UNSPEC_XXAES256DECP): Likewise.
+	(UNSPEC_XXAESGENLKP): Likewise.
+	(UNSPEC_XXAES128GENLKP): Likewise.
+	(UNSPEC_XXAES192GENLKP): Likewise.
+	(UNSPEC_XXAES256GENLKP): Likewise.
+	(UNSPEC_XXGFMUL128): Likewise.
+	(UNSPEC_XXGFMUL128GCM): Likewise.
+	(UNSPEC_XXGFMUL128XTS): Likewise.
+	(AESACC_base_code): New iterator for xxaesencp and xxaesdecp base
+	mnemonics.
+	(AESACC_code): New iterator for xxaesencp and xxaesdecp extended
+	mnemonics.
+	(AESGENLKP_code): New iterator for xxaesgenlkp extended mnemonics.
+	(AESGF_code): New iterator for xxgfmul128 extended mnemonics.
+	(AESACC_base_insn): New attribute iterator for xxaesencp and xxaesdecp
+	base mnemonics.
+	(AESACC_insn): New attribute iterator for xxaesencp and xxaesdecp
+	extended mnemonics.
+	(AESGENLKP_insn): New attribute iterator for xxaesgenlkp extended
+	mnemonics.
+	(AESGF_insn): New attribute iterator for xxgfmul128 extended mnemonics.
+	(<AESACC_base_insn>): New define_insn for xxaesencp and xxaesdecp base
+	mnemonics.
+	(<AESACC_insn>): New define_insn for xxaesencp and xxaesdecp extended
+	mnemonics.
+	(<AESGENLKP_insn>): New define_insn for xxaesgenlkp extended mnemonics.
+	(xxaesgenlkp): New define_insn for genlkp base mnemonic.
+	(<AESGF_insn>): New define_insn for xxgfmul128 extended mnemonics.
+	(xxgfmul128): New define_insn for xxgfmul128 base mnemonic.
+	* config/rs6000/rs6000-builtins.def: Added new builtin definitions for
+	AES acceleration.
+	* doc/extend.texi: Add new section for AES acceleration builtins
+	for Future ISA.
+
+2026-05-07  Pan Li  <pan2.li@intel.com>
+
+	* config/riscv/predicates.md: Add lt to swapped operator.
+	* config/riscv/riscv-v.cc (get_swapped_cmp_rtx_code): Handle
+	the rtl as well.
+
+2026-05-07  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/116008
+	PR tree-optimization/124560
+	* match.pd (min|max(a+|-c,b+|-c)): New patterns.
+
 2026-05-06  Jason Merrill  <jason@redhat.com>
 
 	* Makefile.in (TAGS): Add diagnostics/ and text-art/.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 4700f4f5c2f7..7ad52d8546ed 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260507
+20260508
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 64cd76833937..1609970fd11a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,66 @@
+2026-05-07  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124770
+	* decl.cc (wrapup_namespace_globals): Give the odr-used
+	inline variable error only when !DECL_INITIAL.
+
+2026-05-07  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125206
+	* tree.cc (strip_typedefs_expr) <case REFLECT_EXPR>: Always
+	return instead of recursing.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125007
+	* cp-tree.h (maybe_update_function_parm): Declare.
+	* reflect.cc (maybe_update_function_parm): No longer static.
+	* error.cc (dump_expr) <case REFLECT_EXPR>: Improve printing
+	of various reflections.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125184
+	* reflect.cc (check_out_of_consteval_use_r): Don't walk children of
+	USING_STMTs.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124347
+	* constexpr.cc (cxx_eval_builtin_function_call): For
+	mce_true strip nops in first argument of BUILT_IN*_OBJECT_SIZE
+	if the inner expression is ADDR_EXPR.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125111
+	* reflect.cc (extract_ref): Throw instead of trying to build
+	arrays of functions, methods or arrays with NULL TYPE_DOMAIN.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124991
+	* cp-tree.h (struct lang_type): Document typeinfo_var member.
+	(get_classtype_typeinfo_var): New inline function.
+	(CLASSTYPE_TYPEINFO_VAR): Use it.
+	(set_classtype_typeinfo_var): New inline function.
+	(SET_CLASSTYPE_TYPEINFO_VAR): Define.
+	(get_anon_aggr_type_field): New inline function.
+	(ANON_AGGR_TYPE_FIELD): Use it.
+	(set_anon_aggr_type_field): New inline function.
+	(SET_ANON_AGGR_TYPE_FIELD): Define.
+	* decl.cc (fixup_anonymous_aggr): Use SET_ANON_AGGR_TYPE_FIELD
+	instead of ANON_AGGR_TYPE_FIELD.
+	* module.cc (trees_in::read_class_def): Use
+	SET_CLASSTYPE_TYPEINFO_VAR instead of setting
+	CLASSTYPE_TYPEINFO_VAR and do it even for ANON_AGGR_TYPE_P
+	types.  Use SET_ANON_AGGR_TYPE_FIELD instead of setting
+	ANON_AGGR_TYPE_FIELD.
+	* rtti.cc (get_tinfo_decl_direct): Use SET_CLASSTYPE_TYPEINFO_VAR
+	instead of setting CLASSTYPE_TYPEINFO_VAR.
+	* semantics.cc (finish_member_declaration): Use
+	SET_ANON_AGGR_TYPE_FIELD instead of setting ANON_AGGR_TYPE_FIELD.
+
 2026-05-06  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/125179
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4e6b0bd0e8ce..8632d34eb598 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,31 @@
+2026-05-07  Mikael Morin  <mikael@gcc.gnu.org>
+
+	PR fortran/125192
+	PR fortran/125198
+	* trans-array.cc (gfc_conv_expr_descriptor): Add bounds checking
+	code to the outermost loop's preliminary block.
+
+2026-05-07  Mikael Morin  <mikael@gcc.gnu.org>
+
+	* trans-array.cc (trans_array_bound_check): Replace references
+	to SE->PRE with references to the new argument BLOCK.  Remove
+	argument SE.
+	(array_bound_check_elemental): Likewise.  Update caller.
+	(conv_array_index_offset): Update caller.
+	(gfc_conv_expr_descriptor): Update caller.
+
+2026-05-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125172
+	* resolve.cc (gfc_fixup_inferred_type_refs): Update kind for
+	INQUIRY_RE and INQUIRY_IM references on inferred complex
+	associate-name.
+	(resolve_variable): For an inferred-type associate-name with
+	no subobject ref, refresh e->ts from sym->ts.
+	(resolve_assoc_var): For an inferred-type complex/character
+	associate-name, refresh sym->ts from the resolved target when
+	only the kind differs.
+
 2026-05-02  Tobias Burnus  <tburnus@baylibre.com>
 	    Julian Brown  <julian@codesourcery.com>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3fff73c8423a..f34e272b073a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,120 @@
+2026-05-07  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/109878
+	* gcc.dg/tree-ssa/pr109878-1.c: New test.
+	* gcc.dg/tree-ssa/pr109878-2.c: New test.
+	* gcc.dg/tree-ssa/pr109878-3.c: New test.
+	* gcc.dg/tree-ssa/pr109878.c: New test.
+
+2026-05-07  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR tree-optimization/106244
+	* gcc.target/riscv/pr106244.c: New test.
+
+2026-05-07  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+
+	PR tree-optimization/123514
+	* gcc.dg/tree-ssa/pr123514.c: New test.
+
+2026-05-07  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/124770
+	* g++.dg/reflect/init18.C: New test.
+
+2026-05-07  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125206
+	* g++.dg/reflect/bases_of4.C: New test.
+
+2026-05-07  Mikael Morin  <mikael@gcc.gnu.org>
+
+	PR fortran/125192
+	PR fortran/125198
+	* gfortran.dg/bounds_check_29.f90: New test.
+
+2026-05-07  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/125214
+	* gcc.dg/tree-ssa/pr125214.c: New test.
+
+2026-05-07  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR middle-end/122871
+	* gcc.target/arm/muldi-1.c: New test case.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125007
+	* g++.dg/reflect/pr125007.C: New test.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/analyzer/divide-by-zero-6.c (init_foo): Use sizeof (*f)
+	rather than sizeof (f).
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125184
+	* g++.dg/reflect/using3.C: New test.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124347
+	* g++.dg/ext/builtin-object-size4.C: New test.
+	* g++.dg/ext/builtin-object-size5.C: New test.
+	* g++.dg/ext/builtin-object-size6.C: New test.
+
+2026-05-07  Avinash Jayakar  <avinashd@linux.ibm.com>
+
+	* gcc.target/powerpc/aes-builtin-1.c: New test.
+	* gcc.target/powerpc/aes-builtin-2.c: New test.
+	* gcc.target/powerpc/aes-builtin-3.c: New test.
+
+2026-05-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125172
+	* gfortran.dg/associate_79.f90: New test.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125111
+	* g++.dg/reflect/extract12.C: New test.
+
+2026-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124991
+	* g++.dg/reflect/anon5.C: New test.
+
+2026-05-07  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+	for vmsgt.vx.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: Ditto.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Add test
+	helper macros.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Add test
+	data for run test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgt-run-1-i16.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgt-run-1-i32.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgt-run-1-i64.c: New test.
+	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgt-run-1-i8.c: New test.
+
+2026-05-07  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/116008
+	PR tree-optimization/124560
+	* gcc.dg/tree-ssa/pr124560.c: New test.
+
 2026-05-06  Harald Anlauf  <anlauf@gmx.de>
 
 	PR libfortran/125095
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 607f56d44b9e..6f9c49639641 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,27 @@
+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

From aoliva@gcc.gnu.org  Mon May 11 07:07:41 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Mon, 11 May 2026 07:07:41 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: vxworks: enable
 clock_gettime
Message-ID: <20260511070741.CB4F34BA79A0@sourceware.org>

https://gcc.gnu.org/g:3f8234f083a37724b6514e1afaebbca009e5fb04

commit 3f8234f083a37724b6514e1afaebbca009e5fb04
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Mon May 11 03:46:46 2026 -0300

    libstdc++: vxworks: enable clock_gettime
    
    We've been using gettimeofday() on VxWorks, because configury didn't
    state clock_gettime was available.  It has been since at least
    vxworks6.9, possibly earlier.  Indeed, it's been available for longer
    than gettimeofday(), so this enables libstdc++'s chrono.cc to work
    with earlier 6.9 releases.
    
    We've used clock_gettime unconditionally in __gthread_cond_timedwait
    for a very long time, so it's not like this brings in a new
    dependency, but it allows clocks and deadlines to work with the same
    precision.  Before this change, we'd use gettimeofday's coarser
    clocks, and finer timed waits, which makes room for imprecisions.
    
    
    for  libstdc++-v3/ChangeLog
    
            * acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
            Enable monotonic and realtime clocks.
            * configure: Rebuilt.

Diff:
---
 libstdc++-v3/acinclude.m4 | 2 ++
 libstdc++-v3/configure    | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 8dc9e17b214c..e7bc4fbf90c7 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1785,6 +1785,8 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
       # VxWorks has nanosleep as soon as the kernel is configured with
       # INCLUDE_POSIX_TIMERS, which is normally/most-often the case.
       vxworks*)
+        ac_has_clock_monotonic=yes
+        ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6713e4504b1c..3785ad94f330 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -21473,6 +21473,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
       # VxWorks has nanosleep as soon as the kernel is configured with
       # INCLUDE_POSIX_TIMERS, which is normally/most-often the case.
       vxworks*)
+        ac_has_clock_monotonic=yes
+        ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

From tkaminsk@gcc.gnu.org  Mon May 11 09:35:32 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 11 May 2026 09:35:32 +0000 (GMT)
Subject: [gcc r17-440] libstdc++: Reorder compile-time checks for
 __formatter_str::_M_format_range.
Message-ID: <20260511093532.ED7C44BA7989@sourceware.org>

https://gcc.gnu.org/g:0646376b3e340ef1a0a55d143e38410f75f81276

commit r17-440-g0646376b3e340ef1a0a55d143e38410f75f81276
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed May 6 15:22:06 2026 +0200

    libstdc++: Reorder compile-time checks for __formatter_str::_M_format_range.
    
    If _M_format_range was called with prvalue of span S (or any contiguous_range),
    the previous chain of if-contexpr will call _M_format_range<S&>, then
    _M_format_range<const S&> and then format(string_view). By checking for
    contiguous_range first, it calls format(string_view) direclty, removing
    unnecessary instantiations and symbols.
    
    Similary, for all prvalues of type R, that meet __simply_formattable_range R,
    we were instantiating _M_format_range<R&> and then _M_format_range<const R&>.
    By moving the if for __simply_formattable_range before is_lvalue_reference_v,
    we call _M_format_range<const R&> direclty.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/format (__formatter_str::_M_format_range):
            Reorder constexpr checks, to reduce number of instantiations.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/format | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 60adca93b5d8..0f20fcc8d883 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -1438,17 +1438,17 @@ namespace __format
 	{
 	  using _Range = remove_reference_t<_Rg>;
 	  using _String_view = basic_string_view<_CharT>;
-	  if constexpr (!is_lvalue_reference_v<_Rg>)
-	    return _M_format_range<_Range&>(__rg, __fc);
-	  else if constexpr (!is_const_v<_Range>
-			       && __simply_formattable_range<_Range, _CharT>)
-	    return _M_format_range<const _Range&>(__rg, __fc);
-	  else if constexpr (ranges::contiguous_range<_Rg>)
+	  if constexpr (ranges::contiguous_range<_Rg>)
 	    {
 	      _String_view __str(ranges::data(__rg),
 				 size_t(ranges::distance(__rg)));
 	      return format(__str, __fc);
 	    }
+	  else if constexpr (!is_const_v<_Range>
+			        && __simply_formattable_range<_Range, _CharT>)
+	    return _M_format_range<const _Range&>(__rg, __fc);
+	  else if constexpr (!is_lvalue_reference_v<_Rg>)
+	    return _M_format_range<_Range&>(__rg, __fc);
 	  else
 	    {
 	      auto __handle_debug = [this, &__rg]<typename _NOut>(_NOut __nout)

From meissner@gcc.gnu.org  Mon May 11 21:45:33 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Mon, 11 May 2026 21:45:33 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work246)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260511214533.728F44BB58A0@sourceware.org>

https://gcc.gnu.org/g:347e8f26920fa45ee87457c6ca228408e8b3be63

commit 347e8f26920fa45ee87457c6ca228408e8b3be63
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon May 11 17:44:53 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..4a21754d113b
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work246 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..6c616e3565a4
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work246, baseline ====================
+
+2026-05-11   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-05-11  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From gccadmin@gcc.gnu.org  Tue May 12 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 12 May 2026 00:16:55 +0000 (GMT)
Subject: [gcc r17-456] Daily bump.
Message-ID: <20260512001655.681A14B92084@sourceware.org>

https://gcc.gnu.org/g:03894dd6c6ec8bcfab6c9058c22f88691a2e7711

commit r17-456-g03894dd6c6ec8bcfab6c9058c22f88691a2e7711
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue May 12 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   5 +++
 contrib/ChangeLog       |   7 ++++
 gcc/ChangeLog           | 102 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/c-family/ChangeLog  |   5 +++
 gcc/cp/ChangeLog        |  12 ++++++
 gcc/fortran/ChangeLog   |   9 +++++
 gcc/testsuite/ChangeLog |  46 ++++++++++++++++++++++
 libgcc/ChangeLog        |   8 ++++
 libstdc++-v3/ChangeLog  |   5 +++
 10 files changed, 200 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 9d3442d2cb19..2053dff5f351 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* MAINTAINERS: Update my email and add myself to the DCO
+	section.
+
 2026-05-04  Vijay Shankar  <vijay@linux.ibm.com>
 
 	* MAINTAINERS: Add myself to write after approval.
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 7d3734ca384d..af8c886d1bb4 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-11  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR other/125275
+	* check_GNU_style_lib.py (LineLengthCheck.check): Ignore
+	filenames that end with .opt.
+	(FunctionParenthesisCheck.check): Likewise.
+
 2026-05-04  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* compare-all-tests: Remove references to m32c.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8098ac23984c..2383a1f1fd24 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,105 @@
+2026-05-11  William D. Jones  <thor0505@comcast.net>
+
+	PR target/120077
+	* config/lm32/lm32.cc: Enable LRA after diff testing showed minimal issues.
+
+2026-05-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	* flag-types.h (gfc_fcoarray): Add GFC_FCOARRAY_SHARED.
+
+2026-05-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc
+	(FPreg_neg_scaled_simm12b, convert_SF_const, constantsynth_pass1,
+	litpool_set_src_1, litpool_set_src):
+	Change each call to validate_change() and apply_change_group() to
+	trigger an ICE if the result is not true.
+
+2026-05-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.cc
+	(xtensa_can_eliminate_callee_saved_reg_p):
+	Change the arguments that return values from being passed by pointer
+	to C++ reference.
+	(xtensa_expand_prologue):
+	Adjust the call to xtensa_can_eliminate_callee_saved_reg_p() to
+	match the above changes.
+
+2026-05-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.h (HONOR_REG_ALLOC_ORDER):
+	New macro definition.
+
+2026-05-11  Tamar Christina  <tamar.christina@arm.com>
+
+	* config/aarch64/aarch64-tuning-flags.def
+	(AARCH64_EXTRA_TUNE_BASE): Add AARCH64_EXTRA_TUNE_NARROW_GP_WRITES.
+
+2026-05-11  Pan Li  <pan2.li@intel.com>
+
+	* Makefile.in: Add match-sat-alu.pd as dependency.
+	* match.pd: Remove saturation alu related patterns.
+	* match-sat-alu.pd: Add new file for saturation alu patterns.
+
+2026-05-11  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* config/i386/cygming.h (TARGET_SEH): Keep SEH enabled for all
+	64-bit Windows functions when unwind tables are requested.
+
+2026-05-11  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* tree-ssa-loop-im.cc (execute_sm): For modes that cannot
+	transfer bits, _Bool and bitfield accesses force the
+	multi-threaded model.
+
+2026-05-11  LIU Hao  <lh_mouse@126.com>
+
+	PR target/53929
+	* config/mingw/winnt.cc (mingw_pe_file_end): Use `ASM_OUTPUT_LABELREF`
+	to emit `name`.
+
+2026-05-11  Richard Biener  <rguenther@suse.de>
+
+	PR target/125174
+	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+	Cost calls as 10 times FMA.
+
+2026-05-11  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+
+	PR rtl-optimization/121426
+	* combine.cc (recog_for_combine_1): Reject insns which make use
+	of hard register constraints.
+
+2026-05-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* config/aarch64/aarch64-protos.h
+	(aarch64_output_simd_mov_imm_low): New.
+	(aarch64_const_vec_fmov_p): New.
+	* config/aarch64/aarch64-simd.md (mov<mode>): Do not expand constant
+	vectors handled by aarch64_const_vec_fmov_p into VDUP.
+	(*aarch64_simd_mov<VDMOV:mode>): Add Dc alternatives for FMOV based
+	SIMD constant moves.
+	(*aarch64_simd_mov<VQMOV:mode>): Likewise.
+	* config/aarch64/aarch64.cc (aarch64_const_vec_fmov_p): New function.
+	(aarch64_output_simd_mov_imm_low): New function.
+	* config/aarch64/constraints.md (Dc): New constraint.
+
+2026-05-11  Boudewijn van der Heide  <boudewijn@delta-utec.com>
+
+	PR rtl-optimization/125209
+	* combine.cc (make_compound_operation_int): Return NULL_RTX if we got CLOBBER.
+
+2026-05-11  Shreya Munnangi  <smunnang@qti.qualcomm.com>
+	    Jeff Law   <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/80770
+	* rtl.h (simplify_context::simplify_ior_with_common_term): Add
+	new method.
+	(simplify_context::simplify_binary_operation_1): Use new method.
+	* simplify-rtx.cc (simplify_context::simplify_ior_with_common_term):
+	New method.
+
 2026-05-10  J?rgen Kvalsvik  <j@lambda.is>
 
 	* gcov.cc (json_set_prime_path_coverage): Read arc.true_value.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 8785430899c2..dfe83385ca85 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260511
+20260512
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 3a14de402679..81522314d886 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-11  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124621
+	* c-common.cc (user_facing_original_type_p): Recurse.
+
 2026-05-04  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR c/121911
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e72d0ed3c2d7..5289b44d95ba 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-11  Jason Merrill  <jason@redhat.com>
+
+	* reflect.cc (null_reflection_p): New.
+	(splice): Use it.
+	* error.cc (dump_expr): Use it.
+	* cp-tree.h (null_reflection_p): Declare.
+
+2026-05-11  Marek Polacek  <polacek@redhat.com>
+
+	* decl2.cc (decl_defined_p): Also return true if DECL_INITIAL
+	and !DECL_IN_AGGR_P is true for a VAR_DECL.
+
 2026-05-09  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/121500
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index dcf786e7ae00..5a16ff8130db 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	* lang.opt (fcoarray=): Add shared enum value; update help text.
+	* gfortranspec.cc (CAF_SHMEM_LIBRARY): New macro.
+	(lang_specific_driver): Detect -fcoarray=shared in first pass and
+	set need_caf_shmem flag.  In second pass, transform -fcoarray=shared
+	to -fcoarray=lib for cc1.  Append -lcaf_shmem when need_caf_shmem
+	is set and linking is active.
+
 2026-05-10  Andre Vehreschild  <vehre@gcc.gnu.org>
 	    Paul Thomas  <pault@gcc.gnu.org>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 83f51b5ca1a5..0737fa301a38 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,49 @@
+2026-05-11  Jason Merrill  <jason@redhat.com>
+
+	* g++.dg/reflect/pr125007.C: Add info{} test.
+
+2026-05-11  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124621
+	* g++.dg/reflect/reflect_constant_array2.C: Add -D_GLIBCXX_SYSHDR.
+
+2026-05-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	* gfortran.dg/coarray_51.f90: New test.
+
+2026-05-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* gcc.target/xtensa/elim_callee_saved.c:
+	Revise the test item for the number of mov instructions in the
+	assembler output.
+
+2026-05-11  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* g++.target/i386/seh-sysvabi-wrap1.C: New test.
+
+2026-05-11  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* gcc.dg/torture/pr125250.c: New testcase.
+
+2026-05-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* gcc.target/aarch64/pr113856.c: New test.
+
+2026-05-11  Boudewijn van der Heide  <boudewijn@delta-utec.com>
+
+	PR rtl-optimization/125209
+	* gcc.dg/pr125209.c: New test.
+
+2026-05-11  Shreya Munnangi  <smunnang@qti.qualcomm.com>
+	    Jeff Law   <jeffrey.law@oss.qualcomm.com>
+
+	PR rtl-optimization/80770
+	* gcc.target/riscv/pr80770.c: New test.
+	* gcc.target/riscv/pr80770-2.c: New test.
+	* gcc.target/h8300/pr80770.c: New test.
+	* gcc.target/h8300/pr80770-2.c: New test.
+
 2026-05-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gnat.dg/enum6.adb: New test.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 990339329393..a769e628e482 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-11  John David Anglin  <danglin@gcc.gnu.org>
+
+	* config.host (hppa*64*-hp-hpux11*): Handle linking with GNU ld.
+	* config/pa/libgcc-hpux.ver: New file.
+	* config/pa/t-slibgcc-gld: New file.
+	* config/pa/t-slibgcc-hpux (SHLIB_LDFLAGS, INSTALL_SHLIB,
+	SHLIB_MKMAP, SHLIB_MAPFILES): Define.
+
 2026-05-04  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* config/m32c/*: Delete entire directory.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 6f9c49639641..373545a6e5c6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+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

From aoliva@gcc.gnu.org  Tue May 12 08:18:19 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Tue, 12 May 2026 08:18:19 +0000 (GMT)
Subject: [gcc r17-462] libstdc++: vxworks: enable clock_gettime
Message-ID: <20260512081819.09E5F4BAE7E0@sourceware.org>

https://gcc.gnu.org/g:8633b886e6b894524c632f35c2920f71eaad4a71

commit r17-462-g8633b886e6b894524c632f35c2920f71eaad4a71
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Mon May 11 03:46:46 2026 -0300

    libstdc++: vxworks: enable clock_gettime
    
    We've been using gettimeofday() on VxWorks, because configury didn't
    state clock_gettime was available.  It has been since at least
    vxworks6.9, possibly earlier.  Indeed, it's been available for longer
    than gettimeofday(), so this enables libstdc++'s chrono.cc to work
    with earlier 6.9 releases.
    
    We've used clock_gettime unconditionally in __gthread_cond_timedwait
    for a very long time, so it's not like this brings in a new
    dependency, but it allows clocks and deadlines to work with the same
    precision.  Before this change, we'd use gettimeofday's coarser
    clocks, and finer timed waits, which makes room for imprecisions.
    
    
    for  libstdc++-v3/ChangeLog
    
            * acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
            Enable monotonic and realtime clocks.
            * configure: Rebuilt.

Diff:
---
 libstdc++-v3/acinclude.m4 | 2 ++
 libstdc++-v3/configure    | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 8dc9e17b214c..e7bc4fbf90c7 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1785,6 +1785,8 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
       # VxWorks has nanosleep as soon as the kernel is configured with
       # INCLUDE_POSIX_TIMERS, which is normally/most-often the case.
       vxworks*)
+        ac_has_clock_monotonic=yes
+        ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6713e4504b1c..3785ad94f330 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -21473,6 +21473,8 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
       # VxWorks has nanosleep as soon as the kernel is configured with
       # INCLUDE_POSIX_TIMERS, which is normally/most-often the case.
       vxworks*)
+        ac_has_clock_monotonic=yes
+        ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

From redi@gcc.gnu.org  Tue May 12 13:26:22 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 12 May 2026 13:26:22 +0000 (GMT)
Subject: [gcc r17-471] libstdc++: Improve handling of leap second expiry time
 [PR123165]
Message-ID: <20260512132622.06DDD4BB1C2F@sourceware.org>

https://gcc.gnu.org/g:e79f0f818c0e42d0d84c90a54684dfb269ac388c

commit r17-471-ge79f0f818c0e42d0d84c90a54684dfb269ac388c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 28 13:15:22 2026 +0100

    libstdc++: Improve handling of leap second expiry time [PR123165]
    
    This change allows the hardcoded list of leap seconds in <chrono> to be
    used even when the program is executing after the hardcoded expiry date
    in that header.
    
    For times after the hardcoded expiry, the inline __get_leap_second_info
    function calls a new library function which compares the number of
    hardcoded leap seconds in the header with the number of leap seconds
    defined in the tzdata leapseconds file (usually provided by the OS).
    
    There are three leap second lists that are relevant here. The first is
    the hardcoded list (and its expiry time) in the <chrono> header. That is
    fixed when the user code is compiled, and might be out of date by the
    time the application runs. The second list (and its expiry time) is
    hardcoded in tzdb.cc in the libstdc++.so library. If the application
    uses a newer libstdc++.so at runtime than the <chrono> header used at
    compile time, we can still avoid going to the filesystem for dates
    within the expiry time of the list in libstdc++.so. The third list is
    the most up-to-date one which is read from the leapseconds file.
    
    The code added by this commit tries to avoid reading the file when
    possible (because that's slower than using the in-memory lists), and if
    it does have to go to the file system, it tries to avoid doing so again
    next time the leap seconds are needed.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Co-authored-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/acinclude.m4                          |   2 +-
 libstdc++-v3/config/abi/pre/gnu.ver                |   7 +
 libstdc++-v3/configure                             |   2 +-
 libstdc++-v3/include/std/chrono                    | 104 +++++-----
 libstdc++-v3/src/c++20/tzdb.cc                     | 212 ++++++++++++++++-----
 .../std/time/clock/utc/leap_second_info-2.cc       | 108 +++++++++++
 libstdc++-v3/testsuite/util/testsuite_abi.cc       |   3 +-
 7 files changed, 340 insertions(+), 98 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index e7bc4fbf90c7..27a434d8a7a5 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4087,7 +4087,7 @@ changequote([,])dnl
 fi
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:35:0
+libtool_VERSION=6:36:0
 
 # Everything parsed; figure out what files and settings to use.
 case $enable_symvers in
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index bd4da6418295..06892cd2d18b 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2623,6 +2623,13 @@ GLIBCXX_3.4.35 {
 
 } GLIBCXX_3.4.34;
 
+# GCC 17.1.0
+GLIBCXX_3.4.36 {
+
+    _ZNSt6chrono8__detail25__recent_leap_second_infoERNS_16leap_second_infoEj;
+
+} GLIBCXX_3.4.35;
+
 # Symbols in the support library (libsupc++) have their own tag.
 CXXABI_1.3 {
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 3785ad94f330..6e5e424b9dbb 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -51420,7 +51420,7 @@ $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
 fi
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:35:0
+libtool_VERSION=6:36:0
 
 # Everything parsed; figure out what files and settings to use.
 case $enable_symvers in
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 674f867dcdc7..692fd6025e7d 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -131,6 +131,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       leap_second_info
       get_leap_second_info(const utc_time<_Duration>& __ut);
 
+    /// @cond undocumented
+    namespace __detail
+    {
+      bool __recent_leap_second_info(leap_second_info&, unsigned);
+    }
+    /// @endcond
+
     /** A clock that measures Universal Coordinated Time (UTC).
      *
      * The epoch is 1970-01-01 00:00:00.
@@ -2818,6 +2825,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       friend class leap_second;
       friend struct time_zone::_Impl;
       friend class time_zone_link;
+
+      friend bool
+      __detail::__recent_leap_second_info(leap_second_info&, unsigned);
     };
 
     class time_zone_link
@@ -2943,16 +2953,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return __x.date() <=> __y; }
 
     private:
-      explicit leap_second(seconds::rep __s) : _M_s(__s) { }
+      constexpr explicit leap_second(seconds::rep __s) : _M_s(__s) { }
 
       friend struct tzdb_list::_Node;
 
       friend const tzdb& reload_tzdb();
 
-      template<typename _Duration>
-	friend leap_second_info
-	get_leap_second_info(const utc_time<_Duration>&);
-
       seconds _M_s; // == date().time_since_epoch() * value().count()
     };
 
@@ -3217,6 +3223,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 namespace __detail
 {
+    // This function is inline to support fast conversions between utc_time
+    // and sys_time when possible, without requiring a chrono::tzdb object
+    // to be constructed.
     inline leap_second_info
     __get_leap_second_info(sys_seconds __ss, bool __is_utc)
     {
@@ -3252,65 +3261,56 @@ namespace __detail
 	1435708800, // 1 Jul 2015
 	1483228800, // 1 Jan 2017
       };
+
+      // The default result for times after the last leap year.
+      constexpr leap_second_info __after_last{
+	.is_leap_second = false,
+	.elapsed = seconds(std::size(__leaps))
+      };
+
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
       constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
-#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
 	{
-	  // Use updated leap_seconds from tzdb.
-	  size_t __n = std::size(__leaps);
-
-	  auto __db = get_tzdb_list().begin();
-	  auto __first = __db->leap_seconds.begin() + __n;
-	  auto __last = __db->leap_seconds.end();
-	  auto __pos = std::upper_bound(__first, __last, __ss);
-	  seconds __elapsed(__n);
-	  for (auto __i = __first; __i != __pos; ++__i)
-	    __elapsed += __i->value();
-
-	  if (__is_utc)
-	    {
-	      // Convert utc_time to sys_time:
-	      __ss -= __elapsed;
-	      // See if that sys_time is before (or during) previous leap sec:
-	      if (__pos != __first && __ss < __pos[-1])
-		{
-		  if ((__ss + 1s) >= __pos[-1])
-		    return {true, __elapsed};
-		  __elapsed -= __pos[-1].value();
-		}
-	    }
-	  return {false, __elapsed};
-	}
-      else
+#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI // use chrono::tzdb
+	  // Call into the library because it might have knowledge of new
+	  // leap seconds loaded at runtime from the tzdata files.
+
+	  // We misuse leap_second_info here to pass {bool, seconds} inputs:
+	  leap_second_info __info{ .is_leap_second = __is_utc,
+				   .elapsed = __ss.time_since_epoch() };
+	  // If this returns true, then __info holds the output result:
+	  if (__detail::__recent_leap_second_info(__info, std::size(__leaps)))
+	    return __info;
 #endif
-	{
-	  seconds::rep __s = __ss.time_since_epoch().count();
-	  const seconds::rep* __first = std::begin(__leaps);
-	  const seconds::rep* __last = std::end(__leaps);
+	  return __after_last;
+	}
 
-	  // Don't bother searching the list if we're after the last one.
-	  if (__s > (__last[-1] + (__last - __first) + 1))
-	    return { false, seconds(__last - __first) };
+      seconds::rep __s = __ss.time_since_epoch().count();
+      const seconds::rep* __first = std::begin(__leaps);
+      const seconds::rep* __last = std::end(__leaps);
 
-	  auto __pos = std::upper_bound(__first, __last, __s);
-	  seconds __elapsed{__pos - __first};
-	  if (__is_utc)
+      // Don't bother searching the list if we're after the last one.
+      if (__s > (__last[-1] + (__last - __first) + 1))
+	return __after_last;
+
+      auto __pos = std::upper_bound(__first, __last, __s);
+      seconds __elapsed{__pos - __first};
+      if (__is_utc)
+	{
+	  // Convert utc_time to sys_time:
+	  __s -= __elapsed.count();
+	  // See if that sys_time is before (or during) previous leap sec:
+	  if (__pos != __first && __s < __pos[-1])
 	    {
-	      // Convert utc_time to sys_time:
-	      __s -= __elapsed.count();
-	      // See if that sys_time is before (or during) previous leap sec:
-	      if (__pos != __first && __s < __pos[-1])
-		{
-		  if ((__s + 1) >= __pos[-1])
-		    return {true, __elapsed};
-		  --__elapsed;
-		}
+	      if ((__s + 1) >= __pos[-1])
+		return {true, __elapsed};
+	      --__elapsed;
 	    }
-	  return {false, __elapsed};
 	}
+      return {false, __elapsed};
     }
 } // namespace __detail
 
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index b0fbfc46a6d3..587e88bc0dd5 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -36,6 +36,7 @@
 #include <memory>     // atomic<shared_ptr<T>>
 #include <mutex>      // mutex
 #include <iomanip>    // quoted
+#include <span>
 #if defined __GTHREADS && ! defined _GLIBCXX_HAS_GTHREADS
 # include <ext/concurrence.h> // __gnu_cxx::__mutex
 #endif
@@ -196,6 +197,9 @@ namespace std::chrono
     static const tzdb& _S_replace_head(shared_ptr<_Node>, shared_ptr<_Node>);
 
     static pair<vector<leap_second>, bool> _S_read_leap_seconds();
+
+    // This is here because _Node is a friend so can call private constructor.
+    static const leap_second fixed_leaps[];
   };
 
   // Implementation of the private constructor used for the singleton object.
@@ -1251,56 +1255,168 @@ namespace std::chrono
   }
 #endif // TZDB_DISABLED
 
+// These are the same values as the array in the <chrono> header, but might
+// contain additional leap seconds if the libstdc++.so used at runtime is
+// newer than the <chrono> header used to compile parts of the application.
+constexpr leap_second tzdb_list::_Node::fixed_leaps[] {
+#define LS leap_second
+  LS(  78796800), // 1 Jul 1972
+  LS(  94694400), // 1 Jan 1973
+  LS( 126230400), // 1 Jan 1974
+  LS( 157766400), // 1 Jan 1975
+  LS( 189302400), // 1 Jan 1976
+  LS( 220924800), // 1 Jan 1977
+  LS( 252460800), // 1 Jan 1978
+  LS( 283996800), // 1 Jan 1979
+  LS( 315532800), // 1 Jan 1980
+  LS( 362793600), // 1 Jul 1981
+  LS( 394329600), // 1 Jul 1982
+  LS( 425865600), // 1 Jul 1983
+  LS( 489024000), // 1 Jul 1985
+  LS( 567993600), // 1 Jan 1988
+  LS( 631152000), // 1 Jan 1990
+  LS( 662688000), // 1 Jan 1991
+  LS( 709948800), // 1 Jul 1992
+  LS( 741484800), // 1 Jul 1993
+  LS( 773020800), // 1 Jul 1994
+  LS( 820454400), // 1 Jan 1996
+  LS( 867715200), // 1 Jul 1997
+  LS( 915148800), // 1 Jan 1999
+  LS(1136073600), // 1 Jan 2006
+  LS(1230768000), // 1 Jan 2009
+  LS(1341100800), // 1 Jul 2012
+  LS(1435708800), // 1 Jul 2015
+  LS(1483228800), // 1 Jan 2017
+  // If new leap seconds get defined they should be added here.
+  // Negative leap seconds are represented as -1 * timestamp.
+#undef LS
+};
+
+namespace
+{
+  // The expiry date corresponding to the list above.
+  // tzdata 2026a leapseconds list expires at 2026-12-28 00:00:00 UTC
+  constexpr seconds fixed_expiry{1798416000u};
+
+  // This holds the most up-to-date number of leap seconds known at runtime.
+  // Initially zero, updated when _S_read_leap_seconds() is called.
+  constinit atomic<unsigned> num_leap_seconds{0};
+}
+
+  namespace __detail
+  {
+    // Called by chrono::__detail::__get_leap_second_info in <chrono>
+    // to get leap_second_info for times after the expiry date in the header.
+    // The caller provides the time being queried in `info.elapsed` and
+    // whether that is a UTC time in `info.is_leap_second`.
+    // If it returns true, this function did the lookup and updated `info`.
+    // If this returns false, it means the hardcoded list of leap seconds
+    // in the header should be used for the lookup.
+    bool
+    __recent_leap_second_info(leap_second_info& info,
+			      unsigned num_positive_leaps)
+    {
+      // Extract the input args from info:
+      const auto [is_utc, secs] = info;
+      // And then reuse info for the output result:
+      info.is_leap_second = false;
+      info.elapsed = seconds(num_positive_leaps);
+
+      auto update_info = [&](span<const leap_second> leaps)
+      {
+	if (leaps.size() == num_positive_leaps)
+	  return false; // No new leap seconds, use the array in the header.
+
+	// info.elapsed already contains the first N leap seconds,
+	// so we only search the end of the span.
+	auto first = leaps.begin() + num_positive_leaps;
+	auto pos = std::upper_bound(first, leaps.end(), sys_seconds(secs));
+	for (auto i = first; i != pos; ++i)
+	  info.elapsed += i->value();
+
+	if (is_utc)
+	  {
+	    // This should never happen, but check it so that pos[-1] is valid:
+	    if (num_positive_leaps == 0) [[unlikely]]
+	      return false;
+
+	    // Convert utc_time to sys_time:
+	    sys_seconds ss(secs - info.elapsed);
+	    // See if that sys_time is before (or during) previous leap sec:
+	    if (ss < pos[-1])
+	      {
+		if ((ss + 1s) >= pos[-1])
+		  info.is_leap_second = true;
+		else
+		  info.elapsed -= pos[-1].value();
+	      }
+	  }
+	return true;
+      };
+
+      using _Node = tzdb_list::_Node;
+
+      // If the caller was compiled using an older GCC with an older expiry
+      // time in the header than the `fixed_expiry` defined above, we might
+      // be able to answer the query easily using the static `fixed_leaps`.
+      if (secs <= fixed_expiry)
+	return update_info(_Node::fixed_leaps);
+
+      constexpr auto num_fixed_leaps = std::size(_Node::fixed_leaps);
+
+      auto num_leaps = num_leap_seconds.load(memory_order::relaxed);
+      if (num_leaps == num_fixed_leaps)
+	// A leapseconds file has been read and has no new leap seconds:
+	return update_info(_Node::fixed_leaps);
+      else if (num_leaps != 0)
+	// The tzdb_list has been initialized and contains a tzdb object
+	// with new leap seconds, which we want to use here.
+	// The relaxed load above does not synchronize with anything, so to
+	// ensure that the get_tzdb_list() below will see a tzdb object set
+	// by _S_replace_head, we load num_leap_seconds again with acquire
+	// ordering:
+	(void) num_leap_seconds.load(memory_order::acquire);
+      else
+	{
+	  // The tzdb_list has not been initialized yet, so we don't know
+	  // the correct number of leap seconds.
+	  // We use _S_read_leap_seconds() to read the leapseconds file.
+	  // If that tells us there are no new leapseconds, we don't need
+	  // to parse all of tzdata.zi and initialize a whole tzdb object.
+	  if (_Node::_S_read_leap_seconds().first.size() == num_fixed_leaps)
+	    {
+	      // There are no new leap seconds. remember that so that the next
+	      // call to this function can just use fixed_leaps.
+	      num_leap_seconds.compare_exchange_strong(num_leaps,
+						       num_fixed_leaps,
+						       memory_order::relaxed);
+	      return update_info(_Node::fixed_leaps);
+	    }
+	  // else there are new leap seconds. We init tzdb_list so that the
+	  // new leap seconds are persisted in a tzdb object.
+	}
+
+      // Use updated leap_seconds from tzdb.
+      return update_info(get_tzdb_list().begin()->leap_seconds);
+    }
+  }
+
   // Return leap_second values, and a bool indicating whether the values are
   // current (true), or potentially out of date (false).
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-12-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/12/28};
-    vector<leap_second> leaps
-    {
-      (leap_second)  78796800, // 1 Jul 1972
-      (leap_second)  94694400, // 1 Jan 1973
-      (leap_second) 126230400, // 1 Jan 1974
-      (leap_second) 157766400, // 1 Jan 1975
-      (leap_second) 189302400, // 1 Jan 1976
-      (leap_second) 220924800, // 1 Jan 1977
-      (leap_second) 252460800, // 1 Jan 1978
-      (leap_second) 283996800, // 1 Jan 1979
-      (leap_second) 315532800, // 1 Jan 1980
-      (leap_second) 362793600, // 1 Jul 1981
-      (leap_second) 394329600, // 1 Jul 1982
-      (leap_second) 425865600, // 1 Jul 1983
-      (leap_second) 489024000, // 1 Jul 1985
-      (leap_second) 567993600, // 1 Jan 1988
-      (leap_second) 631152000, // 1 Jan 1990
-      (leap_second) 662688000, // 1 Jan 1991
-      (leap_second) 709948800, // 1 Jul 1992
-      (leap_second) 741484800, // 1 Jul 1993
-      (leap_second) 773020800, // 1 Jul 1994
-      (leap_second) 820454400, // 1 Jan 1996
-      (leap_second) 867715200, // 1 Jul 1997
-      (leap_second) 915148800, // 1 Jan 1999
-      (leap_second)1136073600, // 1 Jan 2006
-      (leap_second)1230768000, // 1 Jan 2009
-      (leap_second)1341100800, // 1 Jul 2012
-      (leap_second)1435708800, // 1 Jul 2015
-      (leap_second)1483228800, // 1 Jan 2017
-    };
+    // Populate the vector with the leap seconds we already know about:
+    vector<leap_second> leaps(fixed_leaps, std::end(fixed_leaps));
 
-#if 0
-    // This optimization isn't valid if the file has additional leap seconds
-    // defined since the library was compiled, but the system clock has been
-    // set to a time before the hardcoded expiration date.
-    if (system_clock::now() < expires)
-      return {std::move(leaps), true};
-#endif
+    bool read_leaps_file = false;
 
 #ifndef TZDB_DISABLED
     if (ifstream ls{zoneinfo_file(leaps_file)})
       {
-	auto exp_year = year_month_day(expires).year();
+	constexpr year exp_year
+	  = year_month_day(sys_days(duration_cast<days>(fixed_expiry))).year();
+
 	std::string s, w;
 	s.reserve(80); // Avoid later reallocations.
 	while (std::getline(ls, s))
@@ -1309,6 +1425,7 @@ namespace std::chrono
 
 	    if (!s.starts_with("Leap"))
 	      continue;
+
 	    istringstream li(std::move(s));
 	    li.exceptions(ios::failbit);
 	    li.ignore(4);
@@ -1339,12 +1456,14 @@ namespace std::chrono
 		      leaps.push_back(ls);
 		  }
 	      }
-	    s = std::move(li).str(); // return storage to s
+	    s = std::move(li).str(); // give allocated storage back to s
 	  }
-	return {std::move(leaps), true};
+
+	read_leaps_file = true;
       }
 #endif
-    return {std::move(leaps), false};
+
+    return {std::move(leaps), read_leaps_file};
   }
 
 #ifndef TZDB_DISABLED
@@ -1413,6 +1532,13 @@ namespace std::chrono
     _S_head_owner = std::move(new_head);
 #endif
     _S_cache_list_head(new_head_ptr);
+
+    // This allows __recent_leap_second_info() to know that it can use
+    // get_tzdb_list()->begin()->leap_seconds to get new leap seconds.
+    // The release op here synchronizes with the acquire op there.
+    num_leap_seconds.store(new_head_ptr->db.leap_seconds.size(),
+			   memory_order::release);
+
     return new_head_ptr->db;
   }
 
diff --git a/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc b/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
new file mode 100644
index 000000000000..090a28291c85
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
@@ -0,0 +1,108 @@
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target tzdb }
+// { dg-require-effective-target cxx11_abi }
+// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+
+#include <chrono>
+#include <fstream>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono_literals;
+
+static bool override_used = false;
+
+namespace __gnu_cxx
+{
+  const char* zoneinfo_dir_override() {
+    override_used = true;
+    return "./";
+  }
+}
+
+void
+test_known_leaps()
+{
+  // Test some values within the list of known leap seconds.
+  auto s = std::chrono::utc_seconds(-1s);
+  auto lsi = get_leap_second_info(s);
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == 0s );
+
+  s = std::chrono::utc_seconds(126230402s); // 1 Jan 1974
+  lsi = get_leap_second_info(s);
+  VERIFY( lsi.is_leap_second == true );
+  VERIFY( lsi.elapsed == 3s );
+
+  s = std::chrono::utc_seconds(1483228826s); // 1 Jan 2017
+  lsi = get_leap_second_info(s);
+  VERIFY( lsi.is_leap_second == true );
+  VERIFY( lsi.elapsed == 27s );
+
+  // We should not have checked the filesystem for the times above.
+  VERIFY( ! override_used );
+}
+
+void
+test_future_leaps()
+{
+  // XXX adjust this if real leap seconds are added to the hardcoded lists:
+  const auto hardcoded_count = 27s;
+
+  // Make sure there's no old file from a previous test run.
+  std::ofstream("leapseconds") << "";
+
+  using std::chrono::years;
+  auto s = std::chrono::utc_seconds(1483228826s + years(100)); // 1 Jan 2117
+  auto lsi = get_leap_second_info(s);
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count );
+  lsi = get_leap_second_info(s + years(10));
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count );
+
+  std::ofstream("leapseconds") << R"(
+# No need to repeat the real leap seconds here, they're hardcoded in the lib.
+# These are fake new leap seconds for testing purposes:
+Leap	2099	Dec	31	23:59:60	+	S
+Leap	2120	Jun	30	23:59:59	-	S
+Leap	2120	Dec	30	23:59:59	-	S
+)";
+
+  override_used = false;
+  std::chrono::reload_tzdb();
+  VERIFY( override_used );
+
+  // Check the same dates again using the custom leapseconds file:
+  lsi = get_leap_second_info(s);
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count + 1s ); // One positive leap second.
+  lsi = get_leap_second_info(s + years(10));
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count - 1s ); // Two negative leap seconds.
+
+  // Overwrite the custom file again:
+  override_used = false;
+  std::ofstream("leapseconds") << "";
+
+  // This should not re-read the custom file, the head of the tzdb_list
+  // should already have been populated by calling get_leap_second_info(s):
+  auto& tzdb = std::chrono::get_tzdb();
+  // The file was not read again:
+  VERIFY( ! override_used );
+  // The list in the tzdb contains the three fake leap seconds:
+  VERIFY( tzdb.leap_seconds.size() == hardcoded_count.count() + 3 );
+  // And repeating the queries above gives the same results:
+  lsi = get_leap_second_info(s);
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count + 1s ); // One positive leap second.
+  lsi = get_leap_second_info(s + years(10));
+  VERIFY( lsi.is_leap_second == false );
+  VERIFY( lsi.elapsed == hardcoded_count - 1s ); // Two negative leap seconds.
+}
+
+int main()
+{
+  test_known_leaps();
+  test_future_leaps();
+}
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc
index 8fb38355cadd..4e80c5f184a6 100644
--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc
@@ -217,6 +217,7 @@ check_version(symbol& test, bool added)
       known_versions.push_back("GLIBCXX_3.4.33");
       known_versions.push_back("GLIBCXX_3.4.34");
       known_versions.push_back("GLIBCXX_3.4.35");
+      known_versions.push_back("GLIBCXX_3.4.36");
       known_versions.push_back("GLIBCXX_LDBL_3.4.31");
       known_versions.push_back("GLIBCXX_IEEE128_3.4.29");
       known_versions.push_back("GLIBCXX_IEEE128_3.4.30");
@@ -260,7 +261,7 @@ check_version(symbol& test, bool added)
 	test.version_status = symbol::incompatible;
 
       // Check that added symbols are added in the latest pre-release version.
-      bool latestp = (test.version_name == "GLIBCXX_3.4.35"
+      bool latestp = (test.version_name == "GLIBCXX_3.4.36"
 		     || test.version_name == "CXXABI_1.3.17"
 		     || test.version_name == "CXXABI_FLOAT128"
 		     || test.version_name == "CXXABI_TM_1");

From gccadmin@gcc.gnu.org  Wed May 13 00:16:56 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 13 May 2026 00:16:56 +0000 (GMT)
Subject: [gcc r17-479] Daily bump.
Message-ID: <20260513001656.38A2B4BB24DD@sourceware.org>

https://gcc.gnu.org/g:ad5b8a77182dcc4a82348a06e63bc3e074b3448b

commit r17-479-gad5b8a77182dcc4a82348a06e63bc3e074b3448b
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 13 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 contrib/ChangeLog       |   4 ++
 gcc/ChangeLog           | 135 ++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cobol/ChangeLog     | 129 ++++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog        |  23 ++++++++
 gcc/testsuite/ChangeLog | 152 ++++++++++++++++++++++++++++++++++++++++++++++++
 libgcobol/ChangeLog     |  88 ++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  32 ++++++++++
 8 files changed, 564 insertions(+), 1 deletion(-)

diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index af8c886d1bb4..55c6aec70c6e 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-12  L?o Hardt  <leom.hardt@inf.ufrgs.br>
+
+	* texi2pod.pl: Remove rule to parse the defunct @gol macro.
+
 2026-05-11  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR other/125275
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2383a1f1fd24..2f01bbd2d398 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,138 @@
+2026-05-12  Heiko Ei?feldt  <heiko.Eissfeldt@hexco.de>
+
+	PR middle-end/124651
+	* gimple-warn-recursion.cc (find_function_exit):
+	replace recursive calls with iteration for lower stack usage
+
+2026-05-12  John David Anglin  <danglin@gcc.gnu.org>
+
+	* config/pa/pa64-hpux.h (MD_EXEC_PREFIX): Define to empty
+	string.
+
+2026-05-12  Christopher Bazley  <chris.bazley@arm.com>
+
+	* common.opt: Add Wzero-init-padding-bits=.
+	* common.opt.urls: Regenerated.
+	* doc/invoke.texi: Document Wzero-init-padding-bits=.
+	* expr.cc (categorize_ctor_elements_1): Update new struct type
+	ctor_completeness instead of an integer to indicate presence of
+	padding or missing fields in a constructor. Instead of setting -1
+	upon discovery of padding bits in both structs and unions,
+	set separate flags to indicate the type of padding bits.
+	(categorize_ctor_elements): Update the type and documentation of
+	the p_complete parameter.
+	(mostly_zeros_p): Use new struct type ctor_completeness when
+	calling categorize_ctor_elements.
+	(all_zeros_p): Use new struct type ctor_completeness when
+	calling categorize_ctor_elements.
+	* expr.h (struct ctor_completeness): New struct type to replace an
+	an integer that could take the value -1 ('all fields are
+	initialized, but there's padding'), 0 ('fields are missing') or
+	1 ('all fields are initialized, and there's no padding'). Named
+	bool members make the code easier to understand and make room to
+	disambiguate struct padding bits from union padding bits.
+	(categorize_ctor_elements): Update the function declaration to use
+	the new struct type in the last parameter declaration.
+	* gimplify.cc (gimplify_init_constructor): Replace use of
+	complete_p != 0 ('all fields are initialized') with !sparse,
+	replace use of complete == 0 ('fields are missing') with sparse, and
+	replace use of complete <= 0 ('fields are missing' or 'all fields are
+	initialized, but there's padding') with sparse || padded_union or
+	padded_non_union. Trigger new warnings if storage for the object
+	is not zeroed but padded_union or padded_non_union is set
+	(because this combination implies possible non-zero padding bits).
+
+2026-05-12  Martin Jambor  <mjambor@suse.cz>
+
+	PR tree-optimization/124151
+	* tree-sra.cc (build_user_friendly_ref_for_offset): Added parameters
+	CUR_SIZE and EXP_SIZE.  Added code passing the correct CUR_SIZE and
+	checking it against EXP_SIZE.  Removed unused code for the case when
+	EXP_TYPE was NULL_TREE.
+	(create_artificial_child_access): Adjusted the call to
+	build_user_friendly_ref_for_offset.
+	(propagate_subaccesses_from_rhs): Likewise.
+	(propagate_subaccesses_from_rhs): Removed a check that the size of
+	lchild is a multiple of BITS_PER_UNIT.
+	(propagate_subaccesses_from_lhs): Likewise.
+
+2026-05-12  Yoshinori Sato  <yoshinori.sato@nifty.com>
+
+	PR target/113948
+	* config/rx/rx-protos.h (rx_split_double_move): New helper prototype.
+	(rx_relax_double_operands): Likewise.
+	* config/rx/rx.cc (rx_legitimize_address): Add expand complex case.
+	(rx_is_legitimate_address): Add double word case.
+	(rx_gen_move_template): Fix operation size in unsigned extend.
+	(rx_gen_move_template): Remove DImode and DFmode.
+	(rx_get_stack_layout): Fix for frame size calculation.
+	(rx_initial_elimination_offset): The calculation method has been
+	changed to one that supports LRA.
+	(rx_hard_regno_nregs): Use CEIL.
+	(rx_hard_regno_mode_ok): Add ATTRIBUTE_UNUSED.
+	(rx_get_subword): New. Double word move helper.
+	(rx_split_double_move): Likewise.
+	(rx_relax_double_operands): Likewise.
+	* config/rx/rx.h (reg_class): Add CC for all regsisters.
+	(CLASS_MAX_NREGS): Remove.
+	* config/rx/rx.md (mov<register_modes:mode>):
+	Replace copy_to_mode_reg to force_reg.
+	(movdi): Limit the arguments to make register allocation easier.
+	(movdf): Likewise.
+	(movdi_internal): New.
+	(movdf_internal): New.
+	(addsi3_pid): New. Handling UNSPEC_PID_ADDR.
+	(addsi3_lra): New. alternative addptrsi3.
+	(ashlsi3_lra): Likewise.
+
+2026-05-12  Lili Cui  <lili.cui@intel.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* tree-vect-slp.cc (vect_analyze_slp_reduction): Don't bail out
+	early when SLP discovery limit is exhausted; only guard the chain
+	analysis which may build multi-lane trees.  Single-lane fallback
+	does not consume limit and should always be attempted.
+
+2026-05-12  Lili Cui  <lili.cui@intel.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* tree-vect-slp.cc (vect_build_slp_tree_1): Use unified
+	first_commutative_argument interface to allow commutative
+	operand swap for both tree codes and internal functions
+	(e.g. .COND_ADD) in SLP reduction matching.
+
+2026-05-12  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.cc (get_load_store_type): Pass
+	temporary to vect_use_grouped_gather, only set ls_type
+	when that succeeded.
+
+2026-05-12  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR middle-end/125259
+	* match.pd: Fix the view_convert (BIT_FIELD_REF) pattern.
+
+2026-05-12  Alexandre Oliva  <oliva@adacore.com>
+
+	* config.gcc [aarch64*-wrs-vxworks*] (tm_file): Add
+	aarch64/aarch64-errata.h.
+	* config/aarch64/aarch64-vxworks.h (LINK_SPEC): Add
+	AARCH64_ERRATA_LINK_SPEC.
+	(CC1_SPEC, CC1PLUS_SPEC): Add AARCH64_ERRATA_COMPILE_SPEC.
+
+2026-05-12  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* fold-const-call.cc (fold_internal_fn_sat_add): New function.
+	(fold_const_call): Handle CFN_SAT_ADD.
+	* match.pd: Add simplifications for x SAT_ADD 0 == x.
+	* genmatch.cc (commutative_op): Add CFN_SAT_ADD.
+
+2026-05-12  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_imm_low):
+	Change return type to const char *.
+	* config/aarch64/aarch64.cc (aarch64_output_simd_mov_imm_low): Likewise.
+
 2026-05-11  William D. Jones  <thor0505@comcast.net>
 
 	PR target/120077
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dfe83385ca85..32bcf444be08 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260512
+20260513
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index a1741e4f2989..3d0418fcc313 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,132 @@
+2026-05-12  Robert Dubner  <rdubner@symas.com>
+
+	* Make-lang.in: Incorporate new gcc/cobol/compare.cc file.
+	* cobol1.cc (ATTR_CONST_NOTHROW_LEAF): Incorporate __builtin_swap16,
+	__builtin_swap32, __builtin_swap64, and __builtin_swap128.
+	(cobol_langhook_init): Likewise.
+	* genapi.cc (treeplet_fill_source): Improve speed.
+	(get_binary_value_from_float): Spelling.
+	(normal_normal_compare): Eliminate.
+	(compare_binary_binary): Eliminate.
+	(DEBUG_COMPARE): Eliminate.
+	(cobol_compare): Eliminate.
+	(parser_enter_file): Eliminate obsolete variables.
+	(data_decl_type_for): New function.
+	(parser_alphabet_use): Flag altered alphabets for speed.
+	(parser_display): Environment switch for putting comments into
+	the assembly language.
+	(program_end_stuff): Change "hijack" to "hijack_h".
+	(parser_division): Repair RETURN-CODE logic.
+	(parser_logop): Improve GENERIC for logical operations.
+	(parser_relop): Use new cobol_compare_relop() routine.
+	(parser_relop_long): Elminate unnecessary static variable.
+	(inspect_tally): Improve parameter passing to library routine.
+	(inspect_replacing): Likewise.
+	(parser_intrinsic_subst): Likewise.
+	(parser_intrinsic_callv): Likewise.
+	(parser_intrinsic_call_1): Likewise.
+	(parser_bsearch_start): Likewise.
+	(parser_bsearch_when): Use new comparison routine; simplify logic.
+	(parser_unstring): Improve parameter passing to library routine.
+	(parser_string): Likewise.
+	(create_and_call): Repair RETURN-CODE logic.
+	(parser_call): Adjust exception processing when the target cannot be
+	found.
+	(build_temporaryN): Constructor for cblc_field_t::data.
+	(hijack_for_development): Change hijacking name to "dubner_h".
+	(hijacker): Change hijacking name to "hijack_h".
+	(get_reference_to_data): New function.
+	(mh_identical): Improve speed when sender and receiver have the same
+	structure.
+	(mh_source_is_literalN): Eliminate leading plus/minus when moving a
+	numeric to an alphanumeric.
+	(move_helper): Adjust logic for mh_identical and mh_source_is_group.
+	(actually_create_the_static_field): Use constructor for data member.
+	(psa_new_var_decl): Typo in comment.
+	(parser_symbol_add): Make the generated data type more consistent
+	with the COBOL variable type.
+	* genapi.h (parser_bsearch_when): Change declaration.
+	(parser_bsearch_start): Formatting.
+	(parser_sort): Formatting.
+	* gengen.cc (gg_show_type): Expand for ARRAY_TYPE and ARRAY_REF.
+	(gg_define_from_declaration): Use void type for DECL_EXPR.
+	(gg_define_volatile_variable): New function.
+	(gg_get_address): New function.
+	(gg_array_value): Use fold_convert().
+	(gg_bswap): New function.
+	(gg_memcmp): New function.
+	* gengen.h (SCHAR_P): New and changed declarations.
+	(struct gg_function_t): Add alphabet_in_use flag.
+	(gg_define_volatile_variable): New declaration.
+	(gg_get_address_of): Comment.
+	(gg_pointer_to_array): Comment.
+	(gg_get_address): New declaration.
+	(gg_bswap): New declaration.
+	(gg_memcmp):  New declaration.
+	(gg_insert_into_assemblerf): Formatting.
+	* genmath.cc (arithmetic_operation): Improved handling of
+	parameters.
+	(fast_add): Improved handling of locations.
+	(parser_add): Formatting.
+	* genutil.cc (tree_type_from_digits): Correct parameter.
+	(get_data_offset): Correct exception handling.
+	(get_binary_value_tree): Improve location handling.
+	(tree_type_from_field): Correct logic.
+	(tree_type_from_size): Correct signs for returned type.
+	(build_array_of_treeplets): Eliminated.
+	(build_array_of_referlets): New function.
+	(build_array_of_fourplets): Eliminated.
+	(build_array_of_refers): New function.
+	(refer_is_clean): Improved logic.
+	(refer_is_super_clean): New function.
+	(refer_is_working_storage): New function.
+	(refer_offset): Formatting.
+	(binary_from_FldNumericBin5): New function.
+	(binary_from_FldNumericBinary): New function.
+	(d_and_q_num_disp): New function.
+	(binary_from_FldNumericDisplay): New function.
+	(make_dp2bin_decl): New function.
+	(d_and_q_packed): New function.
+	(binary_from_comp_3): New function.
+	(binary_from_comp_6): New function.
+	(binary_from_FldPacked): New function.
+	(binary_from_FldFloat): New function.
+	(get_binary_value): New function.
+	(get_location): New function.
+	(get_length): New function.
+	* genutil.h (tree_type_from_digits): New declaration.
+	(tree_type_from_size): Changed declaration.
+	(refer_is_super_clean): New declaration.
+	(refer_is_working_storage): New declaration.
+	(refer_offset): Changed declaration.
+	(build_array_of_treeplets): Remove declaration.
+	(build_array_of_referlets): New declaration.
+	(build_array_of_fourplets): Remove declaration.
+	(build_array_of_refers): New declaration.
+	(tree_type_from_field): New declaration.
+	(get_binary_value): New declaration.
+	(get_location): New declaration.
+	(get_length): New declaration.
+	* parse.y: Mysterious changes. All changes to YACC rules are
+	mysterious.
+	* parse_ante.h (class log_expr_t): Changes to logop() invocation.
+	* scan_post.h (yylex): Remove unnecessary trailing semicolon.
+	* structs.cc (create_cblc_file_t): Change cblc_file_t declaration.
+	(create_referlet_t): New function.
+	(create_refer_t): New function.
+	(create_our_type_nodes): Add cblc_referlet_type_node and
+	cblc_refer_type_node.
+	* structs.h (member2): New declaration.
+	(GTY): Type for cblc_referlet_type_node and cblc_refer_type_node.
+	* symbols.cc (temporaries_t::add): Remove unnecessary trailing
+	semicolon.
+	* symbols.h (struct cbl_bsearch_t): Remove obsolete member.
+	(ENABLE_HIJACKING): Compilation switch for enabling dubner_h and
+	hijack_h code-generation hijacking.
+	* util.cc (symbol_field_type_update): Comment.
+	* compare.cc: New file.
+	* compare.h: New file.
+
 2026-04-02  Robert Dubner  <rdubner@symas.com>
 
 	* cobol1.cc (cobol_langhook_handle_option): Handle OPT_Wrecording_mode.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5289b44d95ba..a7a9cc92c984 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,26 @@
+2026-05-12  Jason Merrill  <jason@redhat.com>
+
+	PR c++/100903
+	* call.cc (build_over_call): Avoid -Wzero-as-null-pointer-constant
+	if the warning is disabled around the called function.
+
+2026-05-12  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/50479
+	PR c++/62244
+	* parser.cc (cp_parser_parameter_declaration_list): Move the
+	grokdeclarator call and setting DECL_SOURCE_LOCATION to...
+	(cp_parser_parameter_declaration): ...here.  New tree parameter.
+	Set it.  Call pushdecl for a named decl with a default argument.
+
+2026-05-12  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125208
+	* reflect.cc (compare_reflections): Use == when comparing two
+	aliases.
+	* tree.cc (cp_tree_equal) <case REFLECT_EXPR>: Use
+	compare_reflections.
+
 2026-05-11  Jason Merrill  <jason@redhat.com>
 
 	* reflect.cc (null_reflection_p): New.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0737fa301a38..8d6088cb5821 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,155 @@
+2026-05-12  Robert Dubner  <rdubner@symas.com>
+
+	* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob:
+	Corrected logic.
+	* cobol.dg/group2/ENTRY_statement.cob: Expanded test.
+	* cobol.dg/group2/ENTRY_statement.out: Likewise.
+	* cobol.dg/group2/FUNCTION_DATE___TIME_OMNIBUS.cob: Automated
+	generation of run-time environment variable.
+	* cobol.dg/group2/Intrinsic_Function_ABS.cob: Corrected.
+	* cobol.dg/group2/RETURN-CODE_moving.cob: Requires "dialect ibm".
+	* cobol.dg/group2/FUNCTION_TRIM_with_NATIONAL_characters.cob: New test.
+	* cobol.dg/group2/FUNCTION_TRIM_with_NATIONAL_characters.out: New test.
+	* cobol.dg/group2/Large_PIC_10000000_.cob: New test.
+	* cobol.dg/group2/Large_PIC_10000000_.out: New test.
+	* cobol.dg/group2/Nested_PERFORM.cob: New test.
+	* cobol.dg/group2/Nested_PERFORM.out: New test.
+	* cobol.dg/group2/Overlapping_MOVE.cob: New test.
+	* cobol.dg/group2/Overlapping_MOVE.out: New test.
+	* cobol.dg/group2/PERFORM_TIMES_subscripted.cob: New test.
+	* cobol.dg/group2/PERFORM_TIMES_subscripted.out: New test.
+	* cobol.dg/group2/PERFORM_VARYING_BY_-0.2.cob: New test.
+	* cobol.dg/group2/PERFORM_VARYING_BY_-0.2.out: New test.
+	* cobol.dg/group2/REDEFINES__chained.cob: New test.
+	* cobol.dg/group2/REDEFINES__chained.out: New test.
+	* cobol.dg/group2/RETURN-CODE_with_INITIAL_and_RECURSIVE.cob: New test.
+	* cobol.dg/group2/RETURN-CODE_with_INITIAL_and_RECURSIVE.out: New test.
+	* cobol.dg/group2/Sanity_check_for_ENTRY.cob: New test.
+	* cobol.dg/group2/Sanity_check_for_ENTRY.out: New test.
+	* cobol.dg/group2/Simple_COMP-X.cob: New test.
+	* cobol.dg/group2/Simple_COMP-X.out: New test.
+	* cobol.dg/group2/compare_alpha_to_all__literal_.cob: New test.
+	* cobol.dg/group2/compare_alpha_to_all__literal_.out: New test.
+	* cobol.dg/group2/compare_national_to_display.cob: New test.
+	* cobol.dg/group2/compare_national_to_display.out: New test.
+	* cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob: New test.
+	* cobol.dg/group2/comprensive_compare_comp-1_comp-5.out: New test.
+	* cobol.dg/group2/refmod_with_nested_parentheses.cob: New test.
+	* cobol.dg/group2/refmod_with_nested_parentheses.out: New test.
+	* cobol.dg/group2/signed_unsigned_compare.cob: New test.
+	* cobol.dg/group2/signed_unsigned_compare.out: New test.
+
+2026-05-12  Christopher Bazley  <chris.bazley@arm.com>
+
+	* gcc.dg/c23-empty-init-warn-1.c: New test.
+	* gcc.dg/c23-empty-init-warn-10.c: New test.
+	* gcc.dg/c23-empty-init-warn-11.c: New test.
+	* gcc.dg/c23-empty-init-warn-12.c: New test.
+	* gcc.dg/c23-empty-init-warn-13.c: New test.
+	* gcc.dg/c23-empty-init-warn-14.c: New test.
+	* gcc.dg/c23-empty-init-warn-15.c: New test.
+	* gcc.dg/c23-empty-init-warn-16.c: New test.
+	* gcc.dg/c23-empty-init-warn-17.c: New test.
+	* gcc.dg/c23-empty-init-warn-2.c: New test.
+	* gcc.dg/c23-empty-init-warn-3.c: New test.
+	* gcc.dg/c23-empty-init-warn-4.c: New test.
+	* gcc.dg/c23-empty-init-warn-5.c: New test.
+	* gcc.dg/c23-empty-init-warn-6.c: New test.
+	* gcc.dg/c23-empty-init-warn-7.c: New test.
+	* gcc.dg/c23-empty-init-warn-8.c: New test.
+	* gcc.dg/c23-empty-init-warn-9.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-1.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-10.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-11.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-12.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-13.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-14.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-15.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-16.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-17.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-2.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-3.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-4.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-5.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-6.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-7.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-8.c: New test.
+	* gcc.dg/gnu11-empty-init-warn-9.c: New test.
+
+2026-05-12  Jason Merrill  <jason@redhat.com>
+
+	PR c++/100903
+	* g++.dg/cpp2a/spaceship-warn1.C: New test.
+
+2026-05-12  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/50479
+	PR c++/62244
+	* g++.dg/reflect/parm1.C: Uncomment code.
+	* g++.dg/parse/defarg22.C: New test.
+	* g++.dg/parse/defarg23.C: New test.
+	* g++.dg/parse/defarg24.C: New test.
+	* g++.dg/parse/defarg25.C: New test.
+	* g++.dg/parse/defarg26.C: New test.
+
+2026-05-12  Marek Polacek  <polacek@redhat.com>
+
+	* g++.dg/reflect/bases_of5.C: Use decltype (sizeof 0) instead of
+	unsigned long.
+
+2026-05-12  Martin Jambor  <mjambor@suse.cz>
+
+	PR tree-optimization/124151
+	* gcc.dg/tree-ssa/pr124151.c: New test.
+
+2026-05-12  Lili Cui  <lili.cui@intel.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* gcc.dg/vect/slp-reduc-15.c: New test.
+
+2026-05-12  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR middle-end/125259
+	* gcc.dg/tree-ssa/pr125259.c: New test.
+
+2026-05-12  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/aarch64/erratas_opt_0.c: Revert skip on VxWorks.
+	* gcc.target/aarch64/erratas_opt_1.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_2.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_3.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_4.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_5.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_6.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_7.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_8.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_9.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_10.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_11.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_12.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_13.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_14.c: Likewise.
+	* gcc.target/aarch64/erratas_opt_15.c: Likewise.
+
+2026-05-12  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.dg/vect/pr94994.c: Include stddef.h.
+
+2026-05-12  Alexandre Oliva  <oliva@adacore.com>
+
+	* gcc.target/riscv/pr114139.c: Reset arch.
+	* gcc.target/riscv/pr118170.c: Likewise.
+
+2026-05-12  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* gcc.dg/pr123286.c: New test.
+
+2026-05-12  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125208
+	* g++.dg/reflect/alias3.C: New test.
+	* g++.dg/reflect/bases_of5.C: New test.
+
 2026-05-11  Jason Merrill  <jason@redhat.com>
 
 	* g++.dg/reflect/pr125007.C: Add info{} test.
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index f522db177158..94e1e7b72de4 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,91 @@
+2026-05-12  Robert Dubner  <rdubner@symas.com>
+
+	* charmaps.h (class charmap_t): Remove an abort().
+	* common-defs.h (SUPERTYPE): Pairs integers for complex switch().
+	(cbl_file_mode_str): Remove unnecessary trailing semicolon.
+	* gcobolio.h: New cblc_referlet_t and cblc_refer_t structures;
+	eliminate obsolete structures.
+	* gmath.cc (__gg__pow): Improved parameter handling.
+	(__gg__add_fixed_phase1): Likewise.
+	(__gg__addf1_fixed_phase2): Likewise.
+	(__gg__fixed_phase2_assign_to_c): Likewise.
+	(__gg__add_float_phase1): Likewise.
+	(__gg__addf1_float_phase2): Likewise.
+	(__gg__float_phase2_assign_to_c): Likewise.
+	(__gg__addf3): Likewise.
+	(__gg__subtractf1_fixed_phase2): Likewise.
+	(__gg__subtractf2_fixed_phase1): Likewise.
+	(__gg__subtractf1_float_phase2): Likewise.
+	(__gg__subtractf2_float_phase1): Likewise.
+	(__gg__subtractf3): Likewise.
+	(__gg__multiplyf1_phase1): Likewise.
+	(__gg__multiplyf1_phase2): Likewise.
+	(__gg__multiplyf2): Likewise.
+	(__gg__dividef1_phase2): Likewise.
+	(__gg__dividef23): Likewise.
+	(__gg__dividef45): Likewise.
+	* inspect.cc (inspect_backward_format_1): Likewise.
+	(__gg__inspect_format_1): Likewise.
+	(inspect_backward_format_2): Likewise.
+	(__gg__inspect_format_2): Likewise.
+	(__gg__inspect_format_1_sbc): Likewise.
+	* intrinsic.cc (kahan_summation): Likewise.
+	(variance): Likewise.
+	(__gg__concat): Likewise.
+	(__gg__max): Likewise.
+	(__gg__mean): Likewise.
+	(__gg__median): Likewise.
+	(__gg__midrange): Likewise.
+	(__gg__min): Likewise.
+	(__gg__ord_min): Likewise.
+	(__gg__ord_max): Likewise.
+	(__gg__present_value): Likewise.
+	(__gg__range): Likewise.
+	(__gg__standard_deviation): Likewise.
+	(__gg__sum): Likewise.
+	(__gg__variance): Likewise.
+	(__gg__substitute): Likewise.
+	* libgcobol.cc (__gg__resize_int_p): Eliminate.
+	(__gg__resize_treeplet): Eliminate.
+	(initialize_program_state): Eliminate the use of obsolete variables.
+	(format_for_display_internal): Handle FldLiteralN; display up to
+	38 digits for __int128.
+	(compare_field_class): Rename to __gg__compare_field_class.
+	(__gg__compare_field_class): Likewise.
+	(interconvert): Correct codeset correction logic.
+	(__gg__compare_2): Use __gg__compare_field_class.
+	(__gg__move): Handle FldNumericBin5 correction.
+	(__gg__string): Improved parameter handling.
+	(display_both): Cope with missing codeset parameter.
+	(__gg__literaln_alpha_compare): Eliminate.
+	(__gg__unstring): Improved parameter handling.
+	(__gg__just_mangle_name): Improved codeset handling.
+	(__gg__convert): Formatting.
+	(__gg__set_data_member): Eliminate.
+	(__gg__show_int128): New function.
+	(__gg__compare_string_all): New function.
+	(__gg__compare_string_1): New function.
+	(ASCII_16): Abuse of the preprocessor to create a 1024-byte string
+	of ASCII spaces.
+	(ASCII_64): Likewise.
+	(ASCII_256): Likewise.
+	(ASCII_1024): Likewise.
+	(EBCDIC_16): Abuse of the preprocessor to create a 1024-byte string
+	of EBCDIC spaces.
+	(EBCDIC_64): Likewise.
+	(EBCDIC_256): Likewise.
+	(EBCDIC_1024): Likewise.
+	(__gg__compare_string_1a): New function.
+	(__gg__compare_string_1e): New function.
+	(__gg__compare_string_2): New function.
+	(__gg__compare_string_2a): New function.
+	(__gg__compare_string_4): New function.
+	(__gg__compare_string_4a): New function.
+	(__gg_compare_string_different): New function.
+	(__gg__compare_numeric_all): New function.
+	(__gg__compare_binary_to_string): New function.
+	* stringbin.cc (__gg__binary_to_string_ascii): Improved algorithm.
+
 2026-04-02  Robert Dubner  <rdubner@symas.com>
 
 	* Makefile.am: Include new libgcobol/inspect.cc file.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 373545a6e5c6..70556acae181 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,35 @@
+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):

From tkaminsk@gcc.gnu.org  Wed May 13 06:23:14 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 13 May 2026 06:23:14 +0000 (GMT)
Subject: [gcc r17-484] libstdc++: Fix numeric save offset on Zone lines
 [PR124851]
Message-ID: <20260513062314.855194BB5893@sourceware.org>

https://gcc.gnu.org/g:864f26bd7548d1a290b334b8f5375199449fcff5

commit r17-484-g864f26bd7548d1a290b334b8f5375199449fcff5
Author: ?lvaro Begu? <alvaro.begue@gmail.com>
Date:   Sun Apr 26 19:51:17 2026 -0400

    libstdc++: Fix numeric save offset on Zone lines [PR124851]
    
    When a Zone line specifies a numeric value as its RULES field (the
    constant DST save value for that zone line, e.g. Africa/Gaborone's
    "2 1 CAST" line), the parser stored the standard offset alone in
    ZoneInfo::m_offset. ZoneInfo::to() then returned that as
    sys_info::offset, dropping the numeric save and reporting a total
    offset that was wrong by the save amount.
    
    This was inconsistent with the two ZoneInfo constructors that take a
    sys_info, which previously stored the *total* offset (stdoff + save) in
    m_offset. As a result m_offset's semantics depended on which code path
    created the ZoneInfo, and only the parser path's lines with non-zero
    numeric save were observably broken.
    
    Fix by giving m_offset a single semantics: always the standard offset
    only. The two sys_info-taking constructors now subtract the save before
    storing, and to(0 adds it back when reconstructing the sys_info.
    
    The remaining .offset() callers inside _M_get_sys_info already expect
    the standard offset (they are computing rule firing times, where the
    save component is added separately from the active rule's save value),
    so no other call sites need adjustment.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Signed-off-by: ?lvaro Begu? <alvaro.begue@gmail.com>

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc                     | 11 ++--
 .../testsuite/std/time/time_zone/numeric_save.cc   | 58 ++++++++++++++++++++++
 2 files changed, 64 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 587e88bc0dd5..886d7e71d8eb 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -482,12 +482,13 @@ namespace std::chrono
 
       ZoneInfo(sys_info&& info)
       : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save),
-	m_offset(info.offset), m_until(info.end)
+	m_offset(info.offset - seconds(info.save)), m_until(info.end)
       { }
 
       ZoneInfo(const pair<sys_info, string_view>& info)
-      : m_expanded(true), m_save(info.first.save), m_offset(info.first.offset),
-	m_until(info.first.end)
+      : m_expanded(true), m_save(info.first.save),
+	m_offset(info.first.offset - seconds(info.first.save)),
+       	m_until(info.first.end)
       {
 	if (info.second.size())
 	  {
@@ -498,7 +499,7 @@ namespace std::chrono
 	m_buf += info.first.abbrev;
       }
 
-      // STDOFF: Seconds from UTC during standard time.
+      // STDOFF: Seconds from UTC during standard time (without any save).
       seconds
       offset() const noexcept { return m_offset; }
 
@@ -543,7 +544,7 @@ namespace std::chrono
 	  return false;
 
 	info.end = until();
-	info.offset = offset();
+	info.offset = offset() + seconds(m_save);
 	info.save = minutes(m_save);
 	info.abbrev = format();
 	format_abbrev_str(info); // expand %z
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc b/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
new file mode 100644
index 000000000000..687524bb355b
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
@@ -0,0 +1,58 @@
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target tzdb }
+// { dg-require-effective-target cxx11_abi }
+// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+
+// When a Zone line specifies a numeric value as its RULES field, that
+// value is the constant DST save value for that zone line.  Per
+// [time.zone.info.sys] sys_info::offset is the total UTC offset
+// (stdoff + save).
+
+#include <chrono>
+#include <fstream>
+#include <testsuite_hooks.h>
+
+static bool override_used = false;
+
+namespace __gnu_cxx
+{
+  const char* zoneinfo_dir_override() {
+    override_used = true;
+    return "./";
+  }
+}
+
+int
+main()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test_numeric_save
+Z Test/Gaborone 2 -  CAT  1943 Sep 19 2
+                2 1  CAST 1944 Mar 19 2
+                2 -  CAT
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_numeric_save" );
+
+  auto* tz = locate_zone("Test/Gaborone");
+
+  // Sample well inside the CAST (numeric-save) zone line.
+  auto info = tz->get_info(sys_days(1943y/December/15));
+  VERIFY( info.offset == 3h );        // stdoff +2h + save +1h
+  VERIFY( info.save == 60min );
+  VERIFY( info.abbrev == "CAST" );
+
+  // Bordering zone lines should report the standard offset with save 0.
+  auto before = tz->get_info(sys_days(1943y/September/1));
+  VERIFY( before.offset == 2h );
+  VERIFY( before.save == 0min );
+  VERIFY( before.abbrev == "CAT" );
+
+  auto after = tz->get_info(sys_days(1944y/April/15));
+  VERIFY( after.offset == 2h );
+  VERIFY( after.save == 0min );
+  VERIFY( after.abbrev == "CAT" );
+}

From tkaminsk@gcc.gnu.org  Wed May 13 06:31:48 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 13 May 2026 06:31:48 +0000 (GMT)
Subject: [gcc r17-486] libstdc++: Support ON-format DAY in Zone UNTIL field
 [PR124852]
Message-ID: <20260513063148.4920A4BB5893@sourceware.org>

https://gcc.gnu.org/g:2b5e55eea69acbc6e46fa3463164e62bcc436e0d

commit r17-486-g2b5e55eea69acbc6e46fa3463164e62bcc436e0d
Author: ?lvaro Begu? <alvaro.begue@gmail.com>
Date:   Tue May 12 14:55:01 2026 +0200

    libstdc++: Support ON-format DAY in Zone UNTIL field [PR124852]
    
    The Zone-line UNTIL parser only accepted a plain day-of-month integer
    for the DAY field, while the tzdata.zi grammar accepts the same ON-style
    forms as Rule lines: lastSun, Sun>=8, Sat<=20, etc. Real zones use these
    forms in their UNTIL DAY: Europe/Simferopol's `3 - MSK 1997 Mar lastSu
    1u`, for instance, became `Mar 1` (silently misparsed) instead of `Mar
    30`, leaving Simferopol an extra 29 days in MSK.
    
    The previous parser's `int d = 1; in >> m >> d >> t;` chain silently
    left d == 1 when the day token wasn't a digit, then went on to parse the
    remainder as the TIME field.
    
    Renames on_day to on_month_day, and factor out the day-component parser
    parser from operator>>(istream&, on_day&) as operator>> for newly added
    on_day_t tag type, and reuse it for the UNTIL DAY field. The operator
    handles all three on_day forms (DayOfMonth, LastWeekday, LessEq /
    GreaterEq).  The MONTH-only and YEAR-only short forms are still accepted
    because the DAY/TIME fields are optional and default to day 1, time 00:00.
    The on_day struct's pin() method handles the year/month-relative
    resolution.
    
    The DAY field is unambiguously distinguishable from a TIME field that
    could otherwise follow the MONTH directly: per zic's grammar, MONTH
    must be followed by DAY before any TIME is allowed.  So we always
    attempt to parse a DAY if any non-whitespace remains after the MONTH.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Co-authored-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Signed-off-by: ?lvaro Begu? <alvaro.begue@gmail.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc                     |  76 ++++---
 .../testsuite/std/time/time_zone/until_day_on.cc   | 222 +++++++++++++++++++++
 2 files changed, 272 insertions(+), 26 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 886d7e71d8eb..f9238542274b 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -218,7 +218,7 @@ namespace std::chrono
   constinit atomic<tzdb_list::_Node*> tzdb_list::_Node::_S_head_cache{nullptr};
 #endif
 
-  // The data structures defined in this file (Rule, on_day, at_time etc.)
+  // The data structures defined in this file (Rule, on_month_day, at_time etc.)
   // are used to represent the information parsed from the tzdata.zi file
   // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES
 
@@ -307,7 +307,7 @@ namespace std::chrono
     };
 
     // The IN and ON fields of a RULE record, e.g. "March lastSunday".
-    struct on_day
+    struct on_month_day
     {
       using rep = uint_least16_t;
       // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday,
@@ -371,7 +371,15 @@ namespace std::chrono
 	return ymd;
       }
 
-      friend istream& operator>>(istream&, on_day&);
+      struct on_day_t // tag type for reading ON and DAY fields only
+      {
+	on_month_day& parent;
+	friend istream& operator>>(istream&, on_day_t&&);
+      };
+
+      on_day_t on_day() { return on_day_t{*this}; }
+
+      friend istream& operator>>(istream&, on_month_day&);
     };
 
     // Wrapper for two chrono::year values, which reads the FROM and TO
@@ -594,9 +602,9 @@ namespace std::chrono
     // A RULE record from the tzdata.zi timezone info file.
     struct Rule
     {
-      // This allows on_day to reuse padding of at_time.
+      // This allows on_month_day to reuse padding of at_time.
       // This keeps the size to 8 bytes and the alignment to 4 bytes.
-      struct datetime : at_time { on_day day; };
+      struct datetime : at_time { on_month_day day; };
 
       // TODO combining name+letters into a single string (like in ZoneInfo)
       // would save sizeof(string) and make Rule fit in a single cacheline.
@@ -658,17 +666,17 @@ namespace std::chrono
 	    << ' ' << r.when.day.get_month() << ' ';
 	switch (r.when.day.kind)
 	{
-	case on_day::DayOfMonth:
+	case on_month_day::DayOfMonth:
 	  out << (unsigned)r.when.day.get_day();
 	  break;
-	case on_day::LastWeekday:
+	case on_month_day::LastWeekday:
 	  out << "last" << weekday(r.when.day.day_of_week);
 	  break;
-	case on_day::LessEq:
+	case on_month_day::LessEq:
 	  out << weekday(r.when.day.day_of_week) << " <= "
 	    << r.when.day.day_of_month;
 	  break;
-	case on_day::GreaterEq:
+	case on_month_day::GreaterEq:
 	  out << weekday(r.when.day.day_of_week) << " >= "
 	    << r.when.day.day_of_month;
 	  break;
@@ -2326,22 +2334,25 @@ namespace
       }
     };
 
-    istream& operator>>(istream& in, on_day& to)
+    // Read the day-component of an on_month_day expression (everything after
+    // the month).  Three forms are accepted: a plain day-of-month number,
+    // "lastXxx" where Xxx is a weekday name (LastWeekday), or "Xxx<=N" or
+    // "Xxx>=N" (LessEq / GreaterEq).  On failure the function sets failbit
+    // and leaves `to.parent` unchanged.
+    istream& operator>>(istream& in, on_month_day::on_day_t&& to)
     {
-      on_day on{};
-      abbrev_month m{};
-      in >> m;
-      on.month = static_cast<unsigned>(m.m);
+      using enum on_month_day::Kind;
+
+      on_month_day& on = to.parent;
       int c = ws(in).peek();
       if ('0' <= c && c <= '9')
 	{
-	  on.kind = on_day::DayOfMonth;
 	  unsigned d;
 	  in >> d;
 	  if (d <= 31) [[likely]]
 	    {
+	      on.kind = DayOfMonth;
 	      on.day_of_month = d;
-	      to = on;
 	      return in;
 	    }
 	}
@@ -2350,9 +2361,8 @@ namespace
 	  in.ignore(4);
 	  if (abbrev_weekday w{}; in >> w) [[likely]]
 	    {
-	      on.kind = on_day::LastWeekday;
+	      on.kind = LastWeekday;
 	      on.day_of_week = w.wd.c_encoding();
-	      to = on;
 	      return in;
 	    }
 	}
@@ -2364,14 +2374,13 @@ namespace
 	    {
 	      if (in.get() == '=')
 		{
-		  on.kind = c == '<' ? on_day::LessEq : on_day::GreaterEq;
-		  on.day_of_week = w.wd.c_encoding();
 		  unsigned d;
 		  in >> d;
 		  if (d <= 31) [[likely]]
 		    {
+		      on.kind = c == '<' ? LessEq : GreaterEq;
+		      on.day_of_week = w.wd.c_encoding();
 		      on.day_of_month = d;
-		      to = on;
 		      return in;
 		    }
 		}
@@ -2381,6 +2390,17 @@ namespace
       return in;
     }
 
+    istream& operator>>(istream& in, on_month_day& to)
+    {
+      on_month_day md{};
+      abbrev_month m{};
+      in >> m;
+      md.month = static_cast<unsigned>(m.m);
+      if (in >> md.on_day())
+	to = md;
+      return in;
+    }
+
     istream& operator>>(istream& in, at_time& at)
     {
       int sign = 1;
@@ -2483,12 +2503,16 @@ namespace
       in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent.
       if (int y = int(year::max()); in >> y)
 	{
-	  abbrev_month m{January};
-	  int d = 1;
+	  on_month_day on{ .kind = on_month_day::DayOfMonth,
+			   .month = 1, .day_of_month = 1 };
 	  at_time t{};
-	  // XXX DAY should support ON format, e.g. lastSun or Sun>=8
-	  in >> m >> d >> t;
-	  inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
+	  if (abbrev_month m{January}; in >> m)
+	    {
+	      on.month = static_cast<unsigned>(m.m);
+	      in >> on.on_day() >> t;
+	    }
+	  year_month_day ymd = on.pin(year(y));
+	  inf.m_until = sys_days(ymd) + seconds(t.time);
 	  if (t.indicator != at_time::Universal)
 	    { // UNTIL uses "the rules in effect just before the transition"
 	      // adjust by STDOFF
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc b/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
new file mode 100644
index 000000000000..38e4bc254cc1
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
@@ -0,0 +1,222 @@
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target tzdb }
+// { dg-require-effective-target cxx11_abi }
+// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+
+// The DAY portion of a Zone line's UNTIL field accepts not only a
+// numeric day-of-month but also "lastXxx" (last weekday in the month)
+// and "Xxx<=N" / "Xxx>=N" forms, just like the ON field of a Rule line.
+//
+// Real-world example: Europe/Simferopol has
+//   3 - MSK 1997 Mar lastSu 1u
+// which places the boundary on 1997-03-30 (the last Sunday of March).
+
+#include <chrono>
+#include <fstream>
+#include <testsuite_hooks.h>
+
+static bool override_used = false;
+
+namespace __gnu_cxx
+{
+  const char* zoneinfo_dir_override() {
+    override_used = true;
+    return "./";
+  }
+}
+
+void
+test_lastsu()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test_lastsu
+Z Test/LastSu 3 - MSK 1997 Mar lastSu 1u
+              3 - X
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_lastsu" );
+
+  auto* tz = locate_zone("Test/LastSu");
+
+  // True boundary: 1997-03-30 01:00 UTC (lastSu of March 1997 is Mar 30,
+  // and the indicator is 'u' = Universal so no offset adjustment).
+  sys_seconds boundary = sys_days{1997y/March/30} + 1h;
+
+  // Just before: still in the MSK line.
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "MSK" );
+  VERIFY( before.offset == 3h );
+
+  // At/after the boundary: in the X line.
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "X" );
+
+  // Check that the lastSu day is parsed correctly, and not defaulted
+  // to the 1st: a March 15 query must still be in the MSK line.
+  auto mid_march = tz->get_info(sys_days{1997y/March/15});
+  VERIFY( mid_march.abbrev == "MSK" );
+  VERIFY( mid_march.offset == 3h );
+}
+
+void
+test_sun_ge_n()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test_sun_ge_n
+Z Test/SunGE 0 - A 1990 Jun Sun>=8 0u
+             0 - B
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_sun_ge_n" );
+
+  auto* tz = locate_zone("Test/SunGE");
+
+  // First Sunday >= June 8 1990 = June 10 (June 8 1990 was a Friday).
+  sys_seconds boundary = sys_days{1990y/June/10};
+
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "A" );
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "B" );
+
+  // Check that Sun>=8 is parsed correctly, and not defaulted to the 1st.
+  auto early = tz->get_info(sys_days{1990y/June/1});
+  VERIFY( early.abbrev == "A" );
+}
+
+void
+test_sun_le_n()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test_sun_le_n
+Z Test/SunLE 0 - A 1990 Jun Sun<=15 0u
+             0 - B
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_sun_le_n" );
+
+  auto* tz = locate_zone("Test/SunLE");
+
+  // Last Sunday <= June 15 1990 = June 10.
+  sys_seconds boundary = sys_days{1990y/June/10};
+
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "A" );
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "B" );
+}
+
+void
+test_year_only()
+{
+  using namespace std::chrono;
+
+  // MONTH, DAY and TIME default to January 1st 00:00 if not specified.
+  std::ofstream("tzdata.zi") << R"(# version test_year_only
+Z Test/YearOnly 0 - A 1990
+                0 - B
+Z Test/YearOnlyC 4 - C 1995 # comment
+                 4 - D
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_year_only" );
+
+  auto* tz = locate_zone("Test/YearOnly");
+  sys_seconds boundary = sys_days{1990y/January/1};
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "A" );
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "B" );
+
+  tz = locate_zone("Test/YearOnlyC");
+  boundary = sys_days{1995y/January/1} - 4h;
+  before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "C" );
+  at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "D" );
+}
+
+void
+test_year_month_only()
+{
+  using namespace std::chrono;
+
+  // DAY and TIME default to the 1st 00:00 if not specified.
+  std::ofstream("tzdata.zi") << R"(# version test_year_month_only
+Z Test/YearMonth 0 - A 1990 Jul
+                 0 - B
+Z Test/YearMonthC 3 - C 1995 Apr # comment
+                  3 - D
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_year_month_only" );
+
+  auto* tz = locate_zone("Test/YearMonth");
+  sys_seconds boundary = sys_days{1990y/July/1};
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "A" );
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "B" );
+
+  tz = locate_zone("Test/YearMonthC");
+  boundary = sys_days{1995y/April/1} - 3h;
+  before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "C" );
+  at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "D" );
+}
+
+void
+test_year_month_day_only()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test_day_only
+Z Test/DayOnly 0 - A 1997 Mar 12
+               0 - B
+Z Test/DayOnlyC 5 - C 1998 Jun 14 # comment
+                5 - D
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test_day_only" );
+
+  auto* tz = locate_zone("Test/DayOnly");
+  sys_seconds boundary = sys_days{1997y/March/12};
+  auto before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "A" );
+  auto at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "B" );
+
+  tz = locate_zone("Test/DayOnlyC");
+  boundary = sys_days{1998y/June/14} - 5h;
+  before = tz->get_info(boundary - 1s);
+  VERIFY( before.abbrev == "C" );
+  at = tz->get_info(boundary);
+  VERIFY( at.abbrev == "D" );
+}
+
+int
+main()
+{
+  test_lastsu();
+  test_sun_ge_n();
+  test_sun_le_n();
+  test_year_only();
+  test_year_month_only();
+  test_year_month_day_only();
+}

From tkaminsk@gcc.gnu.org  Wed May 13 13:00:36 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 13 May 2026 13:00:36 +0000 (GMT)
Subject: [gcc r17-496] libstdc++: Test for unsupported engine range for
 128bits floating points [PR119739]
Message-ID: <20260513130036.2128B4BB5935@sourceware.org>

https://gcc.gnu.org/g:da540dc6d7634a708768008d23b3cee9110a7121

commit r17-496-gda540dc6d7634a708768008d23b3cee9110a7121
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed May 13 14:51:02 2026 +0200

    libstdc++: Test for unsupported engine range for 128bits floating points [PR119739]
    
    This patch add test illustrating, that after implementing P0952 "A new specification for
    std::generate_canonical",  generators, that emit range of non-power-of-two size, that
    span over B bits, are not supported in combination with 128bits integer are not
    support for B in ranges: [22, 23), [26, 29), [33, 38), [43, 57). This is because, the
    lowest multiply of B that is larger of equal than 113 (size of mantisa of float128)
    is greater than 128, and thus they will require 256 bits integers support.
    
    This does not impact any generate defined in standard (see gencanon_eng.cc tests),
    nor generate emitting power of 2 sized ranges.
    
            PR libstdc++/119739
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc:
            New test.
    
    Reviewed-by: Nathan Myers <nmyers@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../operators/gencanon_eng_neg.cc                  | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc
new file mode 100644
index 000000000000..8b241fee7edf
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc
@@ -0,0 +1,89 @@
+// { dg-do compile { target { c++11 } } }
+
+#include <random>
+#include <cstdint>
+
+template<std::uint64_t Max, typename Under = std::mt19937_64>
+struct trimmed_engine
+{
+  using result_type = std::uint64_t;
+
+  static constexpr
+  result_type min()
+  { return result_type(0); }
+
+  static constexpr
+  result_type max()
+  { return result_type(Max); }
+
+  trimmed_engine() : dist(min(), max())
+  {}
+
+  result_type operator()()
+  { return dist(under); }
+
+private:
+  Under under;
+  std::uniform_int_distribution<result_type> dist;
+};
+
+template<typename Real, size_t Bits>
+void
+test_non_pow2()
+{
+  trimmed_engine<(std::uint64_t(1) << Bits) - 2> non_pow2_engine;
+  (void)std::generate_canonical<Real, -1u>(non_pow2_engine);
+}
+
+template<typename Real, size_t Bits>
+void
+test_pow2()
+{
+  trimmed_engine<(std::uint64_t(1) << Bits) - 1> pow2_engine;
+  (void)std::generate_canonical<Real, -1u>(pow2_engine);
+}
+
+int main()
+{
+// For 128bit floating points, generator emitting a range, which size is 
+// not power of two, but of width of B bits, such that for any N:
+// N * B < 113 (bits in ieee128)
+// (N+1) * B > 128
+// are not supported, as they would require integer with more than 127 bits.
+#ifndef _GLIBCXX_GENERATE_CANONICAL_STRICT
+#  ifdef __SIZEOF_FLOAT128__
+  // N == 3: B in [43, 57)
+  test_non_pow2<__float128, 42>(); // 3 calls
+  test_non_pow2<__float128, 43>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 56>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 57>(); // 2 calls
+  test_pow2<__float128, 43>();
+  test_pow2<__float128, 56>();
+
+  // N == 4: B in [33, 38)
+  test_non_pow2<__float128, 32>(); // 4 calls
+  test_non_pow2<__float128, 33>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 37>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 38>(); // 3 calls
+  test_pow2<__float128, 33>();
+  test_pow2<__float128, 37>();
+
+  // N == 5: B in [26, 29)
+  test_non_pow2<__float128, 25>(); // 5 calls
+  test_non_pow2<__float128, 26>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 28>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 29>(); // 4 calls
+  test_pow2<__float128, 26>();
+  test_pow2<__float128, 28>();
+
+  // N == 6: B == 22
+  test_non_pow2<__float128, 21>(); // 6 calls
+  test_non_pow2<__float128, 22>(); // { dg-error "from here" }
+  test_non_pow2<__float128, 23>(); // 5 calls
+  test_pow2<__float128, 22>();
+#  endif
+#endif 
+}
+
+// { dg-prune-output "no type named 'type' in 'struct std::__detail::_Select_uint_least_t" }
+// { dg-prune-output "static assertion failed: sorry, would be too much trouble for a slow result" }

From tkaminsk@gcc.gnu.org  Wed May 13 14:09:28 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 13 May 2026 14:09:28 +0000 (GMT)
Subject: [gcc r17-499] libstdc++: Use type_identity_t for operator<=>
 parameter [PR114400]
Message-ID: <20260513140928.561724BBC092@sourceware.org>

https://gcc.gnu.org/g:bbcc9da1f026b202c692e0b47eeacd28e0c69c0d

commit r17-499-gbbcc9da1f026b202c692e0b47eeacd28e0c69c0d
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed May 13 11:51:25 2026 +0200

    libstdc++: Use type_identity_t for operator<=> parameter [PR114400]
    
    This matches change to operator== from r14-9642-gf4605c53ea2eeaf,
    and implements exact resolution of LWG3950, "std::basic_string_view comparison
    operators are overspecified". The difference between __type_identity and
    type_identity is observable as illustrated by PR.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/114400
            * include/std/string_view (operator<=>): Use type_identity_t
            instead of __type_identity_t.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/string_view | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index 735d46f2de7f..efbf432f1129 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -621,6 +621,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // type (see N3766).
 
 #if __cpp_lib_three_way_comparison
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 3950. std::basic_string_view comparison operators are overspecified 
+
   template<typename _CharT, typename _Traits>
     [[nodiscard]]
     constexpr bool
@@ -633,7 +636,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     [[nodiscard]]
     constexpr auto
     operator<=>(basic_string_view<_CharT, _Traits> __x,
-		__type_identity_t<basic_string_view<_CharT, _Traits>> __y)
+		type_identity_t<basic_string_view<_CharT, _Traits>> __y)
     noexcept
     -> decltype(__detail::__char_traits_cmp_cat<_Traits>(0))
     { return __detail::__char_traits_cmp_cat<_Traits>(__x.compare(__y)); }

From aoliva@gcc.gnu.org  Wed May 13 16:38:56 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 13 May 2026 16:38:56 +0000 (GMT)
Subject: [gcc r17-501] libstdc++: rebuild configure
Message-ID: <20260513163856.1A7084BABF17@sourceware.org>

https://gcc.gnu.org/g:502d5813d8301e67445992c58ff0e3e9b5335a9f

commit r17-501-g502d5813d8301e67445992c58ff0e3e9b5335a9f
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed May 13 12:50:34 2026 -0300

    libstdc++: rebuild configure
    
    An earlier configury patch made originally in gcc-15, where no line
    number changes came up during configure rebuild, needed an explicit
    rebuild after porting to trunk.
    
    
    for  libstdc++-v3/ChangeLog
    
            * configure: Rebuild.

Diff:
---
 libstdc++-v3/configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6e5e424b9dbb..b51694ecdfbe 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -54147,7 +54147,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54148 "configure"
+#line 54150 "configure"
 #include <stddef.h>
 int main()
 {

From redi@gcc.gnu.org  Wed May 13 20:00:05 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 13 May 2026 20:00:05 +0000 (GMT)
Subject: [gcc r17-502] libstdc++: Fix -Wsign-compare warning in new test
Message-ID: <20260513200005.B3CF94BB8F56@sourceware.org>

https://gcc.gnu.org/g:754da29afd63cd079ee0921fab346bc212dd0fe7

commit r17-502-g754da29afd63cd079ee0921fab346bc212dd0fe7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 12 17:14:26 2026 +0100

    libstdc++: Fix -Wsign-compare warning in new test
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/time/clock/utc/leap_second_info-2.cc: Fix sign
            compare warning. Tweak comment.

Diff:
---
 libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc b/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
index 090a28291c85..59634b34944f 100644
--- a/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
@@ -52,7 +52,7 @@ test_future_leaps()
   std::ofstream("leapseconds") << "";
 
   using std::chrono::years;
-  auto s = std::chrono::utc_seconds(1483228826s + years(100)); // 1 Jan 2117
+  auto s = std::chrono::utc_seconds(1483228826s + years(100)); // 2117
   auto lsi = get_leap_second_info(s);
   VERIFY( override_used ); // If this fails then XFAIL for the target.
   VERIFY( lsi.is_leap_second == false );
@@ -91,7 +91,7 @@ Leap	2120	Dec	30	23:59:59	-	S
   // The file was not read again:
   VERIFY( ! override_used );
   // The list in the tzdb contains the three fake leap seconds:
-  VERIFY( tzdb.leap_seconds.size() == hardcoded_count.count() + 3 );
+  VERIFY( tzdb.leap_seconds.size() == size_t(hardcoded_count.count() + 3) );
   // And repeating the queries above gives the same results:
   lsi = get_leap_second_info(s);
   VERIFY( lsi.is_leap_second == false );

From redi@gcc.gnu.org  Wed May 13 20:00:10 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 13 May 2026 20:00:10 +0000 (GMT)
Subject: [gcc r17-503] libstdc++: Add call to test_format in
 std/time/clock/local/io.cc
Message-ID: <20260513200010.D9F2D4BBC0E2@sourceware.org>

https://gcc.gnu.org/g:534c08d174fa080902d5e30db0011bed52a24ac3

commit r17-503-g534c08d174fa080902d5e30db0011bed52a24ac3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 13 20:48:42 2026 +0100

    libstdc++: Add call to test_format in std/time/clock/local/io.cc
    
    This function was defined but not being called at runtime.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/time/clock/local/io.cc: Call test_format.

Diff:
---
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index 6efd81a87c2a..9774f59fc38f 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -136,5 +136,6 @@ static_assert( ! ostream_insertable<std::chrono::local_time<D>> );
 int main()
 {
   test_ostream();
+  test_format();
   test_parse();
 }

From redi@gcc.gnu.org  Wed May 13 23:40:50 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 13 May 2026 23:40:50 +0000 (GMT)
Subject: [gcc r17-504] libstdc++: Remove trailing whitespace in
 shared_ptr_atomic.h
Message-ID: <20260513234050.6CD334BA7993@sourceware.org>

https://gcc.gnu.org/g:84b23054f18ccde71eec9eba9a201eff2033b503

commit r17-504-g84b23054f18ccde71eec9eba9a201eff2033b503
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 14 00:39:43 2026 +0100

    libstdc++: Remove trailing whitespace in shared_ptr_atomic.h
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/shared_ptr_atomic.h: Remove trailing whitespace.

Diff:
---
 libstdc++-v3/include/bits/shared_ptr_atomic.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/shared_ptr_atomic.h b/libstdc++-v3/include/bits/shared_ptr_atomic.h
index cfd821a00646..b8c9427d9ec0 100644
--- a/libstdc++-v3/include/bits/shared_ptr_atomic.h
+++ b/libstdc++-v3/include/bits/shared_ptr_atomic.h
@@ -501,7 +501,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  auto __old_ptr = __ptr;
 	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
-	  uintptr_t __old_pi 
+	  uintptr_t __old_pi
 	    = _AtomicRef(&_M_val).fetch_sub(1, memory_order_relaxed) - 1u;
 	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);

From gccadmin@gcc.gnu.org  Thu May 14 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 14 May 2026 00:16:55 +0000 (GMT)
Subject: [gcc r17-505] Daily bump.
Message-ID: <20260514001655.D85084BBC0D5@sourceware.org>

https://gcc.gnu.org/g:3df799b13ebad69025f618fe6d373306210d6635

commit r17-505-g3df799b13ebad69025f618fe6d373306210d6635
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu May 14 00:16:27 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |  5 ++++
 gcc/ChangeLog           | 55 +++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/c/ChangeLog         |  7 +++++
 gcc/cp/ChangeLog        | 14 ++++++++++
 gcc/fortran/ChangeLog   |  5 ++++
 gcc/testsuite/ChangeLog | 73 +++++++++++++++++++++++++++++++++++++++++++++++++
 libgomp/ChangeLog       | 24 ++++++++++++++++
 libstdc++-v3/ChangeLog  | 55 +++++++++++++++++++++++++++++++++++++
 9 files changed, 239 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 2053dff5f351..c8486528c21b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+	(Contributing under the DCO): Add myself.
+
 2026-05-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
 
 	* MAINTAINERS: Update my email and add myself to the DCO
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f01bbd2d398..a1e1e96f9e5a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,58 @@
+2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	PR target/125215
+	* config/riscv/riscv-v.cc (expand_const_vector_interleaved_stepped_npatterns):
+	Remove hi/lo optimization and always use the merge fallback.
+
+2026-05-13  Tamar Christina  <tamar.christina@arm.com>
+
+	* tree-chrec.cc (chrec_convert_1): Fold unsigned CHREC converts.
+
+2026-05-13  Roger Sayle  <roger@nextmovesoftware.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/32803
+	* config/i386/i386.md (peephole2): Don't transform xorl;movb into
+	movzb with -Oz.
+	(peephole2): Convert movl into xorl;movb (strict_low_part) with -Oz.
+	(peephole2): Likewise, convert movl into xorl;movb [abcd]h with -Oz.
+
+2026-05-13  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.cc (vectorizable_store): Record ls_type
+	for VMAT_STRIDED_SLP.
+	(vectorizable_load): Likewise.
+
+2026-05-13  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-stmts.cc (vectorizable_store): Set slp_node->data
+	and SLP_TREE_TYPE only on success.
+	(vectorizable_load): Likewise.  Move one validity check early.
+
+2026-05-13  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	PR target/122665
+	* config/rs6000/vsx.md (smul<mode>3_highpart, umul<mode>3_highpart):
+	Replace shift-based patterns with smul_highpart and umul_highpart RTL
+	codes and use altivec_register_operand.
+
+2026-05-13  Reshma Roy  <Reshma.Roy@amd.com>
+
+	* match.pd: Add new popcount pattern variants from Hacker's Delight.
+
+2026-05-13  H.J. Lu  <hjl.tools@gmail.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/120870
+	* config/i386/i386.cc (ix86_save_reg): Return true for DRAP
+	register early at entry.
+	(find_drap_reg): Use R11_REG in preserve_none functions in
+	64-bit mode.
+
+2026-05-13  Tobias Burnus  <tburnus@baylibre.com>
+
+	* omp-general.cc (omp_runtime_api_procname): Add omp_control_tool.
+
 2026-05-12  Heiko Ei?feldt  <heiko.Eissfeldt@hexco.de>
 
 	PR middle-end/124651
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 32bcf444be08..a3ba0f50cb32 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260513
+20260514
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 16d99dd4ed88..29e34c4c5954 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-13  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125261
+	* c-parser.cc (c_parser_generic_selection): Modify logic for
+	c_inhibit_evaluation_warnings.
+	* c-typeck.cc (build_c_cast): Use c_inhibit_evaluation_warnings.
+
 2026-05-06  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/124985
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a7a9cc92c984..7f1b4c443bae 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,17 @@
+2026-05-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125280
+	* reflect.cc (consteval_only_p): Don't complete_type.
+	(consteval_only_p_walker::walk): Return false for
+	error_mark_node.
+
+2026-05-13  chzn@mail.ustc.edu.cn  <chzn@mail.ustc.edu.cn>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123609
+	* parser.cc (cp_parser_class_head): Re-parse attributes
+	that caused a tentative parsing failure.
+
 2026-05-12  Jason Merrill  <jason@redhat.com>
 
 	PR c++/100903
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5a16ff8130db..1eb00d6bfc3e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-13  Tobias Burnus  <tburnus@baylibre.com>
+
+	* intrinsic.texi (OpenMP Modules): Add named parameters for
+	omp_control_tool and omp_control_tool_result.
+
 2026-05-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	* lang.opt (fcoarray=): Add shared enum value; update help text.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8d6088cb5821..48d5313bc37a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,76 @@
+2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	PR target/125215
+	* gcc.target/riscv/rvv/autovec/pr125215.c: New test.
+	* gcc.target/riscv/rvv/autovec/slp-interleave-1.c: Remove.
+	* gcc.target/riscv/rvv/autovec/slp-interleave-2.c: Remove.
+	* gcc.target/riscv/rvv/autovec/slp-interleave-3.c: Remove.
+	* gcc.target/riscv/rvv/autovec/slp-interleave-4.c: Remove.
+	* gcc.target/riscv/rvv/autovec/slp-interleave-5.c: Remove.
+
+2026-05-13  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125280
+	* g++.dg/reflect/init19.C: New test.
+	* g++.dg/reflect/type12.C: New test.
+	* g++.dg/reflect/type13.C: New test.
+
+2026-05-13  Tamar Christina  <tamar.christina@arm.com>
+
+	* gcc.dg/vect/vect-scev-affine_1.c: New test.
+
+2026-05-13  Roger Sayle  <roger@nextmovesoftware.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/32803
+	* gcc.target/i386/pr32803-2.c: New test case.
+	* gcc.target/i386/pr32803-3.c: Likewise.
+
+2026-05-13  Roger Sayle  <roger@nextmovesoftware.com>
+	    Richard Earnshaw  <rearnsha@arm.com>
+
+	PR middle-end/122871
+	* gcc.target/arm/muldi-1.c: Skip test if compiled with -mthumb.
+
+2026-05-13  Reshma Roy  <Reshma.Roy@amd.com>
+
+	* gcc.dg/tree-ssa/popcount7.c: New test.
+	* gcc.dg/tree-ssa/popcount7_2.c: New test.
+	* gcc.dg/tree-ssa/popcount8.c: New test.
+	* gcc.dg/tree-ssa/popcount9.c: New test.
+
+2026-05-13  H.J. Lu  <hjl.tools@gmail.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/120870
+	* gcc.target/i386/pr120870-1.c: New test.
+	* gcc.target/i386/pr120870-2.c: Likewise.
+
+2026-05-13  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125261
+	* gcc.dg/pr125261.c: New test.
+
+2026-05-13  chzn@mail.ustc.edu.cn  <chzn@mail.ustc.edu.cn>
+	    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123609
+	* g++.dg/cpp0x/attr-nodiscard1.C: Adjust expected errors.
+	* g++.dg/reflect/annotations19.C: New test.
+
+2026-05-13  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* gcc.dg/pr123286.c: Move to...
+	* gcc.target/aarch64/pr123286.c: ...here.
+
+2026-05-13  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR libfortran/125005
+	* gfortran.dg/coarray/failed_images_2.f08,
+	gfortran.dg/coarray/image_status_2.f08,
+	gfortran.dg/coarray/stopped_images_2.f08: Require sleep effective
+	target.
+
 2026-05-12  Robert Dubner  <rdubner@symas.com>
 
 	* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob:
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 877606b7f685..e5f93ebf5d66 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-13  H.J. Lu  <hjl.tools@gmail.com>
+
+	* libgomp.texi: the Add missing closing brace.
+
+2026-05-13  Tobias Burnus  <tburnus@baylibre.com>
+
+	* env.c (omp_control_tool): Stub implementation for omp_control_tool.
+	* fortran.c (omp_control_tool_, omp_control_tool_8_): Add.
+	* libgomp.map (OMP_6.0): Add for omp_control_tool*.
+	* libgomp.texi (Tool Control Routine): Add for omp_control_tool.
+	(OpenMP 6.0): Mark omp_pause_stop_tool as implemented.
+	* omp.h.in (omp_pause_resource_t): Add omp_pause_stop_tool.
+	(omp_control_tool_result_t): Add.
+	(omp_control_tool_t): Add.
+	* omp_lib.f90.in (omp_lib_kinds): Add omp_pause_stop_tool and
+	omp_control_tool/omp_control_tool_result parameters.
+	(omp_lib): Add omp_control_tool interface.
+	* omp_lib.h.in: Add omp_pause_stop_tool and
+	omp_control_tool/omp_control_tool_result parameters; add
+	omp_control_tool interface.
+	* testsuite/libgomp.c/omp-control-tools-1.c: New test.
+	* testsuite/libgomp.fortran/omp-control-tools-1.f: New test.
+	* testsuite/libgomp.fortran/omp-control-tools-1.f90: New test.
+
 2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* Makefile.in: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 70556acae181..edda0cf9a794 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,58 @@
+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>

From tkaminsk@gcc.gnu.org  Thu May 14 09:30:04 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 14 May 2026 09:30:04 +0000 (GMT)
Subject: [gcc r17-507] libstdc++: Mark gencanon_eng_neg test as unsupported if
 __float128 is not available.
Message-ID: <20260514093004.8EF294B1A2B3@sourceware.org>

https://gcc.gnu.org/g:5d17eec7d83445ba4f960c81c386be33baee52a4

commit r17-507-g5d17eec7d83445ba4f960c81c386be33baee52a4
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 14 09:46:14 2026 +0200

    libstdc++: Mark gencanon_eng_neg test as unsupported if __float128 is not available.
    
    As DejaGnu reads all lines, the { dg-error } still expected error,
    even if the code was removed by preprocessor checks.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc:
            Removed preprocessor checks, add dg-require-effective-target.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../operators/gencanon_eng_neg.cc                      | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc
index 8b241fee7edf..e3b4540bf2b6 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon_eng_neg.cc
@@ -1,4 +1,7 @@
 // { dg-do compile { target { c++11 } } }
+// { dg-require-effective-target __float128 }
+// { dg-require-effective-target base_quadfloat_support }
+// { dg-add-options __float128 }
 
 #include <random>
 #include <cstdint>
@@ -45,13 +48,12 @@ test_pow2()
 
 int main()
 {
-// For 128bit floating points, generator emitting a range, which size is 
-// not power of two, but of width of B bits, such that for any N:
-// N * B < 113 (bits in ieee128)
-// (N+1) * B > 128
-// are not supported, as they would require integer with more than 127 bits.
-#ifndef _GLIBCXX_GENERATE_CANONICAL_STRICT
-#  ifdef __SIZEOF_FLOAT128__
+  // For 128bit floating points, generator emitting a range, which size is 
+  // not power of two, but of width of B bits, such that for any N:
+  // N * B < 113 (bits in ieee128)
+  // (N+1) * B > 128
+  // are not supported, as they would require integer with more than 127 bits.
+
   // N == 3: B in [43, 57)
   test_non_pow2<__float128, 42>(); // 3 calls
   test_non_pow2<__float128, 43>(); // { dg-error "from here" }
@@ -81,8 +83,6 @@ int main()
   test_non_pow2<__float128, 22>(); // { dg-error "from here" }
   test_non_pow2<__float128, 23>(); // 5 calls
   test_pow2<__float128, 22>();
-#  endif
-#endif 
 }
 
 // { dg-prune-output "no type named 'type' in 'struct std::__detail::_Select_uint_least_t" }

From redi@gcc.gnu.org  Thu May 14 09:35:41 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:35:41 +0000 (GMT)
Subject: [gcc r15-11157] libstdc++: Fix time zone transitions for Rule changes
 during DST [PR116110]
Message-ID: <20260514093541.819CA4BBC0E1@sourceware.org>

https://gcc.gnu.org/g:66fbafb77551bcb01abd28c5c59f73fa576be0f6

commit r15-11157-g66fbafb77551bcb01abd28c5c59f73fa576be0f6
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Mar 14 10:32:11 2026 +0000

    libstdc++: Fix time zone transitions for Rule changes during DST [PR116110]
    
    The Australia/Broken_Hill example in PR libstdc++/116110 demonstrates a
    bug in the time zone code. The current code gives incorrect results when
    a zone changes from one named Rule to another during DST, e.g. the
    Broken_Hill time zone uses:
    
      9:30    AN    AC%sT  2000
      9:30    AS    AC%sT
    
    So the AS Rules take effect on 2000 Jan 1 which is during DST (which
    runs from October to March).
    
    The fix for this is to update info.offset and info.save when we find an
    active rule, instead of only updating the 'letters' variable.
    
    The new tests for Pacific/Kiritimati and Pacific/Apia have some FIXME
    comments. The UNTIL times of the zone changes are incorrectly
    interpreted as UTC not wall time (due to the main topic of Bug 116110),
    and the "24" time for the Pacific/Apia zone is incorrectly ignored so
    that the change happens 24h too early (due to Bug 124513). Those tests
    will need to be adjusted later when the bugs are fixed.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 663e5ade184813a8a5f6f76b873c3e212c1e8e75)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc                     |  6 +-
 .../testsuite/std/time/time_zone/116110.cc         | 85 ++++++++++++++++++++++
 2 files changed, 90 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index e92590079f75..5c54606a9761 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -909,7 +909,11 @@ namespace std::chrono
 	  }
 
 	if (active_rule)
-	  letters = active_rule->letters;
+	  {
+	    info.offset = ri.offset() + active_rule->save;
+	    info.save = chrono::duration_cast<minutes>(active_rule->save);
+	    letters = active_rule->letters;
+	  }
 	else if (first_std)
 	  letters = first_std->letters;
       }
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/116110.cc b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
new file mode 100644
index 000000000000..d86011cf5739
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
@@ -0,0 +1,85 @@
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target tzdb }
+// { dg-require-effective-target cxx11_abi }
+
+#include <chrono>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono;
+
+void
+test_broken_hill()
+{
+  /*
+  R AN 1996 2005 - Mar lastSun 2s 0 S
+  R AN 2000 o    - Aug lastSun 2s 1 D
+  Z Australia/Broken_Hill 9:25:48 -  LMT  1895 Feb
+                          10      -  AEST 1896 Aug 23
+                          9       -  ACST 1899 May
+                          9:30    AU AC%sT 1971
+                          9:30    AN AC%sT 2000
+                          9:30    AS AC%sT
+  */
+  auto* tz = locate_zone("Australia/Broken_Hill");
+  auto info = tz->get_info(sys_days(2000y/February/29d) + 23h + 23min + 23s);
+  VERIFY( info.offset == 630min );
+  VERIFY( info.save == 60min );
+  VERIFY( info.abbrev == "ACDT" );
+}
+
+void
+test_kiritimati()
+{
+  /* No named rules involved here, just change of fixed STDOFF at 1994-12-31:
+  Z Pacific/Kiritimati -10:29:20 - LMT 1901
+                       -10:40    - %z  1979 Oct
+                       -10       - %z  1994 Dec 31
+                        14       - %z
+  */
+  auto* tz = locate_zone("Pacific/Kiritimati");
+  local_seconds t = local_days(1994y/December/31);
+
+  sys_seconds ut(t.time_since_epoch() /* FIXME: should be + 10h */);
+  sys_info info;
+  info = tz->get_info(ut - 1s);
+  VERIFY( info.offset == -10h );
+  VERIFY( info.save == 0h );
+  VERIFY( info.abbrev == "-10" );
+  info = tz->get_info(ut);
+  VERIFY( info.offset == 14h );
+  VERIFY( info.save == 0h );
+  VERIFY( info.abbrev == "+14" );
+}
+
+void
+test_apia()
+{
+  /* Refers to same named rule before/after change at 2011-12-29 24:00
+     but the offset changed from -11h+1h to +13h+1h
+  Z Pacific/Apia 12:33:4  -  LMT 1892 Jul 5
+                -11:26:56 -  LMT 1911
+                -11:30    -  %z  1950
+                -11       WS %z  2011 Dec 29 24
+                 13       WS %z
+  */
+  auto* tz = locate_zone("Pacific/Apia");
+  local_seconds t = local_days(2011y/December/29) + 24h;
+
+  sys_seconds ut(t.time_since_epoch() /* FIXME: should be + 10h */ - 24h );
+  sys_info info;
+  info = tz->get_info(ut - 1s);
+  VERIFY( info.offset == (-11h + info.save) );
+  VERIFY( info.save == 1h );
+  VERIFY( info.abbrev == "-10" );
+  info = tz->get_info(ut);
+  VERIFY( info.offset == (13h + info.save) );
+  VERIFY( info.save == 1h );
+  VERIFY( info.abbrev == "+14" );
+}
+
+int main()
+{
+  test_broken_hill();
+  test_kiritimati();
+  test_apia();
+}

From redi@gcc.gnu.org  Thu May 14 09:35:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:35:52 +0000 (GMT)
Subject: [gcc r15-11158] libstdc++: Partial fix for interpretation of non-UTC
 UNTIL times in tzdata.zi [PR116110]
Message-ID: <20260514093552.1F0574B19703@sourceware.org>

https://gcc.gnu.org/g:e39c7121bc643ded1304ea73248390ee8ed5eac6

commit r15-11158-ge39c7121bc643ded1304ea73248390ee8ed5eac6
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Mar 16 21:48:30 2026 +0000

    libstdc++: Partial fix for interpretation of non-UTC UNTIL times in tzdata.zi [PR116110]
    
    This is a partial fix for PR 116110, so that zone changes that occur at
    a time specified as standard time will be parsed correctly. Previously
    all UNTIL times were assumed to be UTC, which is incorrect according to
    the spec. Only times with a 'u' suffix (or the equivalent 'g' or 'z')
    are UTC times. An 's' suffix means standard time (i.e. the zone's usual
    offset from UTC, without any DST adjustment) and a 'w' suffix (or no
    suffix) means wall time, so the offset and any DST adjustment. This
    commit fixes the handling of 's' suffixes, so that the ZoneInfo::m_until
    member is set correctly. It also fixes the handling of some UNTIL times
    using wall time, specifically those where the DST adjustment is known
    during parsing of the tzdata.zi file.
    
    This is not a complete fix, because as noted in PR 116110 a Zone line
    that refers to a named Rule and uses wall time cannot be determined
    while parsing tzdata.zi. We need to remember that the m_until member is
    not correct, and then adjust it later when we find the rule that applies
    at a given time point. That requires more work.
    
    Some existing tests need to be adjusted due to the fixes in this commit.
    The std/time/time_zone/get_info_sys.cc and std/time/zoned_time/1.cc
    tests are corrected to check that the changes happens at midnight local
    time, not midnight UTC as previously assumed.
    
    One of the FIXME comments in std/time/time_zone/116110.cc can be removed
    now, because the UNTIL time is correctly interpreted as midnight local
    time. The other FIXME needs to be changed to midnight at the local
    standard time, which is still wrong but we don't currently adjust it for
    the DST save time of one hour. It also still needs the incorrect +24h
    due to Bug 124513.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit cddf4111c4c4383f8d686ab822a9f3fc3ed6db44)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc                     | 15 +++++++++++----
 .../testsuite/std/time/time_zone/116110.cc         |  6 ++++--
 .../testsuite/std/time/time_zone/get_info_sys.cc   | 22 +++++++++++++---------
 libstdc++-v3/testsuite/std/time/zoned_time/1.cc    | 20 ++++++++++++--------
 4 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 5c54606a9761..367f056b12e1 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -2157,11 +2157,18 @@ namespace std::chrono
 	  at_time t{};
 	  // XXX DAY should support ON format, e.g. lastSun or Sun>=8
 	  in >> m >> d >> t;
-	  // XXX UNTIL field should be interpreted
-	  // "using the rules in effect just before the transition"
-	  // so might need to store as year_month_day and hh_mm_ss and only
-	  // convert to a sys_time once we know the offset in effect.
 	  inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
+	  if (t.indicator != at_time::Universal)
+	    { // UNTIL uses "the rules in effect just before the transition"
+	      // adjust by STDOFF
+	      inf.m_until -= seconds(inf.m_offset);
+	      if (t.indicator != at_time::Standard)
+		{
+		  if (inf.m_expanded) // Not a named Rule, SAVE is known now.
+		    inf.m_until -= inf.m_save;
+		  // else Named Rule, SAVE is unknown. FIXME: PR 116110
+		}
+	    }
 	}
       else
 	inf.m_until = sys_days(year::max()/December/31);
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/116110.cc b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
index d86011cf5739..0f3e09690e0e 100644
--- a/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
+++ b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
@@ -39,7 +39,7 @@ test_kiritimati()
   auto* tz = locate_zone("Pacific/Kiritimati");
   local_seconds t = local_days(1994y/December/31);
 
-  sys_seconds ut(t.time_since_epoch() /* FIXME: should be + 10h */);
+  sys_seconds ut(t.time_since_epoch() + 10h);
   sys_info info;
   info = tz->get_info(ut - 1s);
   VERIFY( info.offset == -10h );
@@ -65,7 +65,9 @@ test_apia()
   auto* tz = locate_zone("Pacific/Apia");
   local_seconds t = local_days(2011y/December/29) + 24h;
 
-  sys_seconds ut(t.time_since_epoch() /* FIXME: should be + 10h */ - 24h );
+  // FIXME: this should be + 10h but we do not account for DST yet, so + 11h.
+  // The 24h is because we don't parse the "24" in the Zone line (PR 124513).
+  sys_seconds ut(t.time_since_epoch() + 11h - 24h );
   sys_info info;
   info = tz->get_info(ut - 1s);
   VERIFY( info.offset == (-11h + info.save) );
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc b/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
index 769c7744017b..88f16b76ff48 100644
--- a/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
+++ b/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
@@ -12,33 +12,37 @@ test_zurich()
   const time_zone* const tz = locate_zone("Europe/Zurich");
 
   {
-    sys_days d = 1853y/July/16;
+    sys_days d = 1853y/July/16; // On this date ...
+    auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
+    auto t = d - offset;        // so LMT to BMT transition is at this time.
 
-    auto info = tz->get_info(d - 1s);
-    VERIFY( info.offset == (34min + 8s) );
+    auto info = tz->get_info(t - 1s);
+    VERIFY( info.offset == offset );
     VERIFY( info.abbrev == "LMT" );
 
-    info = tz->get_info(d);
+    info = tz->get_info(t);
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
 
-    info = tz->get_info(d + 1s);
+    info = tz->get_info(t + 1s);
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
 
-    info = tz->get_info(d + 0.001s);
+    info = tz->get_info(t + 0.001s);
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
   }
 
   {
     sys_days d = 1894y/June/1;
+    auto offset = 29min + 46s;
+    auto t = d - offset;
 
-    auto info = tz->get_info(d - 1s);
-    VERIFY( info.offset == (29min + 46s) );
+    auto info = tz->get_info(t - 1s);
+    VERIFY( info.offset == offset );
     VERIFY( info.abbrev == "BMT" );
 
-    info = tz->get_info(d);
+    info = tz->get_info(t);
     VERIFY( info.offset == 1h );
     VERIFY( info.abbrev == "CET" );
   }
diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/1.cc b/libstdc++-v3/testsuite/std/time/zoned_time/1.cc
index 1623aca1c7a8..a77cd99dd550 100644
--- a/libstdc++-v3/testsuite/std/time/zoned_time/1.cc
+++ b/libstdc++-v3/testsuite/std/time/zoned_time/1.cc
@@ -48,24 +48,26 @@ test_zurich()
   const time_zone* const zurich = locate_zone("Europe/Zurich");
 
   {
-    sys_days d = 1853y/July/16;
+    sys_days d = 1853y/July/16; // On this date ...
+    auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
+    auto t = d - offset;        // so LMT to BMT transition is at this time.
 
-    auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
+    auto z = zoned_seconds(zurich, t - 1s);
     auto info = z.get_info();
-    VERIFY( info.offset == (34min + 8s) );
+    VERIFY( info.offset == offset );
     VERIFY( info.abbrev == "LMT" );
 
-    z = zoned_seconds(zurich, d);
+    z = zoned_seconds(zurich, t);
     info = z.get_info();
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
 
-    z = zoned_seconds(zurich, d + 1s);
+    z = zoned_seconds(zurich, t + 1s);
     info = z.get_info();
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
 
-    auto z2 = zoned_time(zurich, d + 0.001s);
+    auto z2 = zoned_time(zurich, t + 0.001s);
     info = z2.get_info();
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
@@ -73,13 +75,15 @@ test_zurich()
 
   {
     sys_days d = 1894y/June/1;
+    auto offset = 29min + 46s;
+    auto t = d - offset;
 
-    auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
+    auto z = zoned_seconds(zurich, t - 1s);
     auto info = z.get_info();
     VERIFY( info.offset == (29min + 46s) );
     VERIFY( info.abbrev == "BMT" );
 
-    z = zoned_seconds(zurich, d);
+    z = zoned_seconds(zurich, t);
     info = z.get_info();
     VERIFY( info.offset == 1h );
     VERIFY( info.abbrev == "CET" );

From redi@gcc.gnu.org  Thu May 14 09:36:02 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:02 +0000 (GMT)
Subject: [gcc r15-11159] libstdc++: Fix parsing of UNTIL times in tzdata.zi
 [PR124513]
Message-ID: <20260514093602.767AA4B196F7@sourceware.org>

https://gcc.gnu.org/g:bbf3f6dc951fcc7c0ebf41cc4e52a0657f0dc4bb

commit r15-11159-gbbf3f6dc951fcc7c0ebf41cc4e52a0657f0dc4bb
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Mar 19 11:42:48 2026 +0000

    libstdc++: Fix parsing of UNTIL times in tzdata.zi [PR124513]
    
    Zone lines ending with a plain number as the time for the DST transition
    (e.g. "2026 Mar 16 2") were incorrectly parsed as changing at midnight.
    The problem was that eofbit got set after extracting the "2" from the
    stream using `in >> i`, then the `in >> at.indicator` expression
    failed and set failbit, so that the `if (in >> at.indicator)` condition
    was always false and so the assignment to at.time guarded by that
    condition was never performed. So the at.time member was always left
    equal to zero, i.e. midnight. Suffixed times such as "2s" or "2u" were
    parsed correctly.
    
    This commit fixes the operator>> overload for the Indicator enum to not
    cause failbit to be set if eofbit is already set. This means that the
    `in >> at.indicator` expression yields true when converted to bool, and
    the assignment to at.time happens. Not trying to extract an Indicator
    when eofbit is already set is correct, because it's valid for there to
    be no indicator suffix on an AT time (that just means the time should be
    interpreted as wall time).
    
    There was also a bug in the handling of a "-" value for the time, which
    is supposed to mean midnight but was not being parsed due to failing to
    skip leading whitespace. That did no harm in most cases, because the "-"
    would not be extracted from the stream but would then cause a failure to
    parse an integer number of hours, and no time would be set, causing it
    to default to midnight, which is what "-" means anyway. However, a value
    of "-u" is supposed to mean midnight UTC and "-s" is supposed to mean
    midnight standard time, and the indicators for UTC or standard were not
    being set in those cases. This fix uses std::ws to skip initial
    whitespace, and then correctly handles "-" followed by EOF.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit fbc5d2b1ab17ba7eb919f2c77f5788645c18006a)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc                     |  20 ++--
 .../testsuite/std/time/time_zone/116110.cc         |   3 +-
 .../testsuite/std/time/time_zone/124513.cc         | 111 +++++++++++++++++++++
 3 files changed, 124 insertions(+), 10 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 367f056b12e1..3a66c4d065a7 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -264,11 +264,14 @@ namespace std::chrono
       // If not, indic is unchanged. Callers should set a default first.
       friend istream& operator>>(istream& in, Indicator& indic)
       {
-	auto [val, yes] = at_time::is_indicator(in.peek());
-	if (yes)
+	if (!in.eof())
 	  {
-	    in.ignore(1);
-	    indic = val;
+	    auto [val, yes] = at_time::is_indicator(in.peek());
+	    if (yes)
+	      {
+		in.ignore(1);
+		indic = val;
+	      }
 	  }
 	return in;
       }
@@ -2054,10 +2057,11 @@ namespace std::chrono
     istream& operator>>(istream& in, at_time& at)
     {
       int sign = 1;
-      if (in.peek() == '-')
+      if (ws(in).peek() == '-')
 	{
 	  in.ignore(1);
-	  if (auto [val, yes] = at_time::is_indicator(in.peek()); yes)
+	  if (auto [val, yes] = at_time::is_indicator(in.peek());
+	      in.eof() || yes)
 	    {
 	      in.ignore(1);
 	      at.time = 0s;
@@ -2076,11 +2080,11 @@ namespace std::chrono
 	  in.ignore(1); // discard the colon.
 	  in >> i;
 	  m = minutes{i};
-	  if (in.peek() == ':')
+	  if (!in.eof() && in.peek() == ':')
 	    {
 	      in.ignore(1); // discard the colon.
 	      in >> i;
-	      if (in.peek() == '.')
+	      if (!in.eof() && in.peek() == '.')
 		{
 		  double frac;
 		  in >> frac;
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/116110.cc b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
index 0f3e09690e0e..26b9ba33c316 100644
--- a/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
+++ b/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
@@ -66,8 +66,7 @@ test_apia()
   local_seconds t = local_days(2011y/December/29) + 24h;
 
   // FIXME: this should be + 10h but we do not account for DST yet, so + 11h.
-  // The 24h is because we don't parse the "24" in the Zone line (PR 124513).
-  sys_seconds ut(t.time_since_epoch() + 11h - 24h );
+  sys_seconds ut(t.time_since_epoch() + 11h );
   sys_info info;
   info = tz->get_info(ut - 1s);
   VERIFY( info.offset == (-11h + info.save) );
diff --git a/libstdc++-v3/testsuite/std/time/time_zone/124513.cc b/libstdc++-v3/testsuite/std/time/time_zone/124513.cc
new file mode 100644
index 000000000000..49d7ba8bb016
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/time_zone/124513.cc
@@ -0,0 +1,111 @@
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target tzdb }
+// { dg-require-effective-target cxx11_abi }
+// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+
+#include <chrono>
+#include <fstream>
+#include <testsuite_hooks.h>
+
+static bool override_used = false;
+
+namespace __gnu_cxx
+{
+  const char* zoneinfo_dir_override() {
+    override_used = true;
+    return "./";
+  }
+}
+
+void
+test_mawson()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test1
+Z Antarctica/Mawson 0 - -00 1954 F 13
+                    6 - %z  2009 O 18 2
+                    5 - %z
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test1" );
+
+  auto zone = locate_zone("Antarctica/Mawson");
+  auto info = zone->get_info(sys_days(2009y/October/19));
+  VERIFY( info.begin == sys_days(2009y/October/17) + 20h);
+}
+
+void
+test_custom()
+{
+  using namespace std::chrono;
+
+  std::ofstream("tzdata.zi") << R"(# version test2
+Z Test/Zomg 3:00:00 - LMT 1990 Mar 1 2
+            4       - DST 1990 Oct 1 2
+            3       - STD 1991 Mar 1 3:30
+            3       1 DST 1991 Oct 1 3:45:01
+            3       - STD 1992 Mar 1 -
+            3       1 DST 1992 Oct 1 -u
+            3       - STD 1993 Mar 1 -s
+            3       2 DST 1993 Oct 1 -s
+            3       - STD
+
+Z Test/Zoinks 0:00  -    LMT 1990 Mar 1 2
+              0:00  1:00 DST 1990 Oct 1 3
+              0:00  -    STD 1991 Mar 1 1:30
+              0:00  1:00 DST 1991 Oct 1 3:30
+              0:00  -    STD
+)";
+
+  const auto& db = reload_tzdb();
+  VERIFY( override_used ); // If this fails then XFAIL for the target.
+  VERIFY( db.version == "test2" );
+
+  const auto offset = 3h;
+
+  const time_zone* zone;
+  sys_info info;
+
+  zone = locate_zone("Test/Zomg");
+  info = zone->get_info(sys_days(1990y/June/1));
+  VERIFY( info.begin == sys_days(1990y/March/1) + 2h - 3h);
+  VERIFY( info.end   == sys_days(1990y/October/1) + 2h - 4h);
+
+  info = zone->get_info(sys_days(1991y/June/1));
+  VERIFY( info.begin == sys_days(1991y/March/1) + 3h + 30min - 3h);
+  VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 45min + 1s - 4h);
+
+  info = zone->get_info(sys_days(1992y/June/1));
+  VERIFY( info.begin == sys_days(1992y/March/1) - 3h);
+  VERIFY( info.end   == sys_days(1992y/October/1));   // -u means midnight UTC
+
+  info = zone->get_info(sys_days(1992y/November/1));
+  VERIFY( info.begin == sys_days(1992y/October/1));    // -u means midnight UTC
+  VERIFY( info.end   == sys_days(1993y/March/1) - 3h); // -s means midnight STD
+
+  info = zone->get_info(sys_days(1993y/June/1));
+  VERIFY( info.begin == sys_days(1993y/March/1) -3h);  // -s means midnight STD
+  VERIFY( info.end   == sys_days(1993y/October/1) - 3h);
+
+
+  zone = locate_zone("Test/Zoinks");
+  info = zone->get_info(sys_days(1990y/June/1));
+  VERIFY( info.begin == sys_days(1990y/March/1) + 2h);
+  VERIFY( info.end   == sys_days(1990y/October/1) + 3h - 1h);
+
+  info = zone->get_info(sys_days(1991y/June/1));
+  VERIFY( info.begin == sys_days(1991y/March/1) + 1h + 30min);
+  VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 30min - 1h);
+
+  info = zone->get_info(sys_days(1992y/June/1));
+  VERIFY( info.begin == sys_days(1991y/October/1) + 3h + 30min - 1h);
+}
+
+int main()
+{
+  test_custom();
+  test_mawson();
+}

From redi@gcc.gnu.org  Thu May 14 09:36:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:12 +0000 (GMT)
Subject: [gcc r15-11160] libstdc++: Fix chrono::current_zone() for three-level
 names [PR122567]
Message-ID: <20260514093612.C7EAC4B1A2CF@sourceware.org>

https://gcc.gnu.org/g:ea232ef0d5697ab498d522e2267da298bcf064f2

commit r15-11160-gea232ef0d5697ab498d522e2267da298bcf064f2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 9 13:39:49 2026 +0000

    libstdc++: Fix chrono::current_zone() for three-level names [PR122567]
    
    chrono::current_zone() fails if /etc/localtime is a symlink to a zone
    with three components, like "America/Indiana/Indianapolis", because we
    only try to find "Indianapolis" and "Indiana/Indianapolis" but neither
    of those is a valid zone name.
    
    We need to try up to three components to handle all valid cases, such as
    "UTC", "America/Indianapolis", and "America/Indiana/Indianapolis". It's
    also possible that users could provide a custom tzdata.zi file which
    includes zones with names using more than three levels, so loop over all
    filename components of the path that /etc/localtime points to.
    
    This also replaces std::filesystem::read_symlink with a plain readlink
    call and find+substr operations on a std::string_view, which is
    approximately twice as fast as using std::filesystem::path and
    std::string.
    
    By default we use a fixed char[128] buffer for readlink to write into,
    but if that doesn't fit we use a std::string as a dynamic buffer that
    grows as needed. We could use ::stat to find the exact length of the
    symlink and avoid looping with an increasingly large std::string
    capacity, but it's already expected to be rare for the char[128] buffer
    to be exceeded, so needing to double the std::string capacity more than
    once (i.e. to 512 or more) should be exceedingly rare. Adding a call to
    ::stat would perform a third filesystem operation when two readlink
    calls should be sufficient for the vast majority of realistic cases.
    
    One consequence of not using filesystem::path is that redundant
    consecutive slashes in the pathname aren't automatically ignored, e.g.
    /usr/share/zoneinfo/Europe//London worked fine with the old
    implementation because we manually concatenated the path components,
    i.e. "Europe" + '/' + "London". So that this continues to work there is
    a new loop to remove redundant slashes from the string being processed.
    That adds a slower, allocating path, but is unlikely to be needed in
    practice (the systemd spec for /etc/localtime explicitly says it should
    end with a time zone name, so "Europe//London" would be invalid anyway,
    even if it points to a valid file). Again, this loop is expected to be
    rare so optimizing this case further isn't important.
    
    While manually testing this I noticed that we will interpret a bogus
    symlink such as /usr/share/zoneinfo/America/Europe/London as a valid
    timezone, even though it's a dangling symlink. We find a name match for
    "Europe/London" before we get to the "America" component. This seems
    unlikely to matter in practice, and was a pre-existing problem.
    
    There's no testcase for current_zone() correctly handling three-level
    names or symlinks with unusual targets. It cannot be tested without
    changing the target of /etc/localtime which requires root access.
    
    I'm still considering whether we want to cache the result of
    current_zone(), either globally or in the tzdb object. Just returning a
    cached variable takes 20-30ns instead of more than 700ns to access the
    filesystem and read the symlink. Using ::lstat to check the symlink's
    mtime would add some overhead though.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    
    (cherry picked from commit 20a6ff7a4877a25ba78461a19417e956bd6c0095)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc | 104 ++++++++++++++++++++++++++++++++++-------
 1 file changed, 86 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 3a66c4d065a7..d1092c850139 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -35,10 +35,14 @@
 #include <atomic>     // atomic<T*>, atomic<int>
 #include <memory>     // atomic<shared_ptr<T>>
 #include <mutex>      // mutex
+#include <iomanip>    // quoted
 #if defined __GTHREADS && ! defined _GLIBCXX_HAS_GTHREADS
 # include <ext/concurrence.h> // __gnu_cxx::__mutex
 #endif
-#include <filesystem> // filesystem::read_symlink
+
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+# include <unistd.h>  // readlink
+#endif
 
 #ifdef _AIX
 # include <cstdlib>   // getenv
@@ -1762,28 +1766,87 @@ namespace std::chrono
   tzdb::current_zone() const
   {
     // TODO cache this function's result?
+    // Could check the modification time of /etc/localtime, and not re-read
+    // it if it hasn't changed. reload_tzdb() could clear the cache too,
+    // to have a way to force a re-read.
 
 #ifndef _AIX
-    // Repeat the preprocessor condition used by filesystem::read_symlink,
-    // to avoid a dependency on src/c++17/fs_ops.o if it won't work anyway.
-#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_SYS_STAT_H)
-    error_code ec;
-    // This should be a symlink to e.g. /usr/share/zoneinfo/Europe/London
-    auto path = filesystem::read_symlink("/etc/localtime", ec);
-    if (!ec)
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+    string_view str;
+    char buf[128]; // strlen("../usr/share/zoneinfo/...") is usually < 55
+    string dynbuf;
+    // /etc/localtime should be a symlink that ends with a zone name,
+    // e.g. /etc/localtime -> /usr/share/zoneinfo/Europe/London
+    // https://www.freedesktop.org/software/systemd/man/latest/localtime.html
+    // This should work on GNU/Linux, macOS, NetBSD, and OpenBSD.
+    // Some FreeBSD systems also use a symlink for /etc/localtime.
+    // Use readlink directly to avoid std::filesystem overhead.
+    if (auto n = ::readlink("/etc/localtime", buf, sizeof(buf)); n > 0)
       {
-	auto first = path.begin(), last = path.end();
-	if (std::distance(first, last) > 2)
+	if (static_cast<size_t>(n) < sizeof(buf))
+	  str = string_view(buf, n);
+	else [[unlikely]]
 	  {
-	    --last;
-	    string name = last->string();
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
-	      return tz;
-	    --last;
-	    name = last->string() + '/' + name;
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
+	    // We read the symlink but it didn't fit in buf[], use dynbuf.
+	    do
+	      {
+		n *= 2;
+		dynbuf.__resize_and_overwrite(n, [](char* p, size_t len) {
+		  auto n2 = ::readlink("/etc/localtime", p, len);
+		  if (n2 == -1) // symlink removed or replaced by file?!
+		    __throw_runtime_error("tzdb: error reading /etc/localtime");
+		  const size_t r = n2;
+		  return r < len ? r : 0;
+		});
+	      }
+	    while (dynbuf.empty());
+	    str = dynbuf;
+	  }
+      }
+
+    if (!str.empty())
+      {
+	// Remove any redundant slashes so we can match zone names.
+	// e.g. /usr/share/zoneinfo/Europe//London is a valid symlink,
+	// but won't match against "Europe/London".
+	if (auto pos = str.rfind("//"); pos != str.npos) [[unlikely]]
+	  {
+	    if (str.data() != dynbuf.data())
+	      dynbuf = str;
+	    string::size_type spos = pos;
+	    do
+	      {
+		dynbuf.erase(spos, 1);
+		spos = dynbuf.rfind("//", spos);
+	      }
+	    while (spos != dynbuf.npos);
+	    str = dynbuf;
+	  }
+
+	// Check the trailing components of the path against known zone names.
+	// Valid IANA times zones can have one, two, or three parts, e.g.
+	// "UTC", "Europe/London", and "America/Indiana/Indianapolis".
+	// Custom tzdata.zi files could in theory use four or more parts.
+
+	auto pos = str.rfind('/');
+	while (pos != str.npos && pos != 0)
+	  {
+	    if (auto tz = do_locate_zone(this->zones, this->links,
+					 str.substr(pos + 1)))
 	      return tz;
+	    pos = str.rfind('/', pos - 1);
 	  }
+	// If we didn't match yet, try once more so that we will match
+	// a symlink to a relative path such as "Europe/London"
+	// or symlink to an absolute path such as "/Europe/London".
+	// Both cases seem unlikely because it would require either
+	// /etc/Europe or /Europe to be a directory (or a symlink to one)
+	// containing the TZif files, but it's theoretically possible.
+	// If pos==npos then pos+1 wraps to 0 and we use the whole string.
+	// If pos==0 then substr(1) discards the leading slash.
+	if (auto tz = do_locate_zone(this->zones, this->links,
+				     str.substr(pos + 1)))
+	  return tz;
       }
 #endif
     // Otherwise, look for a file naming the time zone.
@@ -1820,7 +1883,12 @@ namespace std::chrono
 		  return tz;
 	      }
       }
-#else
+
+    // FIXME: For DragonFly BSD /etc/localtime is a copy of one of the
+    // zone files in /usr/share/zoneinfo so we need to compare its contents
+    // to each one until we find a match.
+
+#else // _AIX
     // AIX stores current zone in $TZ in /etc/environment but the value
     // is typically a POSIX time zone name, not IANA zone.
     // https://developer.ibm.com/articles/au-aix-posix/

From redi@gcc.gnu.org  Thu May 14 09:36:23 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:23 +0000 (GMT)
Subject: [gcc r15-11161] libstdc++: Update tzdata to 2026a
Message-ID: <20260514093623.279944B196E3@sourceware.org>

https://gcc.gnu.org/g:2910b140bcc02616ebfdffa4dfabb9506889fc76

commit r15-11161-g2910b140bcc02616ebfdffa4dfabb9506889fc76
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026a
    
    Import the new 2026a tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    (cherry picked from commit b8fd759dc61c0a191a236eb19db870bb30078011)

Diff:
---
 libstdc++-v3/include/std/chrono  |  2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 10 ++++++----
 libstdc++-v3/src/c++20/tzdb.cc   |  4 ++--
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 8bbfaae31731..ad81bcb9a88f 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3260,7 +3260,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index c56f67c02f6d..88f7d34a3817 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,5 @@
-# version 2025c
+# version 2026a
+# redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -1304,8 +1305,8 @@ R MT 1974 o - S 16 0s 0 -
 R MT 1975 1979 - Ap Su>=15 2 1 S
 R MT 1975 1980 - S Su>=15 2 0 -
 R MT 1980 o - Mar 31 2 1 S
-R MD 1997 ma - Mar lastSu 2 1 S
-R MD 1997 ma - O lastSu 3 0 -
+R MD 1997 2021 - Mar lastSu 2 1 S
+R MD 1997 2021 - O lastSu 3 0 -
 R O 1918 1919 - S 16 2s 0 -
 R O 1919 o - Ap 15 2s 1 S
 R O 1944 o - Ap 3 2s 1 S
@@ -3666,7 +3667,8 @@ Z Europe/Chisinau 1:55:20 - LMT 1880
 3 R MSK/MSD 1990 May 6 2
 2 R EE%sT 1992
 2 e EE%sT 1997
-2 MD EE%sT
+2 MD EE%sT 2022
+2 E EE%sT
 Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
 -0:25:21 - DMT 1916 May 21 2s
 -0:25:21 1 IST 1916 O 1 2s
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index d1092c850139..169810349e88 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1220,8 +1220,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-06-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/06/28};
+    // This list is valid until at least 2026-12-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/12/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From redi@gcc.gnu.org  Thu May 14 09:36:28 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:28 +0000 (GMT)
Subject: [gcc r15-11162] libstdc++: Fix std::basic_stringbuf::str()&&
 [PR123100]
Message-ID: <20260514093628.54A074C31814@sourceware.org>

https://gcc.gnu.org/g:90d77d9323773f5e465c73397f2aa3456310b9f8

commit r15-11162-g90d77d9323773f5e465c73397f2aa3456310b9f8
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Dec 15 10:25:52 2025 +0000

    libstdc++: Fix std::basic_stringbuf::str()&& [PR123100]
    
    When basic_stringbuf::setbuf has been called we need to copy the
    contents of the buffer into _M_string first, before returning that.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit a94bd31fd80b6a7efbe4d4c81ff195f7d81c3813)

Diff:
---
 libstdc++-v3/include/std/sstream                   |  7 ++-
 .../27_io/basic_stringbuf/str/char/123100.cc       | 58 ++++++++++++++++++++++
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index ad0c16a91e86..e4f43d84080e 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -278,8 +278,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       {
 	if (char_type* __hi = _M_high_mark())
 	  {
-	    // Set length to end of character sequence and add null terminator.
-	    _M_string._M_set_length(_M_high_mark() - this->pbase());
+	    if (_M_string.data() == this->pbase()) [[likely]]
+	      // Set length to end of sequence and add null terminator.
+	      _M_string._M_set_length(__hi - this->pbase());
+	    else
+	      _M_string.assign(this->pbase(), __hi);
 	  }
 	auto __str = std::move(_M_string);
 	_M_string.clear();
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
new file mode 100644
index 000000000000..174fe0ece1d6
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
@@ -0,0 +1,58 @@
+// { dg-do run }
+
+#include <sstream>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data;
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+void
+test02()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out << std::string(n * 2, 'a');
+  VERIFY( out.str() == std::string(n * 2, 'a') );
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data; // writes 6 chars
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+int main()
+{
+  test01();
+  test02();
+}

From redi@gcc.gnu.org  Thu May 14 09:36:38 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:38 +0000 (GMT)
Subject: [gcc r15-11163] libstdc++: Add call to test_format in
 std/time/clock/local/io.cc
Message-ID: <20260514093638.A8B0F4B196E9@sourceware.org>

https://gcc.gnu.org/g:38d069d32c454c01e7accb8c4bd1dd9854b000d8

commit r15-11163-g38d069d32c454c01e7accb8c4bd1dd9854b000d8
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 13 20:48:42 2026 +0100

    libstdc++: Add call to test_format in std/time/clock/local/io.cc
    
    This function was defined but not being called at runtime.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/time/clock/local/io.cc: Call test_format.

Diff:
---
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index 67818e876497..61c64f3262c4 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -128,5 +128,6 @@ test_parse()
 int main()
 {
   test_ostream();
+  test_format();
   test_parse();
 }

From redi@gcc.gnu.org  Thu May 14 09:36:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 09:36:43 +0000 (GMT)
Subject: [gcc r15-11164] libstdc++: Optimize fs::path::operator+=(const path&)
 alias check
Message-ID: <20260514093643.DE6BF4B19727@sourceware.org>

https://gcc.gnu.org/g:d9b66c1317e5f5bfa412d4d9da6374028555793b

commit r15-11164-gd9b66c1317e5f5bfa412d4d9da6374028555793b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 17 15:58:10 2026 +0000

    libstdc++: Optimize fs::path::operator+=(const path&) alias check
    
    Instead of a loop that compares &p to the address of each path
    component, we can just do two pointer comparisons to see if &p is within
    the contiguous array of components.
    
    We don't need to make the same change to experimental::filesystem::path
    because as noted in r15-9709-gbeb0ffd36eedf0 the TS implementation
    doesn't attempt to optimize operator+= so doesn't care if the parameter
    aliases *this.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++17/fs_path.cc (path::operator+=): Use pointer
            comparison to detect aliasing instead of a loop.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 881b327773d3f366c2b638e3d07ef310b2a2dfe2)

Diff:
---
 libstdc++-v3/src/c++17/fs_path.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc
index 215afa08ad25..ddbeaaed2f0f 100644
--- a/libstdc++-v3/src/c++17/fs_path.cc
+++ b/libstdc++-v3/src/c++17/fs_path.cc
@@ -886,9 +886,11 @@ path::operator+=(const path& p)
     return *this += p.native();
   // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
   if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
-    for (const path& cmpt : *this)
-      if (&cmpt == &p) [[unlikely]]
+    {
+      const auto first = _M_cmpts.begin(), last = first + _M_cmpts.size();
+      if (!std::less<>()(&p, first) && std::less<>()(&p, last)) [[unlikely]]
 	return *this += p.native();
+    }
 
 #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
   if (_M_type() == _Type::_Root_name

From redi@gcc.gnu.org  Thu May 14 10:09:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:09:12 +0000 (GMT)
Subject: [gcc r14-12588] libstdc++: Clear std::priority_queue after moving
 from it [PR118088]
Message-ID: <20260514100912.DB1C04B1A2AE@sourceware.org>

https://gcc.gnu.org/g:c25979d42d6d640b6024aa9a06e50f5104d2584e

commit r14-12588-gc25979d42d6d640b6024aa9a06e50f5104d2584e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Dec 14 01:17:27 2024 +0000

    libstdc++: Clear std::priority_queue after moving from it [PR118088]
    
    We don't know what state an arbitrary sequence container will be in
    after moving from it, so a moved-from std::priority_queue needs to clear
    the moved-from container to ensure it doesn't contain elements that are
    in an invalid order for the queue. An alternative would be to call
    std::make_heap again to re-establish the rvalue queue's invariant, but
    that could potentially cause an exception to be thrown. Just clearing it
    so the sequence is empty seems safer and more likely to match user
    expectations.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/118088
            * include/bits/stl_queue.h (priority_queue(priority_queue&&)):
            Clear the source object after moving from it.
            (priority_queue(priority_queue&&, const Alloc&)): Likewise.
            (operator=(priority_queue&&)): Likewise.
            * testsuite/23_containers/priority_queue/118088.cc: New test.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    (cherry picked from commit 15aab0d00ca1ed5ce428555bf89ecfe0525f9b81)

Diff:
---
 libstdc++-v3/include/bits/stl_queue.h              | 26 ++++++-
 .../23_containers/priority_queue/118088.cc         | 83 ++++++++++++++++++++++
 2 files changed, 106 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index ada354b911db..53a9a47a2d2b 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -564,6 +564,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       : c(std::move(__s)), comp(__x)
       { std::make_heap(c.begin(), c.end(), comp); }
 
+      priority_queue(const priority_queue&) = default;
+      priority_queue& operator=(const priority_queue&) = default;
+
+      priority_queue(priority_queue&& __q)
+      noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
+		      is_nothrow_move_constructible<_Compare>>::value)
+      : c(std::move(__q.c)), comp(std::move(__q.comp))
+      { __q.c.clear(); }
+
+      priority_queue&
+      operator=(priority_queue&& __q)
+      noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
+		      is_nothrow_move_assignable<_Compare>>::value)
+      {
+	c = std::move(__q.c);
+	__q.c.clear();
+	comp = std::move(__q.comp);
+	return *this;
+      }
+
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
 	explicit
 	priority_queue(const _Alloc& __a)
@@ -592,7 +612,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
 	priority_queue(priority_queue&& __q, const _Alloc& __a)
-	: c(std::move(__q.c), __a), comp(std::move(__q.comp)) { }
+	: c(std::move(__q.c), __a), comp(std::move(__q.comp))
+	{ __q.c.clear(); }
 #endif
 
       /**
@@ -607,8 +628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  the copy according to @a __x.
        *
        *  For more information on function objects, see the
-       *  documentation on @link functors functor base
-       *  classes@endlink.
+       *  documentation on @link functors functor base classes@endlink.
        */
 #if __cplusplus < 201103L
       template<typename _InputIterator>
diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
new file mode 100644
index 000000000000..b59175d8786a
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
@@ -0,0 +1,83 @@
+// { dg-do run { target c++11 } }
+
+#include <queue>
+#include <vector>
+#include <testsuite_hooks.h>
+
+template<typename T, typename Seq>
+bool
+check(std::priority_queue<T, Seq>& p)
+{
+  if (!p.empty())
+    {
+      T prev = p.top();
+      p.pop();
+      while (!p.empty())
+	{
+	  if ( prev < p.top() )
+	    return false;
+	  prev = p.top();
+	  p.pop();
+	}
+    }
+  return true;
+}
+
+// A vector-like type that has a non-empty moved-from state.
+struct Vector : std::vector<int>
+{
+  using Base = std::vector<int>;
+
+  using Base::Base;
+
+  Vector(const Vector&) = default;
+  Vector& operator=(const Vector&) = default;
+
+  Vector(Vector&& v) : Base(static_cast<const Base&>(v))
+  {
+    invalidate_heap(v);
+  }
+
+  Vector(Vector&& v, const std::allocator<int>&)
+  : Base(static_cast<const Base&>(v))
+  {
+    invalidate_heap(v);
+  }
+
+  Vector&
+  operator=(Vector&& v)
+  {
+    static_cast<Base&>(*this) = static_cast<const Base&>(v);
+    invalidate_heap(v);
+    return *this;
+  }
+
+  void invalidate_heap(Base& v) { v = {1,2,3}; }
+};
+
+void
+test_moves()
+{
+  std::priority_queue<int, Vector> p;
+  p.push(1);
+  p.push(3);
+  p.push(5);
+  p.push(2);
+  p.push(2);
+  p.push(2);
+  p.push(2);
+  std::priority_queue<int, Vector> p2 = std::move(p);
+  VERIFY( check(p) );
+
+  // Allocator-extended move constructor:
+  std::priority_queue<int, Vector> p3(std::move(p2), std::allocator<int>());
+  VERIFY( check(p2) );
+
+  p2 = std::move(p3);
+  VERIFY( check(p3) );
+}
+
+int main()
+{
+  test_moves();
+}

From redi@gcc.gnu.org  Thu May 14 10:09:23 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:09:23 +0000 (GMT)
Subject: [gcc r14-12589] libstdc++: Fix mainpage.html link to Doxygen docs
 [PR109965]
Message-ID: <20260514100923.2FD794B1A2A9@sourceware.org>

https://gcc.gnu.org/g:ce1bcffc3aa66961be852430496f831401eddfb3

commit r14-12589-gce1bcffc3aa66961be852430496f831401eddfb3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 10:16:36 2026 +0100

    libstdc++: Fix mainpage.html link to Doxygen docs [PR109965]
    
    Doxygen renamed the "Modules" documentation to "Topics" a few years ago
    to avoid confusion with C++20 Modules:
    https://github.com/doxygen/doxygen/issues/8772
    
    This updates our internal link to 'modules.html' so that it refers to
    'topics.html' instead.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/109965
            * doc/doxygen/mainpage.html: Link to topics.html instead of
            modules.html
    
    (cherry picked from commit f95c05fe96af1de24929575b5ee8a05438fcfbcc)

Diff:
---
 libstdc++-v3/doc/doxygen/mainpage.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/mainpage.html b/libstdc++-v3/doc/doxygen/mainpage.html
index b54482a74e99..03a3adfaf65f 100644
--- a/libstdc++-v3/doc/doxygen/mainpage.html
+++ b/libstdc++-v3/doc/doxygen/mainpage.html
@@ -38,7 +38,7 @@
 
 <p>Here are entry points to all the pages generated by Doxygen:
    <ul>
-    <li><a href="modules.html">Modules</a></li>
+    <li><a href="topics.html">Topics</a></li>
 
     <li>Namespaces
     <ul>

From redi@gcc.gnu.org  Thu May 14 10:09:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:09:33 +0000 (GMT)
Subject: [gcc r14-12590] libstdc++: Fix std::basic_stringbuf::str()&&
 [PR123100]
Message-ID: <20260514100933.7456E4BB8F44@sourceware.org>

https://gcc.gnu.org/g:734af19063ac0a1b515083503134909b41a8b17a

commit r14-12590-g734af19063ac0a1b515083503134909b41a8b17a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Dec 15 10:25:52 2025 +0000

    libstdc++: Fix std::basic_stringbuf::str()&& [PR123100]
    
    When basic_stringbuf::setbuf has been called we need to copy the
    contents of the buffer into _M_string first, before returning that.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit a94bd31fd80b6a7efbe4d4c81ff195f7d81c3813)

Diff:
---
 libstdc++-v3/include/std/sstream                   |  7 ++-
 .../27_io/basic_stringbuf/str/char/123100.cc       | 58 ++++++++++++++++++++++
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index dda7096afe40..d525f141fda5 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -273,8 +273,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       {
 	if (char_type* __hi = _M_high_mark())
 	  {
-	    // Set length to end of character sequence and add null terminator.
-	    _M_string._M_set_length(_M_high_mark() - this->pbase());
+	    if (_M_string.data() == this->pbase()) [[likely]]
+	      // Set length to end of sequence and add null terminator.
+	      _M_string._M_set_length(__hi - this->pbase());
+	    else
+	      _M_string.assign(this->pbase(), __hi);
 	  }
 	auto __str = std::move(_M_string);
 	_M_string.clear();
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
new file mode 100644
index 000000000000..174fe0ece1d6
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
@@ -0,0 +1,58 @@
+// { dg-do run }
+
+#include <sstream>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data;
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+void
+test02()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out << std::string(n * 2, 'a');
+  VERIFY( out.str() == std::string(n * 2, 'a') );
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data; // writes 6 chars
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+int main()
+{
+  test01();
+  test02();
+}

From redi@gcc.gnu.org  Thu May 14 10:09:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:09:43 +0000 (GMT)
Subject: [gcc r14-12591] libstdc++: Fix chrono::current_zone() for three-level
 names [PR122567]
Message-ID: <20260514100943.BC7E54B1971B@sourceware.org>

https://gcc.gnu.org/g:14066525257425cba9c4fbbb4146a5c2922703fc

commit r14-12591-g14066525257425cba9c4fbbb4146a5c2922703fc
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 9 13:39:49 2026 +0000

    libstdc++: Fix chrono::current_zone() for three-level names [PR122567]
    
    chrono::current_zone() fails if /etc/localtime is a symlink to a zone
    with three components, like "America/Indiana/Indianapolis", because we
    only try to find "Indianapolis" and "Indiana/Indianapolis" but neither
    of those is a valid zone name.
    
    We need to try up to three components to handle all valid cases, such as
    "UTC", "America/Indianapolis", and "America/Indiana/Indianapolis". It's
    also possible that users could provide a custom tzdata.zi file which
    includes zones with names using more than three levels, so loop over all
    filename components of the path that /etc/localtime points to.
    
    This also replaces std::filesystem::read_symlink with a plain readlink
    call and find+substr operations on a std::string_view, which is
    approximately twice as fast as using std::filesystem::path and
    std::string.
    
    By default we use a fixed char[128] buffer for readlink to write into,
    but if that doesn't fit we use a std::string as a dynamic buffer that
    grows as needed. We could use ::stat to find the exact length of the
    symlink and avoid looping with an increasingly large std::string
    capacity, but it's already expected to be rare for the char[128] buffer
    to be exceeded, so needing to double the std::string capacity more than
    once (i.e. to 512 or more) should be exceedingly rare. Adding a call to
    ::stat would perform a third filesystem operation when two readlink
    calls should be sufficient for the vast majority of realistic cases.
    
    One consequence of not using filesystem::path is that redundant
    consecutive slashes in the pathname aren't automatically ignored, e.g.
    /usr/share/zoneinfo/Europe//London worked fine with the old
    implementation because we manually concatenated the path components,
    i.e. "Europe" + '/' + "London". So that this continues to work there is
    a new loop to remove redundant slashes from the string being processed.
    That adds a slower, allocating path, but is unlikely to be needed in
    practice (the systemd spec for /etc/localtime explicitly says it should
    end with a time zone name, so "Europe//London" would be invalid anyway,
    even if it points to a valid file). Again, this loop is expected to be
    rare so optimizing this case further isn't important.
    
    While manually testing this I noticed that we will interpret a bogus
    symlink such as /usr/share/zoneinfo/America/Europe/London as a valid
    timezone, even though it's a dangling symlink. We find a name match for
    "Europe/London" before we get to the "America" component. This seems
    unlikely to matter in practice, and was a pre-existing problem.
    
    There's no testcase for current_zone() correctly handling three-level
    names or symlinks with unusual targets. It cannot be tested without
    changing the target of /etc/localtime which requires root access.
    
    I'm still considering whether we want to cache the result of
    current_zone(), either globally or in the tzdb object. Just returning a
    cached variable takes 20-30ns instead of more than 700ns to access the
    filesystem and read the symlink. Using ::lstat to check the symlink's
    mtime would add some overhead though.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    
    (cherry picked from commit 20a6ff7a4877a25ba78461a19417e956bd6c0095)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc | 104 ++++++++++++++++++++++++++++++++++-------
 1 file changed, 86 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 47d0728d8767..d66867e2171e 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -35,7 +35,11 @@
 #include <atomic>     // atomic<T*>, atomic<int>
 #include <memory>     // atomic<shared_ptr<T>>
 #include <mutex>      // mutex
-#include <filesystem> // filesystem::read_symlink
+#include <iomanip>    // quoted
+
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+# include <unistd.h>  // readlink
+#endif
 
 #ifdef _AIX
 # include <cstdlib>   // getenv
@@ -1734,28 +1738,87 @@ namespace std::chrono
   tzdb::current_zone() const
   {
     // TODO cache this function's result?
+    // Could check the modification time of /etc/localtime, and not re-read
+    // it if it hasn't changed. reload_tzdb() could clear the cache too,
+    // to have a way to force a re-read.
 
 #ifndef _AIX
-    // Repeat the preprocessor condition used by filesystem::read_symlink,
-    // to avoid a dependency on src/c++17/fs_ops.o if it won't work anyway.
-#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_SYS_STAT_H)
-    error_code ec;
-    // This should be a symlink to e.g. /usr/share/zoneinfo/Europe/London
-    auto path = filesystem::read_symlink("/etc/localtime", ec);
-    if (!ec)
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+    string_view str;
+    char buf[128]; // strlen("../usr/share/zoneinfo/...") is usually < 55
+    string dynbuf;
+    // /etc/localtime should be a symlink that ends with a zone name,
+    // e.g. /etc/localtime -> /usr/share/zoneinfo/Europe/London
+    // https://www.freedesktop.org/software/systemd/man/latest/localtime.html
+    // This should work on GNU/Linux, macOS, NetBSD, and OpenBSD.
+    // Some FreeBSD systems also use a symlink for /etc/localtime.
+    // Use readlink directly to avoid std::filesystem overhead.
+    if (auto n = ::readlink("/etc/localtime", buf, sizeof(buf)); n > 0)
       {
-	auto first = path.begin(), last = path.end();
-	if (std::distance(first, last) > 2)
+	if (static_cast<size_t>(n) < sizeof(buf))
+	  str = string_view(buf, n);
+	else [[unlikely]]
 	  {
-	    --last;
-	    string name = last->string();
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
-	      return tz;
-	    --last;
-	    name = last->string() + '/' + name;
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
+	    // We read the symlink but it didn't fit in buf[], use dynbuf.
+	    do
+	      {
+		n *= 2;
+		dynbuf.__resize_and_overwrite(n, [](char* p, size_t len) {
+		  auto n2 = ::readlink("/etc/localtime", p, len);
+		  if (n2 == -1) // symlink removed or replaced by file?!
+		    __throw_runtime_error("tzdb: error reading /etc/localtime");
+		  const size_t r = n2;
+		  return r < len ? r : 0;
+		});
+	      }
+	    while (dynbuf.empty());
+	    str = dynbuf;
+	  }
+      }
+
+    if (!str.empty())
+      {
+	// Remove any redundant slashes so we can match zone names.
+	// e.g. /usr/share/zoneinfo/Europe//London is a valid symlink,
+	// but won't match against "Europe/London".
+	if (auto pos = str.rfind("//"); pos != str.npos) [[unlikely]]
+	  {
+	    if (str.data() != dynbuf.data())
+	      dynbuf = str;
+	    string::size_type spos = pos;
+	    do
+	      {
+		dynbuf.erase(spos, 1);
+		spos = dynbuf.rfind("//", spos);
+	      }
+	    while (spos != dynbuf.npos);
+	    str = dynbuf;
+	  }
+
+	// Check the trailing components of the path against known zone names.
+	// Valid IANA times zones can have one, two, or three parts, e.g.
+	// "UTC", "Europe/London", and "America/Indiana/Indianapolis".
+	// Custom tzdata.zi files could in theory use four or more parts.
+
+	auto pos = str.rfind('/');
+	while (pos != str.npos && pos != 0)
+	  {
+	    if (auto tz = do_locate_zone(this->zones, this->links,
+					 str.substr(pos + 1)))
 	      return tz;
+	    pos = str.rfind('/', pos - 1);
 	  }
+	// If we didn't match yet, try once more so that we will match
+	// a symlink to a relative path such as "Europe/London"
+	// or symlink to an absolute path such as "/Europe/London".
+	// Both cases seem unlikely because it would require either
+	// /etc/Europe or /Europe to be a directory (or a symlink to one)
+	// containing the TZif files, but it's theoretically possible.
+	// If pos==npos then pos+1 wraps to 0 and we use the whole string.
+	// If pos==0 then substr(1) discards the leading slash.
+	if (auto tz = do_locate_zone(this->zones, this->links,
+				     str.substr(pos + 1)))
+	  return tz;
       }
 #endif
     // Otherwise, look for a file naming the time zone.
@@ -1792,7 +1855,12 @@ namespace std::chrono
 		  return tz;
 	      }
       }
-#else
+
+    // FIXME: For DragonFly BSD /etc/localtime is a copy of one of the
+    // zone files in /usr/share/zoneinfo so we need to compare its contents
+    // to each one until we find a match.
+
+#else // _AIX
     // AIX stores current zone in $TZ in /etc/environment but the value
     // is typically a POSIX time zone name, not IANA zone.
     // https://developer.ibm.com/articles/au-aix-posix/

From redi@gcc.gnu.org  Thu May 14 10:09:54 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:09:54 +0000 (GMT)
Subject: [gcc r14-12592] libstdc++: Make CTAD ignore tuple(const Types&...)
 constructor [PR121771]
Message-ID: <20260514100954.0FFE14C31811@sourceware.org>

https://gcc.gnu.org/g:9aa39fde1b25cfba86c48893936115411c32c117

commit r14-12592-g9aa39fde1b25cfba86c48893936115411c32c117
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Feb 11 22:39:52 2026 +0000

    libstdc++: Make CTAD ignore tuple(const Types&...) constructor [PR121771]
    
    This is similar to the r16-3536-g0bb0d1d2880d56 change for std::pair, so
    that CTAD ignores the tuple(const Types&...) constructor and only uses
    the tuple(Types...) -> tuple<Types...> deduction guide. This ensures
    that the deduced type comes from the decayed argument types.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Ville Voutilainen <ville.voutilainen@gmail.com>
    (cherry picked from commit 7bafcc36172b572296731df951df4b0caa019b95)

Diff:
---
 libstdc++-v3/include/std/tuple                     | 12 +++---
 .../testsuite/20_util/tuple/cons/121771.cc         | 45 ++++++++++++++++++++++
 2 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index c46665056818..7e1873a67302 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -972,7 +972,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // Defined as a template to work around PR libstdc++/116440.
       template<typename = void>
 	constexpr explicit(!__convertible<const _Elements&...>())
-	tuple(const _Elements&... __elements)
+	tuple(const type_identity_t<_Elements>&... __elements)
 	noexcept(__nothrow_constructible<const _Elements&...>())
 	requires (__constructible<const _Elements&...>())
 	: _Inherited(__elements...)
@@ -1164,7 +1164,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Alloc>
 	constexpr explicit(!__convertible<const _Elements&...>())
 	tuple(allocator_arg_t __tag, const _Alloc& __a,
-	      const _Elements&... __elements)
+	      const type_identity_t<_Elements>&... __elements)
 	requires (__constructible<const _Elements&...>())
 	: _Inherited(__tag, __a, __elements...)
 	{ }
@@ -1473,14 +1473,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
 	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
 	constexpr
-	tuple(const _Elements&... __elements)
+	tuple(const __type_identity_t<_Elements>&... __elements)
 	noexcept(__nothrow_constructible<const _Elements&...>())
 	: _Inherited(__elements...) { }
 
       template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
 	       _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
 	explicit constexpr
-	tuple(const _Elements&... __elements)
+	tuple(const __type_identity_t<_Elements>&... __elements)
 	noexcept(__nothrow_constructible<const _Elements&...>())
 	: _Inherited(__elements...) { }
 
@@ -1565,7 +1565,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
 	_GLIBCXX20_CONSTEXPR
 	tuple(allocator_arg_t __tag, const _Alloc& __a,
-	      const _Elements&... __elements)
+	      const __type_identity_t<_Elements>&... __elements)
 	: _Inherited(__tag, __a, __elements...) { }
 
       template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
@@ -1573,7 +1573,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_GLIBCXX20_CONSTEXPR
 	explicit
 	tuple(allocator_arg_t __tag, const _Alloc& __a,
-	      const _Elements&... __elements)
+	      const __type_identity_t<_Elements>&... __elements)
 	: _Inherited(__tag, __a, __elements...) { }
 
       template<typename _Alloc, typename... _UElements,
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
new file mode 100644
index 000000000000..40bb37aced4f
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
@@ -0,0 +1,45 @@
+// { dg-do compile { target c++17 } }
+
+// Bug 121771 - std::tuple CTAD fails for lvalue reference to function type
+
+#include <tuple>
+#include <memory>
+
+void func();
+
+std::tuple t(func);
+std::tuple<void (*)()>& r = t;
+
+struct Explicit {
+    Explicit();
+    explicit Explicit(const Explicit&);
+} ex;
+
+std::tuple t2(func, 1);
+std::tuple<void (*)(), int>& r2 = t2;
+
+std::tuple t2x(ex, func);
+std::tuple<Explicit, void (*)()>& r2x = t2x;
+
+std::tuple t3(1, func, 3);
+std::tuple<int, void (*)(), int>& r3 = t3;
+
+std::tuple t3x(ex, 2, func);
+std::tuple<Explicit, int, void (*)()>& r3x = t3x;
+
+std::allocator<int> alloc;
+
+std::tuple ta(std::allocator_arg, alloc, func);
+std::tuple<void (*)()>& ra = ta;
+
+std::tuple ta2(std::allocator_arg, alloc, func, 1);
+std::tuple<void (*)(), int>& ra2 = ta2;
+
+std::tuple ta2x(std::allocator_arg, alloc, ex, func);
+std::tuple<Explicit, void (*)()>& ra2x = ta2x;
+
+std::tuple ta3(std::allocator_arg, alloc, 1, func, 3);
+std::tuple<int, void (*)(), int>& ra3 = ta3;
+
+std::tuple ta3x(std::allocator_arg, alloc, ex, 2, func);
+std::tuple<Explicit, int, void (*)()>& ra3x = ta3x;

From redi@gcc.gnu.org  Thu May 14 10:10:04 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:04 +0000 (GMT)
Subject: [gcc r14-12593] libstdc++: Fix std::format output for
 std::chrono::zoned_time
Message-ID: <20260514101004.594314C3181D@sourceware.org>

https://gcc.gnu.org/g:328c4b1d486741b2a6ca7a8697b10b7fb54b81d3

commit r14-12593-g328c4b1d486741b2a6ca7a8697b10b7fb54b81d3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jul 26 18:11:26 2024 +0100

    libstdc++: Fix std::format output for std::chrono::zoned_time
    
    When formatting a chrono::zoned_time with an empty chrono-specs, we were
    only formatting its _M_time member, but the ostream insertion operator
    uses the format "{:L%F %T %Z}" which includes the time zone
    abbreviation. The %Z should also be used when formatting with an empty
    chrono-specs.
    
    This commit makes _M_format_to_ostream handle __local_time_fmt
    specializations directly, rather than calling itself recursively to
    format the _M_time member. We need to be able to customize the output of
    _M_format_to_ostream for __local_time_fmt, because we use that type for
    gps_time and tai_time as well as for zoned_time and __local_time_fmt.
    When formatting gps_time and tai_time we don't want to include the time
    zone abbreviation in the "{}" output, but for zoned_time we do want to.
    We can reuse the __is_neg flag passed to _M_format_to_ostream (via
    _M_format) to say that we want the time zone abbreviation.  Currently
    the __is_neg flag is only used for duration specializations, so it's
    available for __local_time_fmt to use.
    
    In addition to fixing the zoned_time output to use %Z, this commit also
    changes the __local_time_fmt output to use %Z. Previously it didn't use
    it, just like zoned_time.  The standard doesn't actually say how to
    format local-time-format-t for an empty chrono-specs, but this behaviour
    seems sensible and is what I'm proposing as part of LWG 4124.
    
    While testing this I noticed that some chrono types were not being
    tested with empty chrono-specs, so this adds more tests. I also noticed
    that std/time/clock/local/io.cc was testing tai_time instead of
    local_time, which was completely wrong. That's fixed now too.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono_io.h (__local_fmt_t): Remove unused
            declaration.
            (__formatter_chrono::_M_format_to_ostream): Add explicit
            handling for specializations of __local_time_fmt, including the
            time zone abbreviation in the output if __is_neg is true.
            (formatter<chrono::tai_time<D>>::format): Add comment.
            (formatter<chrono::gps_time<D>>::format): Likewise.
            (formatter<chrono::__detail::__local_time_fmt::format): Call
            _M_format with true for the __is_neg flag.
            * testsuite/std/time/clock/gps/io.cc: Remove unused variable.
            * testsuite/std/time/clock/local/io.cc: Fix test error that
            checked tai_time instead of local_time. Add tests for
            local-time-format-t formatting.
            * testsuite/std/time/clock/system/io.cc: Check empty
            chrono-specs.
            * testsuite/std/time/clock/tai/io.cc: Likewise.
            * testsuite/std/time/zoned_time/io.cc: Likewise.
    
    (cherry picked from commit 8f05ada7dfb9a40d4333a2aa9ccb5ddcdf8e2b06)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h              | 46 ++++++++++---
 libstdc++-v3/testsuite/std/time/clock/gps/io.cc    |  1 -
 libstdc++-v3/testsuite/std/time/clock/local/io.cc  | 78 ++++++++++++++++++++--
 libstdc++-v3/testsuite/std/time/clock/system/io.cc |  8 ++-
 libstdc++-v3/testsuite/std/time/clock/tai/io.cc    |  3 +
 libstdc++-v3/testsuite/std/time/zoned_time/io.cc   | 11 +++
 6 files changed, 130 insertions(+), 17 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 226edb6e7230..0acfa2d5ecec 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -156,6 +156,7 @@ namespace __detail
 namespace __detail
 {
   // An unspecified type returned by `chrono::local_time_format`.
+  // This is called `local-time-format-t` in the standard.
   template<typename _Duration>
     struct __local_time_fmt
     {
@@ -163,8 +164,6 @@ namespace __detail
       const string* _M_abbrev;
       const seconds* _M_offset_sec;
     };
-
-  struct __local_fmt_t;
 }
 /// @endcond
 
@@ -695,13 +694,34 @@ namespace __format
 	  using ::std::chrono::__detail::__utc_leap_second;
 	  using ::std::chrono::__detail::__local_time_fmt;
 
+	  basic_ostringstream<_CharT> __os;
+	  __os.imbue(_M_locale(__fc));
+
 	  if constexpr (__is_specialization_of<_Tp, __local_time_fmt>)
-	    return _M_format_to_ostream(__t._M_time, __fc, false);
-	  else
 	    {
-	      basic_ostringstream<_CharT> __os;
-	      __os.imbue(_M_locale(__fc));
+	      // Format as "{:L%F %T}"
+	      auto __days = chrono::floor<chrono::days>(__t._M_time);
+	      __os << chrono::year_month_day(__days) << ' '
+		   << chrono::hh_mm_ss(__t._M_time - __days);
 
+	      // For __local_time_fmt the __is_neg flags says whether to
+	      // append " %Z" to the result.
+	      if (__is_neg)
+		{
+		  if (!__t._M_abbrev) [[unlikely]]
+		    __format::__no_timezone_available();
+		  else if constexpr (is_same_v<_CharT, char>)
+		    __os << ' ' << *__t._M_abbrev;
+		  else
+		    {
+		      __os << L' ';
+		      for (char __c : *__t._M_abbrev)
+			__os << __c;
+		    }
+		}
+	    }
+	  else
+	    {
 	      if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
 		__os << __t._M_date << ' ' << __t._M_time;
 	      else if constexpr (chrono::__is_time_point_v<_Tp>)
@@ -727,11 +747,11 @@ namespace __format
 		      __os << _S_plus_minus[1];
 		  __os << __t;
 		}
-
-	      auto __str = std::move(__os).str();
-	      return __format::__write_padded_as_spec(__str, __str.size(),
-						      __fc, _M_spec);
 	    }
+
+	  auto __str = std::move(__os).str();
+	  return __format::__write_padded_as_spec(__str, __str.size(),
+						  __fc, _M_spec);
 	}
 
       static constexpr const _CharT* _S_chars
@@ -2022,6 +2042,8 @@ namespace __format
 	       _FormatContext& __fc) const
 	{
 	  // Convert to __local_time_fmt with abbrev "TAI" and offset 0s.
+	  // We use __local_time_fmt and not sys_time (as the standard implies)
+	  // because %Z for sys_time would print "UTC" and we want "TAI" here.
 
 	  // Offset is 1970y/January/1 - 1958y/January/1
 	  constexpr chrono::days __tai_offset = chrono::days(4383);
@@ -2052,6 +2074,8 @@ namespace __format
 	       _FormatContext& __fc) const
 	{
 	  // Convert to __local_time_fmt with abbrev "GPS" and offset 0s.
+	  // We use __local_time_fmt and not sys_time (as the standard implies)
+	  // because %Z for sys_time would print "UTC" and we want "GPS" here.
 
 	  // Offset is 1980y/January/Sunday[1] - 1970y/January/1
 	  constexpr chrono::days __gps_offset = chrono::days(3657);
@@ -2118,7 +2142,7 @@ namespace __format
 	typename _FormatContext::iterator
 	format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
 	       _FormatContext& __ctx) const
-	{ return _M_f._M_format(__t, __ctx); }
+	{ return _M_f._M_format(__t, __ctx, /* use %Z for {} */ true); }
 
     private:
       __format::__formatter_chrono<_CharT> _M_f;
diff --git a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
index d5405f61520a..e995d9f3d782 100644
--- a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
@@ -22,7 +22,6 @@ test_ostream()
   ss << gt;
   VERIFY( ss.str() == "2000-01-01 00:00:13" );
 
-  gps_time<duration<float>> gtf = gt;
   ss.str("");
   ss.clear();
   ss << (gps_time<duration<long double>>(gt) + 20ms);
diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index bb682cd40cfc..b6e8b355bd04 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -7,15 +7,85 @@
 
 void
 test_ostream()
+{
+  using namespace std::chrono;
+
+  auto lt = local_time<seconds>(1722198122s);
+
+  std::ostringstream ss;
+  ss << lt;
+  auto s = ss.str();
+  ss.str("");
+  ss.clear();
+  ss << sys_time<seconds>{lt.time_since_epoch()};
+  auto s2 = ss.str();
+  VERIFY( s == s2 );
+}
+
+void
+test_format()
 {
   using std::format;
   using namespace std::chrono;
 
-  auto st = sys_days{2000y/January/1};
-  auto tt = clock_cast<tai_clock>(st);
+  auto lt = local_seconds(1722198122s);
+
+#if __cpp_exceptions
+  auto args = std::make_format_args(lt);
+  try
+  {
+    (void) std::vformat("{:%Z}", args);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+  try
+  {
+    (void) std::vformat("{:%z}", args);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+#endif
+
+  auto s = format("{0:%F %T %a}", lt);
+  VERIFY( s == "2024-07-28 20:22:02 Sun" );
+
+  s = format("{}", lt);
+  VERIFY( s == "2024-07-28 20:22:02" );
 
-  auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, tt);
-  VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI" );
+  // Test formatting for chrono::local_time_format and local-time-format-t too:
+  auto ltf = local_time_format(lt);
+  s = std::format("{:%F %T %a %b}", ltf);
+  VERIFY( s == "2024-07-28 20:22:02 Sun Jul" );
+#if __cpp_exceptions
+  try
+  {
+    (void) std::format("{:%Z}", ltf);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+  try
+  {
+    (void) std::format("{:%z}", ltf);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+#endif
+  std::string abbrev = "FOO";
+  seconds off = -3600s;
+  ltf = local_time_format(lt, &abbrev, &off);
+  s = std::format("{}", ltf);
+  VERIFY( s == "2024-07-28 20:22:02 FOO" );
+  s = std::format("{:%Z %T %F %z %Ez}", ltf);
+  __builtin_puts(s.c_str());
+  VERIFY( s == "FOO 20:22:02 2024-07-28 -0100 -01:00" );
 }
 
 void
diff --git a/libstdc++-v3/testsuite/std/time/clock/system/io.cc b/libstdc++-v3/testsuite/std/time/clock/system/io.cc
index 2cc116156f2e..5c223a979c23 100644
--- a/libstdc++-v3/testsuite/std/time/clock/system/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/system/io.cc
@@ -64,13 +64,19 @@ test_format()
 		 " | 25.708 | 17:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 		 " | 17:26:25 | 22 | 2022 | +0000 | UTC" );
 
+  auto st = std::chrono::time_point_cast<std::chrono::seconds>(t);
   auto loc = std::locale::classic();
   auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
 			       " %Ow %OW %Ex %EX %Oy %Ey %EY %Ez %Oz}", t);
   s = std::format("{:%c %C %d %e %H %I %m %M %S %u %U"
 		  " %w %W %x %X %y %y %Y +00:00 +00:00}",
-		  std::chrono::time_point_cast<std::chrono::seconds>(t));
+		  st);
   VERIFY( smod == s );
+
+  s = std::format("{}", t);
+  VERIFY( s == "2022-12-19 17:26:25.708" );
+  s = std::format("{0:} {0:=<21}", st);
+  VERIFY( s == "2022-12-19 17:26:25 2022-12-19 17:26:25==" );
 }
 
 void
diff --git a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
index 0fd61c0e612f..dc0c3d264777 100644
--- a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
@@ -16,6 +16,9 @@ test_ostream()
 
   auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, tt);
   VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI" );
+
+  s = std::format("{:=>21}", tt);
+  VERIFY( s == "==2000-01-01 00:00:32" );
 }
 
 void
diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
index 376b2734f192..ee3b9edba810 100644
--- a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
+++ b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
@@ -37,6 +37,7 @@ test_format()
 	       " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 	       " | 12:26:25 | 22 | 2022 | -0500 | EST" );
 
+#ifdef _GLIBCXX_USE_WCHAR_T
   std::wstring ws = std::format(L"{:%a | %A | %b | %B | %c"
 				 " | %C | %d | %D | %e | %F | %g | %G | %h"
 				 " | %H | %I | %j | %m | %M | %p | %r | %R"
@@ -47,6 +48,7 @@ test_format()
 		 " | 12 | 12 | 353 | 12 | 26 | PM | 12:26:25 PM | 12:26"
 		 " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 		 " | 12:26:25 | 22 | 2022 | -0500 | EST" );
+#endif
 
   auto loc = std::locale::classic();
   auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
@@ -55,6 +57,15 @@ test_format()
 		  " %w %W %x %X %y %y %Y -05:00 -05:00}",
 		  zoned_time<seconds>(zone, time_point_cast<seconds>(t)));
   VERIFY( smod == s );
+
+  s = std::format("{}", zt);
+  VERIFY( s == "2022-12-19 12:26:25.708 EST" );
+  s = std::format("{1:=>30}", 1, zt);
+  VERIFY( s == "===2022-12-19 12:26:25.708 EST" );
+#ifdef _GLIBCXX_USE_WCHAR_T
+  ws = std::format(L"{:+^34}", zoned_time<microseconds>(zone, t));
+  VERIFY( ws == L"++2022-12-19 12:26:25.708000 EST++" );
+#endif
 }
 
 int main()

From redi@gcc.gnu.org  Thu May 14 10:10:09 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:09 +0000 (GMT)
Subject: [gcc r14-12594] libstdc++: Fix std::chrono::parse for TAI and GPS
 clocks
Message-ID: <20260514101009.856934B196EE@sourceware.org>

https://gcc.gnu.org/g:1d214d05ee082ec39083e375b66d0658b51e8097

commit r14-12594-g1d214d05ee082ec39083e375b66d0658b51e8097
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Sep 4 21:23:20 2024 +0100

    libstdc++: Fix std::chrono::parse for TAI and GPS clocks
    
    Howard Hinnant brought to my attention that chrono::parse was giving
    incorrect values for chrono::gps_clock, because it was applying the
    offset between the GPS clock and UTC. That's incorrect, because when we
    parse HH::MM::SS as a GPS time, the result should be that time, not
    HH:MM:SS+offset.
    
    The problem was that I was using clock_cast to convert from sys_time to
    utc_time and then using clock_time again to convert to gps_time. The
    solution is to convert the parsed time into an duration representing the
    time since the GPS clock's epoch, then construct a gps_time directly
    from that duration.
    
    As well as adding tests for correct round tripping of times for all
    clocks, this also adds some more tests for correct results with
    std::format.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono_io.h (from_stream): Fix conversions in
            overloads for gps_time and tai_time.
            * testsuite/std/time/clock/file/io.cc: Test round tripping using
            chrono::parse. Add additional std::format tests.
            * testsuite/std/time/clock/gps/io.cc: Likewise.
            * testsuite/std/time/clock/local/io.cc: Likewise.
            * testsuite/std/time/clock/tai/io.cc: Likewise.
            * testsuite/std/time/clock/utc/io.cc: Likewise.
    
    (cherry picked from commit 222ff1949a70997173aefe2e32d144661473d86b)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h             | 12 ++++---
 libstdc++-v3/testsuite/std/time/clock/file/io.cc  | 23 +++++++++++++
 libstdc++-v3/testsuite/std/time/clock/gps/io.cc   | 22 ++++++++++++-
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 17 ++++++++++
 libstdc++-v3/testsuite/std/time/clock/tai/io.cc   | 39 ++++++++++++++++++++++-
 libstdc++-v3/testsuite/std/time/clock/utc/io.cc   | 22 +++++++++++++
 6 files changed, 128 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 0acfa2d5ecec..0fc5013e0daa 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -2861,8 +2861,9 @@ namespace __detail
 	    __is.setstate(ios_base::failbit);
 	  else
 	    {
-	      auto __st = __p._M_sys_days + __p._M_time - *__offset;
-	      auto __tt = tai_clock::from_utc(utc_clock::from_sys(__st));
+	      constexpr sys_days __epoch(-days(4383)); // 1958y/1/1
+	      auto __d = __p._M_sys_days - __epoch + __p._M_time - *__offset;
+	      tai_time<common_type_t<_Duration, seconds>> __tt(__d);
 	      __tp = chrono::time_point_cast<_Duration>(__tt);
 	    }
 	}
@@ -2899,9 +2900,10 @@ namespace __detail
 	    __is.setstate(ios_base::failbit);
 	  else
 	    {
-	      auto __st = __p._M_sys_days + __p._M_time - *__offset;
-	      auto __tt = gps_clock::from_utc(utc_clock::from_sys(__st));
-	      __tp = chrono::time_point_cast<_Duration>(__tt);
+	      constexpr sys_days __epoch(days(3657)); // 1980y/1/Sunday[1]
+	      auto __d = __p._M_sys_days - __epoch + __p._M_time - *__offset;
+	      gps_time<common_type_t<_Duration, seconds>> __gt(__d);
+	      __tp = chrono::time_point_cast<_Duration>(__gt);
 	    }
 	}
       return __is;
diff --git a/libstdc++-v3/testsuite/std/time/clock/file/io.cc b/libstdc++-v3/testsuite/std/time/clock/file/io.cc
index 9ab9f10ec778..9da5019ab78b 100644
--- a/libstdc++-v3/testsuite/std/time/clock/file/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/file/io.cc
@@ -32,6 +32,14 @@ test_format()
   auto ft = clock_cast<file_clock>(sys_days(2024y/January/21)) + 0ms + 2.5s;
   s = std::format("{}", ft);
   VERIFY( s == "2024-01-21 00:00:02.500");
+
+  const std::chrono::file_time<std::chrono::seconds> t0{};
+  s = std::format("{:%Z %z %Ez %Oz}", t0);
+  VERIFY( s == "UTC +0000 +00:00 +00:00" );
+
+  s = std::format("{}", t0);
+  // chrono::file_clock epoch is unspecified, so this is libstdc++-specific.
+  VERIFY( s == "2174-01-01 00:00:00" );
 }
 
 void
@@ -49,6 +57,21 @@ test_parse()
   VERIFY( tp == clock_cast<file_clock>(expected) );
   VERIFY( abbrev == "BST" );
   VERIFY( offset == 60min );
+
+  // Test round trip
+  std::stringstream ss;
+  ss << clock_cast<file_clock>(expected) << " 0123456";
+  VERIFY( ss >> parse("%F %T %z%Z", tp, abbrev, offset) );
+  VERIFY( ss.eof() );
+  VERIFY( (tp + offset) == clock_cast<file_clock>(expected) );
+  VERIFY( abbrev == "456" );
+  VERIFY( offset == (1h + 23min) );
+
+  ss.str("");
+  ss.clear();
+  ss << file_time<seconds>{};
+  VERIFY( ss >> parse("%F %T", tp) );
+  VERIFY( tp.time_since_epoch() == 0s );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
index e995d9f3d782..c012520080ae 100644
--- a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
@@ -42,13 +42,19 @@ test_format()
   // PR libstdc++/113500
   s = std::format("{}", gt + 150ms + 10.5s);
   VERIFY( s == "2000-01-01 00:00:23.650" );
+
+  s = std::format("{:%Z %z %Ez %Oz}", gt);
+  VERIFY( s == "GPS +0000 +00:00 +00:00" );
+
+  s = std::format("{}", gps_seconds{});
+  VERIFY( s == "1980-01-06 00:00:00" );
 }
 
 void
 test_parse()
 {
   using namespace std::chrono;
-  const sys_seconds expected = sys_days(2023y/August/9) + 20h + 44min + 3s;
+  const sys_seconds expected = sys_days(2023y/August/9) + 20h + 43min + 45s;
   gps_seconds tp;
 
   minutes offset;
@@ -59,6 +65,20 @@ test_parse()
   VERIFY( tp == clock_cast<gps_clock>(expected) );
   VERIFY( abbrev == "BST" );
   VERIFY( offset == 60min );
+
+  // Test round trip
+  std::stringstream ss;
+  ss << clock_cast<gps_clock>(expected) << " GPS -1234";
+  VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+  VERIFY( ! ss.eof() );
+  VERIFY( (tp + offset) == clock_cast<gps_clock>(expected) );
+  VERIFY( abbrev == "GPS" );
+  VERIFY( offset == -(12h + 34min) );
+
+  ss.str("");
+  ss << gps_seconds{};
+  VERIFY( ss >> parse("%F %T", tp) );
+  VERIFY( tp.time_since_epoch() == 0s );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index b6e8b355bd04..b4d562f36d12 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -86,6 +86,9 @@ test_format()
   s = std::format("{:%Z %T %F %z %Ez}", ltf);
   __builtin_puts(s.c_str());
   VERIFY( s == "FOO 20:22:02 2024-07-28 -0100 -01:00" );
+
+  s = std::format("{}", local_seconds{});
+  VERIFY( s == "1970-01-01 00:00:00" );
 }
 
 void
@@ -103,6 +106,20 @@ test_parse()
   VERIFY( tp == local_seconds(expected.time_since_epoch()) );
   VERIFY( abbrev == "BST" );
   VERIFY( offset == 60min );
+
+  // Test round trip
+  std::stringstream ss;
+  ss << local_seconds{expected.time_since_epoch()} << " X 0123";
+  VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+  VERIFY( ! ss.eof() );
+  VERIFY( tp == local_seconds{expected.time_since_epoch()} );
+  VERIFY( abbrev == "X" );
+  VERIFY( offset == (1h + 23min) );
+
+  ss.str("");
+  ss << local_seconds{};
+  VERIFY( ss >> parse("%F %T", tp) );
+  VERIFY( tp.time_since_epoch() == 0s );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
index dc0c3d264777..5634e41ff02e 100644
--- a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
@@ -21,6 +21,28 @@ test_ostream()
   VERIFY( s == "==2000-01-01 00:00:32" );
 }
 
+void
+test_format()
+{
+  using std::format;
+  using namespace std::chrono;
+
+  auto st = sys_days{2000y/January/1};
+  auto tt = clock_cast<tai_clock>(st);
+  auto s = std::format("{}", tt);
+  VERIFY( s == "2000-01-01 00:00:32" );
+
+  // PR libstdc++/113500
+  s = std::format("{}", tt + 150ms);
+  VERIFY( s == "2000-01-01 00:00:32.150" );
+
+  s = std::format("{:%Z %z %Ez %Oz}", tt);
+  VERIFY( s == "TAI +0000 +00:00 +00:00" );
+
+  s = std::format("{}", tai_seconds{});
+  VERIFY( s == "1958-01-01 00:00:00" );
+}
+
 void
 test_parse()
 {
@@ -30,16 +52,31 @@ test_parse()
 
   minutes offset;
   std::string abbrev;
-  std::istringstream is("8/9/23 214403 +1 BST#");
+  std::istringstream is("8/9/23 214440 +1 BST#");
   VERIFY( is >> parse("%D %2H%2M%2S %Oz %Z", tp, abbrev, offset) );
   VERIFY( ! is.eof() );
   VERIFY( tp == clock_cast<tai_clock>(expected) );
   VERIFY( abbrev == "BST" );
   VERIFY( offset == 60min );
+
+  // Test round trip
+  std::stringstream ss;
+  ss << clock_cast<tai_clock>(expected) << " TAI 0123";
+  VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+  VERIFY( ! ss.eof() );
+  VERIFY( (tp + offset) == clock_cast<tai_clock>(expected) );
+  VERIFY( abbrev == "TAI" );
+  VERIFY( offset == (1h + 23min) );
+
+  ss.str("");
+  ss << tai_seconds{};
+  VERIFY( ss >> parse("%F %T", tp) );
+  VERIFY( tp.time_since_epoch() == 0s );
 }
 
 int main()
 {
   test_ostream();
+  test_format();
   test_parse();
 }
diff --git a/libstdc++-v3/testsuite/std/time/clock/utc/io.cc b/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
index 55c53dc4057f..ed1daa7a8554 100644
--- a/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
@@ -116,6 +116,13 @@ test_format()
   // PR libstdc++/113500
   s = std::format("{}", leap + 100ms + 2.5s);
   VERIFY( s == "2017-01-01 00:00:01.600");
+
+  std::chrono::utc_seconds t0{};
+  s = std::format("{:%Z %z %Ez %Oz}", t0);
+  VERIFY( s == "UTC +0000 +00:00 +00:00" );
+
+  s = std::format("{}", t0);
+  VERIFY( s == "1970-01-01 00:00:00" );
 }
 
 void
@@ -146,6 +153,21 @@ test_parse()
   VERIFY( is >> parse("%G-W%V-%u %T", tp) );
   VERIFY( ! is.eof() );
   VERIFY( tp == clock_cast<utc_clock>(expected) );
+
+  // Test round trip
+  std::stringstream ss;
+  ss << clock_cast<utc_clock>(expected) << " 0012 UTC";
+  VERIFY( ss >> parse("%F %T %z %Z", tp, abbrev, offset) );
+  VERIFY( ss.eof() );
+  VERIFY( (tp + offset) == clock_cast<utc_clock>(expected) );
+  VERIFY( abbrev == "UTC" );
+  VERIFY( offset == 12min );
+
+  ss.str("");
+  ss.clear();
+  ss << utc_seconds{};
+  VERIFY( ss >> parse("%F %T", tp) );
+  VERIFY( tp.time_since_epoch() == 0s );
 }
 
 int main()

From redi@gcc.gnu.org  Thu May 14 10:10:14 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:14 +0000 (GMT)
Subject: [gcc r14-12595] libstdc++: Fix std::format of chrono::local_days with
 {} [PR120293]
Message-ID: <20260514101014.A8A0C4BB8F42@sourceware.org>

https://gcc.gnu.org/g:06ac4cff18a176cc25e485534b4954f26ad0a918

commit r14-12595-g06ac4cff18a176cc25e485534b4954f26ad0a918
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 15 19:32:01 2025 +0100

    libstdc++: Fix std::format of chrono::local_days with {} [PR120293]
    
    Formatting of chrono::local_days with an empty chrono-specs should be
    equivalent to inserting it into an ostream, which should use the
    overload for inserting chrono::sys_days into an ostream. The
    implementation of empty chrono-specs in _M_format_to_ostream takes some
    short cuts, and that wasn't being done correctly for chrono::local_days.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120293
            * include/bits/chrono_io.h (_M_format_to_ostream): Add special
            case for local_time convertible to local_days.
            * testsuite/std/time/clock/local/io.cc: Check formatting of
            chrono::local_days.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 1ed7585bf60ba9940ca5dc6d2c72dba86eea7b4d)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h             | 3 +++
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 0fc5013e0daa..6b3f361f8294 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -733,6 +733,9 @@ namespace __format
 		  // sys_time with period greater or equal to days:
 		  if constexpr (is_convertible_v<_Tp, chrono::sys_days>)
 		    __os << _S_date(__t);
+		  // Or a local_time with period greater or equal to days:
+		  else if constexpr (is_convertible_v<_Tp, chrono::local_days>)
+		    __os << _S_date(__t);
 		  else // Or it's formatted as "{:L%F %T}":
 		    {
 		      auto __days = chrono::floor<chrono::days>(__t);
diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index b4d562f36d12..67818e876497 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -89,6 +89,9 @@ test_format()
 
   s = std::format("{}", local_seconds{});
   VERIFY( s == "1970-01-01 00:00:00" );
+
+  s = std::format("{}", local_days{}); // PR libstdc++/120293
+  VERIFY( s == "1970-01-01" );
 }
 
 void

From redi@gcc.gnu.org  Thu May 14 10:10:24 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:24 +0000 (GMT)
Subject: [gcc r14-12596] libstdc++: Add call to test_format in
 std/time/clock/local/io.cc
Message-ID: <20260514101024.F16004C31820@sourceware.org>

https://gcc.gnu.org/g:541b482a5fdb5dbd3110b69b60c6403caa84035b

commit r14-12596-g541b482a5fdb5dbd3110b69b60c6403caa84035b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 13 20:48:42 2026 +0100

    libstdc++: Add call to test_format in std/time/clock/local/io.cc
    
    This function was defined but not being called at runtime.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/time/clock/local/io.cc: Call test_format.

Diff:
---
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index 67818e876497..61c64f3262c4 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -128,5 +128,6 @@ test_parse()
 int main()
 {
   test_ostream();
+  test_format();
   test_parse();
 }

From redi@gcc.gnu.org  Thu May 14 10:10:30 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:30 +0000 (GMT)
Subject: [gcc r14-12597] libstdc++: Fix dangling pointer in
 fs::path::operator+=(*this) [PR120029]
Message-ID: <20260514101030.23C334C31830@sourceware.org>

https://gcc.gnu.org/g:ec164d15273723faa85ce562bccdcbd9537b242d

commit r14-12597-gec164d15273723faa85ce562bccdcbd9537b242d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 30 17:31:01 2025 +0100

    libstdc++: Fix dangling pointer in fs::path::operator+=(*this) [PR120029]
    
    When concatenating a path we reallocate the left operand's storage to
    make room for the new components being added. When the two operands are
    the same object, or the right operand is one of the components of the
    left operand, the reallocation invalidates the pointers that refer
    into the right operand's storage.
    
    The solution in this commit is to detect these aliasing cases and just
    do the concatenation in terms of the contained string, as that code
    already handles the case where the string aliases the path. The standard
    specifies the concatenation in terms of the native() string, so all this
    change does is disable the optimized implementation of concatenation for
    path objects which attempts to avoid re-parsing the path from the
    concatenated string.
    
    The potential loss of performance for this case isn't likely to be an
    issue, because concatenating a path with itself (or one of its existing
    components) probably isn't a common use case.
    
    The Filesystem TS implementation doesn't have the optimized form of
    concatenation and always does it in terms of the native string and
    reparsing the whole thing, so doesn't have this bug. A test is added to
    confirm that anyway (that test has some slightly different results due
    to different behaviour for trailing slashes and implicit "." filenames
    in the TS spec).
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120029
            * src/c++17/fs_path.cc (path::operator+=(const path&)): Handle
            parameters that alias the path or one of its components.
            * testsuite/27_io/filesystem/path/concat/120029.cc: New test.
            * testsuite/experimental/filesystem/path/concat/120029.cc: New
            test.
    
    (cherry picked from commit a067cbcdcc5f599a2b7d607e89674533d23c652d)

Diff:
---
 libstdc++-v3/src/c++17/fs_path.cc                  | 10 +++
 .../27_io/filesystem/path/concat/120029.cc         | 72 +++++++++++++++++++++
 .../experimental/filesystem/path/concat/120029.cc  | 74 ++++++++++++++++++++++
 3 files changed, 156 insertions(+)

diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc
index d33b8d966638..857887ec58d8 100644
--- a/libstdc++-v3/src/c++17/fs_path.cc
+++ b/libstdc++-v3/src/c++17/fs_path.cc
@@ -880,6 +880,16 @@ path::operator+=(const path& p)
       return *this;
     }
 
+  // Handle p += p which would otherwise access dangling pointers after
+  // reallocating _M_cmpts and _M_pathname.
+  if (&p == this) [[unlikely]]
+    return *this += p.native();
+  // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
+  if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
+    for (const path& cmpt : *this)
+      if (&cmpt == &p) [[unlikely]]
+	return *this += p.native();
+
 #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
   if (_M_type() == _Type::_Root_name
       || (_M_type() == _Type::_Filename && _M_pathname.size() == 1))
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
new file mode 100644
index 000000000000..5153d594b50f
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
@@ -0,0 +1,72 @@
+// { dg-do run { target c++17 } }
+
+// Bug libstdc++/120029
+// Dangling iterator usage in path::operator+=(const path& p) when this == p
+
+#include <filesystem>
+#include <testsuite_hooks.h>
+
+namespace fs = std::filesystem;
+
+void
+test_root_dir()
+{
+  fs::path p = "/";
+  p += p;
+  p += p;
+  VERIFY( p == "////" );
+  p += p.filename();
+  VERIFY( p == "////" );
+  p += *std::prev(p.end());
+  VERIFY( p == "////" );
+}
+
+void
+test_root_name()
+{
+  fs::path p = "C:/";
+  p += p;
+  p += p;
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += p.filename();
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += *std::prev(p.end());
+  VERIFY( p == "C:/C:/C:/C:/" );
+}
+
+void
+test_filename()
+{
+  fs::path p = "file";
+  p += p;
+  p += p;
+  VERIFY( p == "filefilefilefile" );
+  p += p.filename();
+  VERIFY( p == "filefilefilefilefilefilefilefile" );
+  p += *std::prev(p.end());
+  VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+}
+
+void
+test_multi()
+{
+  fs::path p = "/home/username/Documents/mu";
+  p += p;
+  p += p;
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+  p += p.filename();
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+  p += *std::prev(p.end());
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+  auto n = std::distance(p.begin(), p.end());
+  for (int i = 0; i < n; ++i)
+    p += *std::next(p.begin(), i);
+}
+
+int main()
+{
+  test_root_dir();
+  test_root_name();
+  test_filename();
+  test_multi();
+}
diff --git a/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc b/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
new file mode 100644
index 000000000000..209d96806c6a
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
@@ -0,0 +1,74 @@
+// { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" }
+// { dg-do run { target c++11 } }
+// { dg-require-filesystem-ts "" }
+
+// Bug libstdc++/120029
+// Dangling iterator usage in path::operator+=(const path& p) when this == p
+
+#include <experimental/filesystem>
+#include <testsuite_hooks.h>
+
+namespace fs = std::experimental::filesystem;
+
+void
+test_root_dir()
+{
+  fs::path p = "/";
+  p += p;
+  p += p;
+  VERIFY( p == "////" );
+  p += p.filename();
+  VERIFY( p == "////////" );
+  p += *std::prev(p.end());
+  VERIFY( p == "////////////////" );
+}
+
+void
+test_root_name()
+{
+  fs::path p = "C:/";
+  p += p;
+  p += p;
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += p.filename(); // For Filesystem TS the filename is "."
+  VERIFY( p == "C:/C:/C:/C:/." );
+  p += *std::prev(p.end());
+  VERIFY( p == "C:/C:/C:/C:/.." );
+}
+
+void
+test_filename()
+{
+  fs::path p = "file";
+  p += p;
+  p += p;
+  VERIFY( p == "filefilefilefile" );
+  p += p.filename();
+  VERIFY( p == "filefilefilefilefilefilefilefile" );
+  p += *std::prev(p.end());
+  VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+}
+
+void
+test_multi()
+{
+  fs::path p = "/home/username/Documents/mu";
+  p += p;
+  p += p;
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+  p += p.filename();
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+  p += *std::prev(p.end());
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+  auto n = std::distance(p.begin(), p.end());
+  for (int i = 0; i < n; ++i)
+    p += *std::next(p.begin(), i);
+}
+
+int main()
+{
+  test_root_dir();
+  test_root_name();
+  test_filename();
+  test_multi();
+}

From redi@gcc.gnu.org  Thu May 14 10:10:40 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:40 +0000 (GMT)
Subject: [gcc r14-12598] libstdc++: Optimize fs::path::operator+=(const path&)
 alias check
Message-ID: <20260514101040.6E8BB4BBCDEF@sourceware.org>

https://gcc.gnu.org/g:c1b4b71cfc958a622663ee5eb67a6acc5f9bb9b6

commit r14-12598-gc1b4b71cfc958a622663ee5eb67a6acc5f9bb9b6
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 17 15:58:10 2026 +0000

    libstdc++: Optimize fs::path::operator+=(const path&) alias check
    
    Instead of a loop that compares &p to the address of each path
    component, we can just do two pointer comparisons to see if &p is within
    the contiguous array of components.
    
    We don't need to make the same change to experimental::filesystem::path
    because as noted in r15-9709-gbeb0ffd36eedf0 the TS implementation
    doesn't attempt to optimize operator+= so doesn't care if the parameter
    aliases *this.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++17/fs_path.cc (path::operator+=): Use pointer
            comparison to detect aliasing instead of a loop.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 881b327773d3f366c2b638e3d07ef310b2a2dfe2)

Diff:
---
 libstdc++-v3/src/c++17/fs_path.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc
index 857887ec58d8..94793da64105 100644
--- a/libstdc++-v3/src/c++17/fs_path.cc
+++ b/libstdc++-v3/src/c++17/fs_path.cc
@@ -886,9 +886,11 @@ path::operator+=(const path& p)
     return *this += p.native();
   // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
   if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
-    for (const path& cmpt : *this)
-      if (&cmpt == &p) [[unlikely]]
+    {
+      const auto first = _M_cmpts.begin(), last = first + _M_cmpts.size();
+      if (!std::less<>()(&p, first) && std::less<>()(&p, last)) [[unlikely]]
 	return *this += p.native();
+    }
 
 #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
   if (_M_type() == _Type::_Root_name

From redi@gcc.gnu.org  Thu May 14 10:10:45 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:45 +0000 (GMT)
Subject: [gcc r14-12599] libstdc++: Add workaround for read(2) EINVAL on macOS
 and FreeBSD [PR102259]
Message-ID: <20260514101045.9C38D4C3180D@sourceware.org>

https://gcc.gnu.org/g:a276bd12e11faa2c6765b1641ba6416a46396b1e

commit r14-12599-ga276bd12e11faa2c6765b1641ba6416a46396b1e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Dec 6 17:41:01 2024 +0000

    libstdc++: Add workaround for read(2) EINVAL on macOS and FreeBSD [PR102259]
    
    On macOS and FreeBSD the read(2) system call can return EINVAL for large
    sizes, so limit the maximum that we try to read. The calling code in
    basic_filebuf::xsgetn will loop until it gets the size it wants, so we don't
    need to loop in basic_file::xsgetn, just limit the maximum size.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/102259
            * config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to
            _GLIBCXX_MAX_READ_SIZE if that macro is defined.
            * config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
            Define to INT_MAX-1.
            * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
            Likewise.
    
    (cherry picked from commit 4065bf7c2c61dd6eb19fdccbcda99000d8e44b7a)

Diff:
---
 libstdc++-v3/config/io/basic_file_stdio.cc      | 6 ++++++
 libstdc++-v3/config/os/bsd/darwin/os_defines.h  | 3 +++
 libstdc++-v3/config/os/bsd/freebsd/os_defines.h | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc
index 9b529490f089..95e6905b3adf 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.cc
+++ b/libstdc++-v3/config/io/basic_file_stdio.cc
@@ -338,6 +338,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     if (__ret == 0 && ferror(this->file()))
       __ret = -1;
 #else
+
+#ifdef _GLIBCXX_MAX_READ_SIZE
+    if (__builtin_expect(__n > _GLIBCXX_MAX_READ_SIZE, 0))
+      __n = _GLIBCXX_MAX_READ_SIZE;
+#endif
+
     do
       __ret = read(this->fd(), __s, __n);
     while (__ret == -1L && errno == EINTR);
diff --git a/libstdc++-v3/config/os/bsd/darwin/os_defines.h b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
index 6bc7930bdba0..a9cbdbb557bf 100644
--- a/libstdc++-v3/config/os/bsd/darwin/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
@@ -54,4 +54,7 @@
 // No support for referencing weak symbols without a definition.
 #define _GLIBCXX_USE_WEAK_REF 0
 
+// read(2) can return EINVAL for n >= INT_MAX.
+#define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+
 #endif
diff --git a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
index 6c931821329e..261a80c4e4ac 100644
--- a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
@@ -40,4 +40,7 @@
 #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
 #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
 
+// read(2) can return EINVAL for n >= INT_MAX.
+#define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+
 #endif

From redi@gcc.gnu.org  Thu May 14 10:10:55 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:10:55 +0000 (GMT)
Subject: [gcc r14-12600] libstdc++: Simplify std::_Destroy using 'if constexpr'
Message-ID: <20260514101055.E3CC54BB8F42@sourceware.org>

https://gcc.gnu.org/g:45c2c31b1f7d57df0b5d810b82345cf8d84b6ffc

commit r14-12600-g45c2c31b1f7d57df0b5d810b82345cf8d84b6ffc
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Nov 28 12:32:59 2024 +0000

    libstdc++: Simplify std::_Destroy using 'if constexpr'
    
    This is another place where we can use 'if constexpr' to replace
    dispatching to a specialized class template, improving compile times and
    avoiding a function call.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_construct.h (_Destroy(FwdIter, FwdIter)): Use
            'if constexpr' instead of dispatching to a member function of a
            class template.
            (_Destroy_n(FwdIter, Size)): Likewise.
            (_Destroy_aux, _Destroy_n_aux): Only define for C++98.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    (cherry picked from commit 1467409beb27a693e96994899f30e4db015b5c2c)

Diff:
---
 libstdc++-v3/include/bits/stl_construct.h | 33 +++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index dc08fb7ea33d..c5634b8ec13f 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -152,6 +152,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
     }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++17-extensions" // for if-constexpr
+
+#if __cplusplus < 201103L
   template<bool>
     struct _Destroy_aux
     {
@@ -171,6 +175,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
         static void
         __destroy(_ForwardIterator, _ForwardIterator) { }
     };
+#endif
 
   /**
    * Destroy a range of objects.  If the value_type of the object has
@@ -187,15 +192,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // A deleted destructor is trivial, this ensures we reject such types:
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
-#endif
+      if constexpr (!__has_trivial_destructor(_Value_type))
+	for (; __first != __last; ++__first)
+	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
-      if (std::__is_constant_evaluated())
-	return std::_Destroy_aux<false>::__destroy(__first, __last);
+      else if (std::__is_constant_evaluated())
+	for (; __first != __last; ++__first)
+	  std::destroy_at(std::__addressof(*__first));
 #endif
+#else
       std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy(__first, __last);
+#endif
     }
 
+#if __cplusplus < 201103L
   template<bool>
     struct _Destroy_n_aux
     {
@@ -220,6 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return __first;
 	}
     };
+#endif
 
   /**
    * Destroy a range of objects.  If the value_type of the object has
@@ -236,14 +248,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // A deleted destructor is trivial, this ensures we reject such types:
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
-#endif
+      if constexpr (!__has_trivial_destructor(_Value_type))
+	for (; __count > 0; (void)++__first, --__count)
+	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
-      if (std::__is_constant_evaluated())
-	return std::_Destroy_n_aux<false>::__destroy_n(__first, __count);
+      else if (std::__is_constant_evaluated())
+	for (; __count > 0; (void)++__first, --__count)
+	  std::destroy_at(std::__addressof(*__first));
 #endif
+      else
+	std::advance(__first, __count);
+      return __first;
+#else
       return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy_n(__first, __count);
+#endif
     }
+#pragma GCC diagnostic pop
 
 #if __glibcxx_raw_memory_algorithms // >= C++17
   template <typename _ForwardIterator>

From redi@gcc.gnu.org  Thu May 14 10:11:01 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:11:01 +0000 (GMT)
Subject: [gcc r14-12601] libstdc++: Improve diagnostics for ill-formed
 std::_Destroy and std::_Destroy_n [PR120390]
Message-ID: <20260514101101.160614B1973F@sourceware.org>

https://gcc.gnu.org/g:4ce65debeb87e150cffd8c15d6de2be659fc7c1c

commit r14-12601-g4ce65debeb87e150cffd8c15d6de2be659fc7c1c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 21 23:48:34 2025 +0100

    libstdc++: Improve diagnostics for ill-formed std::_Destroy and std::_Destroy_n [PR120390]
    
    By using std::is_trivially_destructible instead of the old
    __has_trivial_destructor built-in we no longer need the static_assert to
    deal with types with deleted destructors. All non-destructible types,
    including those with deleted destructors, will now give user-friendly
    diagnostics that clearly explain the problem.
    
    Also combine the _Destroy_aux and _Destroy_n_aux class templates used
    for C++98 into one, so that we perform fewer expensive class template
    instantiations.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120390
            * include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New
            static member function.
            (_Destroy_aux<true>::__destroy_n): Likewise.
            (_Destroy_n_aux): Remove.
            (_Destroy(ForwardIterator, ForwardIterator)): Remove
            static_assert. Use is_trivially_destructible instead of
            __has_trivial_destructor.
            (_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of
            _Destroy_n_aux::__destroy_n.
            * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
            Adjust dg-error strings. Move destroy_n tests to ...
            * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc:
            New test.
            * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
            Adjust dg-error strings.
            * testsuite/23_containers/vector/cons/destructible_neg.cc:
            Likewise.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 01789efaea25a48ac45dae8facb6db8abd8ebb14)

Diff:
---
 libstdc++-v3/include/bits/stl_construct.h          | 56 ++++++++------------
 .../memory_management_tools/destroy_n_neg.cc       | 59 ++++++++++++++++++++++
 .../memory_management_tools/destroy_neg.cc         | 20 ++++++--
 .../vector/cons/destructible_debug_neg.cc          |  7 +--
 .../23_containers/vector/cons/destructible_neg.cc  |  7 +--
 5 files changed, 98 insertions(+), 51 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index c5634b8ec13f..9678e6894007 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -166,6 +166,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  for (; __first != __last; ++__first)
 	    std::_Destroy(std::__addressof(*__first));
 	}
+
+      template<typename _ForwardIterator, typename _Size>
+	static _GLIBCXX20_CONSTEXPR _ForwardIterator
+	__destroy_n(_ForwardIterator __first, _Size __count)
+	{
+	  for (; __count > 0; (void)++__first, --__count)
+	    std::_Destroy(std::__addressof(*__first));
+	  return __first;
+	}
     };
 
   template<>
@@ -174,6 +183,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _ForwardIterator>
         static void
         __destroy(_ForwardIterator, _ForwardIterator) { }
+
+      template<typename _ForwardIterator, typename _Size>
+	static _ForwardIterator
+	__destroy_n(_ForwardIterator __first, _Size __count)
+	{
+	  std::advance(__first, __count);
+	  return __first;
+	}
     };
 #endif
 
@@ -189,10 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename iterator_traits<_ForwardIterator>::value_type
                        _Value_type;
 #if __cplusplus >= 201103L
-      // A deleted destructor is trivial, this ensures we reject such types:
-      static_assert(is_destructible<_Value_type>::value,
-		    "value type is destructible");
-      if constexpr (!__has_trivial_destructor(_Value_type))
+      if constexpr (!is_trivially_destructible<_Value_type>::value)
 	for (; __first != __last; ++__first)
 	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
@@ -206,33 +220,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
     }
 
-#if __cplusplus < 201103L
-  template<bool>
-    struct _Destroy_n_aux
-    {
-      template<typename _ForwardIterator, typename _Size>
-	static _GLIBCXX20_CONSTEXPR _ForwardIterator
-	__destroy_n(_ForwardIterator __first, _Size __count)
-	{
-	  for (; __count > 0; (void)++__first, --__count)
-	    std::_Destroy(std::__addressof(*__first));
-	  return __first;
-	}
-    };
-
-  template<>
-    struct _Destroy_n_aux<true>
-    {
-      template<typename _ForwardIterator, typename _Size>
-        static _ForwardIterator
-        __destroy_n(_ForwardIterator __first, _Size __count)
-	{
-	  std::advance(__first, __count);
-	  return __first;
-	}
-    };
-#endif
-
   /**
    * Destroy a range of objects.  If the value_type of the object has
    * a trivial destructor, the compiler should optimize all of this
@@ -245,10 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename iterator_traits<_ForwardIterator>::value_type
                        _Value_type;
 #if __cplusplus >= 201103L
-      // A deleted destructor is trivial, this ensures we reject such types:
-      static_assert(is_destructible<_Value_type>::value,
-		    "value type is destructible");
-      if constexpr (!__has_trivial_destructor(_Value_type))
+      if constexpr (!is_trivially_destructible<_Value_type>::value)
 	for (; __count > 0; (void)++__first, --__count)
 	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
@@ -260,7 +244,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	std::advance(__first, __count);
       return __first;
 #else
-      return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
+      return std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy_n(__first, __count);
 #endif
     }
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
new file mode 100644
index 000000000000..12c0dc575ccf
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
@@ -0,0 +1,59 @@
+// Copyright (C) 2017-2025 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++17 } }
+
+#include <memory>
+
+// This has a trivial destructor, but should not be destructible!
+struct DeletedDtor {
+  ~DeletedDtor() = delete;
+};
+
+void
+test01()
+{
+  alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
+  auto p = ::new (buf) DeletedDtor();
+  std::destroy_n(p, 1);
+}
+
+class PrivateDtor {
+  ~PrivateDtor() { }
+};
+
+void
+test02()
+{
+  alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
+  auto p = ::new (buf) PrivateDtor();
+  std::destroy_n(p, 1);
+}
+
+#if __cpp_constexpr_dynamic_alloc // >= C++20
+consteval bool
+test03()
+{
+  DeletedDtor* p = nullptr;
+  std::destroy_n(p, 0);
+  return true;
+}
+static_assert(test03());
+#endif
+
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
index 7d58ac83255f..693de0607ded 100644
--- a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
@@ -29,8 +29,7 @@ test01()
 {
   alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
   auto p = ::new (buf) DeletedDtor();
-  std::destroy(p, p + 1);	// { dg-error "here" }
-  std::destroy_n(p, 1);		// { dg-error "here" }
+  std::destroy(p, p + 1);
 }
 
 class PrivateDtor {
@@ -42,8 +41,19 @@ test02()
 {
   alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
   auto p = ::new (buf) PrivateDtor();
-  std::destroy(p, p + 1);	// { dg-error "here" }
-  std::destroy_n(p, 1);		// { dg-error "here" }
+  std::destroy(p, p + 1);
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
+#if __cpp_constexpr_dynamic_alloc // >= C++20
+consteval bool
+test03()
+{
+  DeletedDtor* p = nullptr;
+  std::destroy(p, p);
+  return true;
+}
+static_assert(test03());
+#endif
+
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
index f06668cff377..0456c8865c6a 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
@@ -43,11 +43,8 @@ test02()
   std::vector<PrivateDtor> v;
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
 
 // In Debug Mode the "required from here" errors come from <debug/vector>
 // { dg-error "required from here" "" { target *-*-* } 180 }
-
-// Needed because of PR c++/92193
-// { dg-prune-output "deleted function" }
-// { dg-prune-output "private within this context" }
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
index 9b9b43145723..d63e4838de9c 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
@@ -42,8 +42,5 @@ test02()
   std::vector<PrivateDtor> v; // { dg-error "here" }
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
-
-// Needed because of PR c++/92193
-// { dg-prune-output "deleted function" }
-// { dg-prune-output "private within this context" }
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }

From redi@gcc.gnu.org  Thu May 14 10:11:11 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:11:11 +0000 (GMT)
Subject: [gcc r14-12602] libstdc++: Update tzdata to 2025c
Message-ID: <20260514101111.613D44BB8F44@sourceware.org>

https://gcc.gnu.org/g:4204291bd47f6e77b6bc7df4f99f84c2c7dfdbfb

commit r14-12602-g4204291bd47f6e77b6bc7df4f99f84c2c7dfdbfb
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2025c
    
    Import the new 2025c tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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 2025c release.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit f725f08262866fbdd695673bf0951648d3da5b49)

Diff:
---
 libstdc++-v3/include/std/chrono  | 2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++----
 libstdc++-v3/src/c++20/tzdb.cc   | 4 ++--
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 7e6d6f81339a..a1d1148a70bf 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3243,7 +3243,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      const sys_seconds __expires(1766880000s); // 2025-12-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index a7fb52f1968f..c56f67c02f6d 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2025b
+# version 2025c
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -2951,9 +2951,7 @@ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
 -8 1 PDT 1951 S 30 2
 -8 - PST 1952 Ap 27 2
 -8 1 PDT 1952 S 28 2
--8 - PST 1954
--8 CA P%sT 1961
--8 - PST 1976
+-8 CA P%sT 1967
 -8 u P%sT 1996
 -8 m P%sT 2001
 -8 u P%sT 2002 F 20
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index d66867e2171e..b3d029d8b238 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1192,8 +1192,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2025-12-28 00:00:00 UTC.
-    auto expires = sys_days{2025y/12/28};
+    // This list is valid until at least 2026-06-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/06/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From redi@gcc.gnu.org  Thu May 14 10:11:16 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 10:11:16 +0000 (GMT)
Subject: [gcc r14-12603] libstdc++: Update tzdata to 2026a
Message-ID: <20260514101116.89C364B1A299@sourceware.org>

https://gcc.gnu.org/g:02d9bbd206fe139f2e01233a0f66c8e6e5ebb8d5

commit r14-12603-g02d9bbd206fe139f2e01233a0f66c8e6e5ebb8d5
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026a
    
    Import the new 2026a tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    (cherry picked from commit b8fd759dc61c0a191a236eb19db870bb30078011)

Diff:
---
 libstdc++-v3/include/std/chrono  |  2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 10 ++++++----
 libstdc++-v3/src/c++20/tzdb.cc   |  4 ++--
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index a1d1148a70bf..4b6703243df9 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3243,7 +3243,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index c56f67c02f6d..88f7d34a3817 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,5 @@
-# version 2025c
+# version 2026a
+# redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -1304,8 +1305,8 @@ R MT 1974 o - S 16 0s 0 -
 R MT 1975 1979 - Ap Su>=15 2 1 S
 R MT 1975 1980 - S Su>=15 2 0 -
 R MT 1980 o - Mar 31 2 1 S
-R MD 1997 ma - Mar lastSu 2 1 S
-R MD 1997 ma - O lastSu 3 0 -
+R MD 1997 2021 - Mar lastSu 2 1 S
+R MD 1997 2021 - O lastSu 3 0 -
 R O 1918 1919 - S 16 2s 0 -
 R O 1919 o - Ap 15 2s 1 S
 R O 1944 o - Ap 3 2s 1 S
@@ -3666,7 +3667,8 @@ Z Europe/Chisinau 1:55:20 - LMT 1880
 3 R MSK/MSD 1990 May 6 2
 2 R EE%sT 1992
 2 e EE%sT 1997
-2 MD EE%sT
+2 MD EE%sT 2022
+2 E EE%sT
 Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
 -0:25:21 - DMT 1916 May 21 2s
 -0:25:21 1 IST 1916 O 1 2s
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index b3d029d8b238..4c6aea9fdbed 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1192,8 +1192,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-06-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/06/28};
+    // This list is valid until at least 2026-12-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/12/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From tkaminsk@gcc.gnu.org  Thu May 14 11:50:06 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 14 May 2026 11:50:06 +0000 (GMT)
Subject: [gcc r17-509] libstdc++: Fix reserve of size_t(-1) elements in
 piecewise_constant_distribution. [PR113761]
Message-ID: <20260514115006.97BA04BCA415@sourceware.org>

https://gcc.gnu.org/g:7bed7d9276c11bef5a9a214e20c985af713f1532

commit r17-509-g7bed7d9276c11bef5a9a214e20c985af713f1532
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed May 13 17:05:05 2026 +0200

    libstdc++: Fix reserve of size_t(-1) elements in piecewise_constant_distribution. [PR113761]
    
    The piecewise_constant_distribution constructor from std::initializer_list il,
    unconditionally reserve _M_den for il.size()-1 elements. In case when the il.size()
    was zero, this led to unsigned overflow, and attempt to allocate size_t(-1)
    elements.
    
    This patch addresses above, by refactoring the constructors of param_type for
    both piecewise_constant_distribution and piecewise_linear_distribution, to
    exit early (and do not populate internal vectors) if number of intervals range is
    smaller than two. For the constructor accepting pair of iterators, this is done
    by checking result of __detail::__load_first2, that extracts up to two elements,
    and returns false, if less than two is found.
    
    Furthermore, we if the number of intervals is equal to two (for iterator __bbegin
    is at __bend after __load_first2), we store densities value on stack, and call
    newly introduced an _M_initialize2 helper, that does not populate internal vector
    if __ints and __dens values correspond to default configuration.
    
    With both of above changes, we no longer populate _M_int and _M_den with default
    values, and corresponding code that clears them in _M_initialize is not necessary.
    This avoids any unnecessary memory allocators.
    
    For constructor accepting two iterators, we reserve required space in _M_int vector,
    if the iterators are forward (or model sized_sentinel in C++20). The _M_den
    initialization is performed afterwards, so _M_int size is already determined
    (even for input iterators) and it can be used for call to reserve.
    
    Finally, the _M_initialize members are renamed to _M_configure, so the new
    implementation that skips the check, is not used by TU compiler will other
    that would invoke it with empty vector, and thus retrigger the issue.
    
            PR libstdc++/113761
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/random.h                 |  10 +-
 libstdc++-v3/include/bits/random.tcc               | 224 ++++++++++++++++-----
 .../cons/fallback.cc                               | 108 ++++++++++
 .../piecewise_constant_distribution/cons/range.cc  |  17 +-
 .../piecewise_linear_distribution/cons/fallback.cc | 127 ++++++++++++
 .../piecewise_linear_distribution/cons/range.cc    |  17 +-
 6 files changed, 439 insertions(+), 64 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index 3fda69c4399a..5d037465d3cf 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -6466,7 +6466,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
       private:
 	void
-	_M_initialize();
+	_M_configure();
+
+	void
+	_M_initialize2(const _RealType* __ints, _RealType __den);
 
 	std::vector<_RealType> _M_int;
 	std::vector<double> _M_den;
@@ -6746,7 +6749,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
       private:
 	void
-	_M_initialize();
+	_M_configure();
+
+	void
+	_M_initialize2(const _RealType* __ints, const _RealType* __dens);
 
 	std::vector<_RealType> _M_int;
 	std::vector<double> _M_den;
diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index 4475e365c2d7..80b51d099fad 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -2945,18 +2945,8 @@ namespace __detail
   template<typename _RealType>
     void
     piecewise_constant_distribution<_RealType>::param_type::
-    _M_initialize()
+    _M_configure()
     {
-      if (_M_int.size() < 2
-	  || (_M_int.size() == 2
-	      && _M_int[0] == _RealType(0)
-	      && _M_int[1] == _RealType(1)))
-	{
-	  _M_int.clear();
-	  _M_den.clear();
-	  return;
-	}
-
       const double __sum = std::accumulate(_M_den.begin(),
 					   _M_den.end(), 0.0);
       __glibcxx_assert(__sum > 0);
@@ -2975,6 +2965,46 @@ namespace __detail
 	_M_den[__k] /= _M_int[__k + 1] - _M_int[__k];
     }
 
+  template<typename _RealType>
+    void
+    piecewise_constant_distribution<_RealType>::param_type::
+    _M_initialize2(const _RealType* __ints, _RealType __den)
+    {
+      if (__ints[0] == _RealType(0) && __ints[1] == _RealType(1))
+	return;
+
+      _M_int.reserve(2);
+      _M_int.push_back(__ints[0]);
+      _M_int.push_back(__ints[1]);
+
+      _M_den.reserve(1);
+      _M_den.push_back(__den);
+      _M_configure();
+    }
+
+namespace __detail
+{
+  template<typename _InputIterator, typename _RealType>
+    bool
+    __load_first2(_InputIterator& __first, _InputIterator __last,
+		  _RealType* __out)
+    {
+      if (__first == __last)
+	return false;
+
+      *__out = *__first;
+      ++__first;
+      if (__first == __last)
+	return false;
+
+      ++__out;
+      *__out = *__first;
+      ++__first;
+      return true;
+    }
+} // namespace __detail
+
+
   template<typename _RealType>
     template<typename _InputIteratorB, typename _InputIteratorW>
       piecewise_constant_distribution<_RealType>::param_type::
@@ -2983,21 +3013,39 @@ namespace __detail
 		 _InputIteratorW __wbegin)
       : _M_int(), _M_den(), _M_cp()
       {
-	if (__bbegin != __bend)
-	  {
-	    for (;;)
-	      {
-		_M_int.push_back(*__bbegin);
-		++__bbegin;
-		if (__bbegin == __bend)
-		  break;
+	_RealType __ints[2];
+	if (!__detail::__load_first2(__bbegin, __bend, __ints))
+	  return;
 
-		_M_den.push_back(*__wbegin);
-		++__wbegin;
-	      }
+	if (__bbegin == __bend)
+	  {
+	    _M_initialize2(__ints, *__wbegin);
+	    return;
 	  }
 
-	_M_initialize();
+#if __glibcxx_concepts // C++ >= C++20
+	if constexpr (sized_sentinel_for<_InputIteratorB, _InputIteratorB>
+			|| forward_iterator<_InputIteratorB>)
+	  _M_int.reserve(2 + size_t(ranges::distance(__bbegin, __bend)));
+#else
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
+	if constexpr (is_convertible<__iter_category_t<_InputIteratorB>,
+				     forward_iterator_tag>::value)
+	  _M_int.reserve(2 + size_t(std::distance(__bbegin, __bend)));
+#pragma GCC diagnostic pop
+#endif
+
+	_M_int.push_back(__ints[0]);
+	_M_int.push_back(__ints[1]);
+	for (; __bbegin != __bend; ++__bbegin)
+	  _M_int.push_back(*__bbegin);
+
+	_M_den.reserve(_M_int.size() - 1);
+	for (size_t __k = 0; __k < _M_int.size() - 1; (void)++__k, ++__wbegin)
+	  _M_den.push_back(*__wbegin);
+
+	_M_configure();
       }
 
   template<typename _RealType>
@@ -3006,15 +3054,23 @@ namespace __detail
       param_type(initializer_list<_RealType> __bl, _Func __fw)
       : _M_int(), _M_den(), _M_cp()
       {
-	_M_int.reserve(__bl.size());
-	for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter)
-	  _M_int.push_back(*__biter);
+	if (__bl.size() < 2)
+	  return;
 
+	if (__bl.size() == 2)
+	  {
+	    const _RealType *__ints = __bl.begin();
+	    _RealType __den = __fw(0.5 * (__ints[1] + __ints[0]));
+	    _M_initialize2(__ints, __den);
+	    return;
+	  }
+
+	_M_int = __bl;
 	_M_den.reserve(_M_int.size() - 1);
 	for (size_t __k = 0; __k < _M_int.size() - 1; ++__k)
 	  _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k])));
 
-	_M_initialize();
+	_M_configure();
       }
 
   template<typename _RealType>
@@ -3025,6 +3081,13 @@ namespace __detail
       {
 	const size_t __n = __nw == 0 ? 1 : __nw;
 	const _RealType __delta = (__xmax - __xmin) / __n;
+	if (__n == 1)
+	  {
+	    _RealType __ints[2] = { __xmin, __xmin + __delta };
+	    _RealType __den = __fw(__xmin * 0.5 * __delta);
+	    _M_initialize2(__ints, __den);
+	    return;
+	  }
 
 	_M_int.reserve(__n + 1);
 	for (size_t __k = 0; __k <= __nw; ++__k)
@@ -3034,7 +3097,7 @@ namespace __detail
 	for (size_t __k = 0; __k < __nw; ++__k)
 	  _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta));
 
-	_M_initialize();
+	_M_configure();
       }
 
   template<typename _RealType>
@@ -3159,19 +3222,8 @@ namespace __detail
   template<typename _RealType>
     void
     piecewise_linear_distribution<_RealType>::param_type::
-    _M_initialize()
+    _M_configure()
     {
-      if (_M_int.size() < 2
-	  || (_M_int.size() == 2
-	      && _M_int[0] == _RealType(0)
-	      && _M_int[1] == _RealType(1)
-	      && _M_den[0] == _M_den[1]))
-	{
-	  _M_int.clear();
-	  _M_den.clear();
-	  return;
-	}
-
       double __sum = 0.0;
       _M_cp.reserve(_M_int.size() - 1);
       _M_m.reserve(_M_int.size() - 1);
@@ -3194,7 +3246,27 @@ namespace __detail
 
       //  Make sure the last cumulative probablility is one.
       _M_cp[_M_cp.size() - 1] = 1.0;
-     }
+    }
+
+  template<typename _RealType>
+    void
+    piecewise_linear_distribution<_RealType>::param_type::
+    _M_initialize2(const _RealType* __ints, const _RealType* __dens)
+    {
+      if (__ints[0] == _RealType(0)
+	  && __ints[1] == _RealType(1)
+	  && __dens[0] == __dens[1])
+	return;
+
+      _M_int.reserve(2);
+      _M_int.push_back(__ints[0]);
+      _M_int.push_back(__ints[1]);
+
+      _M_den.reserve(2);
+      _M_den.push_back(__dens[0]);
+      _M_den.push_back(__dens[1]);
+      _M_configure();
+    }
 
   template<typename _RealType>
     template<typename _InputIteratorB, typename _InputIteratorW>
@@ -3204,13 +3276,43 @@ namespace __detail
 		 _InputIteratorW __wbegin)
       : _M_int(), _M_den(), _M_cp(), _M_m()
       {
-	for (; __bbegin != __bend; ++__bbegin, (void) ++__wbegin)
+	_RealType __ints[2];
+	if (!__detail::__load_first2(__bbegin, __bend, __ints))
+	  return;
+
+	if (__bbegin == __bend)
 	  {
-	    _M_int.push_back(*__bbegin);
-	    _M_den.push_back(*__wbegin);
+	    _RealType __dens[2];
+	    __dens[0] = *__wbegin;
+	    ++__wbegin;
+	    __dens[1] = *__wbegin;
+	    _M_initialize2(__ints, __dens);
+	    return;
 	  }
 
-	_M_initialize();
+#if __glibcxx_concepts // C++ >= C++20
+	if constexpr (sized_sentinel_for<_InputIteratorB, _InputIteratorB>
+			|| forward_iterator<_InputIteratorB>)
+	  _M_int.reserve(2 + size_t(ranges::distance(__bbegin, __bend)));
+#else
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
+	if constexpr (is_convertible<__iter_category_t<_InputIteratorB>,
+				     forward_iterator_tag>::value)
+	  _M_int.reserve(2 + size_t(std::distance(__bbegin, __bend)));
+#pragma GCC diagnostic pop
+#endif
+
+	_M_int.push_back(__ints[0]);
+	_M_int.push_back(__ints[1]);
+	for (; __bbegin != __bend; ++__bbegin)
+	  _M_int.push_back(*__bbegin);
+
+	_M_den.reserve(_M_int.size());
+	for (size_t __i = 0; __i < _M_int.size(); (void)++__i, ++__wbegin)
+	  _M_den.push_back(*__wbegin);
+
+	_M_configure();
       }
 
   template<typename _RealType>
@@ -3219,15 +3321,24 @@ namespace __detail
       param_type(initializer_list<_RealType> __bl, _Func __fw)
       : _M_int(), _M_den(), _M_cp(), _M_m()
       {
-	_M_int.reserve(__bl.size());
-	_M_den.reserve(__bl.size());
-	for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter)
+	if (__bl.size() < 2)
+	  return;
+
+	if (__bl.size() == 2)
 	  {
-	    _M_int.push_back(*__biter);
-	    _M_den.push_back(__fw(*__biter));
+	    const _RealType *__ints = __bl.begin();
+	    _RealType __den[2];
+	    __den[0] = __fw(__ints[0]);
+	    __den[1] = __fw(__ints[1]);
+	    _M_initialize2(__ints, __den);
+	    return;
 	  }
 
-	_M_initialize();
+	_M_int = __bl;
+	_M_den.reserve(__bl.size());
+	for (_RealType __b : __bl)
+	  _M_den.push_back(__fw(__b));
+	_M_configure();
       }
 
   template<typename _RealType>
@@ -3238,6 +3349,15 @@ namespace __detail
       {
 	const size_t __n = __nw == 0 ? 1 : __nw;
 	const _RealType __delta = (__xmax - __xmin) / __n;
+	if (__n == 1)
+	  {
+	    _RealType __ints[2] = { __xmin, __xmin + __delta };
+	    _RealType __dens[2];
+	    __dens[0] = __fw(__ints[0]);
+	    __dens[1] = __fw(__ints[1]);
+	    _M_initialize2(__ints, __dens);
+	    return;
+	  }
 
 	_M_int.reserve(__n + 1);
 	_M_den.reserve(__n + 1);
@@ -3247,7 +3367,7 @@ namespace __detail
 	    _M_den.push_back(__fw(_M_int[__k] + __delta));
 	  }
 
-	_M_initialize();
+	_M_configure();
       }
 
   template<typename _RealType>
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/fallback.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/fallback.cc
new file mode 100644
index 000000000000..f10f5ca2a786
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/fallback.cc
@@ -0,0 +1,108 @@
+// { dg-do run { target c++11 } }
+// { dg-require-cstdint "" }
+
+#include <random>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
+using dist = std::piecewise_linear_distribution<>;
+
+template<typename... Args>
+bool
+is_default(Args&&... args)
+{
+  std::piecewise_constant_distribution<> u(std::forward<Args>(args)...);
+
+  std::vector<double> ints = u.intervals();
+  if (ints.size() != 2 || ints[0] != 0.0 || ints[1] != 1.0)
+    return false;
+
+  std::vector<double> dens = u.densities();
+  if (dens.size() != 1 || dens[0] != 1.0)
+    return false;
+
+  return true;
+}
+
+template<template<typename> class Range>
+void
+test_it_pair()
+{
+  double wt[2];
+  double x[3];
+
+  Range<double> r0(x, x);
+  VERIFY( is_default(r0.begin(), r0.end(), wt) );
+
+  x[0] = 4.2;
+  Range<double> r1a(x, x+1);
+  VERIFY( is_default(r1a.begin(), r1a.end(), wt) );
+
+  x[0] = 0.0;
+  Range<double> r1b(x, x+1);
+  VERIFY( is_default(r1b.begin(), r1b.end(), wt) );
+
+  x[1] = 1.0;
+  wt[0] = 13.0;
+  Range<double> r2a(x, x+2);
+  VERIFY( is_default(r2a.begin(), r2a.end(), wt) );
+
+  wt[0] = 4.2;
+  Range<double> r2b(x, x+2);
+  VERIFY( is_default(r2b.begin(), r2b.end(), wt) );
+
+  x[1] = 0.5;
+  Range<double> r2c(x, x+2);
+  VERIFY( !is_default(r2c.begin(), r2c.end(), wt) );
+
+  x[2] = 1.0;
+  wt[1] = 2.0;
+  Range<double> r3(x, x+3);
+  VERIFY( !is_default(r3.begin(), r3.end(), wt) );
+}
+
+void test_init_list()
+{
+  auto c = [](double x) { return 10; };
+  VERIFY(  is_default(std::initializer_list<double>{}, c) );
+  VERIFY(  is_default(std::initializer_list<double>{4.2}, c) );
+  VERIFY(  is_default(std::initializer_list<double>{0.0, 1.0}, c) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5}, c) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5, 1.0}, c) );
+
+  auto rel = [](double x) { return x + 10; };
+  VERIFY(  is_default(std::initializer_list<double>{}, rel) );
+  VERIFY(  is_default(std::initializer_list<double>{4.2}, rel) );
+  VERIFY(  is_default(std::initializer_list<double>{0.0, 1.0}, rel) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5}, rel) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5, 1.0}, rel) );
+}
+
+void test_xbound()
+{
+  auto c = [](double x) { return 10; };
+  VERIFY(  is_default(0, 0.0, 1.0, c) );
+  VERIFY( !is_default(0, 0.0, 0.5, c) );
+  VERIFY(  is_default(1, 0.0, 1.0, c) );
+  VERIFY( !is_default(1, 0.0, 0.5, c) );
+  VERIFY( !is_default(2, 0.0, 1.0, c) );
+
+  auto rel = [](double x) { return x + 10; };
+  VERIFY(  is_default(0, 0.0, 1.0, rel) );
+  VERIFY( !is_default(0, 0.0, 0.5, rel) );
+  VERIFY(  is_default(1, 0.0, 1.0, rel) );
+  VERIFY( !is_default(1, 0.0, 0.5, rel) );
+  VERIFY( !is_default(2, 0.0, 1.0, rel) );
+}
+
+int main()
+{
+  using namespace __gnu_test;
+  test_it_pair<input_container>();
+  test_it_pair<forward_container>();
+  test_it_pair<random_access_container>();
+
+  test_init_list();
+  test_xbound();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
index 3714e460391b..4bfa20ea3bbc 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
@@ -25,13 +25,17 @@
 
 #include <random>
 #include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
 
+template<template<typename> class Range>
 void
-test01()
+test_it_pair()
 {
-  std::vector<double> x = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
-  std::vector<double> wt = {0.5, 1.0, 2.5, 1.5, 0.5};
-  std::piecewise_constant_distribution<> u(x.begin(), x.end(), wt.begin());
+  double x[6] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
+  double wt[5] = {0.5, 1.0, 2.5, 1.5, 0.5};
+
+  Range<double> r(x, x+6);
+  std::piecewise_constant_distribution<> u(r.begin(), r.end(), wt);
   std::vector<double> interval = u.intervals();
   std::vector<double> density = u.densities();
   VERIFY( interval.size() == 6 );
@@ -44,6 +48,9 @@ test01()
 
 int main()
 {
-  test01();
+  using namespace __gnu_test;
+  test_it_pair<input_container>();
+  test_it_pair<forward_container>();
+  test_it_pair<random_access_container>();
   return 0;
 }
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/fallback.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/fallback.cc
new file mode 100644
index 000000000000..b2e6ca651231
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/fallback.cc
@@ -0,0 +1,127 @@
+// { dg-do run { target c++11 } }
+// { dg-require-cstdint "" }
+
+#include <random>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
+using dist = std::piecewise_linear_distribution<>;
+
+template<typename... Args>
+bool
+is_default(Args&&... args)
+{
+  std::piecewise_linear_distribution<> u(std::forward<Args>(args)...);
+
+  std::vector<double> ints = u.intervals();
+  if (ints.size() != 2 || ints[0] != 0.0 || ints[1] != 1.0)
+    return false;
+
+  std::vector<double> dens = u.densities();
+  if (dens.size() != 2 || dens[0] != 1.0 || dens[1] != 1.0)
+    return false;
+
+  return true;
+}
+
+template<template<typename> class Range>
+void
+test_it_pair()
+{
+  double wt[3];
+  double x[3];
+
+  Range<double> r0(x, x);
+  VERIFY( is_default(r0.begin(), r0.end(), wt) );
+
+  x[0] = 4.2;
+  Range<double> r1a(x, x+1);
+  VERIFY( is_default(r1a.begin(), r1a.end(), wt) );
+
+  x[0] = 0.0;
+  Range<double> r1b(x, x+1);
+  VERIFY( is_default(r1b.begin(), r1b.end(), wt) );
+
+  x[1] = 1.0;
+  wt[0] = wt[1] = 13.0;
+  Range<double> r2a(x, x+2);
+  VERIFY( is_default(r2a.begin(), r2a.end(), wt) );
+
+  wt[0] = wt[1] = 1.0;
+  Range<double> r2b(x, x+2);
+  VERIFY( is_default(r2b.begin(), r2b.end(), wt) );
+
+  wt[1] = 2.0;
+  Range<double> r2c(x, x+2);
+  VERIFY( !is_default(r2c.begin(), r2c.end(), wt) );
+
+  x[1] = 0.5;
+  wt[0] = wt[1] = 2.0;
+  Range<double> r2d(x, x+2);
+  VERIFY( !is_default(r2d.begin(), r2d.end(), wt) );
+
+  x[2] = 1.0;
+  wt[2] = wt[0];
+  Range<double> r3(x, x+3);
+  VERIFY( !is_default(r3.begin(), r3.end(), wt) );
+}
+
+void test_init_list()
+{
+  auto c1 = [](double x) { return 1.0; };
+  VERIFY(  is_default(std::initializer_list<double>{}, c1) );
+  VERIFY(  is_default(std::initializer_list<double>{4.2}, c1) );
+  VERIFY(  is_default(std::initializer_list<double>{0.0, 1.0}, c1) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5}, c1) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5, 1.0}, c1) );
+
+  auto c2 = [](double x) { return 4.2; };
+  VERIFY(  is_default(std::initializer_list<double>{}, c2) );
+  VERIFY(  is_default(std::initializer_list<double>{4.2}, c2) );
+  VERIFY(  is_default(std::initializer_list<double>{0.0, 1.0}, c2) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5}, c2) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5, 1.0}, c2) );
+
+  auto id = [](double x) { return x; };
+  VERIFY(  is_default(std::initializer_list<double>{}, id) );
+  VERIFY(  is_default(std::initializer_list<double>{4.2}, id) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 1.0}, id) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5}, id) );
+  VERIFY( !is_default(std::initializer_list<double>{0.0, 0.5, 1.0}, id) );
+}
+
+void test_xbound()
+{
+  auto c1 = [](double x) { return 1.0; };
+  VERIFY(  is_default(0, 0.0, 1.0, c1) );
+  VERIFY( !is_default(0, 0.0, 0.5, c1) );
+  VERIFY(  is_default(1, 0.0, 1.0, c1) );
+  VERIFY( !is_default(1, 0.0, 0.5, c1) );
+  VERIFY( !is_default(2, 0.0, 1.0, c1) );
+
+  auto c2 = [](double x) { return 4.2; };
+  VERIFY(  is_default(0, 0.0, 1.0, c2) );
+  VERIFY( !is_default(0, 0.0, 0.5, c2) );
+  VERIFY(  is_default(1, 0.0, 1.0, c2) );
+  VERIFY( !is_default(1, 0.0, 0.5, c2) );
+  VERIFY( !is_default(2, 0.0, 1.0, c2) );
+
+  auto id = [](double x) { return x; };
+  VERIFY( !is_default(0, 0.0, 1.0, id) );
+  VERIFY( !is_default(0, 0.0, 0.5, id) );
+  VERIFY( !is_default(1, 0.0, 1.0, id) );
+  VERIFY( !is_default(1, 0.0, 0.5, id) );
+  VERIFY( !is_default(2, 0.0, 1.0, id) );
+}
+
+int main()
+{
+  using namespace __gnu_test;
+  test_it_pair<input_container>();
+  test_it_pair<forward_container>();
+  test_it_pair<random_access_container>();
+
+  test_init_list();
+  test_xbound();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
index c698e7a66e6e..af979fdac42a 100644
--- a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
@@ -25,13 +25,17 @@
 
 #include <random>
 #include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
 
+template<template<typename> class Range>
 void
-test01()
+test_it_pair()
 {
-  std::vector<double> x = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
-  std::vector<double> wt = {0.0, 1.0, 2.5, 1.5, 3.5, 0.0};
-  std::piecewise_linear_distribution<> u(x.begin(), x.end(), wt.begin());
+  double x[] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
+  double wt[] = {0.0, 1.0, 2.5, 1.5, 3.5, 0.0};
+
+  Range<double> r(x, x+6);
+  std::piecewise_linear_distribution<> u(r.begin(), r.end(), wt);
   std::vector<double> interval = u.intervals();
   std::vector<double> density = u.densities();
   VERIFY( interval.size() == 6 );
@@ -44,6 +48,9 @@ test01()
 
 int main()
 {
-  test01();
+  using namespace __gnu_test;
+  test_it_pair<input_container>();
+  test_it_pair<forward_container>();
+  test_it_pair<random_access_container>();
   return 0;
 }

From redi@gcc.gnu.org  Thu May 14 13:14:45 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:14:45 +0000 (GMT)
Subject: [gcc r13-10311] libstdc++: Ensure pool resources meet alignment
 requirements [PR118681]
Message-ID: <20260514131445.BD93A4BBC0DA@sourceware.org>

https://gcc.gnu.org/g:d3831b681daefb074ec68d3683153aed7625642e

commit r13-10311-gd3831b681daefb074ec68d3683153aed7625642e
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jul 4 16:44:13 2025 +0100

    libstdc++: Ensure pool resources meet alignment requirements [PR118681]
    
    For allocations with size > alignment and size % alignment != 0 we were
    sometimes returning pointers that did not meet the requested aligment.
    For example, allocate(24, 16) would select the pool for 24-byte objects
    and the second allocation from that pool (at offset 24 bytes into the
    pool) is only 8-byte aligned not 16-byte aligned.
    
    The pool resources need to round up the requested allocation size to a
    multiple of the alignment, so that the selected pool will always return
    allocations that meet the alignment requirement.
    
    This backport includes the fixes for the bootstrap error and the tests.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/118681
            * src/c++17/memory_resource.cc (choose_block_size): New
            function.
            (synchronized_pool_resource::do_allocate): Use choose_block_size
            to determine appropriate block size.
            (synchronized_pool_resource::do_deallocate): Likewise
            (unsynchronized_pool_resource::do_allocate): Likewise.
            (unsynchronized_pool_resource::do_deallocate): Likewise
            * testsuite/20_util/synchronized_pool_resource/118681.cc: New
            test.
            * testsuite/20_util/unsynchronized_pool_resource/118681.cc: New
            test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    
    (cherry picked from commit ac2fb60a67d6d1de6446c25c5623b8a1389f4770)

Diff:
---
 libstdc++-v3/src/c++17/memory_resource.cc          | 56 ++++++++++++++++-----
 .../20_util/synchronized_pool_resource/118681.cc   |  6 +++
 .../20_util/unsynchronized_pool_resource/118681.cc | 58 ++++++++++++++++++++++
 3 files changed, 107 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/src/c++17/memory_resource.cc b/libstdc++-v3/src/c++17/memory_resource.cc
index c0c7cf0cf832..1558dc0c2d9e 100644
--- a/libstdc++-v3/src/c++17/memory_resource.cc
+++ b/libstdc++-v3/src/c++17/memory_resource.cc
@@ -178,8 +178,8 @@ namespace pmr
   // versions will not use this symbol.
   monotonic_buffer_resource::~monotonic_buffer_resource() { release(); }
 
-  namespace {
-
+namespace
+{
   // aligned_size<N> stores the size and alignment of a memory allocation.
   // The size must be a multiple of N, leaving the low log2(N) bits free
   // to store the base-2 logarithm of the alignment.
@@ -217,7 +217,7 @@ namespace pmr
     return (n + alignment - 1) & ~(alignment - 1);
   }
 
-  } // namespace
+} // namespace
 
   // Memory allocated by the upstream resource is managed in a linked list
   // of _Chunk objects. A _Chunk object recording the size and alignment of
@@ -303,8 +303,8 @@ namespace pmr
 
   // Helper types for synchronized_pool_resource & unsynchronized_pool_resource
 
-  namespace {
-
+namespace
+{
   // Simple bitset with runtime size.
   // Tracks which blocks in a pool chunk are used/unused.
   struct bitset
@@ -631,7 +631,7 @@ namespace pmr
 
   static_assert(sizeof(big_block) == (2 * sizeof(void*)));
 
-  } // namespace
+} // namespace
 
   // A pool that serves blocks of a particular size.
   // Each pool manages a number of chunks.
@@ -863,7 +863,16 @@ namespace pmr
     using big_block::big_block;
   };
 
-  namespace {
+namespace
+{
+  // N.B. it is important that we don't skip any power of two sizes if there
+  // is a non-power of two size between them, e.g. must not have pool sizes
+  // of 24 and 40 without having a pool size of 32. Otherwise an allocation
+  // of 32 bytes with alignment 16 would choose the 40-byte pool which is not
+  // correctly aligned for 16-byte alignment. It would be OK (but suboptimal)
+  // to have no pool of size 32 if we have pool sizes of 16 and 64 and no
+  // non-power of two sizes between those, because the example of (32, 16)
+  // would choose the 64-byte pool, which would be correctly aligned.
 
   constexpr size_t pool_sizes[] = {
       8, 16, 24,
@@ -978,7 +987,7 @@ namespace pmr
   using exclusive_lock = lock_guard<shared_mutex>;
 #endif
 
-  } // namespace
+} // namespace
 
   __pool_resource::
   __pool_resource(const pool_options& opts, memory_resource* upstream)
@@ -1070,12 +1079,33 @@ namespace pmr
     return p;
   }
 
+  // Determine the appropriate allocation size, rounding up to a multiple
+  // of the alignment if needed.
+  static inline size_t
+  choose_block_size(size_t bytes, size_t alignment)
+  {
+    if (bytes == 0) [[unlikely]]
+      return alignment;
+
+    // Use bit_ceil in case alignment is invalid (i.e. not a power of two).
+    size_t mask = std::__bit_ceil(alignment) - 1;
+    // Round up to a multiple of alignment.
+    size_t block_size = (bytes + mask) & ~mask;
+
+    if (block_size >= bytes) [[likely]]
+      return block_size;
+
+    // Wrapped around to zero, bytes must have been impossibly large.
+    return numeric_limits<size_t>::max();
+  }
+
+
 #ifdef _GLIBCXX_HAS_GTHREADS
   // synchronized_pool_resource members.
 
   /* Notes on implementation and thread safety:
    *
-   * Each synchronized_pool_resource manages an linked list of N+1 _TPools
+   * Each synchronized_pool_resource manages a linked list of N+1 _TPools
    * objects, where N is the number of threads using the pool resource.
    * Each _TPools object has its own set of pools, with their own chunks.
    * The first element of the list, _M_tpools[0], can be used by any thread.
@@ -1242,7 +1272,7 @@ namespace pmr
   synchronized_pool_resource::
   do_allocate(size_t bytes, size_t alignment)
   {
-    const auto block_size = std::max(bytes, alignment);
+    const auto block_size = choose_block_size(bytes, alignment);
     const pool_options opts = _M_impl._M_opts;
     if (block_size <= opts.largest_required_pool_block)
       {
@@ -1289,7 +1319,7 @@ namespace pmr
   synchronized_pool_resource::
   do_deallocate(void* p, size_t bytes, size_t alignment)
   {
-    size_t block_size = std::max(bytes, alignment);
+    size_t block_size = choose_block_size(bytes, alignment);
     if (block_size <= _M_impl._M_opts.largest_required_pool_block)
       {
 	const ptrdiff_t index = pool_index(block_size, _M_impl._M_npools);
@@ -1448,7 +1478,7 @@ namespace pmr
   void*
   unsynchronized_pool_resource::do_allocate(size_t bytes, size_t alignment)
   {
-    const auto block_size = std::max(bytes, alignment);
+    const auto block_size = choose_block_size(bytes, alignment);
     if (block_size <= _M_impl._M_opts.largest_required_pool_block)
       {
 	// Recreate pools if release() has been called:
@@ -1465,7 +1495,7 @@ namespace pmr
   unsynchronized_pool_resource::
   do_deallocate(void* p, size_t bytes, size_t alignment)
   {
-    size_t block_size = std::max(bytes, alignment);
+    size_t block_size = choose_block_size(bytes, alignment);
     if (block_size <= _M_impl._M_opts.largest_required_pool_block)
       {
 	if (auto pool = _M_find_pool(block_size))
diff --git a/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc b/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc
new file mode 100644
index 000000000000..facbf00400c9
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc
@@ -0,0 +1,6 @@
+// { dg-do run { target c++17 } }
+// { dg-require-gthreads "" }
+// Bug 118681 - unsynchronized_pool_resource may fail to respect alignment
+
+#define RESOURCE std::pmr::synchronized_pool_resource
+#include "../unsynchronized_pool_resource/118681.cc"
diff --git a/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc b/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc
new file mode 100644
index 000000000000..9935f793cf91
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc
@@ -0,0 +1,58 @@
+// { dg-do run { target c++17 } }
+// Bug 118681 - unsynchronized_pool_resource may fail to respect alignment
+
+#include <memory_resource>
+#include <cstdio>
+#include <testsuite_hooks.h>
+
+#ifndef RESOURCE
+# define RESOURCE std::pmr::unsynchronized_pool_resource
+#endif
+
+bool any_misaligned = false;
+
+bool
+is_aligned(void* p, [[maybe_unused]] std::size_t size, std::size_t alignment)
+{
+  const bool misaligned = reinterpret_cast<std::uintptr_t>(p) % alignment;
+#ifdef DEBUG
+  std::printf("allocate(%2zu, %2zu): %p is aligned %scorrectly\n",
+	      size, alignment, p, misaligned ? "in" : "");
+  any_misaligned |= misaligned;
+  return true;
+#endif
+  return ! misaligned;
+}
+
+void
+test_alignment(std::pmr::memory_resource& res, bool dealloc)
+{
+  for (std::size_t alignment : { 8, 16, 32, 64 })
+  {
+    for (std::size_t size : { 9, 12, 24, 40, 48, 56, 72 })
+    {
+      void* p1 = res.allocate(size, alignment);
+      void* p2 = res.allocate(size, alignment);
+
+      VERIFY( is_aligned(p1, size, alignment) );
+      VERIFY( is_aligned(p2, size, alignment) );
+
+      if (dealloc)
+      {
+	res.deallocate(p1, size, alignment);
+	res.deallocate(p2, size, alignment);
+      }
+    }
+  }
+}
+
+int main()
+{
+  RESOURCE res;
+  test_alignment(res, true);
+  res.release();
+  test_alignment(res, false);
+  res.release();
+
+  VERIFY( ! any_misaligned );
+}

From redi@gcc.gnu.org  Thu May 14 13:14:56 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:14:56 +0000 (GMT)
Subject: [gcc r13-10312] libstdc++: Clear std::priority_queue after moving
 from it [PR118088]
Message-ID: <20260514131456.1B5034BBC0F7@sourceware.org>

https://gcc.gnu.org/g:5d54e351e405e872be47352611bd1b6ea285b00c

commit r13-10312-g5d54e351e405e872be47352611bd1b6ea285b00c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Dec 14 01:17:27 2024 +0000

    libstdc++: Clear std::priority_queue after moving from it [PR118088]
    
    We don't know what state an arbitrary sequence container will be in
    after moving from it, so a moved-from std::priority_queue needs to clear
    the moved-from container to ensure it doesn't contain elements that are
    in an invalid order for the queue. An alternative would be to call
    std::make_heap again to re-establish the rvalue queue's invariant, but
    that could potentially cause an exception to be thrown. Just clearing it
    so the sequence is empty seems safer and more likely to match user
    expectations.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/118088
            * include/bits/stl_queue.h (priority_queue(priority_queue&&)):
            Clear the source object after moving from it.
            (priority_queue(priority_queue&&, const Alloc&)): Likewise.
            (operator=(priority_queue&&)): Likewise.
            * testsuite/23_containers/priority_queue/118088.cc: New test.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    (cherry picked from commit 15aab0d00ca1ed5ce428555bf89ecfe0525f9b81)

Diff:
---
 libstdc++-v3/include/bits/stl_queue.h              | 26 ++++++-
 .../23_containers/priority_queue/118088.cc         | 83 ++++++++++++++++++++++
 2 files changed, 106 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index 8a8dc95f8896..88e1a6268d6d 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -566,6 +566,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       : c(std::move(__s)), comp(__x)
       { std::make_heap(c.begin(), c.end(), comp); }
 
+      priority_queue(const priority_queue&) = default;
+      priority_queue& operator=(const priority_queue&) = default;
+
+      priority_queue(priority_queue&& __q)
+      noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
+		      is_nothrow_move_constructible<_Compare>>::value)
+      : c(std::move(__q.c)), comp(std::move(__q.comp))
+      { __q.c.clear(); }
+
+      priority_queue&
+      operator=(priority_queue&& __q)
+      noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
+		      is_nothrow_move_assignable<_Compare>>::value)
+      {
+	c = std::move(__q.c);
+	__q.c.clear();
+	comp = std::move(__q.comp);
+	return *this;
+      }
+
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
 	explicit
 	priority_queue(const _Alloc& __a)
@@ -594,7 +614,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
 	priority_queue(priority_queue&& __q, const _Alloc& __a)
-	: c(std::move(__q.c), __a), comp(std::move(__q.comp)) { }
+	: c(std::move(__q.c), __a), comp(std::move(__q.comp))
+	{ __q.c.clear(); }
 #endif
 
       /**
@@ -609,8 +630,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  the copy according to @a __x.
        *
        *  For more information on function objects, see the
-       *  documentation on @link functors functor base
-       *  classes@endlink.
+       *  documentation on @link functors functor base classes@endlink.
        */
 #if __cplusplus < 201103L
       template<typename _InputIterator>
diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
new file mode 100644
index 000000000000..b59175d8786a
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
@@ -0,0 +1,83 @@
+// { dg-do run { target c++11 } }
+
+#include <queue>
+#include <vector>
+#include <testsuite_hooks.h>
+
+template<typename T, typename Seq>
+bool
+check(std::priority_queue<T, Seq>& p)
+{
+  if (!p.empty())
+    {
+      T prev = p.top();
+      p.pop();
+      while (!p.empty())
+	{
+	  if ( prev < p.top() )
+	    return false;
+	  prev = p.top();
+	  p.pop();
+	}
+    }
+  return true;
+}
+
+// A vector-like type that has a non-empty moved-from state.
+struct Vector : std::vector<int>
+{
+  using Base = std::vector<int>;
+
+  using Base::Base;
+
+  Vector(const Vector&) = default;
+  Vector& operator=(const Vector&) = default;
+
+  Vector(Vector&& v) : Base(static_cast<const Base&>(v))
+  {
+    invalidate_heap(v);
+  }
+
+  Vector(Vector&& v, const std::allocator<int>&)
+  : Base(static_cast<const Base&>(v))
+  {
+    invalidate_heap(v);
+  }
+
+  Vector&
+  operator=(Vector&& v)
+  {
+    static_cast<Base&>(*this) = static_cast<const Base&>(v);
+    invalidate_heap(v);
+    return *this;
+  }
+
+  void invalidate_heap(Base& v) { v = {1,2,3}; }
+};
+
+void
+test_moves()
+{
+  std::priority_queue<int, Vector> p;
+  p.push(1);
+  p.push(3);
+  p.push(5);
+  p.push(2);
+  p.push(2);
+  p.push(2);
+  p.push(2);
+  std::priority_queue<int, Vector> p2 = std::move(p);
+  VERIFY( check(p) );
+
+  // Allocator-extended move constructor:
+  std::priority_queue<int, Vector> p3(std::move(p2), std::allocator<int>());
+  VERIFY( check(p2) );
+
+  p2 = std::move(p3);
+  VERIFY( check(p3) );
+}
+
+int main()
+{
+  test_moves();
+}

From redi@gcc.gnu.org  Thu May 14 13:15:06 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:06 +0000 (GMT)
Subject: [gcc r13-10313] libstdc++: Fix mainpage.html link to Doxygen docs
 [PR109965]
Message-ID: <20260514131506.5E2504C31851@sourceware.org>

https://gcc.gnu.org/g:a9313232898a5d11c3f8ec601106af862ccc6b43

commit r13-10313-ga9313232898a5d11c3f8ec601106af862ccc6b43
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 5 10:16:36 2026 +0100

    libstdc++: Fix mainpage.html link to Doxygen docs [PR109965]
    
    Doxygen renamed the "Modules" documentation to "Topics" a few years ago
    to avoid confusion with C++20 Modules:
    https://github.com/doxygen/doxygen/issues/8772
    
    This updates our internal link to 'modules.html' so that it refers to
    'topics.html' instead.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/109965
            * doc/doxygen/mainpage.html: Link to topics.html instead of
            modules.html
    
    (cherry picked from commit f95c05fe96af1de24929575b5ee8a05438fcfbcc)

Diff:
---
 libstdc++-v3/doc/doxygen/mainpage.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/doc/doxygen/mainpage.html b/libstdc++-v3/doc/doxygen/mainpage.html
index b54482a74e99..03a3adfaf65f 100644
--- a/libstdc++-v3/doc/doxygen/mainpage.html
+++ b/libstdc++-v3/doc/doxygen/mainpage.html
@@ -38,7 +38,7 @@
 
 <p>Here are entry points to all the pages generated by Doxygen:
    <ul>
-    <li><a href="modules.html">Modules</a></li>
+    <li><a href="topics.html">Topics</a></li>
 
     <li>Namespaces
     <ul>

From redi@gcc.gnu.org  Thu May 14 13:15:16 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:16 +0000 (GMT)
Subject: [gcc r13-10314] libstdc++: Fix std::basic_stringbuf::str()&&
 [PR123100]
Message-ID: <20260514131516.A43F74BBC0F2@sourceware.org>

https://gcc.gnu.org/g:8a5ebea258e8e21486837f66304069276939abb4

commit r13-10314-g8a5ebea258e8e21486837f66304069276939abb4
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Dec 15 10:25:52 2025 +0000

    libstdc++: Fix std::basic_stringbuf::str()&& [PR123100]
    
    When basic_stringbuf::setbuf has been called we need to copy the
    contents of the buffer into _M_string first, before returning that.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit a94bd31fd80b6a7efbe4d4c81ff195f7d81c3813)

Diff:
---
 libstdc++-v3/include/std/sstream                   |  7 ++-
 .../27_io/basic_stringbuf/str/char/123100.cc       | 58 ++++++++++++++++++++++
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index 6b3139714c73..7781c993aa0f 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -273,8 +273,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       {
 	if (char_type* __hi = _M_high_mark())
 	  {
-	    // Set length to end of character sequence and add null terminator.
-	    _M_string._M_set_length(_M_high_mark() - this->pbase());
+	    if (_M_string.data() == this->pbase()) [[likely]]
+	      // Set length to end of sequence and add null terminator.
+	      _M_string._M_set_length(__hi - this->pbase());
+	    else
+	      _M_string.assign(this->pbase(), __hi);
 	  }
 	auto __str = std::move(_M_string);
 	_M_string.clear();
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
new file mode 100644
index 000000000000..174fe0ece1d6
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
@@ -0,0 +1,58 @@
+// { dg-do run }
+
+#include <sstream>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data;
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+void
+test02()
+{
+  const int n = 20;
+  const char data[n] = "abcde";
+  char buf[n] = "0123456789";
+  std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+
+  std::ostringstream out;
+  out << std::string(n * 2, 'a');
+  VERIFY( out.str() == std::string(n * 2, 'a') );
+  out.rdbuf()->pubsetbuf(buf, n);
+  out << data; // writes 6 chars
+  VERIFY( out.str() == expected );
+  VERIFY( out.str() == expected );
+#if __cplusplus >= 201103L
+  VERIFY( std::move(out).str() == expected );
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+  expected.clear();
+#endif
+  VERIFY( out.str() == expected );
+  VERIFY( std::move(out).str() == expected );
+#endif
+}
+
+int main()
+{
+  test01();
+  test02();
+}

From redi@gcc.gnu.org  Thu May 14 13:15:26 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:26 +0000 (GMT)
Subject: [gcc r13-10315] libstdc++: Fix chrono::current_zone() for three-level
 names [PR122567]
Message-ID: <20260514131526.EEAE54BBC0E4@sourceware.org>

https://gcc.gnu.org/g:b6a8e6e78926adb220210b0a740c82f73610b33d

commit r13-10315-gb6a8e6e78926adb220210b0a740c82f73610b33d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 9 13:39:49 2026 +0000

    libstdc++: Fix chrono::current_zone() for three-level names [PR122567]
    
    chrono::current_zone() fails if /etc/localtime is a symlink to a zone
    with three components, like "America/Indiana/Indianapolis", because we
    only try to find "Indianapolis" and "Indiana/Indianapolis" but neither
    of those is a valid zone name.
    
    We need to try up to three components to handle all valid cases, such as
    "UTC", "America/Indianapolis", and "America/Indiana/Indianapolis". It's
    also possible that users could provide a custom tzdata.zi file which
    includes zones with names using more than three levels, so loop over all
    filename components of the path that /etc/localtime points to.
    
    This also replaces std::filesystem::read_symlink with a plain readlink
    call and find+substr operations on a std::string_view, which is
    approximately twice as fast as using std::filesystem::path and
    std::string.
    
    By default we use a fixed char[128] buffer for readlink to write into,
    but if that doesn't fit we use a std::string as a dynamic buffer that
    grows as needed. We could use ::stat to find the exact length of the
    symlink and avoid looping with an increasingly large std::string
    capacity, but it's already expected to be rare for the char[128] buffer
    to be exceeded, so needing to double the std::string capacity more than
    once (i.e. to 512 or more) should be exceedingly rare. Adding a call to
    ::stat would perform a third filesystem operation when two readlink
    calls should be sufficient for the vast majority of realistic cases.
    
    One consequence of not using filesystem::path is that redundant
    consecutive slashes in the pathname aren't automatically ignored, e.g.
    /usr/share/zoneinfo/Europe//London worked fine with the old
    implementation because we manually concatenated the path components,
    i.e. "Europe" + '/' + "London". So that this continues to work there is
    a new loop to remove redundant slashes from the string being processed.
    That adds a slower, allocating path, but is unlikely to be needed in
    practice (the systemd spec for /etc/localtime explicitly says it should
    end with a time zone name, so "Europe//London" would be invalid anyway,
    even if it points to a valid file). Again, this loop is expected to be
    rare so optimizing this case further isn't important.
    
    While manually testing this I noticed that we will interpret a bogus
    symlink such as /usr/share/zoneinfo/America/Europe/London as a valid
    timezone, even though it's a dangling symlink. We find a name match for
    "Europe/London" before we get to the "America" component. This seems
    unlikely to matter in practice, and was a pre-existing problem.
    
    There's no testcase for current_zone() correctly handling three-level
    names or symlinks with unusual targets. It cannot be tested without
    changing the target of /etc/localtime which requires root access.
    
    I'm still considering whether we want to cache the result of
    current_zone(), either globally or in the tzdb object. Just returning a
    cached variable takes 20-30ns instead of more than 700ns to access the
    filesystem and read the symlink. Using ::lstat to check the symlink's
    mtime would add some overhead though.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    
    (cherry picked from commit 20a6ff7a4877a25ba78461a19417e956bd6c0095)

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc | 105 ++++++++++++++++++++++++++++++++++-------
 1 file changed, 87 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 83848cf67020..4cfa4b60543d 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -35,7 +35,11 @@
 #include <atomic>     // atomic<T*>, atomic<int>
 #include <memory>     // atomic<shared_ptr<T>>
 #include <mutex>      // mutex
-#include <filesystem> // filesystem::read_symlink
+#include <iomanip>    // quoted
+
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+# include <unistd.h>  // readlink
+#endif
 
 #ifdef _AIX
 # include <cstdlib>   // getenv
@@ -1737,28 +1741,88 @@ namespace std::chrono
   tzdb::current_zone() const
   {
     // TODO cache this function's result?
+    // Could check the modification time of /etc/localtime, and not re-read
+    // it if it hasn't changed. reload_tzdb() could clear the cache too,
+    // to have a way to force a re-read.
 
 #ifndef _AIX
-    // Repeat the preprocessor condition used by filesystem::read_symlink,
-    // to avoid a dependency on src/c++17/fs_ops.o if it won't work anyway.
-#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_SYS_STAT_H)
-    error_code ec;
-    // This should be a symlink to e.g. /usr/share/zoneinfo/Europe/London
-    auto path = filesystem::read_symlink("/etc/localtime", ec);
-    if (!ec)
+#if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
+    string_view str;
+    char buf[128]; // strlen("../usr/share/zoneinfo/...") is usually < 55
+    string dynbuf;
+    // /etc/localtime should be a symlink that ends with a zone name,
+    // e.g. /etc/localtime -> /usr/share/zoneinfo/Europe/London
+    // https://www.freedesktop.org/software/systemd/man/latest/localtime.html
+    // This should work on GNU/Linux, macOS, NetBSD, and OpenBSD.
+    // Some FreeBSD systems also use a symlink for /etc/localtime.
+    // Use readlink directly to avoid std::filesystem overhead.
+    if (auto n = ::readlink("/etc/localtime", buf, sizeof(buf)); n > 0)
       {
-	auto first = path.begin(), last = path.end();
-	if (std::distance(first, last) > 2)
+	if (static_cast<size_t>(n) < sizeof(buf))
+	  str = string_view(buf, n);
+	else [[unlikely]]
 	  {
-	    --last;
-	    string name = last->string();
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
-	      return tz;
-	    --last;
-	    name = last->string() + '/' + name;
-	    if (auto tz = do_locate_zone(this->zones, this->links, name))
+	    // We read the symlink but it didn't fit in buf[], use dynbuf.
+	    do
+	      {
+		n *= 2;
+		dynbuf.resize(n);
+		// In gcc-14 and later this uses dynbuf.__resize_and_overwrite:
+		{
+		  auto n2 = ::readlink("/etc/localtime", dynbuf.data(), n);
+		  if (n2 == -1) // symlink removed or replaced by file?!
+		    __throw_runtime_error("tzdb: error reading /etc/localtime");
+		  dynbuf.resize(n2 < n ? n2 : 0);
+		}
+	      }
+	    while (dynbuf.empty());
+	    str = dynbuf;
+	  }
+      }
+
+    if (!str.empty())
+      {
+	// Remove any redundant slashes so we can match zone names.
+	// e.g. /usr/share/zoneinfo/Europe//London is a valid symlink,
+	// but won't match against "Europe/London".
+	if (auto pos = str.rfind("//"); pos != str.npos) [[unlikely]]
+	  {
+	    if (str.data() != dynbuf.data())
+	      dynbuf = str;
+	    string::size_type spos = pos;
+	    do
+	      {
+		dynbuf.erase(spos, 1);
+		spos = dynbuf.rfind("//", spos);
+	      }
+	    while (spos != dynbuf.npos);
+	    str = dynbuf;
+	  }
+
+	// Check the trailing components of the path against known zone names.
+	// Valid IANA times zones can have one, two, or three parts, e.g.
+	// "UTC", "Europe/London", and "America/Indiana/Indianapolis".
+	// Custom tzdata.zi files could in theory use four or more parts.
+
+	auto pos = str.rfind('/');
+	while (pos != str.npos && pos != 0)
+	  {
+	    if (auto tz = do_locate_zone(this->zones, this->links,
+					 str.substr(pos + 1)))
 	      return tz;
+	    pos = str.rfind('/', pos - 1);
 	  }
+	// If we didn't match yet, try once more so that we will match
+	// a symlink to a relative path such as "Europe/London"
+	// or symlink to an absolute path such as "/Europe/London".
+	// Both cases seem unlikely because it would require either
+	// /etc/Europe or /Europe to be a directory (or a symlink to one)
+	// containing the TZif files, but it's theoretically possible.
+	// If pos==npos then pos+1 wraps to 0 and we use the whole string.
+	// If pos==0 then substr(1) discards the leading slash.
+	if (auto tz = do_locate_zone(this->zones, this->links,
+				     str.substr(pos + 1)))
+	  return tz;
       }
 #endif
     // Otherwise, look for a file naming the time zone.
@@ -1795,7 +1859,12 @@ namespace std::chrono
 		  return tz;
 	      }
       }
-#else
+
+    // FIXME: For DragonFly BSD /etc/localtime is a copy of one of the
+    // zone files in /usr/share/zoneinfo so we need to compare its contents
+    // to each one until we find a match.
+
+#else // _AIX
     // AIX stores current zone in $TZ in /etc/environment but the value
     // is typically a POSIX time zone name, not IANA zone.
     // https://developer.ibm.com/articles/au-aix-posix/

From redi@gcc.gnu.org  Thu May 14 13:15:37 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:37 +0000 (GMT)
Subject: [gcc r13-10316] libstdc++: Make CTAD ignore tuple(const Types&...)
 constructor [PR121771]
Message-ID: <20260514131537.479E84C31833@sourceware.org>

https://gcc.gnu.org/g:f560d7d01d622ce51b446dce591d3044706e7832

commit r13-10316-gf560d7d01d622ce51b446dce591d3044706e7832
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Feb 11 22:39:52 2026 +0000

    libstdc++: Make CTAD ignore tuple(const Types&...) constructor [PR121771]
    
    This is similar to the r16-3536-g0bb0d1d2880d56 change for std::pair, so
    that CTAD ignores the tuple(const Types&...) constructor and only uses
    the tuple(Types...) -> tuple<Types...> deduction guide. This ensures
    that the deduced type comes from the decayed argument types.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Ville Voutilainen <ville.voutilainen@gmail.com>
    (cherry picked from commit 7bafcc36172b572296731df951df4b0caa019b95)

Diff:
---
 libstdc++-v3/include/std/tuple                     |  8 ++--
 .../testsuite/20_util/tuple/cons/121771.cc         | 45 ++++++++++++++++++++++
 2 files changed, 49 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index f0183ffe8270..60dd4bf9aa78 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -871,14 +871,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
 	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
 	constexpr
-	tuple(const _Elements&... __elements)
+	tuple(const __type_identity_t<_Elements>&... __elements)
 	noexcept(__nothrow_constructible<const _Elements&...>())
 	: _Inherited(__elements...) { }
 
       template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
 	       _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
 	explicit constexpr
-	tuple(const _Elements&... __elements)
+	tuple(const __type_identity_t<_Elements>&... __elements)
 	noexcept(__nothrow_constructible<const _Elements&...>())
 	: _Inherited(__elements...) { }
 
@@ -982,7 +982,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
 	_GLIBCXX20_CONSTEXPR
 	tuple(allocator_arg_t __tag, const _Alloc& __a,
-	      const _Elements&... __elements)
+	      const __type_identity_t<_Elements>&... __elements)
 	: _Inherited(__tag, __a, __elements...) { }
 
       template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
@@ -990,7 +990,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_GLIBCXX20_CONSTEXPR
 	explicit
 	tuple(allocator_arg_t __tag, const _Alloc& __a,
-	      const _Elements&... __elements)
+	      const __type_identity_t<_Elements>&... __elements)
 	: _Inherited(__tag, __a, __elements...) { }
 
       template<typename _Alloc, typename... _UElements,
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
new file mode 100644
index 000000000000..40bb37aced4f
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
@@ -0,0 +1,45 @@
+// { dg-do compile { target c++17 } }
+
+// Bug 121771 - std::tuple CTAD fails for lvalue reference to function type
+
+#include <tuple>
+#include <memory>
+
+void func();
+
+std::tuple t(func);
+std::tuple<void (*)()>& r = t;
+
+struct Explicit {
+    Explicit();
+    explicit Explicit(const Explicit&);
+} ex;
+
+std::tuple t2(func, 1);
+std::tuple<void (*)(), int>& r2 = t2;
+
+std::tuple t2x(ex, func);
+std::tuple<Explicit, void (*)()>& r2x = t2x;
+
+std::tuple t3(1, func, 3);
+std::tuple<int, void (*)(), int>& r3 = t3;
+
+std::tuple t3x(ex, 2, func);
+std::tuple<Explicit, int, void (*)()>& r3x = t3x;
+
+std::allocator<int> alloc;
+
+std::tuple ta(std::allocator_arg, alloc, func);
+std::tuple<void (*)()>& ra = ta;
+
+std::tuple ta2(std::allocator_arg, alloc, func, 1);
+std::tuple<void (*)(), int>& ra2 = ta2;
+
+std::tuple ta2x(std::allocator_arg, alloc, ex, func);
+std::tuple<Explicit, void (*)()>& ra2x = ta2x;
+
+std::tuple ta3(std::allocator_arg, alloc, 1, func, 3);
+std::tuple<int, void (*)(), int>& ra3 = ta3;
+
+std::tuple ta3x(std::allocator_arg, alloc, ex, 2, func);
+std::tuple<Explicit, int, void (*)()>& ra3x = ta3x;

From redi@gcc.gnu.org  Thu May 14 13:15:47 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:47 +0000 (GMT)
Subject: [gcc r13-10317] libstdc++: Fix std::format output for
 std::chrono::zoned_time
Message-ID: <20260514131547.881894C318BA@sourceware.org>

https://gcc.gnu.org/g:01e7fe125e299a719df0bed5c72df927d09e52f2

commit r13-10317-g01e7fe125e299a719df0bed5c72df927d09e52f2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jul 26 18:11:26 2024 +0100

    libstdc++: Fix std::format output for std::chrono::zoned_time
    
    When formatting a chrono::zoned_time with an empty chrono-specs, we were
    only formatting its _M_time member, but the ostream insertion operator
    uses the format "{:L%F %T %Z}" which includes the time zone
    abbreviation. The %Z should also be used when formatting with an empty
    chrono-specs.
    
    This commit makes _M_format_to_ostream handle __local_time_fmt
    specializations directly, rather than calling itself recursively to
    format the _M_time member. We need to be able to customize the output of
    _M_format_to_ostream for __local_time_fmt, because we use that type for
    gps_time and tai_time as well as for zoned_time and __local_time_fmt.
    When formatting gps_time and tai_time we don't want to include the time
    zone abbreviation in the "{}" output, but for zoned_time we do want to.
    We can reuse the __is_neg flag passed to _M_format_to_ostream (via
    _M_format) to say that we want the time zone abbreviation.  Currently
    the __is_neg flag is only used for duration specializations, so it's
    available for __local_time_fmt to use.
    
    In addition to fixing the zoned_time output to use %Z, this commit also
    changes the __local_time_fmt output to use %Z. Previously it didn't use
    it, just like zoned_time.  The standard doesn't actually say how to
    format local-time-format-t for an empty chrono-specs, but this behaviour
    seems sensible and is what I'm proposing as part of LWG 4124.
    
    While testing this I noticed that some chrono types were not being
    tested with empty chrono-specs, so this adds more tests. I also noticed
    that std/time/clock/local/io.cc was testing tai_time instead of
    local_time, which was completely wrong. That's fixed now too.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono_io.h (__local_fmt_t): Remove unused
            declaration.
            (__formatter_chrono::_M_format_to_ostream): Add explicit
            handling for specializations of __local_time_fmt, including the
            time zone abbreviation in the output if __is_neg is true.
            (formatter<chrono::tai_time<D>>::format): Add comment.
            (formatter<chrono::gps_time<D>>::format): Likewise.
            (formatter<chrono::__detail::__local_time_fmt::format): Call
            _M_format with true for the __is_neg flag.
            * testsuite/std/time/clock/gps/io.cc: Remove unused variable.
            * testsuite/std/time/clock/local/io.cc: New file.
            * testsuite/std/time/clock/system/io.cc: Check empty
            chrono-specs.
            * testsuite/std/time/clock/tai/io.cc: Likewise.
            * testsuite/std/time/zoned_time/io.cc: Likewise.
    
    (cherry picked from commit 8f05ada7dfb9a40d4333a2aa9ccb5ddcdf8e2b06)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h              | 46 ++++++++---
 libstdc++-v3/testsuite/std/time/clock/gps/io.cc    |  1 -
 libstdc++-v3/testsuite/std/time/clock/local/io.cc  | 96 ++++++++++++++++++++++
 libstdc++-v3/testsuite/std/time/clock/system/io.cc |  8 +-
 libstdc++-v3/testsuite/std/time/clock/tai/io.cc    |  3 +
 libstdc++-v3/testsuite/std/time/zoned_time/io.cc   | 11 +++
 6 files changed, 152 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 098a51870189..63c0a8949bcd 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -155,6 +155,7 @@ namespace __detail
 namespace __detail
 {
   // An unspecified type returned by `chrono::local_time_format`.
+  // This is called `local-time-format-t` in the standard.
   template<typename _Duration>
     struct __local_time_fmt
     {
@@ -162,8 +163,6 @@ namespace __detail
       const string* _M_abbrev;
       const seconds* _M_offset_sec;
     };
-
-  struct __local_fmt_t;
 }
 /// @endcond
 
@@ -690,13 +689,34 @@ namespace __format
 	  using ::std::chrono::__detail::__utc_leap_second;
 	  using ::std::chrono::__detail::__local_time_fmt;
 
+	  basic_ostringstream<_CharT> __os;
+	  __os.imbue(_M_locale(__fc));
+
 	  if constexpr (__is_specialization_of<_Tp, __local_time_fmt>)
-	    return _M_format_to_ostream(__t._M_time, __fc, false);
-	  else
 	    {
-	      basic_ostringstream<_CharT> __os;
-	      __os.imbue(_M_locale(__fc));
+	      // Format as "{:L%F %T}"
+	      auto __days = chrono::floor<chrono::days>(__t._M_time);
+	      __os << chrono::year_month_day(__days) << ' '
+		   << chrono::hh_mm_ss(__t._M_time - __days);
 
+	      // For __local_time_fmt the __is_neg flags says whether to
+	      // append " %Z" to the result.
+	      if (__is_neg)
+		{
+		  if (!__t._M_abbrev) [[unlikely]]
+		    __format::__no_timezone_available();
+		  else if constexpr (is_same_v<_CharT, char>)
+		    __os << ' ' << *__t._M_abbrev;
+		  else
+		    {
+		      __os << L' ';
+		      for (char __c : *__t._M_abbrev)
+			__os << __c;
+		    }
+		}
+	    }
+	  else
+	    {
 	      if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
 		__os << __t._M_date << ' ' << __t._M_time;
 	      else if constexpr (chrono::__is_time_point_v<_Tp>)
@@ -722,11 +742,11 @@ namespace __format
 		      __os << _S_plus_minus[1];
 		  __os << __t;
 		}
-
-	      auto __str = std::move(__os).str();
-	      return __format::__write_padded_as_spec(__str, __str.size(),
-						      __fc, _M_spec);
 	    }
+
+	  auto __str = std::move(__os).str();
+	  return __format::__write_padded_as_spec(__str, __str.size(),
+						  __fc, _M_spec);
 	}
 
       static constexpr const _CharT* _S_chars
@@ -2023,6 +2043,8 @@ namespace __format
 	       _FormatContext& __fc) const
 	{
 	  // Convert to __local_time_fmt with abbrev "TAI" and offset 0s.
+	  // We use __local_time_fmt and not sys_time (as the standard implies)
+	  // because %Z for sys_time would print "UTC" and we want "TAI" here.
 
 	  // Offset is 1970y/January/1 - 1958y/January/1
 	  constexpr chrono::days __tai_offset = chrono::days(4383);
@@ -2053,6 +2075,8 @@ namespace __format
 	       _FormatContext& __fc) const
 	{
 	  // Convert to __local_time_fmt with abbrev "GPS" and offset 0s.
+	  // We use __local_time_fmt and not sys_time (as the standard implies)
+	  // because %Z for sys_time would print "UTC" and we want "GPS" here.
 
 	  // Offset is 1980y/January/Sunday[1] - 1970y/January/1
 	  constexpr chrono::days __gps_offset = chrono::days(3657);
@@ -2119,7 +2143,7 @@ namespace __format
 	typename _FormatContext::iterator
 	format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
 	       _FormatContext& __ctx) const
-	{ return _M_f._M_format(__t, __ctx); }
+	{ return _M_f._M_format(__t, __ctx, /* use %Z for {} */ true); }
 
     private:
       __format::__formatter_chrono<_CharT> _M_f;
diff --git a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
index e9fb520115d2..4b3b782845a0 100644
--- a/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
@@ -23,7 +23,6 @@ test01()
   ss << gt;
   VERIFY( ss.str() == "2000-01-01 00:00:13" );
 
-  gps_time<duration<float>> gtf = gt;
   ss.str("");
   ss.clear();
   ss << (gps_time<duration<long double>>(gt) + 20ms);
diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
new file mode 100644
index 000000000000..33eb9f08e806
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -0,0 +1,96 @@
+// { dg-options "-std=gnu++20" }
+// { dg-do run { target c++20 } }
+// { dg-timeout-factor 2 }
+
+#include <chrono>
+#include <format>
+#include <testsuite_hooks.h>
+
+void
+test_ostream()
+{
+  using namespace std::chrono;
+
+  auto lt = local_time<seconds>(1722198122s);
+
+  std::ostringstream ss;
+  ss << lt;
+  auto s = ss.str();
+  ss.str("");
+  ss.clear();
+  ss << sys_time<seconds>{lt.time_since_epoch()};
+  auto s2 = ss.str();
+  VERIFY( s == s2 );
+}
+
+void
+test_format()
+{
+  using std::format;
+  using namespace std::chrono;
+
+  auto lt = local_seconds(1722198122s);
+
+#if __cpp_exceptions
+  auto args = std::make_format_args(lt);
+  try
+  {
+    (void) std::vformat("{:%Z}", args);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+  try
+  {
+    (void) std::vformat("{:%z}", args);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+#endif
+
+  auto s = format("{0:%F %T %a}", lt);
+  VERIFY( s == "2024-07-28 20:22:02 Sun" );
+
+  s = format("{}", lt);
+  VERIFY( s == "2024-07-28 20:22:02" );
+
+  // Test formatting for chrono::local_time_format and local-time-format-t too:
+  auto ltf = local_time_format(lt);
+  s = std::format("{:%F %T %a %b}", ltf);
+  VERIFY( s == "2024-07-28 20:22:02 Sun Jul" );
+#if __cpp_exceptions
+  try
+  {
+    (void) std::format("{:%Z}", ltf);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+  try
+  {
+    (void) std::format("{:%z}", ltf);
+    VERIFY(false);
+  }
+  catch (const std::format_error&)
+  {
+  }
+#endif
+  std::string abbrev = "FOO";
+  seconds off = -3600s;
+  ltf = local_time_format(lt, &abbrev, &off);
+  s = std::format("{}", ltf);
+  VERIFY( s == "2024-07-28 20:22:02 FOO" );
+  s = std::format("{:%Z %T %F %z %Ez}", ltf);
+  __builtin_puts(s.c_str());
+  VERIFY( s == "FOO 20:22:02 2024-07-28 -0100 -01:00" );
+}
+
+int main()
+{
+  test_ostream();
+  test_format();
+}
diff --git a/libstdc++-v3/testsuite/std/time/clock/system/io.cc b/libstdc++-v3/testsuite/std/time/clock/system/io.cc
index 19ba54b04b04..a1ff26b01a85 100644
--- a/libstdc++-v3/testsuite/std/time/clock/system/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/system/io.cc
@@ -65,13 +65,19 @@ test_format()
 		 " | 25.708 | 17:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 		 " | 17:26:25 | 22 | 2022 | +0000 | UTC" );
 
+  auto st = std::chrono::time_point_cast<std::chrono::seconds>(t);
   auto loc = std::locale::classic();
   auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
 			       " %Ow %OW %Ex %EX %Oy %Ey %EY %Ez %Oz}", t);
   s = std::format("{:%c %C %d %e %H %I %m %M %S %u %U"
 		  " %w %W %x %X %y %y %Y +00:00 +00:00}",
-		  std::chrono::time_point_cast<std::chrono::seconds>(t));
+		  st);
   VERIFY( smod == s );
+
+  s = std::format("{}", t);
+  VERIFY( s == "2022-12-19 17:26:25.708" );
+  s = std::format("{0:} {0:=<21}", st);
+  VERIFY( s == "2022-12-19 17:26:25 2022-12-19 17:26:25==" );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
index 5ebf35a8b99a..f371c5a1900b 100644
--- a/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
@@ -17,6 +17,9 @@ test01()
 
   auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, tt);
   VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI" );
+
+  s = std::format("{:=>21}", tt);
+  VERIFY( s == "==2000-01-01 00:00:32" );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
index 31a64b0e44cd..ff356df8cc5c 100644
--- a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
+++ b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
@@ -38,6 +38,7 @@ test_format()
 	       " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 	       " | 12:26:25 | 22 | 2022 | -0500 | EST" );
 
+#ifdef _GLIBCXX_USE_WCHAR_T
   std::wstring ws = std::format(L"{:%a | %A | %b | %B | %c"
 				 " | %C | %d | %D | %e | %F | %g | %G | %h"
 				 " | %H | %I | %j | %m | %M | %p | %r | %R"
@@ -48,6 +49,7 @@ test_format()
 		 " | 12 | 12 | 353 | 12 | 26 | PM | 12:26:25 PM | 12:26"
 		 " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
 		 " | 12:26:25 | 22 | 2022 | -0500 | EST" );
+#endif
 
   auto loc = std::locale::classic();
   auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
@@ -56,6 +58,15 @@ test_format()
 		  " %w %W %x %X %y %y %Y -05:00 -05:00}",
 		  zoned_time<seconds>(zone, time_point_cast<seconds>(t)));
   VERIFY( smod == s );
+
+  s = std::format("{}", zt);
+  VERIFY( s == "2022-12-19 12:26:25.708 EST" );
+  s = std::format("{1:=>30}", 1, zt);
+  VERIFY( s == "===2022-12-19 12:26:25.708 EST" );
+#ifdef _GLIBCXX_USE_WCHAR_T
+  ws = std::format(L"{:+^34}", zoned_time<microseconds>(zone, t));
+  VERIFY( ws == L"++2022-12-19 12:26:25.708000 EST++" );
+#endif
 }
 
 int main()

From redi@gcc.gnu.org  Thu May 14 13:15:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:15:52 +0000 (GMT)
Subject: [gcc r13-10318] libstdc++: Fix std::format of chrono::local_days with
 {} [PR120293]
Message-ID: <20260514131552.B1EC04BBC0EE@sourceware.org>

https://gcc.gnu.org/g:7206d4b9f95a48ab11cebc51bb10a67964a129f3

commit r13-10318-g7206d4b9f95a48ab11cebc51bb10a67964a129f3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 15 19:32:01 2025 +0100

    libstdc++: Fix std::format of chrono::local_days with {} [PR120293]
    
    Formatting of chrono::local_days with an empty chrono-specs should be
    equivalent to inserting it into an ostream, which should use the
    overload for inserting chrono::sys_days into an ostream. The
    implementation of empty chrono-specs in _M_format_to_ostream takes some
    short cuts, and that wasn't being done correctly for chrono::local_days.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120293
            * include/bits/chrono_io.h (_M_format_to_ostream): Add special
            case for local_time convertible to local_days.
            * testsuite/std/time/clock/local/io.cc: Check formatting of
            chrono::local_days.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 1ed7585bf60ba9940ca5dc6d2c72dba86eea7b4d)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h             | 3 +++
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 63c0a8949bcd..2a7527cae2d6 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -728,6 +728,9 @@ namespace __format
 		  // sys_time with period greater or equal to days:
 		  if constexpr (is_convertible_v<_Tp, chrono::sys_days>)
 		    __os << _S_date(__t);
+		  // Or a local_time with period greater or equal to days:
+		  else if constexpr (is_convertible_v<_Tp, chrono::local_days>)
+		    __os << _S_date(__t);
 		  else // Or it's formatted as "{:L%F %T}":
 		    {
 		      auto __days = chrono::floor<chrono::days>(__t);
diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index 33eb9f08e806..85fd734fd634 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -87,6 +87,12 @@ test_format()
   s = std::format("{:%Z %T %F %z %Ez}", ltf);
   __builtin_puts(s.c_str());
   VERIFY( s == "FOO 20:22:02 2024-07-28 -0100 -01:00" );
+
+  s = std::format("{}", local_seconds{});
+  VERIFY( s == "1970-01-01 00:00:00" );
+
+  s = std::format("{}", local_days{}); // PR libstdc++/120293
+  VERIFY( s == "1970-01-01" );
 }
 
 int main()

From redi@gcc.gnu.org  Thu May 14 13:16:03 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:03 +0000 (GMT)
Subject: [gcc r13-10319] libstdc++: Fix dangling pointer in
 fs::path::operator+=(*this) [PR120029]
Message-ID: <20260514131603.01D824C3181D@sourceware.org>

https://gcc.gnu.org/g:2ff8b2f043811cf97f5f9afe026d0a10bf6b1e6f

commit r13-10319-g2ff8b2f043811cf97f5f9afe026d0a10bf6b1e6f
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 30 17:31:01 2025 +0100

    libstdc++: Fix dangling pointer in fs::path::operator+=(*this) [PR120029]
    
    When concatenating a path we reallocate the left operand's storage to
    make room for the new components being added. When the two operands are
    the same object, or the right operand is one of the components of the
    left operand, the reallocation invalidates the pointers that refer
    into the right operand's storage.
    
    The solution in this commit is to detect these aliasing cases and just
    do the concatenation in terms of the contained string, as that code
    already handles the case where the string aliases the path. The standard
    specifies the concatenation in terms of the native() string, so all this
    change does is disable the optimized implementation of concatenation for
    path objects which attempts to avoid re-parsing the path from the
    concatenated string.
    
    The potential loss of performance for this case isn't likely to be an
    issue, because concatenating a path with itself (or one of its existing
    components) probably isn't a common use case.
    
    The Filesystem TS implementation doesn't have the optimized form of
    concatenation and always does it in terms of the native string and
    reparsing the whole thing, so doesn't have this bug. A test is added to
    confirm that anyway (that test has some slightly different results due
    to different behaviour for trailing slashes and implicit "." filenames
    in the TS spec).
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120029
            * src/c++17/fs_path.cc (path::operator+=(const path&)): Handle
            parameters that alias the path or one of its components.
            * testsuite/27_io/filesystem/path/concat/120029.cc: New test.
            * testsuite/experimental/filesystem/path/concat/120029.cc: New
            test.
    
    (cherry picked from commit a067cbcdcc5f599a2b7d607e89674533d23c652d)

Diff:
---
 libstdc++-v3/src/c++17/fs_path.cc                  | 10 +++
 .../27_io/filesystem/path/concat/120029.cc         | 72 +++++++++++++++++++++
 .../experimental/filesystem/path/concat/120029.cc  | 74 ++++++++++++++++++++++
 3 files changed, 156 insertions(+)

diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc
index d65b5482e8b9..8953b1449b37 100644
--- a/libstdc++-v3/src/c++17/fs_path.cc
+++ b/libstdc++-v3/src/c++17/fs_path.cc
@@ -866,6 +866,16 @@ path::operator+=(const path& p)
       return *this;
     }
 
+  // Handle p += p which would otherwise access dangling pointers after
+  // reallocating _M_cmpts and _M_pathname.
+  if (&p == this) [[unlikely]]
+    return *this += p.native();
+  // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
+  if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
+    for (const path& cmpt : *this)
+      if (&cmpt == &p) [[unlikely]]
+	return *this += p.native();
+
 #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
   if (_M_type() == _Type::_Root_name
       || (_M_type() == _Type::_Filename && _M_pathname.size() == 1))
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
new file mode 100644
index 000000000000..5153d594b50f
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
@@ -0,0 +1,72 @@
+// { dg-do run { target c++17 } }
+
+// Bug libstdc++/120029
+// Dangling iterator usage in path::operator+=(const path& p) when this == p
+
+#include <filesystem>
+#include <testsuite_hooks.h>
+
+namespace fs = std::filesystem;
+
+void
+test_root_dir()
+{
+  fs::path p = "/";
+  p += p;
+  p += p;
+  VERIFY( p == "////" );
+  p += p.filename();
+  VERIFY( p == "////" );
+  p += *std::prev(p.end());
+  VERIFY( p == "////" );
+}
+
+void
+test_root_name()
+{
+  fs::path p = "C:/";
+  p += p;
+  p += p;
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += p.filename();
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += *std::prev(p.end());
+  VERIFY( p == "C:/C:/C:/C:/" );
+}
+
+void
+test_filename()
+{
+  fs::path p = "file";
+  p += p;
+  p += p;
+  VERIFY( p == "filefilefilefile" );
+  p += p.filename();
+  VERIFY( p == "filefilefilefilefilefilefilefile" );
+  p += *std::prev(p.end());
+  VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+}
+
+void
+test_multi()
+{
+  fs::path p = "/home/username/Documents/mu";
+  p += p;
+  p += p;
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+  p += p.filename();
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+  p += *std::prev(p.end());
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+  auto n = std::distance(p.begin(), p.end());
+  for (int i = 0; i < n; ++i)
+    p += *std::next(p.begin(), i);
+}
+
+int main()
+{
+  test_root_dir();
+  test_root_name();
+  test_filename();
+  test_multi();
+}
diff --git a/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc b/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
new file mode 100644
index 000000000000..209d96806c6a
--- /dev/null
+++ b/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
@@ -0,0 +1,74 @@
+// { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" }
+// { dg-do run { target c++11 } }
+// { dg-require-filesystem-ts "" }
+
+// Bug libstdc++/120029
+// Dangling iterator usage in path::operator+=(const path& p) when this == p
+
+#include <experimental/filesystem>
+#include <testsuite_hooks.h>
+
+namespace fs = std::experimental::filesystem;
+
+void
+test_root_dir()
+{
+  fs::path p = "/";
+  p += p;
+  p += p;
+  VERIFY( p == "////" );
+  p += p.filename();
+  VERIFY( p == "////////" );
+  p += *std::prev(p.end());
+  VERIFY( p == "////////////////" );
+}
+
+void
+test_root_name()
+{
+  fs::path p = "C:/";
+  p += p;
+  p += p;
+  VERIFY( p == "C:/C:/C:/C:/" );
+  p += p.filename(); // For Filesystem TS the filename is "."
+  VERIFY( p == "C:/C:/C:/C:/." );
+  p += *std::prev(p.end());
+  VERIFY( p == "C:/C:/C:/C:/.." );
+}
+
+void
+test_filename()
+{
+  fs::path p = "file";
+  p += p;
+  p += p;
+  VERIFY( p == "filefilefilefile" );
+  p += p.filename();
+  VERIFY( p == "filefilefilefilefilefilefilefile" );
+  p += *std::prev(p.end());
+  VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+}
+
+void
+test_multi()
+{
+  fs::path p = "/home/username/Documents/mu";
+  p += p;
+  p += p;
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+  p += p.filename();
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+  p += *std::prev(p.end());
+  VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+  auto n = std::distance(p.begin(), p.end());
+  for (int i = 0; i < n; ++i)
+    p += *std::next(p.begin(), i);
+}
+
+int main()
+{
+  test_root_dir();
+  test_root_name();
+  test_filename();
+  test_multi();
+}

From redi@gcc.gnu.org  Thu May 14 13:16:13 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:13 +0000 (GMT)
Subject: [gcc r13-10320] libstdc++: Optimize fs::path::operator+=(const path&)
 alias check
Message-ID: <20260514131613.51B564BBC0DF@sourceware.org>

https://gcc.gnu.org/g:a11cea998a20186324cda9e6c35476132925fbe3

commit r13-10320-ga11cea998a20186324cda9e6c35476132925fbe3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 17 15:58:10 2026 +0000

    libstdc++: Optimize fs::path::operator+=(const path&) alias check
    
    Instead of a loop that compares &p to the address of each path
    component, we can just do two pointer comparisons to see if &p is within
    the contiguous array of components.
    
    We don't need to make the same change to experimental::filesystem::path
    because as noted in r15-9709-gbeb0ffd36eedf0 the TS implementation
    doesn't attempt to optimize operator+= so doesn't care if the parameter
    aliases *this.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++17/fs_path.cc (path::operator+=): Use pointer
            comparison to detect aliasing instead of a loop.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 881b327773d3f366c2b638e3d07ef310b2a2dfe2)

Diff:
---
 libstdc++-v3/src/c++17/fs_path.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++17/fs_path.cc b/libstdc++-v3/src/c++17/fs_path.cc
index 8953b1449b37..7769100ca33f 100644
--- a/libstdc++-v3/src/c++17/fs_path.cc
+++ b/libstdc++-v3/src/c++17/fs_path.cc
@@ -872,9 +872,11 @@ path::operator+=(const path& p)
     return *this += p.native();
   // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
   if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
-    for (const path& cmpt : *this)
-      if (&cmpt == &p) [[unlikely]]
+    {
+      const auto first = _M_cmpts.begin(), last = first + _M_cmpts.size();
+      if (!std::less<>()(&p, first) && std::less<>()(&p, last)) [[unlikely]]
 	return *this += p.native();
+    }
 
 #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
   if (_M_type() == _Type::_Root_name

From redi@gcc.gnu.org  Thu May 14 13:16:18 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:18 +0000 (GMT)
Subject: [gcc r13-10321] libstdc++: Add workaround for read(2) EINVAL on macOS
 and FreeBSD [PR102259]
Message-ID: <20260514131618.778F94C318A3@sourceware.org>

https://gcc.gnu.org/g:f4afecdce5275555973a032bbcf540caf037cbc2

commit r13-10321-gf4afecdce5275555973a032bbcf540caf037cbc2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Dec 6 17:41:01 2024 +0000

    libstdc++: Add workaround for read(2) EINVAL on macOS and FreeBSD [PR102259]
    
    On macOS and FreeBSD the read(2) system call can return EINVAL for large
    sizes, so limit the maximum that we try to read. The calling code in
    basic_filebuf::xsgetn will loop until it gets the size it wants, so we don't
    need to loop in basic_file::xsgetn, just limit the maximum size.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/102259
            * config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to
            _GLIBCXX_MAX_READ_SIZE if that macro is defined.
            * config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
            Define to INT_MAX-1.
            * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
            Likewise.
    
    (cherry picked from commit 4065bf7c2c61dd6eb19fdccbcda99000d8e44b7a)

Diff:
---
 libstdc++-v3/config/io/basic_file_stdio.cc      | 6 ++++++
 libstdc++-v3/config/os/bsd/darwin/os_defines.h  | 3 +++
 libstdc++-v3/config/os/bsd/freebsd/os_defines.h | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc
index 27c2ad2afe3a..a51b3afb1d13 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.cc
+++ b/libstdc++-v3/config/io/basic_file_stdio.cc
@@ -336,6 +336,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     if (__ret == 0 && ferror(this->file()))
       __ret = -1;
 #else
+
+#ifdef _GLIBCXX_MAX_READ_SIZE
+    if (__builtin_expect(__n > _GLIBCXX_MAX_READ_SIZE, 0))
+      __n = _GLIBCXX_MAX_READ_SIZE;
+#endif
+
     do
       __ret = read(this->fd(), __s, __n);
     while (__ret == -1L && errno == EINTR);
diff --git a/libstdc++-v3/config/os/bsd/darwin/os_defines.h b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
index 9f0d43a083f3..22f1f6d424d2 100644
--- a/libstdc++-v3/config/os/bsd/darwin/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
@@ -54,4 +54,7 @@
 // No support for referencing weak symbols without a definition.
 #define _GLIBCXX_USE_WEAK_REF 0
 
+// read(2) can return EINVAL for n >= INT_MAX.
+#define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+
 #endif
diff --git a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
index cddec56281d3..6f2ddd0f7911 100644
--- a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
@@ -40,4 +40,7 @@
 #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
 #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
 
+// read(2) can return EINVAL for n >= INT_MAX.
+#define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+
 #endif

From redi@gcc.gnu.org  Thu May 14 13:16:28 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:28 +0000 (GMT)
Subject: [gcc r13-10322] libstdc++: Use feature test macros in
 <bits/stl_construct.h>
Message-ID: <20260514131628.C98244B19736@sourceware.org>

https://gcc.gnu.org/g:671b96fcf584ba2934a37b353ace315f65ed93a4

commit r13-10322-g671b96fcf584ba2934a37b353ace315f65ed93a4
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Mar 18 13:09:52 2024 +0000

    libstdc++: Use feature test macros in <bits/stl_construct.h>
    
    The preprocessor checks for __cplusplus in <bits/stl_construct.h> should
    use the appropriate feature test macros instead of __cplusplus, namely
    __cpp_constexpr_dynamic_alloc.
    
    We want to check the compiler macro not the library's
    __cpp_lib_constexpr_dynamic_alloc, because the latter is not defined for
    freestanding but std::construct_at needs to be.
    
    This gcc-13 backport doesn't include the changes to check the
    __glibcxx_raw_memory_algorithms macro instead of __cplusplus >= 201703L
    because the __glibcxx_foo forms of macros were not added until gcc-14,
    and the __cpp_lib_raw_memory_algorithms macro is only defined by
    bits/stl_uninitialized.h, which isn't included here.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_construct.h (construct_at): Guard
            with feature test macros instead of just __cplusplus.
    
    (cherry picked from commit 8539c5610a7c36099af2ea756d8bbfa398a40e0b)

Diff:
---
 libstdc++-v3/include/bits/stl_construct.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index cf62d927cdb7..3403c3a4aeed 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -88,7 +88,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	__location->~_Tp();
     }
 
-#if __cplusplus >= 202002L
+#if __cpp_constexpr_dynamic_alloc // >= C++20
   template<typename _Tp, typename... _Args>
     constexpr auto
     construct_at(_Tp* __location, _Args&&... __args)
@@ -108,7 +108,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline void
     _Construct(_Tp* __p, _Args&&... __args)
     {
-#if __cplusplus >= 202002L
+#if __cpp_constexpr_dynamic_alloc // >= C++20
       if (std::__is_constant_evaluated())
 	{
 	  // Allow std::_Construct to be used in constant expressions.
@@ -145,7 +145,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _GLIBCXX14_CONSTEXPR inline void
     _Destroy(_Tp* __pointer)
     {
-#if __cplusplus > 201703L
+#if __cpp_constexpr_dynamic_alloc // >= C++20
       std::destroy_at(__pointer);
 #else
       __pointer->~_Tp();
@@ -188,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
 #endif
-#if __cplusplus >= 202002L
+#if __cpp_constexpr_dynamic_alloc // >= C++20
       if (std::__is_constant_evaluated())
 	return std::_Destroy_aux<false>::__destroy(__first, __last);
 #endif
@@ -237,7 +237,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
 #endif
-#if __cplusplus >= 202002L
+#if __cpp_constexpr_dynamic_alloc // >= C++20
       if (std::__is_constant_evaluated())
 	return std::_Destroy_n_aux<false>::__destroy_n(__first, __count);
 #endif

From redi@gcc.gnu.org  Thu May 14 13:16:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:33 +0000 (GMT)
Subject: [gcc r13-10323] libstdc++: Simplify std::_Destroy using 'if constexpr'
Message-ID: <20260514131633.EF8954BBC0DA@sourceware.org>

https://gcc.gnu.org/g:8f61b86eac661c623979440ab026d75c9c0c7b3c

commit r13-10323-g8f61b86eac661c623979440ab026d75c9c0c7b3c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Nov 28 12:32:59 2024 +0000

    libstdc++: Simplify std::_Destroy using 'if constexpr'
    
    This is another place where we can use 'if constexpr' to replace
    dispatching to a specialized class template, improving compile times and
    avoiding a function call.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_construct.h (_Destroy(FwdIter, FwdIter)): Use
            'if constexpr' instead of dispatching to a member function of a
            class template.
            (_Destroy_n(FwdIter, Size)): Likewise.
            (_Destroy_aux, _Destroy_n_aux): Only define for C++98.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    (cherry picked from commit 1467409beb27a693e96994899f30e4db015b5c2c)

Diff:
---
 libstdc++-v3/include/bits/stl_construct.h | 33 +++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index 3403c3a4aeed..6ce0cdfa2869 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -152,6 +152,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
     }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++17-extensions" // for if-constexpr
+
+#if __cplusplus < 201103L
   template<bool>
     struct _Destroy_aux
     {
@@ -171,6 +175,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
         static void
         __destroy(_ForwardIterator, _ForwardIterator) { }
     };
+#endif
 
   /**
    * Destroy a range of objects.  If the value_type of the object has
@@ -187,15 +192,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // A deleted destructor is trivial, this ensures we reject such types:
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
-#endif
+      if constexpr (!__has_trivial_destructor(_Value_type))
+	for (; __first != __last; ++__first)
+	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
-      if (std::__is_constant_evaluated())
-	return std::_Destroy_aux<false>::__destroy(__first, __last);
+      else if (std::__is_constant_evaluated())
+	for (; __first != __last; ++__first)
+	  std::destroy_at(std::__addressof(*__first));
 #endif
+#else
       std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy(__first, __last);
+#endif
     }
 
+#if __cplusplus < 201103L
   template<bool>
     struct _Destroy_n_aux
     {
@@ -220,6 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return __first;
 	}
     };
+#endif
 
   /**
    * Destroy a range of objects.  If the value_type of the object has
@@ -236,14 +248,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // A deleted destructor is trivial, this ensures we reject such types:
       static_assert(is_destructible<_Value_type>::value,
 		    "value type is destructible");
-#endif
+      if constexpr (!__has_trivial_destructor(_Value_type))
+	for (; __count > 0; (void)++__first, --__count)
+	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
-      if (std::__is_constant_evaluated())
-	return std::_Destroy_n_aux<false>::__destroy_n(__first, __count);
+      else if (std::__is_constant_evaluated())
+	for (; __count > 0; (void)++__first, --__count)
+	  std::destroy_at(std::__addressof(*__first));
 #endif
+      else
+	std::advance(__first, __count);
+      return __first;
+#else
       return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy_n(__first, __count);
+#endif
     }
+#pragma GCC diagnostic pop
 
 #if __cplusplus >= 201703L
   template <typename _ForwardIterator>

From redi@gcc.gnu.org  Thu May 14 13:16:39 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:39 +0000 (GMT)
Subject: [gcc r13-10324] libstdc++: Improve diagnostics for ill-formed
 std::_Destroy and std::_Destroy_n [PR120390]
Message-ID: <20260514131639.20C484C31826@sourceware.org>

https://gcc.gnu.org/g:d37185e5e143597c014c4449f1bfcb4361c0bd37

commit r13-10324-gd37185e5e143597c014c4449f1bfcb4361c0bd37
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 21 23:48:34 2025 +0100

    libstdc++: Improve diagnostics for ill-formed std::_Destroy and std::_Destroy_n [PR120390]
    
    By using std::is_trivially_destructible instead of the old
    __has_trivial_destructor built-in we no longer need the static_assert to
    deal with types with deleted destructors. All non-destructible types,
    including those with deleted destructors, will now give user-friendly
    diagnostics that clearly explain the problem.
    
    Also combine the _Destroy_aux and _Destroy_n_aux class templates used
    for C++98 into one, so that we perform fewer expensive class template
    instantiations.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120390
            * include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New
            static member function.
            (_Destroy_aux<true>::__destroy_n): Likewise.
            (_Destroy_n_aux): Remove.
            (_Destroy(ForwardIterator, ForwardIterator)): Remove
            static_assert. Use is_trivially_destructible instead of
            __has_trivial_destructor.
            (_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of
            _Destroy_n_aux::__destroy_n.
            * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
            Adjust dg-error strings. Move destroy_n tests to ...
            * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc:
            New test.
            * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
            Adjust dg-error strings.
            * testsuite/23_containers/vector/cons/destructible_neg.cc:
            Likewise.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 01789efaea25a48ac45dae8facb6db8abd8ebb14)

Diff:
---
 libstdc++-v3/include/bits/stl_construct.h          | 56 ++++++++------------
 .../memory_management_tools/destroy_n_neg.cc       | 59 ++++++++++++++++++++++
 .../memory_management_tools/destroy_neg.cc         | 20 ++++++--
 .../vector/cons/destructible_debug_neg.cc          |  7 +--
 .../23_containers/vector/cons/destructible_neg.cc  |  7 +--
 5 files changed, 98 insertions(+), 51 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index 6ce0cdfa2869..4a89f73823b8 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -166,6 +166,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  for (; __first != __last; ++__first)
 	    std::_Destroy(std::__addressof(*__first));
 	}
+
+      template<typename _ForwardIterator, typename _Size>
+	static _GLIBCXX20_CONSTEXPR _ForwardIterator
+	__destroy_n(_ForwardIterator __first, _Size __count)
+	{
+	  for (; __count > 0; (void)++__first, --__count)
+	    std::_Destroy(std::__addressof(*__first));
+	  return __first;
+	}
     };
 
   template<>
@@ -174,6 +183,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _ForwardIterator>
         static void
         __destroy(_ForwardIterator, _ForwardIterator) { }
+
+      template<typename _ForwardIterator, typename _Size>
+	static _ForwardIterator
+	__destroy_n(_ForwardIterator __first, _Size __count)
+	{
+	  std::advance(__first, __count);
+	  return __first;
+	}
     };
 #endif
 
@@ -189,10 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename iterator_traits<_ForwardIterator>::value_type
                        _Value_type;
 #if __cplusplus >= 201103L
-      // A deleted destructor is trivial, this ensures we reject such types:
-      static_assert(is_destructible<_Value_type>::value,
-		    "value type is destructible");
-      if constexpr (!__has_trivial_destructor(_Value_type))
+      if constexpr (!is_trivially_destructible<_Value_type>::value)
 	for (; __first != __last; ++__first)
 	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
@@ -206,33 +220,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
     }
 
-#if __cplusplus < 201103L
-  template<bool>
-    struct _Destroy_n_aux
-    {
-      template<typename _ForwardIterator, typename _Size>
-	static _GLIBCXX20_CONSTEXPR _ForwardIterator
-	__destroy_n(_ForwardIterator __first, _Size __count)
-	{
-	  for (; __count > 0; (void)++__first, --__count)
-	    std::_Destroy(std::__addressof(*__first));
-	  return __first;
-	}
-    };
-
-  template<>
-    struct _Destroy_n_aux<true>
-    {
-      template<typename _ForwardIterator, typename _Size>
-        static _ForwardIterator
-        __destroy_n(_ForwardIterator __first, _Size __count)
-	{
-	  std::advance(__first, __count);
-	  return __first;
-	}
-    };
-#endif
-
   /**
    * Destroy a range of objects.  If the value_type of the object has
    * a trivial destructor, the compiler should optimize all of this
@@ -245,10 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename iterator_traits<_ForwardIterator>::value_type
                        _Value_type;
 #if __cplusplus >= 201103L
-      // A deleted destructor is trivial, this ensures we reject such types:
-      static_assert(is_destructible<_Value_type>::value,
-		    "value type is destructible");
-      if constexpr (!__has_trivial_destructor(_Value_type))
+      if constexpr (!is_trivially_destructible<_Value_type>::value)
 	for (; __count > 0; (void)++__first, --__count)
 	  std::_Destroy(std::__addressof(*__first));
 #if __cpp_constexpr_dynamic_alloc // >= C++20
@@ -260,7 +244,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	std::advance(__first, __count);
       return __first;
 #else
-      return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
+      return std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
 	__destroy_n(__first, __count);
 #endif
     }
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
new file mode 100644
index 000000000000..12c0dc575ccf
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
@@ -0,0 +1,59 @@
+// Copyright (C) 2017-2025 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++17 } }
+
+#include <memory>
+
+// This has a trivial destructor, but should not be destructible!
+struct DeletedDtor {
+  ~DeletedDtor() = delete;
+};
+
+void
+test01()
+{
+  alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
+  auto p = ::new (buf) DeletedDtor();
+  std::destroy_n(p, 1);
+}
+
+class PrivateDtor {
+  ~PrivateDtor() { }
+};
+
+void
+test02()
+{
+  alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
+  auto p = ::new (buf) PrivateDtor();
+  std::destroy_n(p, 1);
+}
+
+#if __cpp_constexpr_dynamic_alloc // >= C++20
+consteval bool
+test03()
+{
+  DeletedDtor* p = nullptr;
+  std::destroy_n(p, 0);
+  return true;
+}
+static_assert(test03());
+#endif
+
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
index f7292341ee36..02c9ddd87dfc 100644
--- a/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
@@ -29,8 +29,7 @@ test01()
 {
   alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
   auto p = ::new (buf) DeletedDtor();
-  std::destroy(p, p + 1);	// { dg-error "here" }
-  std::destroy_n(p, 1);		// { dg-error "here" }
+  std::destroy(p, p + 1);
 }
 
 class PrivateDtor {
@@ -42,8 +41,19 @@ test02()
 {
   alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
   auto p = ::new (buf) PrivateDtor();
-  std::destroy(p, p + 1);	// { dg-error "here" }
-  std::destroy_n(p, 1);		// { dg-error "here" }
+  std::destroy(p, p + 1);
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
+#if __cpp_constexpr_dynamic_alloc // >= C++20
+consteval bool
+test03()
+{
+  DeletedDtor* p = nullptr;
+  std::destroy(p, p);
+  return true;
+}
+static_assert(test03());
+#endif
+
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
index 55b9b532c9cc..2afb14631597 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
@@ -43,11 +43,8 @@ test02()
   std::vector<PrivateDtor> v;
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
 
 // In Debug Mode the "required from here" errors come from <debug/vector>
 // { dg-error "required from here" "" { target *-*-* } 172 }
-
-// Needed because of PR c++/92193
-// { dg-prune-output "deleted function" }
-// { dg-prune-output "private within this context" }
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
index f17e4a7e3e5d..2356d36a1df5 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
@@ -42,8 +42,5 @@ test02()
   std::vector<PrivateDtor> v; // { dg-error "here" }
 }
 
-// { dg-error "value type is destructible" "" { target *-*-* } 0 }
-
-// Needed because of PR c++/92193
-// { dg-prune-output "deleted function" }
-// { dg-prune-output "private within this context" }
+// { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+// { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }

From redi@gcc.gnu.org  Thu May 14 13:16:49 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:49 +0000 (GMT)
Subject: [gcc r13-10325] libstdc++: Update tzdata to 2025c
Message-ID: <20260514131649.6E0624C3181D@sourceware.org>

https://gcc.gnu.org/g:4e28786a2b8605617e81f2a381805149fa77a3d4

commit r13-10325-g4e28786a2b8605617e81f2a381805149fa77a3d4
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2025c
    
    Import the new 2025c tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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 2025c release.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit f725f08262866fbdd695673bf0951648d3da5b49)

Diff:
---
 libstdc++-v3/include/std/chrono  | 2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++----
 libstdc++-v3/src/c++20/tzdb.cc   | 4 ++--
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 913d49a0722f..8206babc807c 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3253,7 +3253,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      const sys_seconds __expires(1766880000s); // 2025-12-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index a7fb52f1968f..c56f67c02f6d 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2025b
+# version 2025c
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -2951,9 +2951,7 @@ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u
 -8 1 PDT 1951 S 30 2
 -8 - PST 1952 Ap 27 2
 -8 1 PDT 1952 S 28 2
--8 - PST 1954
--8 CA P%sT 1961
--8 - PST 1976
+-8 CA P%sT 1967
 -8 u P%sT 1996
 -8 m P%sT 2001
 -8 u P%sT 2002 F 20
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 4cfa4b60543d..de174f15c61a 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1195,8 +1195,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2025-12-28 00:00:00 UTC.
-    auto expires = sys_days{2025y/12/28};
+    // This list is valid until at least 2026-06-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/06/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From redi@gcc.gnu.org  Thu May 14 13:16:54 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 14 May 2026 13:16:54 +0000 (GMT)
Subject: [gcc r13-10326] libstdc++: Update tzdata to 2026a
Message-ID: <20260514131654.950004C318AD@sourceware.org>

https://gcc.gnu.org/g:1b582a45d388f74debe9a56abc70c367d876aeb4

commit r13-10326-g1b582a45d388f74debe9a56abc70c367d876aeb4
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026a
    
    Import the new 2026a tzdata.zi file and new leapseconds expiry date.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    (cherry picked from commit b8fd759dc61c0a191a236eb19db870bb30078011)

Diff:
---
 libstdc++-v3/include/std/chrono  |  2 +-
 libstdc++-v3/src/c++20/tzdata.zi | 10 ++++++----
 libstdc++-v3/src/c++20/tzdb.cc   |  4 ++--
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 8206babc807c..2a0ab6bb39c3 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -3253,7 +3253,7 @@ namespace __detail
       };
       // The list above is known to be valid until (at least) this date
       // and only contains positive leap seconds.
-      constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
+      constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
 
 #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
       if (__ss > __expires)
diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index c56f67c02f6d..88f7d34a3817 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,5 @@
-# version 2025c
+# version 2026a
+# redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -1304,8 +1305,8 @@ R MT 1974 o - S 16 0s 0 -
 R MT 1975 1979 - Ap Su>=15 2 1 S
 R MT 1975 1980 - S Su>=15 2 0 -
 R MT 1980 o - Mar 31 2 1 S
-R MD 1997 ma - Mar lastSu 2 1 S
-R MD 1997 ma - O lastSu 3 0 -
+R MD 1997 2021 - Mar lastSu 2 1 S
+R MD 1997 2021 - O lastSu 3 0 -
 R O 1918 1919 - S 16 2s 0 -
 R O 1919 o - Ap 15 2s 1 S
 R O 1944 o - Ap 3 2s 1 S
@@ -3666,7 +3667,8 @@ Z Europe/Chisinau 1:55:20 - LMT 1880
 3 R MSK/MSD 1990 May 6 2
 2 R EE%sT 1992
 2 e EE%sT 1997
-2 MD EE%sT
+2 MD EE%sT 2022
+2 E EE%sT
 Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
 -0:25:21 - DMT 1916 May 21 2s
 -0:25:21 1 IST 1916 O 1 2s
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index de174f15c61a..5e4acf22fa28 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1195,8 +1195,8 @@ namespace std::chrono
   pair<vector<leap_second>, bool>
   tzdb_list::_Node::_S_read_leap_seconds()
   {
-    // This list is valid until at least 2026-06-28 00:00:00 UTC.
-    constexpr auto expires = sys_days{2026y/06/28};
+    // This list is valid until at least 2026-12-28 00:00:00 UTC.
+    constexpr auto expires = sys_days{2026y/12/28};
     vector<leap_second> leaps
     {
       (leap_second)  78796800, // 1 Jul 1972

From tkaminsk@gcc.gnu.org  Thu May 14 14:26:57 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 14 May 2026 14:26:57 +0000 (GMT)
Subject: [gcc r17-512] libstdc++: Merge __type_identity and type_identity for
 C+20.
Message-ID: <20260514142657.7D1CB4BBC0D9@sourceware.org>

https://gcc.gnu.org/g:1283fc2e30965ea57965bb5ad19f221a645f9c7e

commit r17-512-g1283fc2e30965ea57965bb5ad19f221a645f9c7e
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 14 12:48:19 2026 +0200

    libstdc++: Merge __type_identity and type_identity for C+20.
    
    The components that used __type_identity in C++20 mode (due source
    compatibility with older standard) lead to instantiation of separate
    class template from std::type_identity for each used type. This
    patch makes __type_identity an alias to type_identity if the latter is
    available.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/type_traits (__type_identity, __type_identity_t)
            [__cpp_lib_type_identity]: Define as alias to type_identity
            and its nested type respectively.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/type_traits | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index 1c03c22e8eed..c56fae4a5bf5 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -164,6 +164,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     using __conditional_t
       = typename __conditional<_Cond>::template type<_If, _Else>;
 
+#ifdef __cpp_lib_type_identity // C++ >= 20
+  /** Identity metafunction.
+   * @since C++20
+   * @{
+   */
+  template<typename _Tp>
+    struct type_identity { using type = _Tp; };
+
+  template<typename _Tp>
+    using type_identity_t = typename type_identity<_Tp>::type;
+  /// @}
+
+  /// @cond undocumented
+  template <typename _Tp>
+    using __type_identity = type_identity<_Tp>;
+
+  template<typename _Tp>
+    using __type_identity_t = typename type_identity<_Tp>::type;
+  /// @endcond
+#else
   /// @cond undocumented
   template <typename _Type>
     struct __type_identity
@@ -171,7 +191,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Tp>
     using __type_identity_t = typename __type_identity<_Tp>::type;
+  /// @endcond
+#endif
 
+  /// @cond undocumented
   namespace __detail
   {
     // A variadic alias template that resolves to its first argument.
@@ -3955,19 +3978,6 @@ template<typename _Ret, typename _Fn, typename... _Args>
   /// @}
 #endif // __cpp_lib_remove_cvref
 
-#ifdef __cpp_lib_type_identity // C++ >= 20
-  /** * Identity metafunction.
-   * @since C++20
-   * @{
-   */
-  template<typename _Tp>
-    struct type_identity { using type = _Tp; };
-
-  template<typename _Tp>
-    using type_identity_t = typename type_identity<_Tp>::type;
-  /// @}
-#endif
-
 #ifdef __cpp_lib_unwrap_ref // C++ >= 20
   /** Unwrap a reference_wrapper
    * @since C++20

From gccadmin@gcc.gnu.org  Fri May 15 00:16:52 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 15 May 2026 00:16:52 +0000 (GMT)
Subject: [gcc r17-519] Daily bump.
Message-ID: <20260515001652.C36604B92091@sourceware.org>

https://gcc.gnu.org/g:07aa3ec358ae66d512213b2be3c6f9646153bb45

commit r17-519-g07aa3ec358ae66d512213b2be3c6f9646153bb45
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 15 00:16:23 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 43 +++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/c-family/ChangeLog  |  5 ++++
 gcc/c/ChangeLog         |  5 ++++
 gcc/cp/ChangeLog        | 20 +++++++++++++++
 gcc/fortran/ChangeLog   | 28 +++++++++++++++++++++
 gcc/testsuite/ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 44 ++++++++++++++++++++++++++++++++
 8 files changed, 213 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a1e1e96f9e5a..283c8f6dd10b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,46 @@
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* config/i386/i386.md (ptwrite): Add explicit mode to
+	instruction.
+
+2026-05-14  Xi Ruoyao  <xry111@xry111.site>
+
+	PR rtl-optimization/96692
+	* config/loongarch/loongarch.md (define_split): New splitters
+	turning a ^ b ^ (a | c) => (c &~ a) ^ b.
+
+2026-05-14  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/riscv/riscv-v.cc (expand_const_vector_stepped): Drop unused
+	SRC parameter. All callers changed.
+	(expand_const_vector_interleaved_stepped_npatterns): Likewise.
+	(expand_const_vector): Corresponding changes.
+
+2026-05-14  Alex Coplan  <alex.coplan@arm.com>
+
+	* doc/rtl.texi (Machine Modes): Update description of
+	GET_MODE_MASK to use HOST_BITS_PER_WIDE_INT instead of
+	HOST_BITS_PER_INT as the upper limit of the input mode's bitsize.
+
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* langhooks.cc (lhd_omp_deep_mapping_p, lhd_omp_deep_mapping_cnt,
+	lhd_omp_deep_mapping): Improve interface comment.
+	* langhooks.h (lhd_omp_deep_mapping_p, lhd_omp_deep_mapping_cnt,
+	lhd_omp_deep_mapping): Likewise
+
+2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/125194
+	* config/avr/avr.cc (avr_no_call_main_p): Remove variable...
+	(avr_file_end): ...and code that uses it.
+	(avr_insert_attributes): Same.  Add "used" to main attributes
+	when -mno-call-main.
+	* config/avr/gen-avr-mmcu-specs.cc (print_mcu): Emit code
+	for link_no_call_main specs.
+	* config/avr/specs.h (LINK_SPEC): Add %(link_no_call_main).
+
 2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
 
 	PR target/125215
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a3ba0f50cb32..6fde35e83eb8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260514
+20260515
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 81522314d886..68b30d8ee30d 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-omp.cc (omp_map_decayed_kind): Handle map modifiers
+	also for declare-mapper's map clauses.
+
 2026-05-11  Jason Merrill  <jason@redhat.com>
 
 	PR c++/124621
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 29e34c4c5954..20813eb97d19 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-parser.cc (c_parser_omp_declare_mapper): Check that the
+	struct var is actually used by at least one map clause.
+
 2026-05-13  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/125261
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7f1b4c443bae..e02794d16e11 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,23 @@
+2026-05-14  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124628
+	* reflect.cc (resolve_type_of_reflected_decl): New.
+	(get_reflection): Call resolve_type_of_reflected_decl instead
+	of mark_used.
+	(has_type): Call resolve_type_of_reflected_decl before
+	checking for an undeduced auto.
+	(eval_can_substitute): Likewise.  Also look through BASELINK.
+	(members_of_representable): Call resolve_type_of_reflected_decl
+	before checking for an undeduced auto.
+
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* semantics.cc (cp_check_omp_declare_mapper): Change what
+	argument is expected; check that the struct var is used by at
+	least one map war. Print sorry when compiling with -std=c++98.
+	* pt.cc (tsubst_stmt, tsubst_expr): Call it.
+	* parser.cc (cp_parser_omp_declare_mapper): Update call.
+
 2026-05-13  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125280
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1eb00d6bfc3e..177892f5201d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,31 @@
+2026-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/125092
+	* decl.cc (add_global_entry): Use string from the heap instead
+	of a pointer to stack-allocated memory.
+	* frontend-passes.cc (check_against_globals): If there is an error
+	already, return early.
+	* gfortran.h (gfc_symbol_rank): New prototype.
+	* interface.cc (symbol_rank): Rename to
+	(gfc_symbol_rank): this.
+	(gfc_check_dummy_characteristics): Use new function name.
+	(gfc_check_result_characteristics): Likewise.
+	(gfc_compare_interfaces): Likewise.
+	(compare_parameter): Likewise.
+	(get_sym_storage_size): Likewise.
+	(gfc_procedure_use): Likewise.
+	* resolve.cc (decays_to_pointer): New function.
+	(c_types_conform): New function.
+	(compare_c_binding_arglists): New function.
+	(gfc_verify_binding_labels): Check return types and rank
+	plus argument lists if there is a pre-exisiting global
+	symbol.
+
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* trans-openmp.cc (gfc_omp_deep_mapping_p, gfc_omp_deep_mapping_cnt,
+	gfc_omp_deep_mapping): Improve interface comment.
+
 2026-05-13  Tobias Burnus  <tburnus@baylibre.com>
 
 	* intrinsic.texi (OpenMP Modules): Add named parameters for
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 48d5313bc37a..611dca6c2779 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,70 @@
+2026-05-14  Uros Bizjak  <ubizjak@gmail.com>
+
+	* lib/target-supports.exp (check_profiling_available): Remove
+	unused global declaration and debugging output.
+
+2026-05-14  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/124628
+	* g++.dg/reflect/can_substitute2.C: New test.
+	* g++.dg/reflect/members_of14.C: New test.
+	* g++.dg/reflect/substitute3.C: Adjust test so that f<int>'s
+	return type fails to get deduced.
+	* g++.dg/reflect/type_of3.C: Also test type_of of a templated
+	member function with deduced return type.
+
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* gcc.target/i386/pr124316.c: New test.
+
+2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-c++-common/gomp/declare-mapper-10.c: Exclude C++98.
+	* c-c++-common/gomp/declare-mapper-15.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-16.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-3.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-4.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-5.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-6.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-7.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-8.c: Likewise.
+	* c-c++-common/gomp/declare-mapper-9.c: Likewise.
+	* g++.dg/gomp/declare-mapper-1.C: Likewise.
+	* g++.dg/gomp/declare-mapper-2.C: Likewise.
+	* c-c++-common/gomp/pr122866.c: Expect sorry with C++98.
+	* c-c++-common/gomp/declare-mapper-11.c: Likewise.
+	Add dg-error for missing var-in-map-clause use.
+	* g++.dg/gomp/declare-mapper-3.C: Likewise.
+	* c-c++-common/gomp/declare-mapper-17.c: New test.
+	* c-c++-common/gomp/declare-mapper-18.c: New test.
+	* g++.dg/gomp/declare-mapper-4.C: New test.
+	* g++.dg/gomp/declare-mapper-5.C: New test.
+
+2026-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/125092
+	* gfortran.dg/PR100906.f90: Add -Wno-pedantic to options.
+	* gfortran.dg/PR100911.f90: Likewise.
+	* gfortran.dg/PR100915.f90: Likewise.
+	* gfortran.dg/PR94327.f90: Likewise.
+	* gfortran.dg/PR94331.f90: Likewise.
+	* gfortran.dg/bind_c_procs_4.f90: Add error messages, remove
+	warning.
+	* gfortran.dg/binding_label_tests_25.f90: Add error messages.
+	* gfortran.dg/binding_label_tests_3.f03: Add error messages.
+	* gfortran.dg/binding_label_tests_34.f90: Add -Wno-pedantic to
+	options.
+	* gfortran.dg/c_char_tests_4.f90: Likewise.
+	* gfortran.dg/c_char_tests_5.f90: Likewise.
+	* gfortran.dg/binding_label_tests_36.f90: New test.
+	* gfortran.dg/binding_label_tests_37.f90: New test.
+
+2026-05-14  Xi Ruoyao  <xry111@xry111.site>
+
+	PR rtl-optimization/96692
+	* gcc.target/loongarch/pr96692.c: New test.
+
 2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
 
 	PR target/125215
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index edda0cf9a794..49beae4d1ef8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,47 @@
+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.

From gccadmin@gcc.gnu.org  Fri May 15 00:17:38 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 15 May 2026 00:17:38 +0000 (GMT)
Subject: [gcc r13-10327] Daily bump.
Message-ID: <20260515001738.C5B7C4B92091@sourceware.org>

https://gcc.gnu.org/g:e61fe8f52cd06a643536eeb1636e9a0d22ba55ac

commit r13-10327-ge61fe8f52cd06a643536eeb1636e9a0d22ba55ac
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 15 00:17:09 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |   2 +-
 gcc/fortran/ChangeLog   |   9 +++
 gcc/testsuite/ChangeLog |   8 ++
 libstdc++-v3/ChangeLog  | 201 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 219 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a3ba0f50cb32..6fde35e83eb8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260514
+20260515
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c5bfaeab3a26..ee76c9b519cd 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* resolve.cc (resolve_global_procedure): Move entry symbol
+	lookup outside the resolved != -1 block.
+
 2026-05-13  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 728bc77d6b57..f4d80e89a5e5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* gfortran.dg/pr96986.f90: New test.
+
 2026-05-13  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 59139598b606..8febb737d0d6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,204 @@
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-12-16  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 2025c release.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120390
+	* include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New
+	static member function.
+	(_Destroy_aux<true>::__destroy_n): Likewise.
+	(_Destroy_n_aux): Remove.
+	(_Destroy(ForwardIterator, ForwardIterator)): Remove
+	static_assert. Use is_trivially_destructible instead of
+	__has_trivial_destructor.
+	(_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of
+	_Destroy_n_aux::__destroy_n.
+	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
+	Adjust dg-error strings. Move destroy_n tests to ...
+	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc:
+	New test.
+	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
+	Adjust dg-error strings.
+	* testsuite/23_containers/vector/cons/destructible_neg.cc:
+	Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/stl_construct.h (_Destroy(FwdIter, FwdIter)): Use
+	'if constexpr' instead of dispatching to a member function of a
+	class template.
+	(_Destroy_n(FwdIter, Size)): Likewise.
+	(_Destroy_aux, _Destroy_n_aux): Only define for C++98.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/stl_construct.h (construct_at): Guard
+	with feature test macros instead of just __cplusplus.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/102259
+	* config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to
+	_GLIBCXX_MAX_READ_SIZE if that macro is defined.
+	* config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
+	Define to INT_MAX-1.
+	* config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
+	Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-05-06  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120029
+	* src/c++17/fs_path.cc (path::operator+=(const path&)): Handle
+	parameters that alias the path or one of its components.
+	* testsuite/27_io/filesystem/path/concat/120029.cc: New test.
+	* testsuite/experimental/filesystem/path/concat/120029.cc: New
+	test.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120293
+	* include/bits/chrono_io.h (_M_format_to_ostream): Add special
+	case for local_time convertible to local_days.
+	* testsuite/std/time/clock/local/io.cc: Check formatting of
+	chrono::local_days.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono_io.h (__local_fmt_t): Remove unused
+	declaration.
+	(__formatter_chrono::_M_format_to_ostream): Add explicit
+	handling for specializations of __local_time_fmt, including the
+	time zone abbreviation in the output if __is_neg is true.
+	(formatter<chrono::tai_time<D>>::format): Add comment.
+	(formatter<chrono::gps_time<D>>::format): Likewise.
+	(formatter<chrono::__detail::__local_time_fmt::format): Call
+	_M_format with true for the __is_neg flag.
+	* testsuite/std/time/clock/gps/io.cc: Remove unused variable.
+	* testsuite/std/time/clock/local/io.cc: New file.
+	* testsuite/std/time/clock/system/io.cc: Check empty
+	chrono-specs.
+	* testsuite/std/time/clock/tai/io.cc: Likewise.
+	* testsuite/std/time/zoned_time/io.cc: Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/118088
+	* include/bits/stl_queue.h (priority_queue(priority_queue&&)):
+	Clear the source object after moving from it.
+	(priority_queue(priority_queue&&, const Alloc&)): Likewise.
+	(operator=(priority_queue&&)): Likewise.
+	* testsuite/23_containers/priority_queue/118088.cc: New test.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-07-08  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/118681
+	* src/c++17/memory_resource.cc (choose_block_size): New
+	function.
+	(synchronized_pool_resource::do_allocate): Use choose_block_size
+	to determine appropriate block size.
+	(synchronized_pool_resource::do_deallocate): Likewise
+	(unsynchronized_pool_resource::do_allocate): Likewise.
+	(unsynchronized_pool_resource::do_deallocate): Likewise
+	* testsuite/20_util/synchronized_pool_resource/118681.cc: New
+	test.
+	* testsuite/20_util/unsynchronized_pool_resource/118681.cc: New
+	test.
+
 2026-03-22  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Fri May 15 00:18:47 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 15 May 2026 00:18:47 +0000 (GMT)
Subject: [gcc r14-12607] Daily bump.
Message-ID: <20260515001847.9E62E4B92091@sourceware.org>

https://gcc.gnu.org/g:03cde0d91c78fd8df76f49bc2e5f6642fc54bb46

commit r14-12607-g03cde0d91c78fd8df76f49bc2e5f6642fc54bb46
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 15 00:18:16 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |   6 ++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  19 +++++
 gcc/fortran/ChangeLog   |   9 +++
 gcc/testsuite/ChangeLog |  30 ++++++++
 libstdc++-v3/ChangeLog  | 195 ++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 260 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c35d76c0ddb..a24ec931f2b2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* config/i386/i386.md (ptwrite): Add explicit mode to
+	instruction.
+
 2026-05-12  Martin Jambor  <mjambor@suse.cz>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a3ba0f50cb32..6fde35e83eb8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260514
+20260515
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a43767daa847..7e92fc202d35 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,22 @@
+2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+
+	Backported from master:
+	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+	for an empty union member.
+
+2026-05-14  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* constexpr.cc (cxx_eval_call_expression): Unshare bindings
+	sooner.
+
 2026-03-30  Daniele Sahebi  <daniele@mkryss.me>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 0bb9e32eb85d..2ef6cdb77711 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* resolve.cc (resolve_global_procedure): Move entry symbol
+	lookup outside the resolved != -1 block.
+
 2026-05-13  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9966439afd3b..29a04cb84426 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,33 @@
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* gcc.target/i386/pr124316.c: New test.
+
+2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+
+	Backported from master:
+	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* g++.dg/cpp2a/constexpr-union10.C: New test.
+
+2026-05-14  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* g++.dg/cpp23/explicit-obj-lambda2.C: Do strict GC and -Wall.
+
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* gfortran.dg/pr96986.f90: New test.
+
 2026-05-13  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0578361f5175..9ba786177cb4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,198 @@
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-12-16  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 2025c release.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120390
+	* include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New
+	static member function.
+	(_Destroy_aux<true>::__destroy_n): Likewise.
+	(_Destroy_n_aux): Remove.
+	(_Destroy(ForwardIterator, ForwardIterator)): Remove
+	static_assert. Use is_trivially_destructible instead of
+	__has_trivial_destructor.
+	(_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of
+	_Destroy_n_aux::__destroy_n.
+	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
+	Adjust dg-error strings. Move destroy_n tests to ...
+	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc:
+	New test.
+	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
+	Adjust dg-error strings.
+	* testsuite/23_containers/vector/cons/destructible_neg.cc:
+	Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/stl_construct.h (_Destroy(FwdIter, FwdIter)): Use
+	'if constexpr' instead of dispatching to a member function of a
+	class template.
+	(_Destroy_n(FwdIter, Size)): Likewise.
+	(_Destroy_aux, _Destroy_n_aux): Only define for C++98.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/102259
+	* config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to
+	_GLIBCXX_MAX_READ_SIZE if that macro is defined.
+	* config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
+	Define to INT_MAX-1.
+	* config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
+	Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-05-06  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120029
+	* src/c++17/fs_path.cc (path::operator+=(const path&)): Handle
+	parameters that alias the path or one of its components.
+	* testsuite/27_io/filesystem/path/concat/120029.cc: New test.
+	* testsuite/experimental/filesystem/path/concat/120029.cc: New
+	test.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/std/time/clock/local/io.cc: Call test_format.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120293
+	* include/bits/chrono_io.h (_M_format_to_ostream): Add special
+	case for local_time convertible to local_days.
+	* testsuite/std/time/clock/local/io.cc: Check formatting of
+	chrono::local_days.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-09-06  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono_io.h (from_stream): Fix conversions in
+	overloads for gps_time and tai_time.
+	* testsuite/std/time/clock/file/io.cc: Test round tripping using
+	chrono::parse. Add additional std::format tests.
+	* testsuite/std/time/clock/gps/io.cc: Likewise.
+	* testsuite/std/time/clock/local/io.cc: Likewise.
+	* testsuite/std/time/clock/tai/io.cc: Likewise.
+	* testsuite/std/time/clock/utc/io.cc: Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono_io.h (__local_fmt_t): Remove unused
+	declaration.
+	(__formatter_chrono::_M_format_to_ostream): Add explicit
+	handling for specializations of __local_time_fmt, including the
+	time zone abbreviation in the output if __is_neg is true.
+	(formatter<chrono::tai_time<D>>::format): Add comment.
+	(formatter<chrono::gps_time<D>>::format): Likewise.
+	(formatter<chrono::__detail::__local_time_fmt::format): Call
+	_M_format with true for the __is_neg flag.
+	* testsuite/std/time/clock/gps/io.cc: Remove unused variable.
+	* testsuite/std/time/clock/local/io.cc: Fix test error that
+	checked tai_time instead of local_time. Add tests for
+	local-time-format-t formatting.
+	* testsuite/std/time/clock/system/io.cc: Check empty
+	chrono-specs.
+	* testsuite/std/time/clock/tai/io.cc: Likewise.
+	* testsuite/std/time/zoned_time/io.cc: Likewise.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2024-12-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/118088
+	* include/bits/stl_queue.h (priority_queue(priority_queue&&)):
+	Clear the source object after moving from it.
+	(priority_queue(priority_queue&&, const Alloc&)): Likewise.
+	(operator=(priority_queue&&)): Likewise.
+	* testsuite/23_containers/priority_queue/118088.cc: New test.
+
 2026-04-22  Tomasz Kami?ski  <tkaminsk@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Fri May 15 00:19:31 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 15 May 2026 00:19:31 +0000 (GMT)
Subject: [gcc r15-11169] Daily bump.
Message-ID: <20260515001931.BA1614B92091@sourceware.org>

https://gcc.gnu.org/g:80a86ca7da46a3aad81a1a2b939b05ac89fee5ba

commit r15-11169-g80a86ca7da46a3aad81a1a2b939b05ac89fee5ba
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 15 00:19:02 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 20 ++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 19 +++++++++++
 gcc/fortran/ChangeLog   |  9 ++++++
 gcc/testsuite/ChangeLog | 30 ++++++++++++++++++
 libstdc++-v3/ChangeLog  | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 163 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bccf269a5272..2a549b40ce2e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,23 @@
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* config/i386/i386.md (ptwrite): Add explicit mode to
+	instruction.
+
+2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+
+	Backported from master:
+	2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/125194
+	* config/avr/avr.cc (avr_no_call_main_p): Remove variable...
+	(avr_file_end): ...and code that uses it.
+	(avr_insert_attributes): Same.  Add "used" to main attributes
+	when -mno-call-main.
+	* config/avr/gen-avr-mmcu-specs.cc (print_mcu): Emit code
+	for link_no_call_main specs.
+	* config/avr/specs.h (LINK_SPEC): Add %(link_no_call_main).
+
 2026-05-03  Collin Funk  <collin.funk1@gmail.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a3ba0f50cb32..6fde35e83eb8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260514
+20260515
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1aef43cffcf8..cac3a6b1bb46 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,22 @@
+2026-05-14  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* constexpr.cc (cxx_eval_call_expression): Unshare bindings
+	sooner.
+
+2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+
+	Backported from master:
+	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+	for an empty union member.
+
 2026-05-01  Marek Polacek  <polacek@redhat.com>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fd70856f8e28..72b83f1c0589 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* resolve.cc (resolve_global_procedure): Move entry symbol
+	lookup outside the resolved != -1 block.
+
 2026-05-13  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5471d6663a3b..d34db5de429d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,33 @@
+2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/124316
+	* gcc.target/i386/pr124316.c: New test.
+
+2026-05-14  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-04-17  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124632
+	* g++.dg/cpp23/explicit-obj-lambda2.C: Do strict GC and -Wall.
+
+2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+
+	Backported from master:
+	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* g++.dg/cpp2a/constexpr-union10.C: New test.
+
+2026-05-14  Christopher Albert  <albert@tugraz.at>
+
+	Backported from master:
+	2026-04-08  Christopher Albert  <albert@tugraz.at>
+
+	PR fortran/96986
+	* gfortran.dg/pr96986.f90: New test.
+
 2026-05-13  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 5461893406b0..0f3c77833e47 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,87 @@
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/std/time/clock/local/io.cc: Call test_format.
+
+2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-14  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-05-05  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From jakub@gcc.gnu.org  Fri May 15 08:32:56 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Fri, 15 May 2026 08:32:56 +0000 (GMT)
Subject: [gcc(refs/vendors/redhat/heads/gcc-16-branch)] Merge commit
 'r16-8917-gd10ef83766fc886bb76c1aadae2e5dd760e155f0' into
 redhat/gcc-16-branch
Message-ID: <20260515083256.56EE751A4331@sourceware.org>

https://gcc.gnu.org/g:d776f42bb910ebccf652b010b80c22bcca736f7f

commit d776f42bb910ebccf652b010b80c22bcca736f7f
Merge: f4e68dc3bdc8 d10ef83766fc
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri May 15 10:32:20 2026 +0200

    Merge commit 'r16-8917-gd10ef83766fc886bb76c1aadae2e5dd760e155f0' into redhat/gcc-16-branch

Diff:

 gcc/ChangeLog                                      |   229 +
 gcc/DATESTAMP                                      |     2 +-
 gcc/ada/ChangeLog                                  |    18 +
 gcc/ada/einfo.ads                                  |    17 +-
 gcc/ada/exp_imgv.adb                               |     9 +-
 gcc/ada/gen_il-gen-gen_entities.adb                |     8 +-
 gcc/ada/libgnat/s-dorepr__freebsd.adb              |     4 +-
 gcc/algol68/ChangeLog                              |     7 +
 gcc/algol68/Make-lang.in                           |     2 +-
 gcc/config/avr/avr.cc                              |    16 +-
 gcc/config/avr/gen-avr-mmcu-specs.cc               |     2 +
 gcc/config/avr/specs.h                             |     1 +
 gcc/config/i386/i386.md                            |     3 +-
 gcc/config/i386/sse.md                             |     2 +-
 gcc/config/i386/x86-tune.def                       |     4 +-
 gcc/config/loongarch/constraints.md                |     9 +
 gcc/config/loongarch/loongarch-protos.h            |     1 +
 gcc/config/loongarch/loongarch.cc                  |    96 +-
 gcc/config/loongarch/loongarch.h                   |     3 +-
 gcc/config/loongarch/loongarch.md                  |    88 +-
 gcc/config/loongarch/predicates.md                 |     8 +
 gcc/config/mingw/winnt.cc                          |     4 +-
 gcc/config/or1k/or1k.cc                            |     7 +-
 gcc/config/s390/s390.cc                            |     4 +
 gcc/config/s390/s390.md                            |     3 +-
 gcc/cp/ChangeLog                                   |   190 +
 gcc/cp/call.cc                                     |    16 +-
 gcc/cp/class.cc                                    |     3 +-
 gcc/cp/constexpr.cc                                |     7 +-
 gcc/cp/cp-tree.h                                   |    88 +-
 gcc/cp/decl.cc                                     |     6 +-
 gcc/cp/mangle.cc                                   |    15 +-
 gcc/cp/module.cc                                   |    31 +-
 gcc/cp/pt.cc                                       |    22 +-
 gcc/cp/reflect.cc                                  |   191 +-
 gcc/cp/rtti.cc                                     |     2 +-
 gcc/cp/semantics.cc                                |     2 +-
 gcc/cp/tree.cc                                     |    22 +-
 gcc/d/ChangeLog                                    |    12 +
 gcc/d/types.cc                                     |    26 +-
 gcc/doc/invoke.texi                                |     4 +-
 gcc/fortran/ChangeLog                              |    33 +
 gcc/fortran/trans-array.cc                         |    22 +-
 gcc/fortran/trans-decl.cc                          |    10 -
 gcc/fortran/trans-io.cc                            |     2 +-
 gcc/gimple-fold.cc                                 |    14 +-
 gcc/glimits.h                                      |     4 +-
 gcc/match.pd                                       |     6 +-
 gcc/po/ChangeLog                                   |    10 +
 gcc/po/be.po                                       | 12004 +++++++++---------
 gcc/po/da.po                                       | 12052 +++++++++---------
 gcc/po/de.po                                       | 12034 +++++++++---------
 gcc/po/el.po                                       | 12014 +++++++++---------
 gcc/po/es.po                                       | 12060 +++++++++---------
 gcc/po/fi.po                                       | 12035 +++++++++---------
 gcc/po/fr.po                                       | 12043 +++++++++---------
 gcc/po/hr.po                                       | 12013 +++++++++---------
 gcc/po/id.po                                       | 12035 +++++++++---------
 gcc/po/ja.po                                       | 12027 +++++++++---------
 gcc/po/ka.po                                       | 12000 +++++++++---------
 gcc/po/nl.po                                       | 12018 +++++++++---------
 gcc/po/ru.po                                       | 12049 +++++++++---------
 gcc/po/sr.po                                       | 12042 +++++++++---------
 gcc/po/sv.po                                       | 12066 ++++++++++---------
 gcc/po/tr.po                                       | 12047 +++++++++---------
 gcc/po/uk.po                                       | 12045 +++++++++---------
 gcc/po/vi.po                                       | 12038 +++++++++---------
 gcc/po/zh_CN.po                                    | 12056 +++++++++---------
 gcc/po/zh_TW.po                                    | 12035 +++++++++---------
 gcc/testsuite/ChangeLog                            |   324 +
 gcc/testsuite/g++.dg/cpp1z/nontype-auto27.C        |     5 +
 gcc/testsuite/g++.dg/cpp1z/nontype-auto28.C        |    14 +
 gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C   |    10 +
 gcc/testsuite/g++.dg/cpp2a/nontype-class75.C       |    34 +
 gcc/testsuite/g++.dg/cpp2a/spaceship-warn1.C       |    10 +
 gcc/testsuite/g++.dg/modules/attrib-6_a.C          |    10 +
 gcc/testsuite/g++.dg/modules/attrib-6_b.C          |     8 +
 gcc/testsuite/g++.dg/modules/attrib-6_c.C          |     8 +
 gcc/testsuite/g++.dg/modules/auto-9.h              |    42 +
 gcc/testsuite/g++.dg/modules/auto-9_a.H            |     9 +
 gcc/testsuite/g++.dg/modules/auto-9_b.C            |     6 +
 gcc/testsuite/g++.dg/modules/modules.exp           |     5 +-
 gcc/testsuite/g++.dg/reflect/alias3.C              |    15 +
 gcc/testsuite/g++.dg/reflect/anon5.C               |    16 +
 gcc/testsuite/g++.dg/reflect/bases_of4.C           |    45 +
 gcc/testsuite/g++.dg/reflect/bases_of5.C           |   128 +
 gcc/testsuite/g++.dg/reflect/can_substitute2.C     |    19 +
 gcc/testsuite/g++.dg/reflect/extract12.C           |    14 +
 gcc/testsuite/g++.dg/reflect/init18.C              |    14 +
 gcc/testsuite/g++.dg/reflect/init19.C              |    12 +
 gcc/testsuite/g++.dg/reflect/members_of14.C        |    29 +
 gcc/testsuite/g++.dg/reflect/substitute3.C         |     4 +-
 gcc/testsuite/g++.dg/reflect/type12.C              |    28 +
 gcc/testsuite/g++.dg/reflect/type13.C              |    13 +
 gcc/testsuite/g++.dg/reflect/type_of3.C            |     6 +
 gcc/testsuite/g++.dg/reflect/using3.C              |    11 +
 gcc/testsuite/gcc.dg/torture/pr125025.c            |    20 +
 gcc/testsuite/gcc.dg/torture/pr125153.c            |    25 +
 gcc/testsuite/gcc.dg/torture/pr125185.c            |    13 +
 gcc/testsuite/gcc.dg/tree-ssa/pr125259.c           |    14 +
 gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c      |    19 -
 gcc/testsuite/gcc.target/i386/pr124316.c           |    14 +
 gcc/testsuite/gcc.target/i386/pr125180.c           |    14 +
 gcc/testsuite/gcc.target/i386/pr125308.c           |    12 +
 gcc/testsuite/gcc.target/loongarch/pr125049.c      |    50 +
 .../gcc.target/loongarch/vector/lasx/pr125057.c    |    25 +
 .../gcc.target/loongarch/vector/lsx/lsx-mov-2.c    |    13 +
 gcc/testsuite/gcc.target/or1k/pr125155.c           |    14 +
 gcc/testsuite/gdc.dg/pr125089.d                    |    20 +
 gcc/testsuite/gfortran.dg/bounds_check_29.f90      |    62 +
 gcc/testsuite/gfortran.dg/dtio_37.f90              |    36 +
 gcc/testsuite/gfortran.dg/namelist_102.f90         |   248 +
 gcc/testsuite/gnat.dg/enum6.adb                    |    43 +
 gcc/tree-ssa-loop-niter.cc                         |     8 +-
 gcc/tree-ssa-strlen.cc                             |     8 +-
 gcc/tree-ssa-threadbackward.cc                     |     8 +-
 gcc/tree-vect-slp.cc                               |    53 +-
 libgfortran/ChangeLog                              |    12 +
 libgfortran/io/list_read.c                         |    26 +
 libstdc++-v3/ChangeLog                             |    34 +
 libstdc++-v3/doc/doxygen/mainpage.html             |     2 +-
 libstdc++-v3/include/bits/ranges_algo.h            |     7 +-
 libstdc++-v3/include/bits/uniform_int_dist.h       |     4 +-
 libstdc++-v3/include/bits/unique_ptr.h             |    21 +-
 .../testsuite/20_util/unique_ptr/lwg4324.cc        |    22 +
 .../testsuite/25_algorithms/sample/121919.cc       |    28 +
 .../testsuite/25_algorithms/shuffle/121919.cc      |    25 +
 127 files changed, 124932 insertions(+), 118805 deletions(-)

From tkaminsk@gcc.gnu.org  Fri May 15 09:57:46 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 15 May 2026 09:57:46 +0000 (GMT)
Subject: [gcc r17-530] libstdc++: Use IANA name for ISO-8859-1 in format tests.
Message-ID: <20260515095746.8B9214BCA42C@sourceware.org>

https://gcc.gnu.org/g:c30a026bebebd19db124f60412f3ddcab291c900

commit r17-530-gc30a026bebebd19db124f60412f3ddcab291c900
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri May 15 11:53:51 2026 +0200

    libstdc++: Use IANA name for ISO-8859-1 in format tests.
    
    Use IANA name for ISO-8859-1 as "-fexec-charset=" and add dg-require-iconv,
    to make sure it is supported.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/testsuite/std/format/debug_nonunicode.cc | 3 ++-
 libstdc++-v3/testsuite/std/format/fill_nonunicode.cc  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/testsuite/std/format/debug_nonunicode.cc b/libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
index 2ac7e757ea8d..de70f55f14a9 100644
--- a/libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
+++ b/libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
@@ -1,4 +1,5 @@
-// { dg-options "-fexec-charset=ISO8859-1" }
+// { dg-options "-fexec-charset=ISO-8859-1" }
+// { dg-require-iconv "ISO-8859-1" }
 // { dg-do run { target c++23 } }
 // { dg-add-options no_pch }
 
diff --git a/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc b/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
index 1370cf57ccdc..16d858c93a8d 100644
--- a/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
+++ b/libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
@@ -1,4 +1,5 @@
-// { dg-options "-fexec-charset=ISO8859-1" }
+// { dg-options "-fexec-charset=ISO-8859-1" }
+// { dg-require-iconv "ISO-8859-1" }
 // { dg-do run { target c++20 } }
 // { dg-add-options no_pch }

From tkaminsk@gcc.gnu.org  Fri May 15 17:27:05 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 15 May 2026 17:27:05 +0000 (GMT)
Subject: [gcc r17-535] libstdc++: Include range_access.h from <optional> and
 <stacktrace>
Message-ID: <20260515172705.52DC340A1F86@sourceware.org>

https://gcc.gnu.org/g:87e4eb4492701426a02f5fcf460bb0b6d432d2b7

commit r17-535-g87e4eb4492701426a02f5fcf460bb0b6d432d2b7
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 14 14:47:03 2026 +0200

    libstdc++: Include range_access.h from <optional> and <stacktrace>
    
    This implements resolutions for LWG4131 and LWG3625 (also part of 4.8. section
    of the P3016R6). As for any other issues LWG issue changes are applied as DR
    for the oldest applicable standards:
    * <optional> (LWG4131): C++26, since optional range support
    * <stacktrace> (LWG3625): C++23, since introduction
    
    libstdc++-v3/ChangeLog:
    
            * include/std/optional [__cpp_lib_optional_range_support]:
            Replace <bits/stl_iterator.h> include with <bits/range_access.h>.
            * include/std/stacktrace: Likewise.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/optional   | 2 +-
 libstdc++-v3/include/std/stacktrace | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index e3c6ea209889..8d6d049e8ccc 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -62,7 +62,7 @@
 #ifdef __cpp_lib_optional_range_support // C++ >= 26
 # include <bits/formatfwd.h>
 # include <bits/ranges_base.h>
-# include <bits/stl_iterator.h>
+# include <bits/range_access.h>
 #endif
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace
index 587a163e9766..79941d93b88f 100644
--- a/libstdc++-v3/include/std/stacktrace
+++ b/libstdc++-v3/include/std/stacktrace
@@ -45,9 +45,9 @@
 #include <bits/memory_resource.h>
 #include <bits/stl_algobase.h>
 #include <bits/stl_algo.h>
-#include <bits/stl_iterator.h>
 #include <bits/stl_uninitialized.h>
 #include <bits/stl_tempbuf.h> // __get_temporary_buffer
+#include <bits/range_access.h>
 #include <ext/numeric_traits.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)

From gccadmin@gcc.gnu.org  Sat May 16 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 16 May 2026 00:16:54 +0000 (GMT)
Subject: [gcc r17-540] Daily bump.
Message-ID: <20260516001654.A7A8D4C31871@sourceware.org>

https://gcc.gnu.org/g:a6edc74e5e71165b96210ff91845dadfdf20ecc3

commit r17-540-ga6edc74e5e71165b96210ff91845dadfdf20ecc3
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat May 16 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |  4 +++
 gcc/ChangeLog           | 89 +++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/c-family/ChangeLog  |  6 ++++
 gcc/c/ChangeLog         | 17 ++++++++++
 gcc/cp/ChangeLog        | 12 +++++++
 gcc/testsuite/ChangeLog | 71 +++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 12 +++++++
 8 files changed, 212 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index c8486528c21b..da70a62d4095 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-15  Karl Meakin  <karl.meakin@arm.com>
+
+	* .editorconfig (COMMIT_EDITMSG): New section.
+
 2026-05-13  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
 
 	* MAINTAINERS (Write After Approval): Add myself.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 283c8f6dd10b..96175f71622a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,92 @@
+2026-05-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-operands.cc (operands_scanner::parse_ssa_operands):
+	Process index of the gswitch only.
+
+2026-05-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125290
+	* tree-cfg.cc (group_case_labels_stmt): Remove code that was
+	added to remove `cases` that goto blocks of unreachable.
+	* tree-ssa-forwprop.cc (optimize_unreachable): Remove the
+	comment about switch cases being handled.
+
+2026-05-15  John David Anglin  <danglin@gcc.gnu.org>
+
+	* config/pa/pa.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
+	DW_EH_PE_aligned encoding on 64-bit HP-UX.
+
+2026-05-15  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR rtl-optimization/125321
+	* function-abi.cc (function_abi_aggregator::caller_save_regs):
+	Return the enabled registers.
+
+2026-05-15  Xi Ruoyao  <xry111@xry111.site>
+
+	PR tree-optimization/125291
+	* tree-scalar-evolution.cc (simplify_peeled_chrec): Sign-extend
+	the step for peeled converted IV.
+
+2026-05-15  Xi Ruoyao  <xry111@xry111.site>
+
+	* config/loongarch/loongarch.md (spaceship<mode>4): New
+	define_expand.
+
+2026-05-15  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	PR target/123924
+	* match.pd: Allow conversions in FMA-to-FNMA fold.
+
+2026-05-15  Richard Biener  <rguenther@suse.de>
+
+	* tree-vectorizer.h (vector_costs::add_slp_cost): New.
+	* tree-vectorizer.cc (vector_costs::add_slp_cost): New
+	default version.
+	* tree-vect-slp.cc (add_slp_costs): Helper for dispatching
+	a cost vector in SLP chunks.
+	(vect_slp_analyze_operations): Adjust.
+	(li_cost_vec_cmp): Likewise.
+	(vect_bb_vectorization_profitable_p): Likewise.
+
+2026-05-15  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125296
+	* tree-ssa-forwprop.cc (forward_propagate_addr_expr_1):
+	Preserve alignment of the original access.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125308
+	* config/i386/sse.md (*minmax<mode>3_4): Force also
+	operands[2] into a REG.
+
+2026-05-15  Disservin  <disservin.social@gmail.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* builtin-types.def (BT_FN_UINT8_UINT8): New.
+	* builtins.def (BUILT_IN_BITREVERSE8, BUILT_IN_BITREVERSE16,
+	BUILT_IN_BITREVERSE32, BUILT_IN_BITREVERSE64): New builtins.
+	* builtins.cc (expand_builtin, is_inexpensive_builtin): Handle
+	bitreverse builtins.
+	* fold-const-call.cc (fold_const_call_ss): Fold bitreverse builtins.
+	* fold-const.cc (tree_call_nonnegative_warnv_p): Handle
+	bitreverse builtins.
+	* optabs.def (bitreverse_optab): New.
+	* optabs.cc (expand_bitreverse): New function.
+	(expand_unop): Use it for bitreverse_optab.
+	* tree-ssa-ccp.cc (evaluate_stmt): Handle bitreverse builtins.
+	* tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p,
+	cond_removal_in_builtin_zero_pattern): Likewise.
+	* doc/extend.texi: Document __builtin_bitreverse{8,16,32,64}.
+	* doc/md.texi (bitreverse<mode>2): Document.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125081
+	* doc/invoke.texi (Wconstant-logical-operand): Document.
+
 2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
 
 	PR target/124316
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6fde35e83eb8..8ee5b417cbc7 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260515
+20260516
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 68b30d8ee30d..f25c276e061d 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125081
+	* c.opt (Wconstant-logical-operand): New option.
+	* c.opt.urls: Regenerate.
+
 2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
 
 	* c-omp.cc (omp_map_decayed_kind): Handle map modifiers
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 20813eb97d19..6406110a87b0 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,20 @@
+2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR c/124532
+	* c-parser.cc (struct attr_state): Add reset method.
+	(c_parser_compound_statement_nostart): Rename a to astate.
+	Reset state before iterating statements.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125081
+	* c-tree.h (parser_build_binary_op): Add ORIG_ARG1 argument.
+	* c-typeck.cc (parser_build_binary_op): Likewise.  Emit
+	-Wconstant-logical-operand warnings.
+	* c-parser.cc (c_parser_binary_expression): Adjust
+	parser_build_binary_op caller, pass to it the original
+	stack[sp - 1].expr.value before c_objc_common_truthvalue_conversion.
+
 2026-05-14  Tobias Burnus  <tburnus@baylibre.com>
 
 	* c-parser.cc (c_parser_omp_declare_mapper): Check that the
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e02794d16e11..03406ad148bb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125081
+	* typeck.cc (cp_build_binary_op): Emit -Wconstant-logical-operand
+	warnings.
+
+2026-05-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125315
+	* constexpr.cc (init_subob_ctx): Allow both ctor and object
+	to be null for an empty subobject.
+
 2026-05-14  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/124628
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 611dca6c2779..8513dd50bf0f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,74 @@
+2026-05-15  Marek Polacek  <polacek@redhat.com>
+
+	* g++.dg/warn/Wuninitialized-pr107919-1.C: Fix a dg-bogus.
+
+2026-05-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125290
+	* g++.dg/warn/Wuninitialized-pr107919-1.C: Remove xfail.
+	* gcc.dg/analyzer/taint-assert.c: Update for the non-removal
+	of block containing unreachable.
+	* gcc.dg/torture/pr125290-1.c: New test.
+
+2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR c/124532
+	* c-c++-common/pr124532.c: New test.
+
+2026-05-15  Lili Cui  <lili.cui@intel.com>
+
+	* gcc.dg/vect/slp-reduc-15.c: Add aarch64 support and use
+	-mavx2 for x86.
+
+2026-05-15  Xi Ruoyao  <xry111@xry111.site>
+
+	PR tree-optimization/125291
+	* gcc.c-torture/execute/pr125291.c: New test.
+
+2026-05-15  Xi Ruoyao  <xry111@xry111.site>
+
+	* gcc.target/loongarch/la64/spaceship.c: New test.
+
+2026-05-15  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	PR target/123924
+	* gcc.target/aarch64/sve/fnma_match.c: New test.
+	* gcc.target/aarch64/sve/pr123897.c:
+	Update the test to scan for FNMA in the tree dump.
+
+2026-05-15  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125296
+	* gcc.dg/pr125206.c: New testcase.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125308
+	* gcc.target/i386/pr125308.c: New test.
+
+2026-05-15  Disservin  <disservin.social@gmail.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* gcc.dg/builtin-bitreverse-1.c: New test.
+	* gcc.dg/builtin-bitreverse-2.c: New test.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125179
+	* g++.dg/reflect/pr125179.C: New test.
+
+2026-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125081
+	* c-c++-common/Wconstant-logical-operand-1.c: New test.
+	* c-c++-common/Wconstant-logical-operand-2.c: New test.
+
+2026-05-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125315
+	* g++.dg/cpp2a/no_unique_address16.C: New test.
+
 2026-05-14  Uros Bizjak  <ubizjak@gmail.com>
 
 	* lib/target-supports.exp (check_profiling_available): Remove
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 49beae4d1ef8..d7d6d73f63f4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+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)

From ro@gcc.gnu.org  Sat May 16 07:02:05 2026
From: ro@gcc.gnu.org (Rainer Orth)
Date: Sat, 16 May 2026 07:02:05 +0000 (GMT)
Subject: [gcc r17-543] libstdc++: Remove Solaris workaround in
 20_util/to_chars/float128_c++23.cc [PR107815]
Message-ID: <20260516070205.5D37E40A00D9@sourceware.org>

https://gcc.gnu.org/g:e037c6e95e2108dda45a71a6c55fd84e34702735

commit r17-543-ge037c6e95e2108dda45a71a6c55fd84e34702735
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Sat May 16 09:01:42 2026 +0200

    libstdc++: Remove Solaris workaround in 20_util/to_chars/float128_c++23.cc [PR107815]
    
    As described in PR libstdc++/107815, one subtest of
    20_util/to_chars/float128_c++23.cc was disabled on Solaris due to a bug
    in printf(3C).  This has been fixed since October 2023, so the
    workaround can be removed.
    
    Tested on i386-pc-solaris2.11, sparc-sun-solaris2.11, and
    x86_64-pc-linux-gnu.
    
    2026-05-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    
            libstdc++-v3:
            PR libstdc++/107815
            * testsuite/20_util/to_chars/float128_c++23.cc (test): Remove
            Solaris workaround.

Diff:
---
 libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
index ca137bd57ab0..6693f05c2af3 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
@@ -52,10 +52,7 @@ test(std::chars_format fmt = std::chars_format{})
     std::numbers::inv_sqrt3_v<std::float128_t>,
     std::numbers::egamma_v<std::float128_t>,
     std::numbers::phi_v<std::float128_t>,
-// Solaris has non-conforming printf, see PR98384 and PR107815.
-#if !(defined(__sun__) && defined(__svr4__))
     std::numeric_limits<std::float128_t>::max()
-#endif
   };
   char str1[10000], str2[10000];
   for (auto u : tests)

From redi@gcc.gnu.org  Sat May 16 10:17:33 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Sat, 16 May 2026 10:17:33 +0000 (GMT)
Subject: [gcc r17-552] libstdc++: Make configure check for atomics work on
 Windows [PR125312]
Message-ID: <20260516101733.3C9104BAD14D@sourceware.org>

https://gcc.gnu.org/g:1b191d0a23f3b82f6543913f8c3c2e46942af859

commit r17-552-g1b191d0a23f3b82f6543913f8c3c2e46942af859
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 15 10:41:33 2026 +0100

    libstdc++: Make configure check for atomics work on Windows [PR125312]
    
    The changes in r16-427-g86627faec10da5 do not work for native mingw-w64
    builds because the #include with a hardcoded unix-style path doesn't
    work for a native mingw-w64 compiler. This results in configure
    detecting that native mingw builds do not support atomic builtins for
    the _Atomic_word type, causing non-inline atomics to be used for
    __gnu_cxx::__exchange_and_add and __gnu_cxx::__atomic_add, which is an
    unintented ABI change (and inconsistent with mingw cross-compilers where
    the configure test passes and so enables the inline functions using
    atomic builtins).
    
    This attempts to solve the problem by copying the atomic_word.h header
    to the current working directory, so it can be included without using an
    absolute path.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125312
            * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Copy header
            into cwd instead of including it via an absolute path.
            * configure: Regenerate.

Diff:
---
 libstdc++-v3/acinclude.m4 | 15 +++++++++++++--
 libstdc++-v3/configure    | 23 +++++++++++++++++------
 2 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 27a434d8a7a5..dfdf96cd09d4 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3757,6 +3757,15 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
     esac
   fi
 
+  # The $glibcxx_builddir/include/$target/bits/atomic_word.h header is created
+  # by include/Makefile so isn't available during configure. Copy it from the
+  # source dir to $PWD so that we don't include it using an absolute path,
+  # which does not work for win32 native builds (PR libstdc++/125312).
+  if ! $LN_S "${glibcxx_srcdir}/config/${atomic_word_dir}/atomic_word.h" ./
+  then
+    AC_MSG_ERROR([cannot create ./atomic_word.h])
+  fi
+
   if test "$atomic_builtins_link_tests" = yes; then
 
     # Do link tests.
@@ -3765,7 +3774,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
 
     AC_CACHE_CHECK([for atomic builtins for _Atomic_word],
 	glibcxx_cv_atomic_word,
-	[AC_TRY_LINK([#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"],
+	[AC_TRY_LINK([#include "atomic_word.h"],
 		     [_Atomic_word a = 0, b;
 		      b = __atomic_fetch_add(&a, 1, __ATOMIC_ACQ_REL);],
 		     [glibcxx_cv_atomic_word=yes],
@@ -3781,7 +3790,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
 
     cat > conftest.$ac_ext << EOF
 [#]line __oline__ "configure"
-[#]include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+[#]include "atomic_word.h"
 int main()
 {
   _Atomic_word a = 0, b;
@@ -3801,6 +3810,8 @@ EOF
     rm -f conftest*
   fi
 
+  rm -f ./atomic_word.h
+
   CXXFLAGS="$old_CXXFLAGS"
   AC_LANG_RESTORE
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index b51694ecdfbe..cdc912c79896 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16422,6 +16422,15 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     esac
   fi
 
+  # The $glibcxx_builddir/include/$target/bits/atomic_word.h header is created
+  # by include/Makefile so isn't available during configure. Copy it from the
+  # source dir to $PWD so that we don't include it using an absolute path,
+  # which does not work for win32 native builds (PR libstdc++/125312).
+  if ! $LN_S "${glibcxx_srcdir}/config/${atomic_word_dir}/atomic_word.h" ./
+  then
+    as_fn_error $? "cannot create ./atomic_word.h" "$LINENO" 5
+  fi
+
   if test "$atomic_builtins_link_tests" = yes; then
 
     # Do link tests.
@@ -16438,7 +16447,7 @@ else
 fi
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+#include "atomic_word.h"
 int
 main ()
 {
@@ -16468,8 +16477,8 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     # Fake what AC_TRY_COMPILE does.
 
     cat > conftest.$ac_ext << EOF
-#line 16471 "configure"
-#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+#line 16480 "configure"
+#include "atomic_word.h"
 int main()
 {
   _Atomic_word a = 0, b;
@@ -16495,6 +16504,8 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     rm -f conftest*
   fi
 
+  rm -f ./atomic_word.h
+
   CXXFLAGS="$old_CXXFLAGS"
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -16614,7 +16625,7 @@ $as_echo "mutex" >&6; }
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 16617 "configure"
+#line 16628 "configure"
 int main()
 {
   _Decimal32 d1;
@@ -16656,7 +16667,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   # unnecessary for this test.
 
   cat > conftest.$ac_ext << EOF
-#line 16659 "configure"
+#line 16670 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
@@ -54147,7 +54158,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54150 "configure"
+#line 54161 "configure"
 #include <stddef.h>
 int main()
 {

From redi@gcc.gnu.org  Sat May 16 10:17:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Sat, 16 May 2026 10:17:43 +0000 (GMT)
Subject: [gcc r17-553] libstdc++: replace assert with __glibcxx_assert
 [PR125228]
Message-ID: <20260516101743.987824BAD16F@sourceware.org>

https://gcc.gnu.org/g:fe3c9c98bf52e1a01f903c3d685930019a57ce61

commit r17-553-gfe3c9c98bf52e1a01f903c3d685930019a57ce61
Author: Dragon Archer <dragon-archer@outlook.com>
Date:   Fri May 8 18:16:15 2026 +0000

    libstdc++: replace assert with __glibcxx_assert [PR125228]
    
    Unlike `__glibcxx_assert` which is guarded by `_GLIBCXX_ASSERTIONS` and
    enabled only in Debug build of libstdc++, `assert` is either always
    enabled, or always disabled if manually defining `NDEBUG` before
    `#include <cassert>` or `#include <assert.h>`. This not only makes
    `assert` inflexible, but also introduces extra runtime overhead and/or
    increased binary size in Release builds.
    
    Uses of `assert` without `NDEBUG` introduces `__FILE__` into the final
    library, and unconditionally checks the assertions.
    
    This patch replaces the uses of `assert` in ryu and debug.cc with
    `__glibcxx_assert`, and removed their direct dependency on `<cassert>`.
    To avoid modifying the third-party ryu headers, this patch redefines
    `assert` to `__glibcxx_assert` when including the ryu headers.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/src/c++11/debug.cc             | 33 ++++++++++++++---------------
 libstdc++-v3/src/c++17/floating_to_chars.cc |  5 ++++-
 2 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc
index 7049d5f1238c..9a36bdfabb9b 100644
--- a/libstdc++-v3/src/c++11/debug.cc
+++ b/libstdc++-v3/src/c++11/debug.cc
@@ -33,7 +33,6 @@
 #include <debug/safe_local_iterator.h>
 #include <debug/vector>
 
-#include <cassert>
 #include <cstdio>	// for std::fprintf, stderr
 #include <cstdlib>	// for std::abort
 #include <cctype>	// for std::isspace.
@@ -888,7 +887,7 @@ namespace
   void
   print_named_name(PrintContext& ctx, const _Parameter::_Named& named)
   {
-    assert(named._M_name);
+    __glibcxx_assert(named._M_name);
     pretty_print(ctx, named._M_name, print_word);
   }
 
@@ -985,7 +984,7 @@ namespace
 	print_iterator_state(ctx, iterator);
       else if (__builtin_strcmp(fname, "sequence") == 0)
 	{
-	  assert(iterator._M_sequence);
+	  __glibcxx_assert(iterator._M_sequence);
 	  print_address(ctx, iterator._M_sequence);
 	}
       else if (__builtin_strcmp(fname, "seq_type") == 0)
@@ -999,43 +998,43 @@ namespace
   void
   print_field(PrintContext& ctx, const _Parameter& param, const char* fname)
   {
-    assert(param._M_kind != _Parameter::__unused_param);
+    __glibcxx_assert(param._M_kind != _Parameter::__unused_param);
 
     const auto& variant = param._M_variant;
     switch (param._M_kind)
     {
     case _Parameter::__iterator:
       if (!print_iterator_field(ctx, fname, variant._M_iterator))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     case _Parameter::__sequence:
       if (!print_instance_field(ctx, fname, variant._M_sequence))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     case _Parameter::__integer:
       if (!print_named_field(ctx, fname, variant._M_integer))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     case _Parameter::__string:
       if (!print_named_field(ctx, fname, variant._M_string))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     case _Parameter::__instance:
       if (!print_instance_field(ctx, fname, variant._M_instance))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     case _Parameter::__iterator_value_type:
       if (!print_type_field(ctx, fname, variant._M_iterator_value_type))
-	assert(false);
+	__glibcxx_assert(false);
       break;
 
     default:
-      assert(false);
+      __glibcxx_assert(false);
       break;
     }
   }
@@ -1198,9 +1197,9 @@ namespace
 	  }
 
 	// Get the parameter number
-	assert(*str >= '1' && *str <= '9');
+	__glibcxx_assert(*str >= '1' && *str <= '9');
 	size_t param_index = *str - '0' - 1;
-	assert(param_index < num_parameters);
+	__glibcxx_assert(param_index < num_parameters);
 	const auto& param = parameters[param_index];
 
 	// '.' separates the parameter number from the field
@@ -1208,7 +1207,7 @@ namespace
 	++str;
 	if (*str != '.')
 	  {
-	    assert(*str == ';');
+	    __glibcxx_assert(*str == ';');
 	    ++str;
 	    if (param._M_kind == _Parameter::__integer)
 	      print_integer(ctx, param._M_variant._M_integer._M_value);
@@ -1226,8 +1225,8 @@ namespace
 	++str;
 	while (*str != ';')
 	  {
-	    assert(*str);
-	    assert(field_idx < max_field_len - 1);
+	    __glibcxx_assert(*str);
+	    __glibcxx_assert(field_idx < max_field_len - 1);
 	    field[field_idx++] = *str++;
 	  }
 	++str;
@@ -1382,7 +1381,7 @@ namespace __gnu_debug
     print_literal(ctx, "Error: ");
 
     // Print the error message
-    assert(_M_text);
+    __glibcxx_assert(_M_text);
     print_string(ctx, _M_text, -1, _M_parameters, _M_num_parameters);
     print_literal(ctx, ".\n");
 
diff --git a/libstdc++-v3/src/c++17/floating_to_chars.cc b/libstdc++-v3/src/c++17/floating_to_chars.cc
index 9bddffd70ff2..264e520e1876 100644
--- a/libstdc++-v3/src/c++17/floating_to_chars.cc
+++ b/libstdc++-v3/src/c++17/floating_to_chars.cc
@@ -26,7 +26,6 @@
 
 #include <bit>
 #include <cfenv>
-#include <cassert>
 #include <cmath>
 #include <cstdio>
 #include <cstring>
@@ -106,6 +105,9 @@ namespace
 
   namespace ryu
   {
+#pragma push_macro("assert")
+#undef assert
+#define assert __glibcxx_assert
 #include "ryu/common.h"
 #include "ryu/digit_table.h"
 #include "ryu/d2s_intrinsics.h"
@@ -123,6 +125,7 @@ namespace
 # include "ryu/ryu_generic_128.h"
 # include "ryu/generic_128.c"
     } // namespace generic128
+#pragma pop_macro("assert")
 
     using generic128::floating_decimal_128;
     using generic128::generic_binary_to_decimal;

From redi@gcc.gnu.org  Sat May 16 10:20:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Sat, 16 May 2026 10:20:07 +0000 (GMT)
Subject: [gcc r16-8923] libstdc++: Remove trailing whitespace in
 shared_ptr_atomic.h
Message-ID: <20260516102007.16C344BAD174@sourceware.org>

https://gcc.gnu.org/g:44c934ad21e98ef847677f3e345cdb2115f26658

commit r16-8923-g44c934ad21e98ef847677f3e345cdb2115f26658
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 14 00:39:43 2026 +0100

    libstdc++: Remove trailing whitespace in shared_ptr_atomic.h
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/shared_ptr_atomic.h: Remove trailing whitespace.
    
    (cherry picked from commit 84b23054f18ccde71eec9eba9a201eff2033b503)

Diff:
---
 libstdc++-v3/include/bits/shared_ptr_atomic.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/shared_ptr_atomic.h b/libstdc++-v3/include/bits/shared_ptr_atomic.h
index cfd821a00646..b8c9427d9ec0 100644
--- a/libstdc++-v3/include/bits/shared_ptr_atomic.h
+++ b/libstdc++-v3/include/bits/shared_ptr_atomic.h
@@ -501,7 +501,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  auto __old_ptr = __ptr;
 	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
-	  uintptr_t __old_pi 
+	  uintptr_t __old_pi
 	    = _AtomicRef(&_M_val).fetch_sub(1, memory_order_relaxed) - 1u;
 	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);

From redi@gcc.gnu.org  Sat May 16 10:20:12 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Sat, 16 May 2026 10:20:12 +0000 (GMT)
Subject: [gcc r16-8924] libstdc++: Update tzdata to 2026a
Message-ID: <20260516102012.3A76E4BAD17E@sourceware.org>

https://gcc.gnu.org/g:0db91bf35313206a6d6f4da91d5a9b365ff1eb14

commit r16-8924-g0db91bf35313206a6d6f4da91d5a9b365ff1eb14
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026a
    
    Import the new 2026a tzdata.zi file.
    
    The leapseconds expiry date was already backported separately in
    r16-8822-g4142043bb8e13e.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++20/tzdata.zi: Import new file from 2026a release.
    
    (cherry picked from commit b8fd759dc61c0a191a236eb19db870bb30078011)

Diff:
---
 libstdc++-v3/src/c++20/tzdata.zi | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index c56f67c02f6d..88f7d34a3817 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,5 @@
-# version 2025c
+# version 2026a
+# redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
 R d 1916 1919 - O Su>=1 23s 0 -
@@ -1304,8 +1305,8 @@ R MT 1974 o - S 16 0s 0 -
 R MT 1975 1979 - Ap Su>=15 2 1 S
 R MT 1975 1980 - S Su>=15 2 0 -
 R MT 1980 o - Mar 31 2 1 S
-R MD 1997 ma - Mar lastSu 2 1 S
-R MD 1997 ma - O lastSu 3 0 -
+R MD 1997 2021 - Mar lastSu 2 1 S
+R MD 1997 2021 - O lastSu 3 0 -
 R O 1918 1919 - S 16 2s 0 -
 R O 1919 o - Ap 15 2s 1 S
 R O 1944 o - Ap 3 2s 1 S
@@ -3666,7 +3667,8 @@ Z Europe/Chisinau 1:55:20 - LMT 1880
 3 R MSK/MSD 1990 May 6 2
 2 R EE%sT 1992
 2 e EE%sT 1997
-2 MD EE%sT
+2 MD EE%sT 2022
+2 E EE%sT
 Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
 -0:25:21 - DMT 1916 May 21 2s
 -0:25:21 1 IST 1916 O 1 2s

From redi@gcc.gnu.org  Sat May 16 10:20:17 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Sat, 16 May 2026 10:20:17 +0000 (GMT)
Subject: [gcc r16-8925] libstdc++: Make configure check for atomics work on
 Windows [PR125312]
Message-ID: <20260516102017.61EB24BAE7E7@sourceware.org>

https://gcc.gnu.org/g:0fba51e8f39b245a3c0c2b75dad2619ed749f320

commit r16-8925-g0fba51e8f39b245a3c0c2b75dad2619ed749f320
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 15 10:41:33 2026 +0100

    libstdc++: Make configure check for atomics work on Windows [PR125312]
    
    The changes in r16-427-g86627faec10da5 do not work for native mingw-w64
    builds because the #include with a hardcoded unix-style path doesn't
    work for a native mingw-w64 compiler. This results in configure
    detecting that native mingw builds do not support atomic builtins for
    the _Atomic_word type, causing non-inline atomics to be used for
    __gnu_cxx::__exchange_and_add and __gnu_cxx::__atomic_add, which is an
    unintented ABI change (and inconsistent with mingw cross-compilers where
    the configure test passes and so enables the inline functions using
    atomic builtins).
    
    This attempts to solve the problem by copying the atomic_word.h header
    to the current working directory, so it can be included without using an
    absolute path.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125312
            * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Copy header
            into cwd instead of including it via an absolute path.
            * configure: Regenerate.
    
    (cherry picked from commit 1b191d0a23f3b82f6543913f8c3c2e46942af859)

Diff:
---
 libstdc++-v3/acinclude.m4 | 15 +++++++++++++--
 libstdc++-v3/configure    | 23 +++++++++++++++++------
 2 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 8dc9e17b214c..e6e4f7b394a5 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -3755,6 +3755,15 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
     esac
   fi
 
+  # The $glibcxx_builddir/include/$target/bits/atomic_word.h header is created
+  # by include/Makefile so isn't available during configure. Copy it from the
+  # source dir to $PWD so that we don't include it using an absolute path,
+  # which does not work for win32 native builds (PR libstdc++/125312).
+  if ! $LN_S "${glibcxx_srcdir}/config/${atomic_word_dir}/atomic_word.h" ./
+  then
+    AC_MSG_ERROR([cannot create ./atomic_word.h])
+  fi
+
   if test "$atomic_builtins_link_tests" = yes; then
 
     # Do link tests.
@@ -3763,7 +3772,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
 
     AC_CACHE_CHECK([for atomic builtins for _Atomic_word],
 	glibcxx_cv_atomic_word,
-	[AC_TRY_LINK([#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"],
+	[AC_TRY_LINK([#include "atomic_word.h"],
 		     [_Atomic_word a = 0, b;
 		      b = __atomic_fetch_add(&a, 1, __ATOMIC_ACQ_REL);],
 		     [glibcxx_cv_atomic_word=yes],
@@ -3779,7 +3788,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
 
     cat > conftest.$ac_ext << EOF
 [#]line __oline__ "configure"
-[#]include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+[#]include "atomic_word.h"
 int main()
 {
   _Atomic_word a = 0, b;
@@ -3799,6 +3808,8 @@ EOF
     rm -f conftest*
   fi
 
+  rm -f ./atomic_word.h
+
   CXXFLAGS="$old_CXXFLAGS"
   AC_LANG_RESTORE
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 6713e4504b1c..359545c4bceb 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16422,6 +16422,15 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
     esac
   fi
 
+  # The $glibcxx_builddir/include/$target/bits/atomic_word.h header is created
+  # by include/Makefile so isn't available during configure. Copy it from the
+  # source dir to $PWD so that we don't include it using an absolute path,
+  # which does not work for win32 native builds (PR libstdc++/125312).
+  if ! $LN_S "${glibcxx_srcdir}/config/${atomic_word_dir}/atomic_word.h" ./
+  then
+    as_fn_error $? "cannot create ./atomic_word.h" "$LINENO" 5
+  fi
+
   if test "$atomic_builtins_link_tests" = yes; then
 
     # Do link tests.
@@ -16438,7 +16447,7 @@ else
 fi
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+#include "atomic_word.h"
 int
 main ()
 {
@@ -16468,8 +16477,8 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     # Fake what AC_TRY_COMPILE does.
 
     cat > conftest.$ac_ext << EOF
-#line 16471 "configure"
-#include "${glibcxx_srcdir}/config/$atomic_word_dir/atomic_word.h"
+#line 16480 "configure"
+#include "atomic_word.h"
 int main()
 {
   _Atomic_word a = 0, b;
@@ -16495,6 +16504,8 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     rm -f conftest*
   fi
 
+  rm -f ./atomic_word.h
+
   CXXFLAGS="$old_CXXFLAGS"
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -16614,7 +16625,7 @@ $as_echo "mutex" >&6; }
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 16617 "configure"
+#line 16628 "configure"
 int main()
 {
   _Decimal32 d1;
@@ -16656,7 +16667,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   # unnecessary for this test.
 
   cat > conftest.$ac_ext << EOF
-#line 16659 "configure"
+#line 16670 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
@@ -54145,7 +54156,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54148 "configure"
+#line 54159 "configure"
 #include <stddef.h>
 int main()
 {

From gccadmin@gcc.gnu.org  Sun May 17 00:16:51 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 17 May 2026 00:16:51 +0000 (GMT)
Subject: [gcc r17-556] Daily bump.
Message-ID: <20260517001651.F08C14BA79A4@sourceware.org>

https://gcc.gnu.org/g:f80370a45926f323e0184acfe221738b3e4a00cc

commit r17-556-gf80370a45926f323e0184acfe221738b3e4a00cc
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun May 17 00:16:24 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 56 ++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   |  6 ++++
 gcc/testsuite/ChangeLog | 80 +++++++++++++++++++++++++++++++++++++++++++++++++
 libgfortran/ChangeLog   |  5 ++++
 libgomp/ChangeLog       |  5 ++++
 libstdc++-v3/ChangeLog  | 21 +++++++++++++
 7 files changed, 174 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 96175f71622a..84b23faad340 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,59 @@
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* match.pd (BITREVERSE): New define_operator_list.  Use it next to
+	BSWAP for a subset of bswap simplifications.
+
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* doc/extend.texi (__builtin_bitreverse32, __builtin_bitreverse64):
+	Tweak wording for consistency with __builtin_bswap*.
+	(__builtin_bitreverse128): Document.
+	* builtins.def (BUILT_IN_BITREVERSE128): New.
+	* builtins.cc (expand_builtin): Handle also BUILT_IN_BITREVERSE128.
+	(is_inexpensive_builtin): Likewise.
+	* fold-const-call.cc (fold_const_call_ss): Handle also
+	CFN_BUILT_IN_BITREVERSE128.
+	* fold-const.cc (tree_call_nonnegative_warnv_p): Likewise.
+	* tree-ssa-ccp.cc (evaluate_stmt): Handle also BUILT_IN_BITREVERSE128.
+	* tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): Handle also
+	CFN_BUILT_IN_BITREVERSE128.
+	(cond_removal_in_builtin_zero_pattern): Likewise.
+
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* tree-ssa-ccp.cc (evaluate_stmt): Fix up
+	BUILT_IN_BITREVERSE{8,16,32,64} handling.
+
+2026-05-16  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* config/i386/i386-features.cc (scalar_chain): If the chain
+	starts with a register-to-register move from a hard register,
+	then the hard register's defs don't need to converted.
+	(timode_scalar_chain::compute_convert_gain): Provide costs
+	for hard_reg-to-pseudo and pseudo-to-hard_reg moves.
+	Tweak speed cost of timode_concatdi_p moves.
+	(timode_scalar_chain::convert_insn): Add support for
+	hard_reg-to-pseudo and pseudo-to-hard_reg TImode transfers.
+	(timode_scalar_to_vector_candidate_p): Likewise.
+
+2026-05-16  Shivam Gupta  <shivam98.tkg@gmail.com>
+
+	PR tree-optimization/112095
+	* match.pd: Simplify ((~x) & y) ^ (x | y)
+	to x and ((~x) | y) ^ (x & y) to ~x.
+
+2026-05-16  Timo Rothenpieler  <timo@rothenpieler.org>
+
+	* config/i386/mingw-pthread.h:
+	rename to generic config/mingw/mingw-pthread.h
+	* config.gcc [aarch64-*-mingw*]:
+	Fix support for posix threading on aarch64 mingw targets.
+	* config/mingw/mingw-pthread.h: New file.
+
 2026-05-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	* tree-ssa-operands.cc (operands_scanner::parse_ssa_operands):
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 8ee5b417cbc7..ca08e6063fdc 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260516
+20260517
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 177892f5201d..085251e31075 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/122245
+	* dump-parse-tree.cc (write_formal_arglist): Take the formal
+	arglist from the symbol's interface if it is present.
+
 2026-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/125092
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8513dd50bf0f..adc34571c096 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,83 @@
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* gcc.dg/builtin-bitreverse-4.c: New test.
+
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* gcc.dg/builtin-bitreverse-1.c: Add __builtin_bitreverse128 tests.
+	* gcc.dg/builtin-bitreverse-2.c: Likewise.
+
+2026-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* gcc.dg/builtin-bitreverse-3.c: New test.
+
+2026-05-16  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* gcc.target/i386/avx-stv-1.c: New test case.
+	* gcc.target/i386/sse2-stv-3.c: Likewise.
+	* gcc.target/i386/sse2-stv-4.c: Likewise.
+	* gcc.target/i386/sse2-stv-5.c: Likewise.
+
+2026-05-16  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add form 10.
+	* gcc.target/riscv/sat/sat_u_mul-11-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-11-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-11-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-11-u8.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-11-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-11-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-11-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-11-u8.c: New test.
+
+2026-05-16  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add form 9.
+	* gcc.target/riscv/sat/sat_u_mul-10-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-10-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-10-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-10-u8.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-10-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-10-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-10-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-10-u8.c: New test.
+
+2026-05-16  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add form 8.
+	* gcc.target/riscv/sat/sat_u_mul-9-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u16-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u16-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u32-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u32-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u8-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-9-u8-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u16-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u32-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-9-u8-from-u64.c: New test.
+
+2026-05-16  Shivam Gupta  <shivam98.tkg@gmail.com>
+
+	PR tree-optimization/112095
+	* gcc.dg/tree-ssa/pr112095.c: New test.
+
 2026-05-15  Marek Polacek  <polacek@redhat.com>
 
 	* g++.dg/warn/Wuninitialized-pr107919-1.C: Fix a dg-bogus.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 2655d23af58f..480abb0e4e03 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* caf/shmem/sync.h (lock_t): Rename to caf_shmem_lock_t.
+	* caf/shmem.c: Adapt uses.
+
 2026-05-08  Harald Anlauf  <anlauf@gmx.de>
 
 	PR libfortran/125087
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index e5f93ebf5d66..3975f41cebc0 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* env.c (initialize_env): Check GOMP_DEFAULT_STACKSIZE for
+	non-zero.
+
 2026-05-13  H.J. Lu  <hjl.tools@gmail.com>
 
 	* libgomp.texi: the Add missing closing brace.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d7d6d73f63f4..8d88179ecab8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,24 @@
+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]:

From gccadmin@gcc.gnu.org  Sun May 17 00:20:18 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 17 May 2026 00:20:18 +0000 (GMT)
Subject: [gcc r16-8926] Daily bump.
Message-ID: <20260517002018.BCB924BA23D1@sourceware.org>

https://gcc.gnu.org/g:93f50a01c85062d86a12fd0c1ecf0ca0db69dd01

commit r16-8926-g93f50a01c85062d86a12fd0c1ecf0ca0db69dd01
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun May 17 00:19:49 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          |  2 +-
 libstdc++-v3/ChangeLog | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 8ee5b417cbc7..ca08e6063fdc 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260516
+20260517
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d5975d6f96d4..f1752b03cc91 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-16  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jonathan Wakely  <jwakely@redhat.com>
+
+	* src/c++20/tzdata.zi: Import new file from 2026a release.
+
+2026-05-16  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-13  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/shared_ptr_atomic.h: Remove trailing whitespace.
+
 2026-05-05  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From tkaminsk@gcc.gnu.org  Mon May 18 07:32:01 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 18 May 2026 07:32:01 +0000 (GMT)
Subject: [gcc r17-562] libstdc++: Use on_month_day istream operator in
 ZoneInfo parsing. [PR124852]
Message-ID: <20260518073201.EBF184BA2E33@sourceware.org>

https://gcc.gnu.org/g:2451667193e4e00b49c4ef9d95c0a3a1aa955f82

commit r17-562-g2451667193e4e00b49c4ef9d95c0a3a1aa955f82
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed May 13 09:17:47 2026 +0200

    libstdc++: Use on_month_day istream operator in ZoneInfo parsing. [PR124852]
    
    This patch changes ZoneInfo parsing, to use operator>> for on_month_day
    directly, and removes on_day tag. The operator>>(istream&, on_month_day)
    is updated to not override on.month if the MONTH component is not present,
    and set failbit instead. This allows to use in >> on >> time, to parse
    MONTH DAY TIME.
    
    We also handle failure to parse day number N for Www>=N or Www<=N
    productions, by leaving the day part of input unchanged and setting
    failbit.
    
            PR libstdc++/124852
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/src/c++20/tzdb.cc | 89 ++++++++++++++----------------------------
 1 file changed, 30 insertions(+), 59 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index f9238542274b..183a0c61a616 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -371,13 +371,6 @@ namespace std::chrono
 	return ymd;
       }
 
-      struct on_day_t // tag type for reading ON and DAY fields only
-      {
-	on_month_day& parent;
-	friend istream& operator>>(istream&, on_day_t&&);
-      };
-
-      on_day_t on_day() { return on_day_t{*this}; }
 
       friend istream& operator>>(istream&, on_month_day&);
     };
@@ -2334,73 +2327,55 @@ namespace
       }
     };
 
-    // Read the day-component of an on_month_day expression (everything after
-    // the month).  Three forms are accepted: a plain day-of-month number,
-    // "lastXxx" where Xxx is a weekday name (LastWeekday), or "Xxx<=N" or
-    // "Xxx>=N" (LessEq / GreaterEq).  On failure the function sets failbit
-    // and leaves `to.parent` unchanged.
-    istream& operator>>(istream& in, on_month_day::on_day_t&& to)
+    // Read the MONTH DAY. Three forms are accepted for DAY:
+    // * a plain day-of-month number (DayOfMonth),
+    // * "lastWww" where Www is a weekday name (LastWeekday),
+    // * "Www<=N" or "Www>=N" (LessEq / GreaterEq).
+    // On failure to read either MONTH or DAY this function sets
+    // failbit. If DAY is not parsed, only `on.month` is modified,
+    // otherwise `on` is left unchanged.
+    istream& operator>>(istream& in, on_month_day& on)
     {
       using enum on_month_day::Kind;
-
-      on_month_day& on = to.parent;
-      int c = ws(in).peek();
-      if ('0' <= c && c <= '9')
+      if (abbrev_month m{}; in >> m)
 	{
-	  unsigned d;
-	  in >> d;
-	  if (d <= 31) [[likely]]
+ 	  on.month = static_cast<unsigned>(m.m);
+	  if (int c = ws(in).peek(); '0' <= c && c <= '9')
 	    {
-	      on.kind = DayOfMonth;
-	      on.day_of_month = d;
-	      return in;
+	      if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
+		{
+		  on.kind = DayOfMonth;
+		  on.day_of_month = d;
+		  return in;
+		}
 	    }
-	}
-      else if (c == 'l') // lastSunday, lastWed, ...
-	{
-	  in.ignore(4);
-	  if (abbrev_weekday w{}; in >> w) [[likely]]
+	  else if (c == 'l') // lastSunday, lastWed, ...
 	    {
-	      on.kind = LastWeekday;
-	      on.day_of_week = w.wd.c_encoding();
-	      return in;
+	      in.ignore(4);
+	      if (abbrev_weekday w{}; in >> w) [[likely]]
+		{
+		  on.kind = LastWeekday;
+		  on.day_of_week = w.wd.c_encoding();
+		  return in;
+		}
 	    }
-	}
-      else
-	{
-	  abbrev_weekday w;
-	  in >> w;
-	  if (auto c = in.get(); c == '<' || c == '>')
+	  else if (abbrev_weekday w; in >> w) [[likely]]
 	    {
-	      if (in.get() == '=')
-		{
-		  unsigned d;
-		  in >> d;
-		  if (d <= 31) [[likely]]
+	      if (c = in.get(); c == '<' || c == '>')
+		if (in.get() == '=')
+	          if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
 		    {
 		      on.kind = c == '<' ? LessEq : GreaterEq;
 		      on.day_of_week = w.wd.c_encoding();
 		      on.day_of_month = d;
 		      return in;
 		    }
-		}
 	    }
 	}
       in.setstate(ios::failbit);
       return in;
     }
 
-    istream& operator>>(istream& in, on_month_day& to)
-    {
-      on_month_day md{};
-      abbrev_month m{};
-      in >> m;
-      md.month = static_cast<unsigned>(m.m);
-      if (in >> md.on_day())
-	to = md;
-      return in;
-    }
-
     istream& operator>>(istream& in, at_time& at)
     {
       int sign = 1;
@@ -2506,11 +2481,7 @@ namespace
 	  on_month_day on{ .kind = on_month_day::DayOfMonth,
 			   .month = 1, .day_of_month = 1 };
 	  at_time t{};
-	  if (abbrev_month m{January}; in >> m)
-	    {
-	      on.month = static_cast<unsigned>(m.m);
-	      in >> on.on_day() >> t;
-	    }
+	  in >> on >> t;
 	  year_month_day ymd = on.pin(year(y));
 	  inf.m_until = sys_days(ymd) + seconds(t.time);
 	  if (t.indicator != at_time::Universal)

From tkaminsk@gcc.gnu.org  Mon May 18 08:47:55 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 18 May 2026 08:47:55 +0000 (GMT)
Subject: [gcc r17-564] libstdc++: Make is_exhaustive const for
 layout_(left/right)_padded
Message-ID: <20260518084755.0EC3F4BA2E35@sourceware.org>

https://gcc.gnu.org/g:10aa8833b04b52bb1ba3084bc59de604d7c38229

commit r17-564-g10aa8833b04b52bb1ba3084bc59de604d7c38229
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 18 09:45:46 2026 +0200

    libstdc++: Make is_exhaustive const for layout_(left/right)_padded
    
    This is specified as const in the standard, and required to be const-callable
    per layout mapping requirement. This made calls to is_exhaustive on mdspan
    with such layout ill-formed.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/mdspan                                | 4 ++--
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc | 8 ++++++++
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc  | 6 +++---
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc  | 2 +-
 libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc          | 6 +++---
 5 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 5938bf09a940..adc1c0c64219 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -2621,7 +2621,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return _PaddedStorage::_M_is_always_exhaustive(); }
 
 	constexpr bool
-	is_exhaustive() noexcept
+	is_exhaustive() const noexcept
 	{ return _M_storage._M_is_exhaustive(); }
 
 	static constexpr bool
@@ -2794,7 +2794,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return _PaddedStorage::_M_is_always_exhaustive(); }
 
 	constexpr bool
-	is_exhaustive() noexcept
+	is_exhaustive() const noexcept
 	{ return _M_storage._M_is_exhaustive(); }
 
 	static constexpr bool
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
index 17cfac54113b..28aa69eca779 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
@@ -44,6 +44,14 @@ template<typename Layout, typename Extents>
     static_assert(M::is_always_strided() && M::is_strided());
     if constexpr (has_static_is_exhaustive<M>)
       static_assert(M::is_always_exhaustive() && M::is_exhaustive());
+
+    static_assert(noexcept(M::is_always_unique()));
+    static_assert(noexcept(M::is_always_strided()));
+    static_assert(noexcept(M::is_always_exhaustive()));
+    static_assert(noexcept(std::declval<const M>().is_unique()));
+    static_assert(noexcept(std::declval<const M>().is_strided()));
+    static_assert(noexcept(std::declval<const M>().is_exhaustive()));
+
     return true;
   }
 
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
index 1b6e063d12de..18821795355f 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
@@ -509,7 +509,7 @@ template<template<size_t> typename Layout>
   {
     auto exts = std::extents<int>{};
 
-    auto check = [](auto m)
+    auto check = [](const auto m)
     {
       static_assert(m.is_always_exhaustive());
       VERIFY(m.is_exhaustive());
@@ -529,7 +529,7 @@ constexpr void
     {
       auto check = [](auto exts)
       {
-	auto m = typename PaddedLayout::mapping(exts);
+	const auto m = typename PaddedLayout::mapping(exts);
 	static_assert(m.is_always_exhaustive());
 	VERIFY(m.is_exhaustive());
       };
@@ -554,7 +554,7 @@ template<template<size_t> typename Layout>
     auto ctrue = std::cw<true>;
     auto cfalse= std::cw<false>;
 
-    auto check = [](auto m, auto static_expected, auto runtime_expected)
+    auto check = [](const auto m, auto static_expected, auto runtime_expected)
     {
       static_assert(m.is_always_exhaustive() == static_expected);
       VERIFY(m.is_exhaustive() == runtime_expected);
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
index 8d2fad2936f6..94deea33e1cf 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
@@ -278,7 +278,7 @@ template<typename Extents, typename Strides>
   constexpr void
   test_is_exhaustive(Extents extents, Strides strides, bool expected)
   {
-    std::layout_stride::mapping<Extents> m(extents, strides);
+    const std::layout_stride::mapping<Extents> m(extents, strides);
     VERIFY(m.is_exhaustive() == expected);
 
     bool always_exhaustive = extents.rank() == 0 || m.required_span_size() == 0;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
index 62ff7201cce9..a2e244df3c56 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
@@ -720,9 +720,9 @@ template<typename Layout, bool Expected>
     static_assert(noexcept(MDSpan::is_always_exhaustive()) == Expected);
     static_assert(noexcept(MDSpan::is_always_strided()) == Expected);
 
-    static_assert(noexcept(std::declval<MDSpan>().is_unique()) == Expected);
-    static_assert(noexcept(std::declval<MDSpan>().is_exhaustive()) == Expected);
-    static_assert(noexcept(std::declval<MDSpan>().is_strided()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_unique()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_exhaustive()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_strided()) == Expected);
   }
 
 int

From tkaminsk@gcc.gnu.org  Mon May 18 15:42:01 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 18 May 2026 15:42:01 +0000 (GMT)
Subject: [gcc r17-569] libstdc++: Include range_access.h from <valarray>
Message-ID: <20260518154201.77A5F4BB24DC@sourceware.org>

https://gcc.gnu.org/g:83f056802116d09136d2f32d1accfe5a53a85a74

commit r17-569-g83f056802116d09136d2f32d1accfe5a53a85a74
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 14 14:47:03 2026 +0200

    libstdc++: Include range_access.h from <valarray>
    
    This implements <valarray> related parts of section 4.8. of P3016R6.
    This is treated as DR against C++11 (to expose array begin/end), to follow
    similar changes to other semi-containers that were accepted as LWG issues
    and treated as DR: <optional> (LWG4131), <stacktrace> (LWG3625).
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/valarray                          |  1 +
 .../testsuite/26_numerics/valarray/range_access2.cc        | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 63784fb5974a..abb158d22c35 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -43,6 +43,7 @@
 #include <debug/debug.h>
 #if __cplusplus >= 201103L
 #include <initializer_list>
+#include <bits/range_access.h>
 #endif
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc b/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
index 8a4f2b659e5a..44ea7fc4b601 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
@@ -19,7 +19,6 @@
 
 // C++11 26.6.10 valarray range access: [valarray.range]
 
-#include <iterator>
 #include <valarray>
 
 // PR libstdc++/67374
@@ -46,8 +45,21 @@ test02()
   (void) std::cend(cva);
 }
 
+// P3016R6 4.8
+void
+test03()
+{
+#if __cplusplus >= 201703L
+  std::valarray<double> va;
+  (void) std::size(va);
+  const auto& cva = va;
+  (void) std::size(cva);
+#endif
+}
+
 int main()
 {
   test01();
   test02();
+  test03();
 }

From redi@gcc.gnu.org  Mon May 18 16:27:08 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 18 May 2026 16:27:08 +0000 (GMT)
Subject: [gcc r17-570] libstdc++: optimize std::uninitialized_move{,
 _n}() to memcpy when possible [PR121789]
Message-ID: <20260518162708.724234BA2E29@sourceware.org>

https://gcc.gnu.org/g:79e29562907b454cdb867195b34cf63156d2d0cc

commit r17-570-g79e29562907b454cdb867195b34cf63156d2d0cc
Author: Avi Kivity <avi@scylladb.com>
Date:   Thu Feb 26 19:59:41 2026 +0200

    libstdc++: optimize std::uninitialized_move{,_n}() to memcpy when possible [PR121789]
    
    std::uninitialized_move{,_n} delegates to the corresponding
    std::uninitialized_copy() variant after wrapping with a move
    iterator, but the std::uninitialized_copy() doesn't unwrap the
    move iterator, therefore losing the memcpy optimization if the
    iterators were just pointers.
    
    Fix this by unwrapping the move iterator using  __miter_base().
    
    We remove operator-() in testsuite_greedy_ops.h; otherwise it breaks
    the range size computation.
    
    libstdc++v3/Changelog:
    
            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).

Diff:
---
 libstdc++-v3/include/bits/stl_uninitialized.h        |  4 ++--
 .../uninitialized_move/121789.cc                     | 20 ++++++++++++++++++++
 libstdc++-v3/testsuite/util/testsuite_greedy_ops.h   |  3 ++-
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h
index ae4442f38581..a8791a66ae8f 100644
--- a/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -275,7 +275,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __cplusplus >= 201103L
       using _Dest = decltype(std::__niter_base(__result));
-      using _Src = decltype(std::__niter_base(__first));
+      using _Src = decltype(std::__miter_base(std::__niter_base(__first)));
       using _ValT = typename iterator_traits<_ForwardIterator>::value_type;
 
 #if __glibcxx_raw_memory_algorithms >= 202411L // >= C++26
@@ -292,7 +292,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    {
 	      using _ValT = typename remove_pointer<_Src>::type;
 	      __builtin_memcpy(std::__niter_base(__result),
-			       std::__niter_base(__first),
+			       std::__miter_base(std::__niter_base(__first)),
 			       __n * sizeof(_ValT));
 	      __result += __n;
 	    }
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/121789.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/121789.cc
new file mode 100644
index 000000000000..8fc19f40ade8
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/121789.cc
@@ -0,0 +1,20 @@
+// { dg-options "-O1 -fdump-tree-optimized" }
+// { dg-do compile { target c++17 } }
+// { dg-final { scan-tree-dump "memcpy" "optimized" } }
+
+// PR libstdc++/121789
+// std::uninitialized_move_n() and friends don't optimize to memcpy
+
+#include <memory>
+
+struct T { int x; };
+
+void f(T* src, T* dst, unsigned n)
+{
+  std::uninitialized_move(src, src + n, dst);
+}
+
+void g(T* src, T* dst, unsigned n)
+{
+  std::uninitialized_move_n(src, n, dst);
+}
diff --git a/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h b/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
index 053e36956b2f..88d502663d84 100644
--- a/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
+++ b/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
@@ -46,10 +46,11 @@ namespace greedy_ops
   X operator>=(T, T)
   { return X(); }
 
+  /*
   template<typename T>
   X operator-(T, T)
   { return X(); }
-  /*
+
   template<typename T>
   T operator+(std::size_t, T)
   { return T(); }

From redi@gcc.gnu.org  Mon May 18 16:27:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 18 May 2026 16:27:52 +0000 (GMT)
Subject: [gcc r17-571] libstdc++: Reduce iterations in PSTL test for Debug Mode
Message-ID: <20260518162752.B27DB4BA23C9@sourceware.org>

https://gcc.gnu.org/g:6df1f865272fc95f386f5448f3a74486451bb58c

commit r17-571-g6df1f865272fc95f386f5448f3a74486451bb58c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sun May 17 19:27:11 2026 +0100

    libstdc++: Reduce iterations in PSTL test for Debug Mode
    
    This test often times out, especially on machines with a large number of
    cores when the tests are run with a lot of parallel jobs. I suspect that
    TBB creates a lot of threads due to std::hardware_concurrency() being a
    large number, but because most cores are already busy running other
    tests (due to `make -jN check` with large N) the system gets
    oversubscribed. In Debug Mode, the testcase runs much slower, and often
    times out.
    
    It's probably fine to just test with fewer iterations when Debug Mode is
    active.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
            Reduce iterations for debug mode.

Diff:
---
 .../testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc        | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
index e4bd435d1926..51bdeaa96a13 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
@@ -189,7 +189,11 @@ int
 main()
 {
     using TestUtils::float64_t;
+#ifndef _GLIBCXX_DEBUG
     const std::size_t N = 100000;
+#else
+    const std::size_t N = 10000;
+#endif
 
     for (std::size_t n = 0; n < N; n = n < 16 ? n + 1 : size_t(3.14159 * n))
     {

From redi@gcc.gnu.org  Mon May 18 22:42:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 18 May 2026 22:42:52 +0000 (GMT)
Subject: [gcc r17-582] libstdc++: Move std::bitset test to correct directory
Message-ID: <20260518224252.3FA014BB24CC@sourceware.org>

https://gcc.gnu.org/g:7e0424c107ded5b1cee0c0ece500d30aca9cd3d3

commit r17-582-g7e0424c107ded5b1cee0c0ece500d30aca9cd3d3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 23:38:19 2026 +0100

    libstdc++: Move std::bitset test to correct directory
    
    I added this test in r16-3435-gbbc0e70b610f19 but I'd previously moved
    the rest of the bitset tests under 20_util, in r13-2778-g4b4b51445f7f3d.
    This moves the lwg4294.cc test where it belongs.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/23_containers/bitset/lwg4294.cc: Move to...
            * testsuite/20_util/bitset/cons/lwg4294.cc: ...here.

Diff:
---
 .../testsuite/{23_containers/bitset => 20_util/bitset/cons}/lwg4294.cc    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/lwg4294.cc
similarity index 100%
rename from libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc
rename to libstdc++-v3/testsuite/20_util/bitset/cons/lwg4294.cc

From redi@gcc.gnu.org  Mon May 18 22:43:47 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 18 May 2026 22:43:47 +0000 (GMT)
Subject: [gcc r16-8929] libstdc++: Move std::bitset test to correct directory
Message-ID: <20260518224347.E33274BB24CC@sourceware.org>

https://gcc.gnu.org/g:c4175e24c96ed97e617da96cc9434802cbaf1742

commit r16-8929-gc4175e24c96ed97e617da96cc9434802cbaf1742
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 23:38:19 2026 +0100

    libstdc++: Move std::bitset test to correct directory
    
    I added this test in r16-3435-gbbc0e70b610f19 but I'd previously moved
    the rest of the bitset tests under 20_util, in r13-2778-g4b4b51445f7f3d.
    This moves the lwg4294.cc test where it belongs.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/23_containers/bitset/lwg4294.cc: Move to...
            * testsuite/20_util/bitset/cons/lwg4294.cc: ...here.
    
    (cherry picked from commit 7e0424c107ded5b1cee0c0ece500d30aca9cd3d3)

Diff:
---
 .../testsuite/{23_containers/bitset => 20_util/bitset/cons}/lwg4294.cc    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/lwg4294.cc
similarity index 100%
rename from libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc
rename to libstdc++-v3/testsuite/20_util/bitset/cons/lwg4294.cc

From gccadmin@gcc.gnu.org  Tue May 19 00:16:58 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 19 May 2026 00:16:58 +0000 (GMT)
Subject: [gcc r17-584] Daily bump.
Message-ID: <20260519001658.4399D4BA543C@sourceware.org>

https://gcc.gnu.org/g:65af1f796fc7dcdd98e9d94c19cabed64e332ccd

commit r17-584-g65af1f796fc7dcdd98e9d94c19cabed64e332ccd
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue May 19 00:16:28 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 106 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/analyzer/ChangeLog  |  18 ++++++++
 gcc/cp/ChangeLog        |   4 ++
 gcc/jit/ChangeLog       |   7 ++++
 gcc/po/ChangeLog        |   4 ++
 gcc/testsuite/ChangeLog |  54 ++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  49 ++++++++++++++++++++++
 8 files changed, 243 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 50f321719ca5..f0ddfe351359 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,109 @@
+2026-05-18  Xin Wang  <yw987194828@gmail.com>
+
+	* tree-ssa-loop-split.cc (fix_loop_bb_probability): Rename
+	parameters from true_edge/false_edge to loop1_edge/loop2_edge
+	and scale both loops directly from their semantic edge
+	probabilities.
+	(split_loop): Derive loop1_edge and loop2_edge from initial_true.
+	Use them for loop1_prob, fix_loop_bb_probability, and iteration
+	estimate scaling.
+
+2026-05-18  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* config/riscv/riscv-cores.def: Add xt-c9501fdvt tune and core.
+	* doc/riscv-mcpu.texi: Regenerated.
+	* doc/riscv-mtune.texi: Regenerated.
+
+2026-05-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/riscv/riscv.cc (riscv_rtx_costs): Properly cost pack insns
+	for Zbkb.
+	* config/riscv/riscv.md (zero_extendsidi2): Expand into shift pairs
+	when the appropriate instructions are not available.
+	(zero_extendhi<GPR:mode>2): Simlarly.
+	(*zero_extendsidi2_internal): Make a simple define_insn.  Only handle
+	MEM sources.
+	(*zero_extendhi<GPR2:mode>2): Similarly.
+	(zero_extendsidi2_shifted): Turn into a define_split and generalize
+	to handle more constants.
+	* config/riscv/predicates.md (dimode_shift_operand): New predicate.
+
+2026-05-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* ext-dce.cc (carry_backpropagate): Handle AND and IOR with a constant argument.
+
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* doc/analyzer.texi: Update for change in param name.
+	* doc/params.texi: Likewise.  Clarify wording.
+
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* dump-context.h (dump_context::emit_optinfo): "info" is non-null,
+	so pass it by reference.
+	* dumpfile.cc (dump_context::end_any_optinfo): Update for above
+	change.
+	(dump_context::emit_optinfo): Likewise.
+	* optinfo-emit-json.cc: Update throughout to eliminate naked "new"
+	and "delete" in favor of std::make_unique and unique_ptr.  Drop
+	redundant dtor.  Use nullptr rather than NULL.  Pass by
+	const-reference rather than by const-pointer in the places that
+	require non-null.
+	* optinfo-emit-json.h: Likewise.
+	* optinfo.cc (optinfo::emit_for_opt_problem): Update for above
+	changes.
+
+2026-05-18  Yoshinori Sato  <yoshinori.sato@nifty.com>
+
+	* config/rx/rx.cc (rx_gen_move_template): Select the mode with the smallest size
+	for the mov instruction.
+
+2026-05-18  Kito Cheng  <kito.cheng@sifive.com>
+
+	* expr.cc (calculate_reversed_crc): New function.
+	(assemble_reversed_crc_table): New function.
+	(generate_reversed_crc_table): New function.
+	(calculate_table_based_reversed_CRC): New function.
+	(expand_reversed_crc_table_based): Remove gen_reflecting_code
+	parameter.  Use calculate_table_based_reversed_CRC.
+	* expr.h (expand_reversed_crc_table_based): Update prototype.
+	* builtins.cc (expand_builtin_crc_table_based): Update call.
+	* internal-fn.cc (expand_crc_optab_fn): Update call.
+	* config/aarch64/aarch64.md (crc_rev<ALLI:mode><ALLX:mode>4):
+	Update call.
+	* config/i386/i386.md (crc_rev<SWI124:mode>si4): Update call.
+	* config/loongarch/loongarch.md (crc_rev<mode>si4): Update call.
+	Remove local rbit lambda.
+	* config/riscv/bitmanip.md (crc_rev<ANYI1:mode><ANYI:mode>4):
+	Update call.  Remove TARGET_ZBKB case.
+	* config/riscv/riscv.cc (generate_reflecting_code_using_brev):
+	Remove.
+	* config/riscv/riscv-protos.h (generate_reflecting_code_using_brev):
+	Remove declaration.
+
+2026-05-18  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* config/riscv/riscv.cc (riscv_hard_regno_mode_ok): Remove else.
+
+2026-05-18  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* config/riscv/riscv.cc (riscv_check_target_clone_version): Fix
+	format specifier.
+
+2026-05-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* config/i386/i386-protos.h (ix86_expand_gfni_bitreverse): Declare.
+	* config/i386/i386-expand.cc (ix86_expand_gfni_bitreverse): New
+	function.
+	* config/i386/i386.md (bitreverse<mode>2): New expander.
+
+2026-05-18  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Return false
+	for -Os.
+
 2026-05-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	* tree-ssa-uncprop.cc (associate_equivalences_with_edges): For switches
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 7fa0e3eb50bf..2bdf77fcc72f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260518
+20260519
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 24ee876fce95..d4d08911edcc 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,21 @@
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* analyzer.opt (-param=analyzer-bb-explosion-factor=): Rename to...
+	(-param=analyzer-supernode-explosion-factor=): ...this.
+	* engine.cc (exploded_graph::process_worklist): Update for change
+	to param name.  Clarify the -Wanalyzer-too-complex message when
+	hitting the overall limit on enodes by also showing the number
+	of snodes.
+
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* engine.cc (exploded_node::status_to_str): Drop unused field
+	m_num_processed_stmts.
+	(exploded_node::dump): Likewise.
+	(exploded_node::to_json): Likewise.
+	* exploded-graph.h (exploded_node::m_num_processed_stmts):
+	Likewise.
+
 2026-05-06  David Malcolm  <dmalcolm@redhat.com>
 
 	* svalue.cc (svalue::make_dump_widget): Show value ranges in
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 03406ad148bb..dcb6881cc458 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-18  Marek Polacek  <polacek@redhat.com>
+
+	* constexpr.cc (cxx_eval_bare_aggregate): Remove dead code.
+
 2026-05-15  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/125081
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index c3cd50b51655..0f4e21fdfa54 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* docs/topics/contexts.rst
+	(gcc_jit_context_add_command_line_option): Clarify that adding
+	multiple options requires multiple calls.
+	(gcc_jit_context_add_driver_option): Likewise.
+
 2025-12-11  Jakub Jelinek  <jakub@redhat.com>
 
 	* docs/_build/texinfo/libgccjit.texi: Fix comment typo, shold -> should.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 6e5a99ab0a2c..d219f1967467 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-18  Joseph Myers  <josmyers@redhat.com>
+
+	* sv.po: Update.
+
 2026-05-05  Joseph Myers  <josmyers@redhat.com>
 
 	* de.po: Update.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index adc34571c096..f75e2dfaf480 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,57 @@
+2026-05-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* gcc.dg/tree-ssa/pr112095.c: Add -Wno-psabi to the options.
+	Look at release_ssa instead of optimization. Match
+	"<retval> = a_" in addition to "return a_".
+
+2026-05-18  Xin Wang  <yw987194828@gmail.com>
+
+	* gcc.dg/tree-prof/loop-split-4.c: New test.
+
+2026-05-18  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* gcc.target/riscv/mcpu-xt-c9501fdvt.c: New test.
+
+2026-05-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/slt-1.c: Skip for -Oz as well.  Set explicit branch
+	cost.
+	* gcc.target/riscv/zba-shNadd-04.c: Add Zbb to command line switches.
+	* gcc.target/riscv/zba-slliuw.c: Add Zbs to command line switches.
+	* gcc.target/riscv/zbs-zext.c: Add Zbs to command line switches.
+	* gcc.target/riscv/shift-shift-6.c: New test.
+	* gcc.target/riscv/shift-shift-7.c: New test.
+	* gcc.target/riscv/amo/a-rvwmo-load-relaxed.c: Accept lh or lhu.
+	* gcc.target/riscv/amo/a-ztso-load-relaxed.c: Accept lh or lhu.
+	* gcc.target/riscv/amo/zalasr-rvwmo-load-relaxed.c: Accept lh or lhu.
+	* gcc.target/riscv/amo/zalasr-ztso-load-relaxed.c: Accept lh or lhu.
+	* gcc.target/riscv/pr105314.c: Set explicitly branch cost.
+	* gcc.target/riscv/pr105314-rtl.c: Set explicitly branch cost.
+
+2026-05-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/ext-dce-2.c: New test.
+
+2026-05-18  David Malcolm  <dmalcolm@redhat.com>
+
+	* c-c++-common/analyzer/fibonacci.c: Update for change in message
+	wording.
+	* c-c++-common/analyzer/raw-data-cst-pr117262-1.c: Update for
+	change in param name.
+	* gcc.dg/analyzer/explode-2a.c: Likewise.
+	* gcc.dg/analyzer/pr93032-mztools-signed-char.c: Likewise.
+	* gcc.dg/analyzer/pr93032-mztools-unsigned-char.c: Likewise.
+
+2026-05-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* gcc.target/i386/gfni-builtin-bitreverse-1.c: New test.
+
+2026-05-18  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* gcc.target/i386/pr125355.c: New test.
+
 2026-05-16  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/50481
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8d88179ecab8..193418823b53 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,52 @@
+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

From gccadmin@gcc.gnu.org  Tue May 19 00:20:34 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 19 May 2026 00:20:34 +0000 (GMT)
Subject: [gcc r16-8930] Daily bump.
Message-ID: <20260519002034.476D94BA2E21@sourceware.org>

https://gcc.gnu.org/g:9775944bcc1d401aa39848d66d03f0b724a6d2ea

commit r16-8930-g9775944bcc1d401aa39848d66d03f0b724a6d2ea
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue May 19 00:19:59 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          | 2 +-
 gcc/po/ChangeLog       | 4 ++++
 libstdc++-v3/ChangeLog | 8 ++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 7fa0e3eb50bf..2bdf77fcc72f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260518
+20260519
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 939a06afb7ff..4f7b29fd92e0 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-18  Joseph Myers  <josmyers@redhat.com>
+
+	* sv.po: Update.
+
 2026-05-05  Joseph Myers  <josmyers@redhat.com>
 
 	* de.po: Update.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f1752b03cc91..db41fcabdafc 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-16  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From redi@gcc.gnu.org  Tue May 19 08:43:16 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 08:43:16 +0000 (GMT)
Subject: [gcc r17-595] libstdc++: Make chrono::parse fail for bad %z [PR125369]
Message-ID: <20260519084316.A08964B99F61@sourceware.org>

https://gcc.gnu.org/g:11a1cf805aac7b7db21bd2ea6cc22a69f5aa92f9

commit r17-595-g11a1cf805aac7b7db21bd2ea6cc22a69f5aa92f9
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 15:44:21 2026 +0100

    libstdc++: Make chrono::parse fail for bad %z [PR125369]
    
    The chrono parsing code failed to check for errors when parsing input to
    match %z. The expected input is [+-]hh[mm] but if we read less than two
    valid digits for the hh or mm parts we didn't set failbit in the stream,
    and used the -1 error values returned for each bad digit in the offset
    value. This resulted in a "successful" parse that produced a value like
    -11h or -11min for the time zone offset.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h           | 16 ++++--
 libstdc++-v3/testsuite/std/time/parse/125369.cc | 65 +++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 1fe50ad79e05..a8b73f1569e6 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -5234,8 +5234,12 @@ namespace __detail
 		      else
 			{
 			  // Read hh
-			  __hh = 10 * _S_try_read_digit(__is, __err);
-			  __hh += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __hh = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (__is_failed(__err))
@@ -5269,8 +5273,12 @@ namespace __detail
 		      int_least32_t __mm = 0;
 		      if (__read_mm)
 			{
-			  __mm = 10 * _S_try_read_digit(__is, __err);
-			  __mm += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __mm = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (!__is_failed(__err))
diff --git a/libstdc++-v3/testsuite/std/time/parse/125369.cc b/libstdc++-v3/testsuite/std/time/parse/125369.cc
new file mode 100644
index 000000000000..719c56dc9282
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/parse/125369.cc
@@ -0,0 +1,65 @@
+// { dg-do run { target c++20 } }
+
+#include <chrono>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono;
+
+const std::string input = "2026-05-18 15:26:48 ";
+const std::string fmt = "%F %T %";
+sys_seconds ss;
+minutes offset{};
+std::string abbrev;
+
+void
+test_parse_z()
+{
+  for (auto suffix : {"Z", "+", "+Z", "-A", "+1Z", "+010", "+010Z"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "z").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Ez()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Ez").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Oz()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Oz").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+int main()
+{
+  test_parse_z();
+  test_parse_Ez();
+  test_parse_Oz();
+}

From ncm@gcc.gnu.org  Tue May 19 13:36:35 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Tue, 19 May 2026 13:36:35 +0000 (GMT)
Subject: [gcc r17-603] libstdc++: Use allocate_at_least in vector,
 string (P0401) [PR118030]
Message-ID: <20260519133635.09E034BA2E05@sourceware.org>

https://gcc.gnu.org/g:acfdad706d8acca6c4ed6ef3b63c2e02f1c47881

commit r17-603-gacfdad706d8acca6c4ed6ef3b63c2e02f1c47881
Author: Nathan Myers <ncm@cantrip.org>
Date:   Fri Apr 3 23:55:39 2026 -0400

    libstdc++: Use allocate_at_least in vector, string (P0401) [PR118030]
    
    Implement as much of allocator<>::allocate_at_least as possible
    relying solely on known alignment behavior of standard operator
    new.
    
    Use allocator_at_least in string and vector to maximize usage of
    actually allocated storage, as revealed by the allocator in use.
    For user-supplied allocators this may make a big difference.
    
    Nothing is changed in include/ext/malloc_allocator or others.
    They can be updated at leisure, piecemeal.
    
    libstdc++-v3/ChangeLog:
            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.

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver                |   4 +
 libstdc++-v3/include/bits/alloc_traits.h           |  18 ++-
 libstdc++-v3/include/bits/allocator.h              |  30 ++--
 libstdc++-v3/include/bits/basic_string.h           |  44 +++++-
 libstdc++-v3/include/bits/basic_string.tcc         |  96 +++++++------
 libstdc++-v3/include/bits/memory_resource.h        |  17 +++
 libstdc++-v3/include/bits/new_allocator.h          |  77 +++++++---
 libstdc++-v3/include/bits/stl_vector.h             | 136 +++++++++++++-----
 libstdc++-v3/include/bits/vector.tcc               | 155 ++++++++-------------
 .../20_util/allocator/allocate_at_least.cc         | 108 +++++++++++++-
 .../21_strings/basic_string/capacity/char/18654.cc |   7 +-
 .../basic_string/capacity/char/shrink_to_fit.cc    |   7 +-
 .../basic_string/capacity/wchar_t/18654.cc         |   8 +-
 .../21_strings/basic_string/capacity/wchar_t/2.cc  |  13 +-
 .../basic_string/capacity/wchar_t/shrink_to_fit.cc |   7 +-
 .../23_containers/vector/capacity/shrink_to_fit.cc |   7 +-
 .../vector/capacity/shrink_to_fit2.cc              |  14 +-
 .../vector/modifiers/emplace/self_emplace.cc       |  36 ++---
 libstdc++-v3/testsuite/util/testsuite_allocator.h  |  43 ++++++
 19 files changed, 586 insertions(+), 241 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 06892cd2d18b..bf4d7338cb6c 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2628,6 +2628,10 @@ GLIBCXX_3.4.36 {
 
     _ZNSt6chrono8__detail25__recent_leap_second_infoERNS_16leap_second_infoEj;
 
+    # basic_string::allocate_at_least
+    _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE*_S_allocate_*;
+    _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE*_M_create_*;
+
 } GLIBCXX_3.4.35;
 
 # Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h
index e4e0f1608dec..101badff4549 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -417,9 +417,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  is obliged to reserve more space than required for the cited
        *  `n` objects, it may deliver the extra space to the caller.
       */
-      [[nodiscard]] static constexpr auto
+      [[nodiscard]] static constexpr allocation_result<pointer, size_type>
       allocate_at_least(_Alloc& __a, size_type __n)
-	-> allocation_result<pointer, size_type>
       {
 	if constexpr (requires { __a.allocate_at_least(__n); })
 	  return __a.allocate_at_least(__n);
@@ -664,14 +663,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  @brief  Allocate memory, generously.
        *  @param  __a  An allocator.
        *  @param  __n  The minimum number of objects to allocate space for.
-       *  @return Memory of suitable size and alignment for `n` or more
-       *  contiguous objects of type `value_type`.
+       *  @return Memory of suitable size and alignment for `m >= n`
+       *  contiguous objects of type `value_type`, and `m`.
        *
        *  Returns `a.allocate_at_least(n)`.
       */
-      [[nodiscard]] static constexpr auto
+      [[nodiscard,__gnu__::__always_inline__]]
+      static constexpr allocation_result<pointer, size_type>
       allocate_at_least(allocator_type& __a, size_type __n)
-	-> allocation_result<pointer, size_type>
       { return __a.allocate_at_least(__n); }
 #endif
 
@@ -822,6 +821,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static void*
       allocate(allocator_type&, size_type, const void* = nullptr) = delete;
 
+#ifdef __glibcxx_allocate_at_least
+      static allocation_result<void*, size_type>
+      allocate_at_least(allocator_type&, size_type) = delete;
+#endif
+
       /// deallocate is ill-formed for allocator<void>
       static void
       deallocate(allocator_type&, void*, size_type) = delete;
@@ -872,7 +876,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       select_on_container_copy_construction(const allocator_type& __rhs)
       { return __rhs; }
     };
-#endif
+#endif // _GLIBCXX_HOSTED
 
   /// @cond undocumented
 #pragma GCC diagnostic push
diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h
index 9c22c805ebe7..9c9ebdeb7961 100644
--- a/libstdc++-v3/include/bits/allocator.h
+++ b/libstdc++-v3/include/bits/allocator.h
@@ -193,9 +193,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       constexpr _Tp*
       allocate(size_t __n)
       {
-#if __cpp_concepts
+# if __cpp_concepts
 	if constexpr (requires { sizeof(_Tp); })
-#endif
+# endif
 	if (std::__is_constant_evaluated())
 	  {
 	    if (__builtin_mul_overflow(__n, sizeof(_Tp), &__n))
@@ -205,7 +205,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 	return __allocator_base<_Tp>::allocate(__n, 0);
       }
+#endif
+
+#ifdef __glibcxx_allocate_at_least  // C++23
+      [[nodiscard,__gnu__::__always_inline__]]
+      constexpr allocation_result<_Tp*, size_t>
+      allocate_at_least(size_t __n)
+      {
+	if consteval
+	  { return { allocate(__n), __n }; }
+	else
+	  {
+	    if constexpr (requires
+		   { __allocator_base<_Tp>::allocate_at_least(__n); })
+	      return __allocator_base<_Tp>::allocate_at_least(__n);
+	    else
+	      return { __allocator_base<_Tp>::allocate(__n), __n };
+	  }
+      }
+#endif
 
+#if __cpp_constexpr_dynamic_alloc // >= C++20
       [[__gnu__::__always_inline__]]
       constexpr void
       deallocate(_Tp* __p, size_t __n)
@@ -219,12 +239,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 #endif // C++20
 
-#ifdef __glibcxx_allocate_at_least  // C++23
-      [[nodiscard]] constexpr allocation_result<_Tp*, size_t>
-      allocate_at_least(size_t __n)
-      { return { this->allocate(__n), __n }; }
-#endif
-
       friend __attribute__((__always_inline__)) _GLIBCXX20_CONSTEXPR
       bool
       operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index af4e5d9486fb..c1871633f1b5 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -135,20 +135,35 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #endif
 
     private:
+      // For ABI reasons this must remain, though unused.
       static _GLIBCXX20_CONSTEXPR pointer
       _S_allocate(_Char_alloc_type& __a, size_type __n)
+      { return _Alloc_traits::allocate(__a, __n); }
+
+      struct _Alloc_result { pointer __ptr; size_type __count; };
+
+      static _GLIBCXX20_CONSTEXPR _Alloc_result
+      _S_allocate_at_least(_Char_alloc_type& __a, size_type __n)
       {
-	pointer __p = _Alloc_traits::allocate(__a, __n);
+	_Alloc_result __r;
+#ifdef __glibcxx_allocate_at_least  // C++23
+	auto [__ptr, __count] = _Alloc_traits::allocate_at_least(__a, __n);
+	__r.__ptr = __ptr;
+	__r.__count = __count;
+#else
+	__r.__ptr = _Alloc_traits::allocate(__a, __n);
+	__r.__count = __n;
+#endif
 #if __glibcxx_constexpr_string >= 201907L
 	// std::char_traits begins the lifetime of characters,
 	// but custom traits might not, so do it here.
 	if constexpr (!is_same_v<_Traits, char_traits<_CharT>>)
 	  if (std::__is_constant_evaluated())
 	    // Begin the lifetime of characters in allocated storage.
-	    for (size_type __i = 0; __i < __n; ++__i)
-	      std::construct_at(__builtin_addressof(__p[__i]));
+	    for (size_type __i = 0; __i < __r.__count; ++__i)
+	      std::construct_at(__builtin_addressof(__r.__ptr[__i]));
 #endif
-	return __p;
+	return __r;
       }
 
 #ifdef __glibcxx_string_view // >= C++17
@@ -287,6 +302,21 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 
       // Create & Destroy
       _GLIBCXX20_CONSTEXPR
+      _Alloc_result
+      _M_create_plus(size_type __new_capacity, size_type __old_capacity);
+
+      __attribute__((__always_inline__))
+      _GLIBCXX20_CONSTEXPR
+      void
+      _M_create_and_place(size_type __new_capacity, size_type __old_capacity)
+	{
+	  _Alloc_result __r = _M_create_plus(__new_capacity, __old_capacity);
+	  _M_data(__r.__ptr);
+	  _M_capacity(__r.__count - 1);  // Leave room for NUL.
+	}
+
+      // This must remain for ABI stability though unused.
+      _GLIBCXX20_CONSTEXPR
       pointer
       _M_create(size_type&, size_type);
 
@@ -1782,10 +1812,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 		    const auto __len = __str.size();
 		    auto __alloc = __str._M_get_allocator();
 		    // If this allocation throws there are no effects:
-		    auto __ptr = _S_allocate(__alloc, __len + 1);
+		    auto __r = _S_allocate_at_least(__alloc, __len + 1);
 		    _M_destroy(_M_allocated_capacity);
-		    _M_data(__ptr);
-		    _M_capacity(__len);
+		    _M_data(__r.__ptr);
+		    _M_capacity(__r.__count - 1);
 		    _M_set_length(__len);
 		  }
 	      }
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index b00dd550237b..5f83991db83f 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -139,14 +139,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _CharT, typename _Traits, typename _Alloc>
     _GLIBCXX20_CONSTEXPR
-    typename basic_string<_CharT, _Traits, _Alloc>::pointer
+    typename basic_string<_CharT, _Traits, _Alloc>::_Alloc_result
     basic_string<_CharT, _Traits, _Alloc>::
-    _M_create(size_type& __capacity, size_type __old_capacity)
+    _M_create_plus(size_type __capacity, size_type __old_capacity)
     {
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 83.  String::npos vs. string::max_size()
       if (__capacity > max_size())
-	std::__throw_length_error(__N("basic_string::_M_create"));
+	std::__throw_length_error(__N("basic_string::_M_create_plus"));
 
       // The below implements an exponential growth policy, necessary to
       // meet amortized linear time requirements of the library: see
@@ -161,7 +161,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       // NB: Need an array of char_type[__capacity], plus a terminating
       // null char_type() element.
-      return _S_allocate(_M_get_allocator(), __capacity + 1);
+      return _S_allocate_at_least(_M_get_allocator(), __capacity + 1);
+    }
+
+  // This must remain for ABI stability, though unused in current code.
+  template<typename _CharT, typename _Traits, typename _Alloc>
+    _GLIBCXX20_CONSTEXPR
+    typename basic_string<_CharT, _Traits, _Alloc>::pointer
+    basic_string<_CharT, _Traits, _Alloc>::
+    _M_create(size_type& __capacity, size_type __old_capacity)
+    {
+      _Alloc_result __r = _M_create_plus(__capacity, __old_capacity);
+      __capacity = __r.__count - 1;  // Leave room for NUL.
+      return __r.__ptr;
     }
 
   // NB: This is the special case for Input Iterators, used in
@@ -203,11 +215,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    if (__len == __capacity)
 	      {
 		// Allocate more space.
-		__capacity = __len + 1;
-		pointer __another = _M_create(__capacity, __len);
-		this->_S_copy(__another, _M_data(), __len);
+		_Alloc_result __another = _M_create_plus(__len + 1, __len);
+		__capacity = __another.__count - 1; // Leave room for NUL.
+		this->_S_copy(__another.__ptr, _M_data(), __len);
 		_M_dispose();
-		_M_data(__another);
+		_M_data(__another.__ptr);
 		_M_capacity(__capacity);
 	      }
 	    traits_type::assign(_M_data()[__len++],
@@ -231,10 +243,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
 
 	if (__dnew > size_type(_S_local_capacity))
-	  {
-	    _M_data(_M_create(__dnew, size_type(0)));
-	    _M_capacity(__dnew);
-	  }
+	  _M_create_and_place(__dnew, size_type(0));
 	else
 	  _M_init_local_buf();
 
@@ -264,10 +273,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _M_construct(size_type __n, _CharT __c)
     {
       if (__n > size_type(_S_local_capacity))
-	{
-	  _M_data(_M_create(__n, size_type(0)));
-	  _M_capacity(__n);
-	}
+	_M_create_and_place(__n, size_type(0));
       else
 	_M_init_local_buf();
 
@@ -281,16 +287,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // than difference between iterators.
   template<typename _CharT, typename _Traits, typename _Alloc>
     template<bool _Terminated>
-    _GLIBCXX20_CONSTEXPR 
+    _GLIBCXX20_CONSTEXPR
     void
     basic_string<_CharT, _Traits, _Alloc>::
     _M_construct(const _CharT* __str, size_type __n)
     {
       if (__n > size_type(_S_local_capacity))
-	{
-	  _M_data(_M_create(__n, size_type(0)));
-	  _M_capacity(__n);
-	}
+	_M_create_and_place(__n, size_type(0));
       else
 	_M_init_local_buf();
 
@@ -347,11 +350,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 	  if (__rsize > __capacity)
 	    {
-	      size_type __new_capacity = __rsize;
-	      pointer __tmp = _M_create(__new_capacity, __capacity);
+	      // if _M_create_plus throws, there is no effect.
+	      _Alloc_result __tmp = _M_create_plus(__rsize, __capacity);
 	      _M_dispose();
-	      _M_data(__tmp);
-	      _M_capacity(__new_capacity);
+	      _M_data(__tmp.__ptr);
+	      _M_capacity(__tmp.__count - 1);
 	    }
 
 	  if (__rsize)
@@ -375,11 +378,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       if (__res <= __capacity)
 	return;
 
-      pointer __tmp = _M_create(__res, __capacity);
-      this->_S_copy(__tmp, _M_data(), length() + 1);
+      _Alloc_result __r = _M_create_plus(__res, __capacity);
+      this->_S_copy(__r.__ptr, _M_data(), length() + 1);
       _M_dispose();
-      _M_data(__tmp);
-      _M_capacity(__res);
+      _M_data(__r.__ptr);
+      _M_capacity(__r.__count - 1);  // Leave room for NUL.
     }
 
   template<typename _CharT, typename _Traits, typename _Alloc>
@@ -392,19 +395,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       const size_type __how_much = length() - __pos - __len1;
 
       size_type __new_capacity = length() + __len2 - __len1;
-      pointer __r = _M_create(__new_capacity, capacity());
+      _Alloc_result __r = _M_create_plus(__new_capacity, capacity());
 
       if (__pos)
-	this->_S_copy(__r, _M_data(), __pos);
+	this->_S_copy(__r.__ptr, _M_data(), __pos);
       if (__s && __len2)
-	this->_S_copy(__r + __pos, __s, __len2);
+	this->_S_copy(__r.__ptr + __pos, __s, __len2);
       if (__how_much)
-	this->_S_copy(__r + __pos + __len2,
+	this->_S_copy(__r.__ptr + __pos + __len2,
 		      _M_data() + __pos + __len1, __how_much);
 
       _M_dispose();
-      _M_data(__r);
-      _M_capacity(__new_capacity);
+      _M_data(__r.__ptr);
+      _M_capacity(__r.__count - 1);  // Leave room for NUL.
     }
 
   template<typename _CharT, typename _Traits, typename _Alloc>
@@ -430,6 +433,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       if (_M_is_local())
 	return;
 
+#ifdef __glibcxx_allocate_at_least  // C++23
+      const size_type __limit = (__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1) / sizeof(_CharT);
+#else
+      const size_type __limit = 0;
+#endif
       const size_type __length = length();
       const size_type __capacity = _M_allocated_capacity;
 
@@ -441,14 +449,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  _M_data(_M_local_data());
 	}
 #if __cpp_exceptions
-      else if (__length < __capacity)
+      else if (__capacity - __length > __limit )
 	try
 	  {
-	    pointer __tmp = _S_allocate(_M_get_allocator(), __length + 1);
-	    this->_S_copy(__tmp, _M_data(), __length + 1);
+	    _Alloc_result __r = _S_allocate_at_least(
+	      _M_get_allocator(), __length + 1);
+	    this->_S_copy(__r.__ptr, _M_data(), __length + 1);
 	    _M_dispose();
-	    _M_data(__tmp);
-	    _M_capacity(__length);
+	    _M_data(__r.__ptr);
+	    _M_capacity(__r.__count - 1);  // reserve room for NUL.
 	  }
 	catch (const __cxxabiv1::__forced_unwind&)
 	  { throw; }
@@ -588,7 +597,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #if __cpp_lib_is_constant_evaluated
 	  if (std::is_constant_evaluated())
 	    {
-	      auto __newp = _S_allocate(_M_get_allocator(), __new_size);
+	      auto __newp =
+		_S_allocate_at_least(_M_get_allocator(), __new_size).__ptr;
 	      _S_copy(__newp, this->_M_data(), __pos);
 	      _S_copy(__newp + __pos, __s, __len2);
 	      _S_copy(__newp + __pos + __len2, __p + __len1, __how_much);
@@ -677,7 +687,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif // C++11
 
 #endif  // _GLIBCXX_USE_CXX11_ABI
-   
+
 #if __glibcxx_constexpr_string >= 201907L
 # define _GLIBCXX_STRING_CONSTEXPR constexpr
 #else
@@ -916,7 +926,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      // Avoid reallocation for common case.
 	      __str.erase();
 	      _CharT __buf[128];
-	      __size_type __len = 0;	      
+	      __size_type __len = 0;
 	      const streamsize __w = __in.width();
 	      const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
 		                              : __str.max_size();
diff --git a/libstdc++-v3/include/bits/memory_resource.h b/libstdc++-v3/include/bits/memory_resource.h
index e5c6697b07e3..a9db58b76a34 100644
--- a/libstdc++-v3/include/bits/memory_resource.h
+++ b/libstdc++-v3/include/bits/memory_resource.h
@@ -48,6 +48,7 @@
 # include <bits/utility.h>		// index_sequence
 # include <tuple>			// tuple, forward_as_tuple
 #endif
+#include <bits/memoryfwd.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -468,6 +469,22 @@ namespace pmr
       allocate(allocator_type& __a, size_type __n, const_void_pointer)
       { return __a.allocate(__n); }
 
+#ifdef __glibcxx_allocate_at_least
+      /**
+       *  @brief  Allocate memory.
+       *  @param  __a  An allocator.
+       *  @param  __n  The number of objects to allocate space for.
+       *  @return Memory of suitable size and alignment for `n` objects
+       *          of type `value_type`.
+       *
+       *  Just returns `{ a.allocate(n), n }`: `polymorphic_allocator`
+       *  cannot be extended without breaking ABI.
+      */
+      [[nodiscard]] static std::allocation_result<pointer, size_type>
+      allocate_at_least(allocator_type& __a, size_type __n)
+      { return { __a.allocate(__n), __n }; }
+#endif
+
       /**
        *  @brief  Deallocate memory.
        *  @param  __a  An allocator.
diff --git a/libstdc++-v3/include/bits/new_allocator.h b/libstdc++-v3/include/bits/new_allocator.h
index fbe03e392aae..4524355a4a0f 100644
--- a/libstdc++-v3/include/bits/new_allocator.h
+++ b/libstdc++-v3/include/bits/new_allocator.h
@@ -37,6 +37,7 @@
 #if __cplusplus >= 201103L
 #include <type_traits>
 #endif
+#include <bits/memoryfwd.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -123,6 +124,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
 
+      __attribute__((__always_inline__))
+      _GLIBCXX20_CONSTEXPR static void
+      _S_check_allocation_limit(size_t __n)
+      {
+	if (__builtin_expect(__n > _S_max_size(), false))
+	  {
+	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	    // 3190. allocator::allocate sometimes returns too little storage
+	    if (__n > (std::size_t(-1) / sizeof(_Tp)))
+	      std::__throw_bad_array_new_length();
+	    std::__throw_bad_alloc();
+	  }
+      }
+
       // NB: __n is permitted to be 0.  The C++ standard says nothing
       // about what the return value is when __n == 0.
       _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR _Tp*
@@ -142,25 +157,49 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	else
 #endif
 #endif
-	if (__builtin_expect(__n > this->_M_max_size(), false))
 	  {
-	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
-	    // 3190. allocator::allocate sometimes returns too little storage
-	    if (__n > (std::size_t(-1) / sizeof(_Tp)))
-	      std::__throw_bad_array_new_length();
-	    std::__throw_bad_alloc();
-	  }
+	    _S_check_allocation_limit(__n);
 #if __cpp_aligned_new && __cplusplus >= 201103L
-	else if constexpr (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__)
+	    if constexpr (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__)
+	      {
+		std::align_val_t __al = std::align_val_t(alignof(_Tp));
+		return static_cast<_Tp*>(
+		  _GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp), __al));
+	      }
+	    else
+#endif
+	      return static_cast<_Tp*>(
+		_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
+	  }
+      }
+
+#ifdef __glibcxx_allocate_at_least  // C++23
+      [[nodiscard]] constexpr std::allocation_result<_Tp*, size_t>
+      allocate_at_least(size_t __n)
+      {
+	if ! consteval
 	  {
-	    std::align_val_t __al = std::align_val_t(alignof(_Tp));
-	    return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp),
-							   __al));
+	    if constexpr (requires { sizeof(_Tp); })
+	    if constexpr (alignof(_Tp) <= __STDCPP_DEFAULT_NEW_ALIGNMENT__)
+	    if constexpr ( sizeof(_Tp) <  __STDCPP_DEFAULT_NEW_ALIGNMENT__)
+	      {
+		_S_check_allocation_limit(__n);
+		const size_t __need = __n * sizeof(_Tp);
+		const size_t __mask = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
+		size_t __ask = (__need + __mask) & ~__mask;
+		// Avoid rounding up to and asking for 2^63 bytes (PR108377):
+		__ask -= __ask >> (__SIZE_WIDTH__ - 1);
+		auto* __p = static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__ask));
+		using _U8 = const unsigned char;
+		static_assert(sizeof(_Tp) <= ~_U8());
+		// Use 8-bit division for minimal latency:
+		_U8 __spare = __ask - __need, __size = sizeof(_Tp);
+		return { __p , __n + __spare / __size };
+	      }
 	  }
-#endif
-	else
-	  return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
+	return { allocate(__n), __n };
       }
+#endif
 
       // __p is not permitted to be a null pointer.
       _GLIBCXX20_CONSTEXPR void
@@ -177,10 +216,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  {
 	    _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n),
 				     std::align_val_t(alignof(_Tp)));
-	    return;
 	  }
+	else
 #endif
-	_GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n));
+	  _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n));
       }
 
 #pragma GCC diagnostic pop
@@ -192,7 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __attribute__((__always_inline__))
       size_type
       max_size() const _GLIBCXX_USE_NOEXCEPT
-      { return _M_max_size(); }
+      { return _S_max_size(); }
 
 #if __cplusplus >= 201103L
       template<typename _Up, typename... _Args>
@@ -238,8 +277,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     private:
       __attribute__((__always_inline__))
-      _GLIBCXX_CONSTEXPR size_type
-      _M_max_size() const _GLIBCXX_USE_NOEXCEPT
+      _GLIBCXX_CONSTEXPR static size_type
+      _S_max_size() _GLIBCXX_USE_NOEXCEPT
       {
 #if __PTRDIFF_MAX__ < __SIZE_MAX__
 	return std::size_t(__PTRDIFF_MAX__) / sizeof(_Tp);
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index c4ca214752a0..0c9b74fdbb24 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -317,6 +317,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       get_allocator() const _GLIBCXX_NOEXCEPT
       { return allocator_type(_M_get_Tp_allocator()); }
 
+      static _GLIBCXX20_CONSTEXPR size_t
+      _S_max_size(const _Tp_alloc_type& __a) _GLIBCXX_NOEXCEPT
+      {
+	// std::distance(begin(), end()) cannot be greater than PTRDIFF_MAX,
+	// and realistically we can't store more than PTRDIFF_MAX/sizeof(T)
+	// (even if std::allocator_traits::max_size says we can).
+	const size_t __diffmax =
+	  __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
+	const size_t __allocmax =
+	  __gnu_cxx::__alloc_traits<_Alloc>::max_size(__a);
+	return (std::min)(__diffmax, __allocmax);
+      }
+
 #if __cplusplus >= 201103L
       _Vector_base() = default;
 #else
@@ -389,6 +402,43 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer();
       }
 
+      struct _Alloc_result { pointer __ptr; size_t __count; };
+
+      _GLIBCXX20_CONSTEXPR
+      _Alloc_result
+      _M_allocate_at_least(size_t __n)
+      {
+	typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr;
+	_Alloc_result __r;
+	if (__builtin_expect(__n != 0, true))
+	  {
+#ifdef __glibcxx_allocate_at_least  // C++23
+	    if constexpr (requires    { _Tr::allocate_at_least(_M_impl, __n); })
+	      {
+		auto [__ptr, __count] = _Tr::allocate_at_least(_M_impl, __n);
+		if (__count > __n)
+		  {
+		    size_t __max = _S_max_size(_M_get_Tp_allocator());
+		    if (__builtin_expect(__count > __max, false))
+		      __count = __max;
+		  }
+		__r = { __ptr, __count };
+	      }
+	    else
+#endif
+	      {
+		__r.__ptr = _Tr::allocate(_M_impl, __n);
+		__r.__count = __n;
+	      }
+	  }
+	else
+	  {
+	    __r.__ptr = pointer();
+	    __r.__count = 0;
+	  }
+	return __r;
+      }
+
       _GLIBCXX20_CONSTEXPR
       void
       _M_deallocate(pointer __p, size_t __n)
@@ -404,9 +454,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       void
       _M_create_storage(size_t __n)
       {
-	this->_M_impl._M_start = this->_M_allocate(__n);
-	this->_M_impl._M_finish = this->_M_impl._M_start;
-	this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+	_Alloc_result __r = this->_M_allocate_at_least(__n);
+	this->_M_impl._M_finish = this->_M_impl._M_start = __r.__ptr;
+	this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __r.__count;
       }
 
 #if __glibcxx_containers_ranges // C++ >= 23
@@ -480,6 +530,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       typedef _Vector_base<_Tp, _Alloc>			_Base;
       typedef typename _Base::_Tp_alloc_type		_Tp_alloc_type;
       typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type>	_Alloc_traits;
+      typedef typename _Base::_Alloc_result             _Alloc_result;
 
     public:
       typedef _Tp					value_type;
@@ -536,6 +587,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
     protected:
       using _Base::_M_allocate;
+      using _Base::_M_allocate_at_least;
       using _Base::_M_deallocate;
       using _Base::_M_impl;
       using _Base::_M_get_Tp_allocator;
@@ -1116,7 +1168,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
       size_type
       max_size() const _GLIBCXX_NOEXCEPT
-      { return _S_max_size(_M_get_Tp_allocator()); }
+      { return _Base::_S_max_size(_M_get_Tp_allocator()); }
 
 #if __cplusplus >= 201103L
       /**
@@ -1682,16 +1734,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		  return;
 		}
 
-	      const size_type __len = _M_check_len(__n, "vector::append_range");
+	      const size_type __ask = _M_check_len(__n, "vector::append_range");
 
 	      pointer __old_start = this->_M_impl._M_start;
 	      pointer __old_finish = this->_M_impl._M_finish;
 
-	      allocator_type& __a = _M_get_Tp_allocator();
-	      const pointer __start = this->_M_allocate(__len);
+	      auto [__ptr, __got] = this->_M_allocate_at_least(__ask);
+	      const pointer __start = __ptr;
 	      const pointer __mid = __start + __sz;
 	      const pointer __back = __mid + __n;
-	      _Guard_alloc __guard(__start, __len, *this);
+	      _Guard_alloc __guard(__start, __got, *this);
+	      allocator_type& __a = _M_get_Tp_allocator();
 	      std::__uninitialized_copy_a(ranges::begin(__rg),
 					  ranges::end(__rg),
 					  __mid, __a);
@@ -1733,7 +1786,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      // Finally, take ownership of new storage:
 	      this->_M_impl._M_start = __start;
 	      this->_M_impl._M_finish = __back;
-	      this->_M_impl._M_end_of_storage = __start + __len;
+	      this->_M_impl._M_end_of_storage = __start + __got;
 	    }
 	  else
 	    {
@@ -1889,20 +1942,45 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
     protected:
       /**
        *  Memory expansion handler.  Uses the member allocation function to
-       *  obtain @a n bytes of memory, and then copies [first,last) into it.
+       *  obtain at least `n` objects worth of memory, copies `[first,last)`
+       *  into it, reports what was actually allocated.
        */
       template<typename _ForwardIterator>
 	_GLIBCXX20_CONSTEXPR
-	pointer
+	_Alloc_result
 	_M_allocate_and_copy(size_type __n,
 			     _ForwardIterator __first, _ForwardIterator __last)
 	{
-	  _Guard_alloc __guard(this->_M_allocate(__n), __n, *this);
+	  _Alloc_result __r = this->_M_allocate_at_least(__n);
+	  _Guard_alloc __guard(__r.__ptr, __r.__count, *this);
 	  std::__uninitialized_copy_a
 	    (__first, __last, __guard._M_storage, _M_get_Tp_allocator());
-	  return __guard._M_release();
+	  (void) __guard._M_release();
+	  return __r;
 	}
 
+      _GLIBCXX20_CONSTEXPR void
+      _M_replace_storage(pointer __start, pointer __end, size_type __cap)
+      {
+	  _GLIBCXX_ASAN_ANNOTATE_REINIT;
+	  _M_deallocate(this->_M_impl._M_start,
+	    this->_M_impl._M_end_of_storage - this->_M_impl._M_start);
+	  this->_M_impl._M_start = __start;
+	  this->_M_impl._M_finish = __end;
+	  this->_M_impl._M_end_of_storage = __start + __cap;
+      }
+
+      template<typename _ForwardIterator>
+	_GLIBCXX20_CONSTEXPR
+	void
+	_M_replace_with(size_type __n,
+		_ForwardIterator __first, _ForwardIterator __last)
+	{
+	  _Alloc_result __r = _M_allocate_and_copy(__n, __first, __last);
+	  std::_Destroy(this->_M_impl._M_start,
+	    this->_M_impl._M_finish, _M_get_Tp_allocator());
+	  _M_replace_storage(__r.__ptr, __r.__ptr + __n, __r.__count);
+	}
 
       // Internal constructor functions follow.
 
@@ -1916,6 +1994,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	_M_initialize_dispatch(_Integer __int_n, _Integer __value, __true_type)
 	{
 	  const size_type __n = static_cast<size_type>(__int_n);
+	  // NB this is c++98 code, so has no allocate_at_least.
 	  pointer __start =
 	    _M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator()));
 	  this->_M_impl._M_start = __start;
@@ -1971,10 +2050,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	_M_range_initialize_n(_Iterator __first, _Sentinel __last,
 			      size_type __n)
 	{
-	  pointer __start =
-	    this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator()));
+	  _Alloc_result __r = this->_M_allocate_at_least(
+	    _S_check_init_len(__n, _M_get_Tp_allocator()));
+	  pointer __start = __r.__ptr;
 	  this->_M_impl._M_start = this->_M_impl._M_finish = __start;
-	  this->_M_impl._M_end_of_storage = __start + __n;
+	  this->_M_impl._M_end_of_storage = __start + __r.__count;
 	  this->_M_impl._M_finish
 	      = std::__uninitialized_copy_a(_GLIBCXX_MOVE(__first), __last,
 					    __start, _M_get_Tp_allocator());
@@ -2191,35 +2271,27 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       size_type
       _M_check_len(size_type __n, const char* __s) const
       {
-	if (max_size() - size() < __n)
+	const size_type __room = max_size() - size();
+	if (__room < __n)
 	  __throw_length_error(__N(__s));
 
-	const size_type __len = size() + (std::max)(size(), __n);
-	return (__len < size() || __len > max_size()) ? max_size() : __len;
+	if (__n < size())
+	  __n = size();  // Grow by (at least) doubling ...
+	if (__n > __room)
+	  __n = __room;  //  ... but only as much as will fit.
+	return size() + __n;
       }
 
       // Called by constructors to check initial size.
       static _GLIBCXX20_CONSTEXPR size_type
       _S_check_init_len(size_type __n, const allocator_type& __a)
       {
-	if (__n > _S_max_size(_Tp_alloc_type(__a)))
+	if (__n > _Base::_S_max_size(_Tp_alloc_type(__a)))
 	  __throw_length_error(
 	      __N("cannot create std::vector larger than max_size()"));
 	return __n;
       }
 
-      static _GLIBCXX20_CONSTEXPR size_type
-      _S_max_size(const _Tp_alloc_type& __a) _GLIBCXX_NOEXCEPT
-      {
-	// std::distance(begin(), end()) cannot be greater than PTRDIFF_MAX,
-	// and realistically we can't store more than PTRDIFF_MAX/sizeof(T)
-	// (even if std::allocator_traits::max_size says we can).
-	const size_t __diffmax
-	  = __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
-	const size_t __allocmax = _Alloc_traits::max_size(__a);
-	return (std::min)(__diffmax, __allocmax);
-      }
-
       // Internal erase functions follow.
 
       // Called by erase(q1,q2), clear(), resize(), _M_fill_assign,
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index b790fca2964e..86c41d74ff44 100644
--- a/libstdc++-v3/include/bits/vector.tcc
+++ b/libstdc++-v3/include/bits/vector.tcc
@@ -75,13 +75,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       if (this->capacity() < __n)
 	{
 	  const size_type __old_size = size();
-	  pointer __tmp;
+	  _Alloc_result __tmp;
 #if __cplusplus >= 201103L
 	  if constexpr (_S_use_relocate())
 	    {
-	      __tmp = this->_M_allocate(__n);
+	      __tmp = this->_M_allocate_at_least(__n);
 	      std::__relocate_a(this->_M_impl._M_start, this->_M_impl._M_finish,
-				__tmp, _M_get_Tp_allocator());
+				__tmp.__ptr, _M_get_Tp_allocator());
 	    }
 	  else
 #endif
@@ -92,13 +92,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
 			    _M_get_Tp_allocator());
 	    }
-	  _GLIBCXX_ASAN_ANNOTATE_REINIT;
-	  _M_deallocate(this->_M_impl._M_start,
-			this->_M_impl._M_end_of_storage
-			- this->_M_impl._M_start);
-	  this->_M_impl._M_start = __tmp;
-	  this->_M_impl._M_finish = __tmp + __old_size;
-	  this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+	  _M_replace_storage(
+	    __tmp.__ptr, __tmp.__ptr + __old_size, __tmp.__count);
 	}
     }
 #pragma GCC diagnostic pop
@@ -106,12 +101,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 #if __cplusplus >= 201103L
   template<typename _Tp, typename _Alloc>
     template<typename... _Args>
-#if __cplusplus > 201402L
+# if __cplusplus > 201402L
       _GLIBCXX20_CONSTEXPR
       typename vector<_Tp, _Alloc>::reference
-#else
+# else
       void
-#endif
+# endif
       vector<_Tp, _Alloc>::
       emplace_back(_Args&&... __args)
       {
@@ -125,11 +120,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  }
 	else
 	  _M_realloc_append(std::forward<_Args>(__args)...);
-#if __cplusplus > 201402L
+# if __cplusplus > 201402L
 	return back();
-#endif
+# endif
       }
-#endif
+#endif  // __cplusplus >= 201103L
 
   template<typename _Tp, typename _Alloc>
     _GLIBCXX20_CONSTEXPR
@@ -238,22 +233,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 #endif
 	  const size_type __xlen = __x.size();
 	  if (__xlen > capacity())
-	    {
-	      pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
-						   __x.end());
-	      std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
-			    _M_get_Tp_allocator());
-	      _M_deallocate(this->_M_impl._M_start,
-			    this->_M_impl._M_end_of_storage
-			    - this->_M_impl._M_start);
-	      this->_M_impl._M_start = __tmp;
-	      this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
-	    }
+	    _M_replace_with(__xlen, __x.begin(), __x.end());
 	  else if (size() >= __xlen)
-	    {
-	      std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
-			    end(), _M_get_Tp_allocator());
-	    }
+	    std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
+	      end(), _M_get_Tp_allocator());
 	  else
 	    {
 	      std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
@@ -332,16 +315,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      __builtin_unreachable();
 
 	    _S_check_init_len(__len, _M_get_Tp_allocator());
-	    pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
-	    std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
-			  _M_get_Tp_allocator());
-	    _GLIBCXX_ASAN_ANNOTATE_REINIT;
-	    _M_deallocate(this->_M_impl._M_start,
-			  this->_M_impl._M_end_of_storage
-			  - this->_M_impl._M_start);
-	    this->_M_impl._M_start = __tmp;
-	    this->_M_impl._M_finish = this->_M_impl._M_start + __len;
-	    this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
+	    _M_replace_with(__len, __first, __last);
 	  }
 	else if (__sz >= __len)
 	  _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
@@ -464,13 +438,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
     _M_realloc_insert(iterator __position, const _Tp& __x)
 #endif
     {
-      const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert");
-      if (__len <= 0)
+      const size_type __len1 = _M_check_len(1u, "vector::_M_realloc_insert");
+      if (__len1 <= 0)
 	__builtin_unreachable();
       pointer __old_start = this->_M_impl._M_start;
       pointer __old_finish = this->_M_impl._M_finish;
       const size_type __elems_before = __position - begin();
-      pointer __new_start(this->_M_allocate(__len));
+      _Alloc_result __r = this->_M_allocate_at_least(__len1);
+      const size_type __len = __r.__count;
+      pointer __new_start(__r.__ptr);
       pointer __new_finish(__new_start);
 
       {
@@ -574,14 +550,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       const size_type __len = _M_check_len(1u, "vector::_M_realloc_append");
       if (__len <= 0)
 	__builtin_unreachable();
-      pointer __old_start = this->_M_impl._M_start;
-      pointer __old_finish = this->_M_impl._M_finish;
+      const pointer __old_start = this->_M_impl._M_start;
+      const pointer __old_finish = this->_M_impl._M_finish;
       const size_type __elems = size();
-      pointer __new_start(this->_M_allocate(__len));
+      const _Alloc_result __r = this->_M_allocate_at_least(__len);
+      const size_type __rlen = __r.__count;
+      const pointer __new_start(__r.__ptr);
       pointer __new_finish(__new_start);
 
       {
-	_Guard_alloc __guard(__new_start, __len, *this);
+	_Guard_alloc __guard(__new_start, __rlen, *this);
 
 	// The order of the three operations is dictated by the C++11
 	// case, where the moves could alter a new element belonging
@@ -652,7 +630,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
       this->_M_impl._M_start = __new_start;
       this->_M_impl._M_finish = __new_finish;
-      this->_M_impl._M_end_of_storage = __new_start + __len;
+      this->_M_impl._M_end_of_storage = __new_start + __rlen;
     }
 #pragma GCC diagnostic pop
 
@@ -716,10 +694,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      pointer __old_finish = this->_M_impl._M_finish;
 	      const pointer __pos = __position.base();
 
-	      const size_type __len =
+	      const size_type __len1 =
 		_M_check_len(__n, "vector::_M_fill_insert");
 	      const size_type __elems_before = __pos - __old_start;
-	      pointer __new_start(this->_M_allocate(__len));
+	      _Alloc_result __r = this->_M_allocate_at_least(__len1);
+	      const size_type __len = __r.__count;
+	      pointer __new_start(__r.__ptr);
 	      pointer __new_finish(__new_start);
 	      __try
 		{
@@ -727,21 +707,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		  std::__uninitialized_fill_n_a(__new_start + __elems_before,
 						__n, __x,
 						_M_get_Tp_allocator());
-		  __new_finish = pointer();
-
-		  __new_finish
-		    = std::__uninitialized_move_if_noexcept_a
-		    (__old_start, __pos, __new_start, _M_get_Tp_allocator());
-
+		  __new_finish = pointer();  // ... in case of a throw.
+		  __new_finish = std::__uninitialized_move_if_noexcept_a(
+		      __old_start, __pos, __new_start, _M_get_Tp_allocator());
 		  __new_finish += __n;
-
-		  __new_finish
-		    = std::__uninitialized_move_if_noexcept_a
-		    (__pos, __old_finish, __new_finish, _M_get_Tp_allocator());
+		  __new_finish = std::__uninitialized_move_if_noexcept_a(
+		      __pos, __old_finish, __new_finish, _M_get_Tp_allocator());
 		}
 	      __catch(...)
 		{
-		  if (!__new_finish)
+		  if (__new_finish == pointer())
 		    std::_Destroy(__new_start + __elems_before,
 				  __new_start + __elems_before + __n,
 				  _M_get_Tp_allocator());
@@ -752,12 +727,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		  __throw_exception_again;
 		}
 	      std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
-	      _GLIBCXX_ASAN_ANNOTATE_REINIT;
-	      _M_deallocate(__old_start,
-			    this->_M_impl._M_end_of_storage - __old_start);
-	      this->_M_impl._M_start = __new_start;
-	      this->_M_impl._M_finish = __new_finish;
-	      this->_M_impl._M_end_of_storage = __new_start + __len;
+	      _M_replace_storage(__new_start, __new_finish, __len);
 	    }
 	}
     }
@@ -785,9 +755,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	   pointer __old_finish = this->_M_impl._M_finish;
 	   const size_type __old_size = __old_finish - __old_start;
 
-	   const size_type __len =
-	     _M_check_len(__n, "vector::_M_fill_append");
-	   pointer __new_start(this->_M_allocate(__len));
+	   size_type __len = _M_check_len(__n, "vector::_M_fill_append");
+	   _Alloc_result __r = this->_M_allocate_at_least(__len);
+	   __len = __r.__count;
+	   pointer __new_start(__r.__ptr);
 	   pointer __new_finish(__new_start + __old_size);
 	   __try
 	     {
@@ -807,12 +778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		__throw_exception_again;
 	      }
 	   std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
-	   _GLIBCXX_ASAN_ANNOTATE_REINIT;
-	   _M_deallocate(__old_start,
-			 this->_M_impl._M_end_of_storage - __old_start);
-	   this->_M_impl._M_start = __new_start;
-	   this->_M_impl._M_finish = __new_finish;
-	   this->_M_impl._M_end_of_storage = __new_start + __len;
+	   _M_replace_storage(__new_start, __new_finish, __len);
 	 }
     }
 
@@ -852,9 +818,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      pointer __old_start = this->_M_impl._M_start;
 	      pointer __old_finish = this->_M_impl._M_finish;
 
-	      const size_type __len =
+	      const size_type __len1 =
 		_M_check_len(__n, "vector::_M_default_append");
-	      pointer __new_start(this->_M_allocate(__len));
+	      _Alloc_result __r = this->_M_allocate_at_least(__len1);
+	      const size_type __len = __r.__count;
+	      pointer __new_start(__r.__ptr);
 
 	      {
 		_Guard_alloc __guard(__new_start, __len, *this);
@@ -1003,14 +971,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		pointer __old_start = this->_M_impl._M_start;
 		pointer __old_finish = this->_M_impl._M_finish;
 
-		const size_type __len =
+		const size_type __ask =
 		  _M_check_len(__n, "vector::_M_range_insert");
 #if __cplusplus < 201103L
-		if (__len < (__n + (__old_finish - __old_start)))
+		if (__ask < (__n + (__old_finish - __old_start)))
 		  __builtin_unreachable();
 #endif
 
-		pointer __new_start(this->_M_allocate(__len));
+		_Alloc_result __r = this->_M_allocate_at_least(__ask);
+		const size_type __got = __r.__count;
+		pointer __new_start(__r.__ptr);
 		pointer __new_finish(__new_start);
 		__try
 		  {
@@ -1031,17 +1001,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		  {
 		    std::_Destroy(__new_start, __new_finish,
 				  _M_get_Tp_allocator());
-		    _M_deallocate(__new_start, __len);
+		    _M_deallocate(__new_start, __got);
 		    __throw_exception_again;
 		  }
 		std::_Destroy(__old_start, __old_finish,
 			      _M_get_Tp_allocator());
-		_GLIBCXX_ASAN_ANNOTATE_REINIT;
-		_M_deallocate(__old_start,
-			      this->_M_impl._M_end_of_storage - __old_start);
-		this->_M_impl._M_start = __new_start;
-		this->_M_impl._M_finish = __new_finish;
-		this->_M_impl._M_end_of_storage = __new_start + __len;
+		_M_replace_storage(__new_start, __new_finish, __got);
 	      }
 	  }
       }
@@ -1111,7 +1076,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	      }
 	    else // Reallocate
 	      {
-		const size_type __len
+		const size_type __ask
 		  = _M_check_len(__n, "vector::insert_range");
 
 		struct _Guard : _Guard_alloc
@@ -1130,8 +1095,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		};
 
 		// Allocate new storage:
-		pointer __new_start(this->_M_allocate(__len));
-		_Guard __guard(__new_start, __len, *this);
+		_Alloc_result __r = this->_M_allocate_at_least(__ask);
+		const size_type __got = __r.__count;
+		pointer __new_start(__r.__ptr);
+		_Guard __guard(__new_start, __got, *this);
 
 		auto& __alloc = _M_get_Tp_allocator();
 
@@ -1158,13 +1125,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 		// with __guard so that it cleans up the old storage:
 		this->_M_impl._M_start = __guard._M_storage;
 		this->_M_impl._M_finish = __guard._M_finish;
-		this->_M_impl._M_end_of_storage = __new_start + __len;
+		this->_M_impl._M_end_of_storage = __new_start + __got;
 		__guard._M_storage = __old_start;
 		__guard._M_finish = __old_finish;
 		__guard._M_len = (__old_finish - __old_start) + __cap;
 		// _Asan::_Reinit destructor marks unused capacity.
 		// _Guard destructor destroys [old_start,old_finish).
-		// _Guard_alloc destructor frees [old_start,old_start+len).
+		// _Guard_alloc destructor frees [old_start,old_start+got).
 	      }
 	    return begin() + __ins_idx;
 	  }
diff --git a/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least.cc b/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least.cc
index 5399096d294b..987e2472490a 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least.cc
@@ -29,7 +29,7 @@ template <typename T>
       }
   };
 
-int main()
+void base()
 {
   std::allocator<X> native;
   auto a1 = native.allocate_at_least(100);
@@ -63,3 +63,109 @@ int main()
   VERIFY(a5.ptr == minimal.keep);
   minimal_traits::deallocate(minimal, a5.ptr, a5.count);
 }
+
+void extra()
+{
+  using SatC = std::allocator_traits<std::allocator<char>>;
+  std::allocator<char> satc;
+  {
+    auto [p, n] = SatC::allocate_at_least(satc, 1);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatC::deallocate(satc, p, n);
+  }
+  {
+    auto [p, n] = SatC::allocate_at_least(satc, 2);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatC::deallocate(satc, p, n);
+  }
+  {
+    auto [p, n] =
+      SatC::allocate_at_least(satc, __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatC::deallocate(satc, p, n);
+  }
+  {
+    auto [p, n] = SatC::allocate_at_least(
+	satc, __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatC::deallocate(satc, p, n);
+  }
+
+  using SatS = std::allocator_traits<std::allocator<short>>;
+  std::allocator<short> sats;
+  {
+    auto [p, n] = SatS::allocate_at_least(sats, 1);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(short));
+    SatS::deallocate(sats, p, n);
+  }
+  {
+    auto [p, n] = SatS::allocate_at_least(sats, 2);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(short));
+    SatS::deallocate(sats, p, n);
+  }
+  {
+    auto [p, n] = SatS::allocate_at_least(sats,
+	(__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1) / sizeof(short));
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(short));
+    SatS::deallocate(sats, p, n);
+  }
+  {
+    auto [p, n] = SatS::allocate_at_least(sats,
+	__STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(short));
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(short));
+    SatS::deallocate(sats, p, n);
+  }
+
+  struct A3 { char s[3]; };
+  using SatA3 = std::allocator_traits<std::allocator<A3>>;
+  std::allocator<A3> sata3;
+  {
+    auto [p, n] = SatA3::allocate_at_least(sata3, 1);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A3));
+    SatA3::deallocate(sata3, p, n);
+  }
+  {
+    auto [p, n] = SatA3::allocate_at_least(sata3, 2);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A3));
+    SatA3::deallocate(sata3, p, n);
+  }
+  {
+    auto [p, n] = SatA3::allocate_at_least(sata3,
+	(__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1) / sizeof(A3));
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A3));
+    SatA3::deallocate(sata3, p, n);
+  }
+  {
+    auto [p, n] = SatA3::allocate_at_least(sata3,
+	__STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A3));
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A3));
+    SatA3::deallocate(sata3, p, n);
+  }
+
+  struct Anm1 { char s[__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1]; };
+  using SatAnm1 = std::allocator_traits<std::allocator<Anm1>>;
+  std::allocator<Anm1> satanm1;
+  {
+    auto [p, n] = SatAnm1::allocate_at_least(satanm1, 1);
+    VERIFY(n == 1);
+    SatAnm1::deallocate(satanm1, p, n);
+  }
+  {
+    auto [p, n] = SatAnm1::allocate_at_least(satanm1,
+	__STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatAnm1::deallocate(satanm1, p, n);
+  }
+  {
+    auto [p, n] = SatAnm1::allocate_at_least(satanm1,
+	__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1);
+    VERIFY(n == __STDCPP_DEFAULT_NEW_ALIGNMENT__);
+    SatAnm1::deallocate(satanm1, p, n);
+  }
+}
+
+int main()
+{
+  base();
+  extra();
+}
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
index d542f34d08e6..59012a1c170b 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
@@ -58,7 +58,12 @@ void test01()
 #else
       str.shrink_to_fit(); // reserve is deprecated in C++20
 #endif
-      VERIFY( str.capacity() == i );
+#if __glibcxx_allocate_at_least
+      unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
+#else
+      unsigned limit = 0;
+#endif
+      VERIFY( str.capacity() - i <= limit);
     }
 }
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
index a26d524dddf5..ae5df746f35d 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
@@ -30,7 +30,12 @@ void test01()
   s.push_back('b');
   VERIFY( s.size() < s.capacity() );
   s.shrink_to_fit();
-  VERIFY( s.size() == s.capacity() );
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
+#else
+  unsigned limit = 0;
+#endif
+  VERIFY( s.capacity() - s.size() <= limit );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
index 49e45c764c48..bf3b8dd55814 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
@@ -50,6 +50,7 @@ void test01()
       const size_type cap = str.capacity();
       VERIFY( cap >= 3 * i );
 
+      // no shrink.
       str.reserve(2 * i);
       VERIFY( str.capacity() == cap );
 
@@ -58,7 +59,12 @@ void test01()
 #else
       str.shrink_to_fit(); // reserve is deprecated in C++20
 #endif
-      VERIFY( str.capacity() == i );
+#if __glibcxx_allocate_at_least
+      unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(wchar_t) - 1;
+#else
+      unsigned limit = 0;
+#endif
+      VERIFY( str.capacity() - i <= limit);
     }
 }
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
index bff2bdd18629..04a3763fc778 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
@@ -27,14 +27,21 @@
 void test02()
 {
   std::wstring str01 = L"twelve chars";
-  // str01 becomes shared
-  std::wstring str02 = str01;
+  str01.reserve(100);
 #if __cplusplus <= 201703L
   str01.reserve();
 #else
   str01.shrink_to_fit(); // reserve is deprecated in C++20
 #endif
-  VERIFY( str01.capacity() == 12 );
+  // These are not guaranteed to absolutely minimize storage.
+  // allocator<wchar_t>::allocate_at_least rounds up to what
+  // it knows ::op new delivers.
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(wchar_t) - 1;
+#else
+  unsigned limit = 0;
+#endif
+  VERIFY( str01.capacity() - str01.size() <= limit);
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
index b4d0224a9d8f..fc0f659539f6 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
@@ -30,7 +30,12 @@ void test01()
   s.push_back(L'b');
   VERIFY( s.size() < s.capacity() );
   s.shrink_to_fit();
-  VERIFY( s.size() == s.capacity() );
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(wchar_t) - 1;
+#else
+  unsigned limit = 0;
+#endif
+  VERIFY( s.capacity() - s.size() <= limit );
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc b/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
index 74c68712b475..d4aa4d89b569 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
@@ -30,11 +30,12 @@ void test01()
   v.push_back(1);
   VERIFY( v.size() < v.capacity() );
   v.shrink_to_fit();
-#if __cpp_exceptions
-  VERIFY( v.size() == v.capacity() );
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(int);
 #else
-  VERIFY( v.size() < v.capacity() );
+  unsigned limit = 0;
 #endif
+  VERIFY(v.capacity() - v.size() <= limit);
 }
 
 int main()
diff --git a/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc b/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
index c8faa9ded803..9489e0438456 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
@@ -32,7 +32,12 @@ void test01()
   v.reserve(100);
   VERIFY( v.size() < v.capacity() );
   v.shrink_to_fit();
-  VERIFY( v.size() == v.capacity() );
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(int);
+#else
+  unsigned limit = 0;
+#endif
+  VERIFY( v.capacity() - v.size() <= limit);
   VERIFY( v.get_allocator().get_personality() == alloc.get_personality() );
 }
 
@@ -45,7 +50,12 @@ void test02()
   v.reserve(100);
   VERIFY( v.size() < v.capacity() );
   v.shrink_to_fit();
-  VERIFY( v.size() == v.capacity() );
+#ifdef __glibcxx_allocate_at_least
+  unsigned limit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(int);
+#else
+  unsigned limit = 0;
+#endif
+  VERIFY( v.capacity() - v.size() <= limit);
   VERIFY( v.get_allocator().get_personality() == alloc.get_personality() );
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
index 00a0c7b06ea8..629f35f05bac 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
@@ -99,37 +99,37 @@ struct A
 void
 test03()
 {
-  std::vector<A> va =
-    {
-      { A(1) },
-      { A(2) },
-      { A(3) }
-    };
-
-  // Make sure emplace will imply reallocation.
-  VERIFY( va.capacity() == 3 );
+#ifdef __glibcxx_allocate_at_least
+  unsigned fit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A);
+#else
+  unsigned fit = 4;
+#endif
+  std::vector<A> va; va.reserve(fit);
+  for (int i = 1; va.size() < va.capacity(); ++i)
+      va.push_back(A(i));
 
   va.emplace(va.begin(), va.begin());
 
-  VERIFY( va.size() == 4 );
+  VERIFY( va.size() == fit + 1 );
   VERIFY( va[0]._i == 1 );
 }
 
 void
 test04()
 {
-  std::vector<A> va =
-    {
-      { A(1) },
-      { A(2) },
-      { A(3) }
-    };
+#ifdef __glibcxx_allocate_at_least
+  unsigned fit = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / sizeof(A);
+#else
+  unsigned fit = 4;
+#endif
+  std::vector<A> va; va.reserve(fit);
+  for (int i = 1; va.size() < va.capacity() - 1; ++i)
+      va.push_back(A(i));
 
   // Make sure emplace won't reallocate.
-  va.reserve(4);
   va.emplace(va.begin(), va.begin());
 
-  VERIFY( va.size() == 4 );
+  VERIFY( va.size() == fit );
   VERIFY( va[0]._i == 1 );
 }
 
diff --git a/libstdc++-v3/testsuite/util/testsuite_allocator.h b/libstdc++-v3/testsuite/util/testsuite_allocator.h
index 892a385e307e..27372a97161d 100644
--- a/libstdc++-v3/testsuite/util/testsuite_allocator.h
+++ b/libstdc++-v3/testsuite/util/testsuite_allocator.h
@@ -168,6 +168,16 @@ namespace __gnu_test
 	  : Alloc(alloc)
 	{ }
 
+#ifdef __glibcxx_allocate_at_least // C++23
+      std::allocation_result<pointer, size_type>
+      allocate_at_least(size_type n)
+      {
+	auto [p, c] = AllocTraits::allocate_at_least(*this, n);
+	counter_type::allocate(c * sizeof(T));
+	return { p, c };
+      }
+#endif
+
       pointer
       allocate(size_type n, const void* = 0)
       {
@@ -373,6 +383,32 @@ namespace __gnu_test
 	return p;
       }
 
+#ifdef __glibcxx_allocate_at_least
+      constexpr auto
+      allocate_at_least(size_type n)
+      -> std::allocation_result<Tp*, size_t>
+      {
+	auto r = AllocTraits::allocate_at_least(*this, n);
+
+	if consteval
+	  { return r; }
+	else
+	  {
+	    try
+	      {
+		get_map().insert(map_type::value_type(
+		      reinterpret_cast<void*>(r.ptr), personality));
+	      }
+	    catch(...)
+	      {
+		AllocTraits::deallocate(*this, r.ptr, r.count);
+		__throw_exception_again;
+	      }
+	    return r;
+	  }
+      }
+#endif
+
       _GLIBCXX14_CONSTEXPR
       void
       deallocate(pointer p, size_type n)
@@ -632,6 +668,13 @@ namespace __gnu_test
       pointer allocate(std::size_t n, const_void_pointer = {})
       { return pointer(std::allocator<Tp>::allocate(n)); }
 
+#ifdef __glibcxx_allocate_at_least
+      _GLIBCXX14_CONSTEXPR
+      std::allocation_result<pointer, std::size_t>
+      allocate_at_least(std::size_t n)
+      { return { allocate(n), n }; }
+#endif
+
       _GLIBCXX14_CONSTEXPR
       void deallocate(pointer p, std::size_t n)
       { std::allocator<Tp>::deallocate(std::addressof(*p), n); }

From ppalka@gcc.gnu.org  Tue May 19 17:43:20 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Tue, 19 May 2026 17:43:20 +0000 (GMT)
Subject: [gcc r17-605] libstdc++: Fix incorrect move in
 flat_map::_M_try_emplace [PR125374]
Message-ID: <20260519174320.536924BAD14D@sourceware.org>

https://gcc.gnu.org/g:6d114645fa1c9831a109c8a8934685f49364818a

commit r17-605-g6d114645fa1c9831a109c8a8934685f49364818a
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue May 19 13:43:10 2026 -0400

    libstdc++: Fix incorrect move in flat_map::_M_try_emplace [PR125374]
    
            PR libstdc++/125374
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/flat_map                  |  2 +-
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index e270735a87ba..18f06e6bdaf8 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -534,7 +534,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      return {iterator{this, __key_it}, false};
 
 	  auto __guard = _M_make_clear_guard();
-	  __key_it = _M_cont.keys.insert(__key_it, std::move(__k));
+	  __key_it = _M_cont.keys.insert(__key_it, std::forward<_Key2>(__k));
 	  __value_it = _M_cont.values.begin() + (__key_it - _M_cont.keys.begin());
 	  _M_cont.values.emplace(__value_it, std::forward<_Args>(__args)...);
 	  __guard._M_disable();
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 04c2101aab13..096b9eeac3e4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -13,6 +13,7 @@
 #include <testsuite_allocator.h>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
+#include <string>
 #include <tuple>
 
 struct Gt {
@@ -283,6 +284,21 @@ test09()
   using value_type = std::pair<int, int>;
 }
 
+constexpr
+void
+test10()
+{
+  // PR libstdc++/125374 - flat_map unconditionally moves from lvalue keys in
+  // _M_try_emplace
+  std::flat_map<std::string, int, std::less<>> m;
+  std::string k = "hello";
+  m[k] = 1;
+  VERIFY (k == "hello");
+  k = "world";
+  m.try_emplace(k, 2);
+  VERIFY (k == "world");
+}
+
 void
 test()
 {
@@ -298,6 +314,7 @@ test()
   test07();
   test08();
   test09();
+  test10();
 }
 
 constexpr
@@ -313,6 +330,7 @@ test_constexpr()
   test07();
   test08();
   test09();
+  test10();
   return true;
 }

From redi@gcc.gnu.org  Tue May 19 20:31:57 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 20:31:57 +0000 (GMT)
Subject: [gcc r17-611] libstdc++: Update tzdata to 2026b
Message-ID: <20260519203157.5BB6F4BA2E16@sourceware.org>

https://gcc.gnu.org/g:120d284e9bbb335d0fb5b59b8a019bb4d38bae4b

commit r17-611-g120d284e9bbb335d0fb5b59b8a019bb4d38bae4b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026b
    
    Import the new 2026b tzdata.zi file.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++20/tzdata.zi: Import new file from 2026b release.

Diff:
---
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index 88f7d34a3817..530829647034 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2026a
+# version 2026b
 # redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
@@ -2966,7 +2966,9 @@ Z America/Toronto -5:17:32 - LMT 1895
 -5 C E%sT
 Z America/Vancouver -8:12:28 - LMT 1884
 -8 Va P%sT 1987
--8 C P%sT
+-8 C P%sT 2026 Mar 9
+-8 1 PDT 2026 N 1 2
+-7 - MST
 Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
 -9 Y Y%sT 1965
 -9 Yu Y%sT 1966 F 27

From redi@gcc.gnu.org  Tue May 19 21:34:51 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 21:34:51 +0000 (GMT)
Subject: [gcc r16-8935] libstdc++: Constrain tuple(tuple&&) [PR78302]
Message-ID: <20260519213451.3422C4BB3BAD@sourceware.org>

https://gcc.gnu.org/g:c71767a088991174fd7197a3eb29eee6bc35bdec

commit r16-8935-gc71767a088991174fd7197a3eb29eee6bc35bdec
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 22 15:37:16 2026 +0100

    libstdc++: Constrain tuple(tuple&&) [PR78302]
    
    Since C++20 the std::tuple move constructor should be constrained (as
    modified by LWG 2899).
    
    We already define the move constructor as defaulted, but it's not
    implicitly defined as deleted for non-move-constructible element types
    because the _Tuple_impl(_Tuple_impl&&) constructor is user-provided and
    unconstrained. For C++20 and later we use a requires-clause to constrain
    the defaulted tuple(tuple&&) constructor.
    
    Ideally we'd make this change pre-C++20 as well, but that's harder to do
    without using a requires-clause, so this change is only for C++20 and
    later. I think that's OK, but if we need to change it for pre-C++20
    later we can consider inheriting from _Enable_copy_move<..., tuple> to
    make the defaulted move constructor defined as deleted.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 5154144864a669c722fbb2170e79416c3ae5ff50)

Diff:
---
 libstdc++-v3/include/std/tuple                     |  4 +++-
 libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index f7caa79cda04..b236ca7c6eea 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -993,7 +993,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       constexpr tuple(const tuple&) = default;
 
-      constexpr tuple(tuple&&) = default;
+      constexpr
+      tuple(tuple&&) requires (is_move_constructible_v<_Elements> && ...)
+	= default;
 
       template<typename... _UTypes>
 	requires (__constructible<const _UTypes&...>())
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc
new file mode 100644
index 000000000000..6998a9e418a9
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/78302.cc
@@ -0,0 +1,17 @@
+// { dg-do compile { target c++20 } }
+
+// Bug 78302 is_move_constructible_v<tuple<nonmovable>> should be false
+// LWG 2899. is_(nothrow_)move_constructible and tuple, optional and unique_ptr
+
+#include <tuple>
+#include <type_traits>
+
+struct NotMovable { NotMovable(NotMovable&&) = delete; };
+static_assert(!std::is_move_constructible_v<std::tuple<NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int, NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int&, NotMovable>>);
+static_assert(!std::is_move_constructible_v<std::tuple<int&&, NotMovable>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&&>>);
+static_assert(std::is_nothrow_move_constructible_v<std::tuple<int&&, int&>>);

From redi@gcc.gnu.org  Tue May 19 21:35:01 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 21:35:01 +0000 (GMT)
Subject: [gcc r16-8936] libstdc++: Add call to test_format in
 std/time/clock/local/io.cc
Message-ID: <20260519213501.B3ADC4BB3BE1@sourceware.org>

https://gcc.gnu.org/g:f7deb63faee74a04046ce02fd47b90a02bf8d216

commit r16-8936-gf7deb63faee74a04046ce02fd47b90a02bf8d216
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 13 20:48:42 2026 +0100

    libstdc++: Add call to test_format in std/time/clock/local/io.cc
    
    This function was defined but not being called at runtime.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/std/time/clock/local/io.cc: Call test_format.
    
    (cherry picked from commit 534c08d174fa080902d5e30db0011bed52a24ac3)

Diff:
---
 libstdc++-v3/testsuite/std/time/clock/local/io.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/testsuite/std/time/clock/local/io.cc b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
index 6efd81a87c2a..9774f59fc38f 100644
--- a/libstdc++-v3/testsuite/std/time/clock/local/io.cc
+++ b/libstdc++-v3/testsuite/std/time/clock/local/io.cc
@@ -136,5 +136,6 @@ static_assert( ! ostream_insertable<std::chrono::local_time<D>> );
 int main()
 {
   test_ostream();
+  test_format();
   test_parse();
 }

From redi@gcc.gnu.org  Tue May 19 21:35:06 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 21:35:06 +0000 (GMT)
Subject: [gcc r16-8937] libstdc++: Make chrono::parse fail for bad %z
 [PR125369]
Message-ID: <20260519213506.D77A74BB58A1@sourceware.org>

https://gcc.gnu.org/g:e6933425adfe62fd9bd89a195d06318c5abc3697

commit r16-8937-ge6933425adfe62fd9bd89a195d06318c5abc3697
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 15:44:21 2026 +0100

    libstdc++: Make chrono::parse fail for bad %z [PR125369]
    
    The chrono parsing code failed to check for errors when parsing input to
    match %z. The expected input is [+-]hh[mm] but if we read less than two
    valid digits for the hh or mm parts we didn't set failbit in the stream,
    and used the -1 error values returned for each bad digit in the offset
    value. This resulted in a "successful" parse that produced a value like
    -11h or -11min for the time zone offset.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 11a1cf805aac7b7db21bd2ea6cc22a69f5aa92f9)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h           | 16 ++++--
 libstdc++-v3/testsuite/std/time/parse/125369.cc | 65 +++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 1fe50ad79e05..a8b73f1569e6 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -5234,8 +5234,12 @@ namespace __detail
 		      else
 			{
 			  // Read hh
-			  __hh = 10 * _S_try_read_digit(__is, __err);
-			  __hh += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __hh = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (__is_failed(__err))
@@ -5269,8 +5273,12 @@ namespace __detail
 		      int_least32_t __mm = 0;
 		      if (__read_mm)
 			{
-			  __mm = 10 * _S_try_read_digit(__is, __err);
-			  __mm += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __mm = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (!__is_failed(__err))
diff --git a/libstdc++-v3/testsuite/std/time/parse/125369.cc b/libstdc++-v3/testsuite/std/time/parse/125369.cc
new file mode 100644
index 000000000000..719c56dc9282
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/parse/125369.cc
@@ -0,0 +1,65 @@
+// { dg-do run { target c++20 } }
+
+#include <chrono>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono;
+
+const std::string input = "2026-05-18 15:26:48 ";
+const std::string fmt = "%F %T %";
+sys_seconds ss;
+minutes offset{};
+std::string abbrev;
+
+void
+test_parse_z()
+{
+  for (auto suffix : {"Z", "+", "+Z", "-A", "+1Z", "+010", "+010Z"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "z").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Ez()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Ez").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Oz()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Oz").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+int main()
+{
+  test_parse_z();
+  test_parse_Ez();
+  test_parse_Oz();
+}

From redi@gcc.gnu.org  Tue May 19 21:35:17 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 21:35:17 +0000 (GMT)
Subject: [gcc r16-8938] libstdc++: Reduce iterations in PSTL test for Debug
 Mode
Message-ID: <20260519213517.352314BB3BAD@sourceware.org>

https://gcc.gnu.org/g:40e11138dbfbf1a155372f737bf41358b3cb7d70

commit r16-8938-g40e11138dbfbf1a155372f737bf41358b3cb7d70
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sun May 17 19:27:11 2026 +0100

    libstdc++: Reduce iterations in PSTL test for Debug Mode
    
    This test often times out, especially on machines with a large number of
    cores when the tests are run with a lot of parallel jobs. I suspect that
    TBB creates a lot of threads due to std::hardware_concurrency() being a
    large number, but because most cores are already busy running other
    tests (due to `make -jN check` with large N) the system gets
    oversubscribed. In Debug Mode, the testcase runs much slower, and often
    times out.
    
    It's probably fine to just test with fewer iterations when Debug Mode is
    active.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
            Reduce iterations for debug mode.
    
    (cherry picked from commit 6df1f865272fc95f386f5448f3a74486451bb58c)

Diff:
---
 .../testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc        | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
index e4bd435d1926..51bdeaa96a13 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
@@ -189,7 +189,11 @@ int
 main()
 {
     using TestUtils::float64_t;
+#ifndef _GLIBCXX_DEBUG
     const std::size_t N = 100000;
+#else
+    const std::size_t N = 10000;
+#endif
 
     for (std::size_t n = 0; n < N; n = n < 16 ? n + 1 : size_t(3.14159 * n))
     {

From redi@gcc.gnu.org  Tue May 19 21:35:22 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 19 May 2026 21:35:22 +0000 (GMT)
Subject: [gcc r16-8939] libstdc++: Update tzdata to 2026b
Message-ID: <20260519213522.56CB14BB58B0@sourceware.org>

https://gcc.gnu.org/g:ac8ce19a1ad8914dd7ca362dcb4caf17776935e4

commit r16-8939-gac8ce19a1ad8914dd7ca362dcb4caf17776935e4
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026b
    
    Import the new 2026b tzdata.zi file.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++20/tzdata.zi: Import new file from 2026b release.
    
    (cherry picked from commit 120d284e9bbb335d0fb5b59b8a019bb4d38bae4b)

Diff:
---
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index 88f7d34a3817..530829647034 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2026a
+# version 2026b
 # redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
@@ -2966,7 +2966,9 @@ Z America/Toronto -5:17:32 - LMT 1895
 -5 C E%sT
 Z America/Vancouver -8:12:28 - LMT 1884
 -8 Va P%sT 1987
--8 C P%sT
+-8 C P%sT 2026 Mar 9
+-8 1 PDT 2026 N 1 2
+-7 - MST
 Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
 -9 Y Y%sT 1965
 -9 Yu Y%sT 1966 F 27

From gccadmin@gcc.gnu.org  Wed May 20 00:17:02 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 20 May 2026 00:17:02 +0000 (GMT)
Subject: [gcc r17-613] Daily bump.
Message-ID: <20260520001702.E209E4BB5888@sourceware.org>

https://gcc.gnu.org/g:3800d1c5a84db84c85fa4d9e47a84023e0189920

commit r17-613-g3800d1c5a84db84c85fa4d9e47a84023e0189920
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 20 00:16:31 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 163 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |   5 ++
 gcc/analyzer/ChangeLog  |  38 +++++++++++
 gcc/c/ChangeLog         |   7 +++
 gcc/cp/ChangeLog        |  22 +++++++
 gcc/fortran/ChangeLog   |  47 ++++++++++++++
 gcc/m2/ChangeLog        |   6 ++
 gcc/testsuite/ChangeLog | 131 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |   7 +++
 libgomp/ChangeLog       |  16 +++++
 libstdc++-v3/ChangeLog  |  86 +++++++++++++++++++++++++
 12 files changed, 529 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f0ddfe351359..00dec46427aa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,166 @@
+2026-05-19  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR target/123748
+	* config/aarch64/aarch64-simd.md (vec_packs_float_v2di): New pattern.
+
+2026-05-19  Christopher Bazley  <chris.bazley@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_call_scalar_result_in_simd_reg_p):
+	New function to determine probabilistically whether a gcall
+	produces a scalar result in a SIMD/FP register.
+	(aarch64_scalar_op_to_vec_p): New function to determine
+	whether or not to add scalar_to_vec_cost per scalar operand
+	from which a vector is to be constructed.
+	(aarch64_external_adjust_stmt_cost): New function to adjust the
+	cost of an SLP tree node for a vec_construct that is fed by
+	values defined outside the vectorized region.
+	(aarch64_vector_costs::add_stmt_cost): Call the new
+	aarch64_external_adjust_stmt_cost function if we have an SLP
+	node and a vector type.
+
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* fold-const.cc (operand_compare::operand_equal_p): Handle
+	OMP_ARRAY_SECTION.
+	* gimplify.cc (gimplify_scan_omp_clauses): Call
+	omp_remove_duplicate_maps after partial clause expansion.
+	* omp-general.cc (omp_remove_duplicate_maps): New function.
+	* omp-general.h (omp_remove_duplicate_maps): Declare.
+	* omp-low.cc (install_var_field): Add new 'tree key_expr = NULL_TREE'
+	default parameter. Set splay-tree lookup key to key_expr instead of
+	var if key_expr is non-NULL. Adjust call to install_parm_decl.
+	Update comments.
+	(scan_sharing_clauses): Use clause tree expression as splay-tree key
+	for map/to/from and OpenACC firstprivate cases when installing the
+	variable field into the send/receive record type.
+	(lower_oacc_reductions): Adjust to find map-clause of reduction
+	variable, then create receiver-ref.
+	(lower_omp_target): Adjust to lookup var field using clause expression.
+
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR other/125348
+	* config/i386/i386-expand.cc (ix86_expand_builtin): Fix diagnostic
+	typo, forth -> fourth.
+
+2026-05-19  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/50481
+	* config/avr/avr.md (bitreverseqi2): New insn-and-split.
+	(*bitreverseqi2): New insn.
+
+2026-05-19  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/90483
+	PR libstdc++/118416
+	* config/i386/i386-expand.cc (ix86_expand_sse_ptest):  Refactor
+	with optimizations for PTESTZ*, PTESTC* and PTESTNZC*, including
+	transforming ptestz(x,-1) into ptestz(x,x).
+
+2026-05-19  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124870
+	* config/arm/arm-mve-builtins-base.cc (vstrq_scatter_base_impl)
+	(vldrq_gather_base_impl): Fix call_properties.
+
+2026-05-19  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* cfgrtl.cc: Don't include gimplify.h or gimplify-me.h.
+	* cgraphbuild.cc: Likewise.
+	* emit-rtl.cc: Likewie.
+	* tree-ssa-dom.cc: Likewise.
+	* tree-ssa-dse.cc: Likewise.
+	* tree-ssa-loop-im.cc: Likewise.
+	* tree-ssa-loop-niter.cc: Likewise.
+	* tree-ssa-loop-unswitch.cc: Likewise.
+	* tree-ssa-math-opts.cc: Likewise.
+	* tree-ssa-phiopt.cc: Likewise.
+	* tree-ssa-phiprop.cc: Likewise.
+	* tree-ssa-pre.cc: Likewise.
+	* tree-ssa-propagate.cc: Likewise.
+	* tree-ssa-sccvn.cc: Likewise.
+	* gimplify.h (unshare_expr): Remove.
+	(unshare_expr_without_location): Remove.
+	(copy_if_shared): Remove.
+	* tree.h (unshare_expr): New decl.
+	(unshare_expr_without_location): Likewise.
+	(copy_if_shared): Likewise.
+	* gimplify.cc (mostly_copy_tree_r): Moved to tree.cc.
+	(copy_if_shared_r): Likewise.
+	(copy_if_shared): Likewise.
+	(unshare_expr): Likewise.
+	(prune_expr_location): Likewise.
+	(unshare_expr_without_location): Likewise.
+	* tree.cc (mostly_copy_tree_r): Moved from gimplify.cc
+	(copy_if_shared_r): Likewise.
+	(copy_if_shared): Likewise.
+	(unshare_expr): Likewise.
+	(prune_expr_location): Likewise.
+	(unshare_expr_without_location): Likewise.
+
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125357
+	* config/i386/i386-expand.cc (ix86_expand_vec_perm): For
+	one_operand_shuffle if TARGET_AVX and not TARGET_AVX512F use
+	vpermilps for V4SImode/V4SFmode.  Formatting fix.
+
+2026-05-19  Georg-Johann Lay  <avr@gjlay.de>
+
+	* config/avr/avr.md (bitreversehi2, bitreversesi2): New insn_and_split.
+	(*bitreversehi2.libgcc, *bitreversesi2.libgcc): New insns.
+
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/50481
+	* optabs.cc (widen_bswap): Add UNOPTAB argument and use it instead
+	of hardcoded bswap_optab.  Rename to ...
+	(widen_bswap_or_bitreverse): ... this.
+	(expand_doubleword_bswap): Add UNOPTAB argument and use it instead
+	of hardcoded bswap_optab.  Rename to ...
+	(expand_doubleword_bswap_or_bitreverse): ... this.
+	(expand_bitreverse): Use widen_bswap_or_bitreverse and
+	expand_doubleword_bswap_or_bitreverse.
+	(expand_unop): Adjust widen_bswap and expand_doubleword_bswap callers
+	to use new names and add an extra bswap_optab argument.
+
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Replace
+	optimize_function_for_size_p with optimize_insn_for_size_p.
+
+2026-05-19  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	PR target/125097
+	* config/riscv/riscv.cc (riscv_legitimize_move): Emit 32-bit
+	vec_extracts right away.
+
+2026-05-19  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* config/riscv/autovec.md (<cbranch_optab><mode>): Remove.
+	* config/riscv/riscv-protos.h (expand_vec_cmp_float): Add mask
+	and else arguments.
+	* config/riscv/riscv-v.cc (expand_vec_cmp): Add mask and else
+	arguments.
+	(expand_vec_cmp_float): Ditto.
+	* config/riscv/vector-iterators.md: Remove iterators.
+
+2026-05-19  Peter Bergner  <bergner@linux.ibm.com>
+	    Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* config/rs6000/amo.h: Add missing atomic memory operations.
+	* doc/extend.texi (PowerPC Atomic Memory Operation Functions): Document
+	new functions.
+
+2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/125351
+	* config/i386/i386.md: Use alternative to handle masm ptwrite
+	syntax.
+
 2026-05-18  Xin Wang  <yw987194828@gmail.com>
 
 	* tree-ssa-loop-split.cc (fix_loop_bb_probability): Rename
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 2bdf77fcc72f..25622053d367 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260519
+20260520
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a768fd420914..ad18fe41259b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR other/125348
+	* libgnat/s-regpat.ads: Fix comment spelling, paramter -> parameter.
+
 2026-05-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/125240
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index d4d08911edcc..87b9a8e4ea09 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,41 @@
+2026-05-19  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/125304
+	* common.h (compare_bit_offsets_p): New decl.
+	(eval_region_offset_comparison): New decl.
+	* region-model.cc (region_model::on_assignment): Pass *this to
+	store::set_value to help determination of aliasing.
+	(region_model::set_value): Likewise.
+	(region_model::eval_condition): Likewise for
+	region_svalue::eval_condition.
+	* region.cc (compare_bit_offsets_p): New.
+	(region_offset::dump_to_pp): Dump the base region, wrapping the
+	whole thing in braces.
+	(eval_byte_offset_comparison): New.
+	(eval_region_offset_comparison): New.
+	* store.cc (store::set_value): Add "model" param and pass it to
+	eval_alias.
+	(store::eval_alias): Add "model" param and pass to eval_alias_1.
+	Add early return of true when checking a base region against
+	itself.  Replace final return of "unknown" with logic that
+	compares the kinds of the two base regions, and may be able
+	to return "false" rather than "unknown".
+	(store::eval_alias_1): Add "model" param and pass to eval_alias.
+	Assert that we have two different base_regions.
+	(store::replay_call_summary_cluster): Pass model to set_value.
+	* store.h (store::set_value): Add "model" param.
+	(store::eval_alias): Likewise.
+	(store::eval_alias_1): Likewise.
+	* svalue.cc (region_svalue::eval_condition): Likewise.
+	Reimplement in terms of eval_region_offset_comparison.
+	* svalue.h (region_svalue::eval_condition): Add "model" param.
+
+2026-05-19  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/124104
+	* svalue.cc (binop_svalue::maybe_get_value_range_1): Bail out for
+	incompatible types.
+
 2026-05-18  David Malcolm  <dmalcolm@redhat.com>
 
 	* analyzer.opt (-param=analyzer-bb-explosion-factor=): Rename to...
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 6406110a87b0..523d18208754 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* c-typeck.cc (c_finish_omp_clauses): Call omp_remove_duplicate_maps
+	before clause expansion.
+
 2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
 
 	PR c/124532
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index dcb6881cc458..175fcc604cea 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,25 @@
+2026-05-19  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123536
+	* cp-tree.h (process_outer_var_ref): Remove a parameter's name.
+	* expr.cc (mark_use): Return if mark_rvalue_use returns
+	error_mark_node.
+	* semantics.cc (process_outer_var_ref): Return decl when it is
+	instantiation-dependent.
+
+2026-05-19  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125336
+	* constexpr.cc (cxx_eval_bare_aggregate): Don't call
+	get_or_insert_ctor_field when there is no CONSTRUCTOR.  Assert
+	is_empty_class.
+
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* semantics.cc (finish_omp_clauses): Likewise.
+
 2026-05-18  Marek Polacek  <polacek@redhat.com>
 
 	* constexpr.cc (cxx_eval_bare_aggregate): Remove dead code.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 085251e31075..0cd6f3e9a289 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,50 @@
+2026-05-19  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* dump-parse-tree.cc (show_attr): Show omp_udm_artificial_var flag.
+	(show_omp_namelist): Support OMP_MAP_UNSET.
+	* gfortran.h (enum gfc_statement): Add ST_OMP_DECLARE_MAPPER.
+	(symbol_attribute): Add omp_udm_artificial_var attribute.
+	(enum gfc_omp_map_op): Add OMP_MAP_UNSET.
+	(gfc_omp_namelist_udm): New struct.
+	(gfc_omp_namelist): Add udm pointer to u2 union.
+	(gfc_symtree): Add omp_udm pointer.
+	(gfc_namespace): Add omp_udm_root symtree and omp_udm_ns flag.
+	(gfc_free_omp_udm, gfc_omp_udm_find, gfc_find_omp_udm,
+	gfc_resolve_omp_udms): Add prototypes.
+	* match.h (gfc_match_omp_declare_mapper): Add prototype.
+	* match.cc (gfc_free_omp_namelist): Update for declare mapper's udm.
+	* openmp.cc (gfc_omp_directives): Uncomment 'declare mapper'.
+	(gfc_free_omp_udm, gfc_find_omp_udm, gfc_omp_udm_find,
+	gfc_match_omp_declare_mapper, gfc_resolve_omp_udm,
+	gfc_resolve_omp_udms): New.
+	(gfc_match_omp_clauses): Take argument for the default map-type
+	modifier; add support for the 'mapper' modifier.
+	(resolve_omp_clauses): Update for declare-mapper map clauses.
+	* parse.cc (decode_omp_directive): Add declare mapper support.
+	(case_omp_decl): Add ST_OMP_DECLARE_MAPPER case.
+	(gfc_ascii_statement): Add ST_OMP_DECLARE_MAPPER case.
+	* resolve.cc (resolve_types): Call gfc_resolve_omp_udms.
+	* symbol.cc (free_omp_udm_tree): New function.
+	(gfc_free_namespace): Call it.
+
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gfortran.h (enum gfc_omp_map_op): Dedicate the two LSB to TO and FROM.
+	* openmp.cc (resolve_omp_clauses): Adjust to allow duplicate
+	mapped variables for OpenMP.
+	* trans-openmp.cc (gfc_trans_omp_clauses): Remove duplicates before
+	clause expansion.
+
+2026-05-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/115260
+	* trans-expr.cc (gfc_conv_subref_array_arg): Pass false to
+	dealloc argument of gfc_trans_scalar_assign if we are
+	converting a g77-style argument.
+
 2026-05-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/122245
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 4f3b364999f7..bb9cfeb3065b 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR other/125348
+	* gm2-compiler/M2GenGCC.mod (PerformLastForIterator): Fix diagnostic
+	typo, intemediate -> intermediate.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f75e2dfaf480..98a479522825 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,134 @@
+2026-05-19  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	* gcc.target/aarch64/pr123748.c: Use "long long" instead of "long".
+
+2026-05-19  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* gfortran.dg/gomp/declare-mapper-1.f90: New test.
+	* gfortran.dg/gomp/declare-mapper-2.f90: New test.
+
+2026-05-19  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/125304
+	* c-c++-common/analyzer/pointer-comparison-pr125304-eq.c: New test.
+	* c-c++-common/analyzer/pointer-comparison-pr125304-ge.c: New test.
+	* c-c++-common/analyzer/pointer-comparison-pr125304-gt.c: New test.
+	* c-c++-common/analyzer/pointer-comparison-pr125304-le.c: New test.
+	* c-c++-common/analyzer/pointer-comparison-pr125304-lt.c: New test.
+	* g++.dg/analyzer/pointer-casts-pr125304.C: New test.
+
+2026-05-19  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/123536
+	* g++.dg/cpp0x/lambda/lambda-const12.C: New test.
+	* g++.dg/cpp0x/lambda/lambda-const13.C: New test.
+	* g++.dg/cpp0x/lambda/lambda-const14.C: New test.
+	* g++.dg/template/local11.C: New test.
+
+2026-05-19  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR target/123748
+	* gcc.target/aarch64/pr123748.c: New test.
+
+2026-05-19  Christopher Bazley  <chris.bazley@arm.com>
+
+	* gcc.target/aarch64/sve/vec_construct_1.c: New test.
+	* gcc.target/aarch64/sve/vec_construct_2.c: New test.
+	* gcc.target/aarch64/sve/vec_construct_3.c: New test.
+	* gcc.target/aarch64/sve/vec_construct_4.c: New test.
+	* gcc.target/aarch64/sve/vec_construct_5.c: New test.
+	* gcc.target/aarch64/vec-construct-1.c: New test.
+	* gcc.target/aarch64/vec-construct-10.c: New test.
+	* gcc.target/aarch64/vec-construct-11.c: New test.
+	* gcc.target/aarch64/vec-construct-12.c: New test.
+	* gcc.target/aarch64/vec-construct-2.c: New test.
+	* gcc.target/aarch64/vec-construct-3.c: New test.
+	* gcc.target/aarch64/vec-construct-4.c: New test.
+	* gcc.target/aarch64/vec-construct-5.c: New test.
+	* gcc.target/aarch64/vec-construct-6.c: New test.
+	* gcc.target/aarch64/vec-construct-7.c: New test.
+	* gcc.target/aarch64/vec-construct-8.c: New test.
+	* gcc.target/aarch64/vec-construct-9.c: New test.
+
+2026-05-19  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125336
+	* g++.dg/cpp2a/no_unique_address17.C: New test.
+	* g++.dg/cpp2a/no_unique_address18.C: New test.
+
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* c-c++-common/gomp/clauses-2.c: Adjust testcase.
+	* c-c++-common/gomp/map-6.c: Adjust testcase.
+	* gfortran.dg/gomp/pr107214.f90: Adjust testcase.
+	* c-c++-common/gomp/map-multi-1.c: New test.
+	* c-c++-common/gomp/map-multi-2.c: New test.
+	* gfortran.dg/gomp/map-multi-1.f90: New test.
+	* gfortran.dg/gomp/map-multi-2.f90: New test.
+
+2026-05-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/115260
+	* gfortran.dg/pr115260.f90: New test.
+
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR other/125348
+	* gcc.target/i386/pr117416-2.c (prefetch_test): Adjust expected
+	diagnostic spelling.
+	* gdc.test/compilable/dtoh_TemplateDeclaration.d: Fix comment
+	spelling, paramter -> parameter.
+
+2026-05-19  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/90483
+	PR libstdc++/118416
+	* gcc.target/i386/sse4_1-ptest-8.c: New test case.
+	* gcc.target/i386/sse4_1-ptest-9.c: Likewise.
+
+2026-05-19  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124870
+	* gcc.target/arm/mve/intrinsics/pr124870.c: New test.
+
+2026-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125357
+	* gcc.target/i386/avx-pr125357.c: New test.
+	* gcc.target/i386/avx2-pr125357.c: New test.
+
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* gcc.target/i386/pr125355-2.c: New test.
+
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	* lib/scanasm.exp (configure_check-function-bodies): Check
+	"*-*-mingw32" instead of "aarch64*-*-mingw32".
+
+2026-05-19  Robin Dapp  <rdapp@oss.qualcomm.com>
+
+	* gcc.target/riscv/rvv/autovec/early-break-5.c: Remove redundant
+	comments.
+
+2026-05-19  Peter Bergner  <bergner@linux.ibm.com>
+	    Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* gcc.target/powerpc/amo3.c: New test.
+	* gcc.target/powerpc/amo4.c: Likewise.
+	* gcc.target/powerpc/amo5.c: Likewise.
+	* gcc.target/powerpc/amo6.c: Likewise.
+	* gcc.target/powerpc/amo7.c: Likewise.
+
+2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/125351
+	* gcc.target/i386/pr125351.c: New test.
+
 2026-05-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	* gcc.dg/tree-ssa/pr112095.c: Add -Wno-psabi to the options.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index a769e628e482..1a7e3cee8958 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-19  Georg-Johann Lay  <avr@gjlay.de>
+
+	* config/avr/t-avr (LIB1ASMFUNCS): Add _bitreverse8, _bitreverse16,
+	_bitreverse24, _bitreverse32.
+	* config/avr/lib1funcs.S (__bitreverse8, __bitreverse16)
+	(__bitreverse24, __bitreverse32): New functions.
+
 2026-05-11  John David Anglin  <danglin@gcc.gnu.org>
 
 	* config.host (hppa*64*-hp-hpux11*): Handle linking with GNU ld.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 3975f41cebc0..b568584ae9c7 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
+	    Chung-Lin Tang  <cltang@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* testsuite/libgomp.c++/target-map-multi-1.C: New test.
+	* testsuite/libgomp.c-c++-common/target-map-iterators-6.c: New test.
+	* testsuite/libgomp.c-c++-common/target-map-multi-1.c: New test.
+	* testsuite/libgomp.c-c++-common/target-map-multi-2.c: New test.
+	* testsuite/libgomp.c-c++-common/target-map-multi-3.c: New test.
+	* testsuite/libgomp.c-c++-common/target-map-multi-4.c: New test.
+	* testsuite/libgomp.fortran/target-map-multi-1.f90: New test.
+	* testsuite/libgomp.fortran/target-map-multi-2.f90: New test.
+	* testsuite/libgomp.fortran/target-map-multi-3.f90: New test.
+	* testsuite/libgomp.fortran/target-map-multi-4.f90: New test.
+	* testsuite/libgomp.fortran/target-map-multi-5.f90: New test.
+
 2026-05-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* env.c (initialize_env): Check GOMP_DEFAULT_STACKSIZE for
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 193418823b53..8fc038268c70 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,89 @@
+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...

From gccadmin@gcc.gnu.org  Wed May 20 00:20:32 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 20 May 2026 00:20:32 +0000 (GMT)
Subject: [gcc r16-8940] Daily bump.
Message-ID: <20260520002032.314614BB5888@sourceware.org>

https://gcc.gnu.org/g:7afc399fb5455d2c47727201248e7c823353a8be

commit r16-8940-g7afc399fb5455d2c47727201248e7c823353a8be
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 20 00:20:04 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 24 ++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 12 ++++++++++++
 gcc/testsuite/ChangeLog | 29 +++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 43 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 109 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dd96fb080ad5..8b3748125cf2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	Backported from master:
+	2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Replace
+	optimize_function_for_size_p with optimize_insn_for_size_p.
+
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	Backported from master:
+	2026-05-18  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Return false
+	for -Os.
+
+2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/125351
+	* config/i386/i386.md: Use alternative to handle masm ptwrite
+	syntax.
+
 2026-05-15  H.J. Lu  <hjl.tools@gmail.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 2bdf77fcc72f..25622053d367 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260519
+20260520
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a4fafb620a52..8ddce10e8762 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-19  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	Backported from master:
+	2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	PR fortran/125021
+	* coarray.cc (check_add_new_comp_handle_array): Prefix internal
+	symbols by two underscores.
+	(create_get_callback): Same.
+	(create_allocated_callback): Same.
+	(create_send_callback): Same.
+
 2026-05-13  Mikael Morin  <mikael@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dd44e6f2cd27..552b14a28d74 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,32 @@
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	Backported from master:
+	2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* gcc.target/i386/pr125355-2.c: New test.
+
+2026-05-19  H.J. Lu  <hjl.tools@gmail.com>
+
+	Backported from master:
+	2026-05-18  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125355
+	* gcc.target/i386/pr125355.c: New test.
+
+2026-05-19  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	Backported from master:
+	2026-04-29  Andre Vehreschild  <vehre@gcc.gnu.org>
+
+	PR fortran/125021
+	* gfortran.dg/coarray/pr125021.f90: New test.
+
+2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
+
+	PR target/125351
+	* gcc.target/i386/pr125351.c: New test.
+
 2026-05-15  H.J. Lu  <hjl.tools@gmail.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index db41fcabdafc..54a5a13b8ae8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,46 @@
+2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	* src/c++20/tzdata.zi: Import new file from 2026b release.
+
+2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
+	Reduce iterations for debug mode.
+
+2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-13  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/std/time/clock/local/io.cc: Call test_format.
+
+2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-18  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From ncm@gcc.gnu.org  Wed May 20 07:01:14 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Wed, 20 May 2026 07:01:14 +0000 (GMT)
Subject: [gcc r17-618] libstdc++: fix build failures after acfdad706d8
Message-ID: <20260520070114.DB2974BB1C06@sourceware.org>

https://gcc.gnu.org/g:1aababb8e205a441fe55f9acecc8c6c1ca552ec6

commit r17-618-g1aababb8e205a441fe55f9acecc8c6c1ca552ec6
Author: Nathan Myers <ncm@cantrip.org>
Date:   Tue May 19 19:51:21 2026 -0400

    libstdc++: fix build failures after acfdad706d8
    
    Patch build failures from 2026-05-19 09:33:58
    
    libstdc++-v3/Changelog:
            * 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.

Diff:
---
 libstdc++-v3/config/abi/pre/gnu.ver        |  2 +-
 libstdc++-v3/include/bits/basic_string.tcc | 14 ++++++++------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index bf4d7338cb6c..3a6afac83087 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1775,7 +1775,7 @@ GLIBCXX_3.4.21 {
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE12_M_constructI[NP]*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE13*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE14_M_replace_aux*;
-    _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[68-9]*;
+    _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[68]*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE2at*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE3end*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE4back*;
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index 5f83991db83f..64c99fbb9d64 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -433,11 +433,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       if (_M_is_local())
 	return;
 
-#ifdef __glibcxx_allocate_at_least  // C++23
-      const size_type __limit = (__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1) / sizeof(_CharT);
-#else
-      const size_type __limit = 0;
-#endif
       const size_type __length = length();
       const size_type __capacity = _M_allocated_capacity;
 
@@ -447,9 +442,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  this->_S_copy(_M_local_buf, _M_data(), __length + 1);
 	  _M_destroy(__capacity);
 	  _M_data(_M_local_data());
+	  return;
 	}
 #if __cpp_exceptions
-      else if (__capacity - __length > __limit )
+#ifdef __glibcxx_allocate_at_least  // C++23
+      const size_type __limit =
+	(__STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1) / sizeof(_CharT);
+#else
+      const size_type __limit = 0;
+#endif
+      if (__capacity - __length > __limit )
 	try
 	  {
 	    _Alloc_result __r = _S_allocate_at_least(

From redi@gcc.gnu.org  Wed May 20 12:27:36 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 20 May 2026 12:27:36 +0000 (GMT)
Subject: [gcc r17-622] libstdc++: Use #embed for static tzdata.zi file
Message-ID: <20260520122736.84FBD4BA23EB@sourceware.org>

https://gcc.gnu.org/g:601cc5ae31d8393da9b7a1047d61343bc25df9ea

commit r17-622-g601cc5ae31d8393da9b7a1047d61343bc25df9ea
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 19 16:13:15 2026 +0100

    libstdc++: Use #embed for static tzdata.zi file
    
    This doesn't make much difference to the time taken to compile tzdb.cc
    but it is simpler and more maintainable than generating a header in the
    makefile.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/src/c++20/Makefile.am | 13 -------------
 libstdc++-v3/src/c++20/Makefile.in | 11 -----------
 libstdc++-v3/src/c++20/tzdb.cc     |  8 +++++---
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/libstdc++-v3/src/c++20/Makefile.am b/libstdc++-v3/src/c++20/Makefile.am
index 5182d51b9faa..cfd09bddffcb 100644
--- a/libstdc++-v3/src/c++20/Makefile.am
+++ b/libstdc++-v3/src/c++20/Makefile.am
@@ -54,19 +54,6 @@ if ENABLE_DUAL_ABI
 cow-string-inst.lo cow-string-inst.o: string-inst.cc
 endif
 
-if USE_STATIC_TZDATA
-tzdata.zi.h: $(top_srcdir)/src/c++20/tzdata.zi
-	echo 'static const char tzdata_chars[] = R"__libstdcxx__(' > $@.tmp
-	cat $^ >> $@.tmp
-	echo ')__libstdcxx__";' >> $@.tmp
-	mv $@.tmp $@
-
-tzdb.lo: tzdb.cc tzdata.zi.h
-	$(LTCXXCOMPILE) -I. -c $<
-tzdb.o: tzdb.cc tzdata.zi.h
-	$(CXXCOMPILE) -I. -c $<
-endif
-
 # This needs access to std::text_encoding and to the internals of std::locale.
 format.lo: format.cc
 	$(LTCXXCOMPILE) -std=gnu++26 -fno-access-control -c $<
diff --git a/libstdc++-v3/src/c++20/Makefile.in b/libstdc++-v3/src/c++20/Makefile.in
index 33e3ba21b522..067419d2e485 100644
--- a/libstdc++-v3/src/c++20/Makefile.in
+++ b/libstdc++-v3/src/c++20/Makefile.in
@@ -758,17 +758,6 @@ vpath % $(top_srcdir)/src/c++20
 # These files should be rebuilt if the .cc prerequisite changes.
 @ENABLE_DUAL_ABI_TRUE@cow-string-inst.lo cow-string-inst.o: string-inst.cc
 
-@USE_STATIC_TZDATA_TRUE@tzdata.zi.h: $(top_srcdir)/src/c++20/tzdata.zi
-@USE_STATIC_TZDATA_TRUE@	echo 'static const char tzdata_chars[] = R"__libstdcxx__(' > $@.tmp
-@USE_STATIC_TZDATA_TRUE@	cat $^ >> $@.tmp
-@USE_STATIC_TZDATA_TRUE@	echo ')__libstdcxx__";' >> $@.tmp
-@USE_STATIC_TZDATA_TRUE@	mv $@.tmp $@
-
-@USE_STATIC_TZDATA_TRUE@tzdb.lo: tzdb.cc tzdata.zi.h
-@USE_STATIC_TZDATA_TRUE@	$(LTCXXCOMPILE) -I. -c $<
-@USE_STATIC_TZDATA_TRUE@tzdb.o: tzdb.cc tzdata.zi.h
-@USE_STATIC_TZDATA_TRUE@	$(CXXCOMPILE) -I. -c $<
-
 # This needs access to std::text_encoding and to the internals of std::locale.
 format.lo: format.cc
 	$(LTCXXCOMPILE) -std=gnu++26 -fno-access-control -c $<
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 183a0c61a616..5793155b6d89 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -1208,8 +1208,10 @@ namespace std::chrono
     const string_view leaps_file = "/leapseconds";
 
 #ifdef _GLIBCXX_STATIC_TZDATA
-// Static copy of tzdata.zi embedded in the library as tzdata_chars[]
-#include "tzdata.zi.h"
+// Static copy of tzdata.zi embedded in the library.
+static constexpr char tzdata_chars[] = {
+#embed "tzdata.zi"
+};
 #endif
 
     // An istream type that can read from a file or from a string.
@@ -1222,7 +1224,7 @@ namespace std::chrono
 	{
 #ifdef _GLIBCXX_STATIC_TZDATA
 	  char* p = const_cast<char*>(tzdata_chars);
-	  this->setg(p, p, p + std::size(tzdata_chars) - 1);
+	  this->setg(p, p, p + std::size(tzdata_chars));
 #endif
 	}

From redi@gcc.gnu.org  Wed May 20 20:56:41 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 20 May 2026 20:56:41 +0000 (GMT)
Subject: [gcc r15-11186] libstdc++: Make chrono::parse fail for bad %z
 [PR125369]
Message-ID: <20260520205641.DAE404BA9017@sourceware.org>

https://gcc.gnu.org/g:d9ac1b5ff36974074e4429b3f5ef5084ce99d3ff

commit r15-11186-gd9ac1b5ff36974074e4429b3f5ef5084ce99d3ff
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 15:44:21 2026 +0100

    libstdc++: Make chrono::parse fail for bad %z [PR125369]
    
    The chrono parsing code failed to check for errors when parsing input to
    match %z. The expected input is [+-]hh[mm] but if we read less than two
    valid digits for the hh or mm parts we didn't set failbit in the stream,
    and used the -1 error values returned for each bad digit in the offset
    value. This resulted in a "successful" parse that produced a value like
    -11h or -11min for the time zone offset.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 11a1cf805aac7b7db21bd2ea6cc22a69f5aa92f9)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h           | 16 ++++--
 libstdc++-v3/testsuite/std/time/parse/125369.cc | 65 +++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 557ae6c9c09e..243d3ff8026d 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -4052,8 +4052,12 @@ namespace __detail
 		      else
 			{
 			  // Read hh
-			  __hh = 10 * _S_try_read_digit(__is, __err);
-			  __hh += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __hh = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (__is_failed(__err))
@@ -4087,8 +4091,12 @@ namespace __detail
 		      int_least32_t __mm = 0;
 		      if (__read_mm)
 			{
-			  __mm = 10 * _S_try_read_digit(__is, __err);
-			  __mm += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __mm = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (!__is_failed(__err))
diff --git a/libstdc++-v3/testsuite/std/time/parse/125369.cc b/libstdc++-v3/testsuite/std/time/parse/125369.cc
new file mode 100644
index 000000000000..719c56dc9282
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/parse/125369.cc
@@ -0,0 +1,65 @@
+// { dg-do run { target c++20 } }
+
+#include <chrono>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono;
+
+const std::string input = "2026-05-18 15:26:48 ";
+const std::string fmt = "%F %T %";
+sys_seconds ss;
+minutes offset{};
+std::string abbrev;
+
+void
+test_parse_z()
+{
+  for (auto suffix : {"Z", "+", "+Z", "-A", "+1Z", "+010", "+010Z"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "z").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Ez()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Ez").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Oz()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Oz").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+int main()
+{
+  test_parse_z();
+  test_parse_Ez();
+  test_parse_Oz();
+}

From redi@gcc.gnu.org  Wed May 20 20:56:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 20 May 2026 20:56:52 +0000 (GMT)
Subject: [gcc r15-11187] libstdc++: Reduce iterations in PSTL test for Debug
 Mode
Message-ID: <20260520205652.38FFD4BB590B@sourceware.org>

https://gcc.gnu.org/g:1f5d5c28a245886caa19a61a65d85cb4a2139123

commit r15-11187-g1f5d5c28a245886caa19a61a65d85cb4a2139123
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sun May 17 19:27:11 2026 +0100

    libstdc++: Reduce iterations in PSTL test for Debug Mode
    
    This test often times out, especially on machines with a large number of
    cores when the tests are run with a lot of parallel jobs. I suspect that
    TBB creates a lot of threads due to std::hardware_concurrency() being a
    large number, but because most cores are already busy running other
    tests (due to `make -jN check` with large N) the system gets
    oversubscribed. In Debug Mode, the testcase runs much slower, and often
    times out.
    
    It's probably fine to just test with fewer iterations when Debug Mode is
    active.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
            Reduce iterations for debug mode.
    
    (cherry picked from commit 6df1f865272fc95f386f5448f3a74486451bb58c)

Diff:
---
 .../testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc        | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
index e4bd435d1926..51bdeaa96a13 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc
@@ -189,7 +189,11 @@ int
 main()
 {
     using TestUtils::float64_t;
+#ifndef _GLIBCXX_DEBUG
     const std::size_t N = 100000;
+#else
+    const std::size_t N = 10000;
+#endif
 
     for (std::size_t n = 0; n < N; n = n < 16 ? n + 1 : size_t(3.14159 * n))
     {

From redi@gcc.gnu.org  Wed May 20 20:56:57 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 20 May 2026 20:56:57 +0000 (GMT)
Subject: [gcc r15-11188] libstdc++: Update tzdata to 2026b
Message-ID: <20260520205657.63B304BA9017@sourceware.org>

https://gcc.gnu.org/g:182fe1ff2c19d8478a1045c8260127e19bdf5ef0

commit r15-11188-g182fe1ff2c19d8478a1045c8260127e19bdf5ef0
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026b
    
    Import the new 2026b tzdata.zi file.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++20/tzdata.zi: Import new file from 2026b release.
    
    (cherry picked from commit 120d284e9bbb335d0fb5b59b8a019bb4d38bae4b)

Diff:
---
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index 88f7d34a3817..530829647034 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2026a
+# version 2026b
 # redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
@@ -2966,7 +2966,9 @@ Z America/Toronto -5:17:32 - LMT 1895
 -5 C E%sT
 Z America/Vancouver -8:12:28 - LMT 1884
 -8 Va P%sT 1987
--8 C P%sT
+-8 C P%sT 2026 Mar 9
+-8 1 PDT 2026 N 1 2
+-7 - MST
 Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
 -9 Y Y%sT 1965
 -9 Yu Y%sT 1966 F 27

From gccadmin@gcc.gnu.org  Thu May 21 00:16:55 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 21 May 2026 00:16:55 +0000 (GMT)
Subject: [gcc r17-634] Daily bump.
Message-ID: <20260521001655.E22704BB3BF3@sourceware.org>

https://gcc.gnu.org/g:b63a5e545fce98588f763fd1239adca9b81a58e5

commit r17-634-gb63a5e545fce98588f763fd1239adca9b81a58e5
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu May 21 00:16:26 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 112 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/algol68/ChangeLog   |   7 +++
 gcc/analyzer/ChangeLog  |   6 +++
 gcc/fortran/ChangeLog   |   7 +++
 gcc/testsuite/ChangeLog |  68 +++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  16 +++++++
 7 files changed, 217 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 00dec46427aa..a68d5afee2d0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,115 @@
+2026-05-20  Shivam Gupta  <shivam98.tkg@gmail.com>
+
+	PR tree-optimization/112533
+	* match.pd: Add integral narrowing eq/ne to XOR-against-zero
+	rule for (T)(x) == (T)(y) where precision(T) < precision(x).
+
+2026-05-20  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* cselib.h (references_value_p): Remove only_useless parameter.
+	* cselib.cc (references_value_p): Likewise.  Use rtx iterators.
+	(invariant_or_equiv_p): Update accordingly.
+	* postreload.cc (reload_cse_simplify_set): Likewise.
+	* var-tracking.cc (reverse_op): Likewise.
+
+2026-05-20  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* cselib.h (cselib_val::HASH_MASK): New static constant.
+	(cselib_val::hash): Turn into a 30-bit bitfield.
+	(cselib_val::in_preserved_table_p): New bitfield.
+	(cselib_val::all_locs_preserved_p): Likewise.
+	* cselib.cc: Include rtl-iter.h.
+	(cselib_preserved_prune_list): New variable.
+	(cselib_clear_all_locs_preserved): New function.
+	(new_elt_loc_list): Call it when modifying a value's location list.
+	(preserve_constants_and_equivs): Set in_preserved_table_p when
+	moving a value to the preserved hash table.  Also push such values
+	onto cselib_preserved_prune_list.
+	(cselib_find_slot): Mask out the upper 2 bits of the hash.
+	(discard_useless_locs): New overload, split out from original
+	hash table traverse callback.  Use an inline rtl iteration
+	instead of calling references_value_p.  Record whether the
+	retained location only reference preserved value.
+	(remove_useless_values): Iterate over cselib_preserved_prune_list
+	instead of the hash table itself.  Remove a value from the list
+	if all remaining locations only reference preserved value.
+	(new_cselib_val): Initialize the new bitfields.
+	(cselib_finish): Free cselib_preserved_prune_list.
+
+2026-05-20  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* cselib.cc (new_elt_loc_list): Cache CSELIB_VAL_PTR.
+
+2026-05-20  Nathan Sidwell  <nathan@acm.org>
+
+	* config/riscv/riscv-builtins.cc (enum riscv_builtin_type): Delete.
+	(struct riscv_builtin_description): Replace builtin_type by bool.
+	Reorder fields for better packing.
+	(RISCV_BUILTIN_NO_PREFIX): Remove BUILTIN_TYPE arg.
+	(RISCV_BUILTIN): Likewise, call RISCV_BUILTIN_NO_PREFIX.
+	(DIRECT_BUILTIN): Adjust RISCV_BUILTIN invocation.
+	(DIRECT_NO_TARGET_BUILTIN): Delete.
+	(riscv_builtins): Make non-constant. Adjust initializers.
+	(riscv_init_builtins): Compute no_target from function type.
+	(riscv_expand_builtin): Simplify.
+	* config/riscv/andes.def: Adjust.
+	* config/riscv/corev.def: Adjust.
+	* config/riscv/riscv-cmo.def: Adjust.
+	* config/riscv/riscv-scalar-crypto.def: Adjust.
+
+2026-05-20  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/x86-tune.def (X86_TUNE_SHIFT1): Remove.
+	* config/i386/i386.h (TARGET_SHIFT1): Remove.
+	* config/i386/i386.md (*ashl<mode>3_1<nf_name>): Remove
+	TARGET_SHIFT1-gated implicit-1 encoding and simplify
+	length_immediate attribute.
+	(*ashlsi3_1_zext): Likewise.
+	(*ashlhi3_1<nf_name>): Likewise.
+	(*ashlqi3_1<nf_name>): Likewise.
+	(*ashl<mode>3_1_slp): Likewise.
+	(*ashl<mode>3_cmp): Likewise.
+	(*ashlsi3_cmp): Likewise.
+	(*<any_shiftrt:insn><mode>3_1<nf_name>): Likewise.
+	(*<any_shiftrt:insn>si3_1_zext): Likewise.
+	(*<any_shiftrt:insn><mode>3_1_slp): Likewise.
+	(*<any_shiftrt:insn><mode>3_cconly): Likewise.
+	(*<any_shiftrt:insn>qi_ext<mode>_1): Likewise.
+	(<any_shiftrt:insn><mode>3_carry): Likewise.
+
+2026-05-20  Michiel Derhaeg  <michiel@synopsys.com>
+
+	PR target/115650
+	* config/arc/arc.cc (legitimate_small_data_address_p): Check
+	offset size.
+
+2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125373
+	* config/i386/i386.md
+	(Convert imul by three, five and nine into lea define_peephole2s): Use
+	index_reg_operand instead of register_operand.
+
+2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125357
+	* config/i386/i386-expand.cc (ix86_expand_vec_perm): For TARGET_AVX
+	one_operand_shuffle handle also V2DImode and V2DFmode using
+	vpaddq and vpermilpd.
+
+2026-05-20  liuhongt  <hongtao.liu@intel.com>
+
+	* tree-ssa-loop-unswitch.cc (estimate_loop_insns): New function.
+	(init_loop_unswitch_info): Do not select an outer loop for
+	unswitching when the duplicated outer-body size exceeds
+	param_max_unswitch_insns.
+
+2026-05-20  Zhou Qiankang  <wszqkzqk@qq.com>
+
+	PR target/125362
+	* config/loongarch/t-loongarch (TM_H): Add
+	common/config/loongarch/cpu-features.h.
+
 2026-05-19  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
 
 	PR target/123748
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 25622053d367..49fefbb3d21d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260520
+20260521
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index f6940d093582..268493835ceb 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-20  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* a68-parser-prelude.cc (gnu_prelude): Map FLOOR(L real):L int
+	to ENTIER(L real):L int.
+	* ga68.texi: Add a section for real operators in the Extended
+	prelude chapter and document FLOOR.
+
 2026-05-10  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* a68-parser-taxes.cc (is_mappable_routine): Remove handling of
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 87b9a8e4ea09..174ec5964a1e 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-20  David Malcolm  <dmalcolm@redhat.com>
+
+	* region-model-manager.cc
+	(region_model_manager::maybe_fold_binop): Fold
+	"(X POINTER_PLUS Y) POINTER_DIFF_EXPR X" to Y.
+
 2026-05-19  David Malcolm  <dmalcolm@redhat.com>
 
 	PR analyzer/125304
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 0cd6f3e9a289..a7837d18a4f0 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* frontend-passes.cc (create_var): Set attr->automatic on
+	new symbol.
+	(create_do_loop): Likewise on iteration variable.
+
 2026-05-19  Julian Brown  <julian@codesourcery.com>
 	    Tobias Burnus  <tburnus@baylibre.com>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 98a479522825..4accee3b91c6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,71 @@
+2026-05-20  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* algol68/execute/entier-1.a68: Add test for FLOOR = ENTIER.
+	* algol68/compile/floor-1.a68: New test.
+
+2026-05-20  Shivam Gupta  <shivam98.tkg@gmail.com>
+
+	PR tree-optimization/112533
+	* gcc.dg/tree-ssa/narrow-bool-eq.c: New test.
+	* gcc.dg/tree-ssa/narrow-integral-eq.c: New test.
+	* gcc.dg/tree-ssa/narrow-short-eq.c: New test.
+	* gcc.dg/tree-ssa/narrow-float-eq.c: New test.
+
+2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* gfortran.dg/inline_matmul_27.f90: New test.
+
+2026-05-20  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/125236
+	* g++.dg/analyzer/torture/README.txt: New.
+	* g++.dg/analyzer/torture/std-string-ctor-large-literal.C: New
+	test.
+	* g++.dg/analyzer/torture/std-string-ctor-small-literal.C: New
+	test.
+	* g++.dg/analyzer/torture/std-string-default-ctor.C: New test.
+	* g++.dg/analyzer/torture/std-unique-ptr-1.C: New test.
+
+2026-05-20  David Malcolm  <dmalcolm@redhat.com>
+
+	* c-c++-common/analyzer/ptr-subtraction-2.c: New test.
+
+2026-05-20  David Malcolm  <dmalcolm@redhat.com>
+
+	PR analyzer/125304
+	* g++.dg/analyzer/torture/std-string-pr125304.C: New test.
+
+2026-05-20  David Malcolm  <dmalcolm@redhat.com>
+
+	* g++.dg/analyzer/torture/analyzer-torture.exp: New script.
+
+2026-05-20  Michiel Derhaeg  <michiel@synopsys.com>
+
+	PR target/115650
+	* gcc.target/arc/sdata-6.c: New test.
+
+2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125373
+	* gcc.c-torture/compile/pr125373.c: New test.
+
+2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125357
+	* gcc.target/i386/avx-pr125357-2.c: New test.
+	* gcc.target/i386/avx2-pr125357-2.c: New test.
+
+2026-05-20  liuhongt  <hongtao.liu@intel.com>
+
+	* gcc.dg/loop-unswitch-19.c: New test.
+
+2026-05-20  Kito Cheng  <kito.cheng@sifive.com>
+
+	* gcc.dg/crc-builtin-rev-target32.c: Match the new
+	"emitting reversed crc table" dump message.
+	* gcc.dg/crc-builtin-rev-target64.c: Likewise.
+
 2026-05-19  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
 
 	* gcc.target/aarch64/pr123748.c: Use "long long" instead of "long".
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8fc038268c70..866d38c9b561 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,19 @@
+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.

From gccadmin@gcc.gnu.org  Thu May 21 00:19:47 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 21 May 2026 00:19:47 +0000 (GMT)
Subject: [gcc r15-11189] Daily bump.
Message-ID: <20260521001947.9DA1A4BA2E11@sourceware.org>

https://gcc.gnu.org/g:d816e81ef14f9ae71dea003b80eb574c05e8aa45

commit r15-11189-gd816e81ef14f9ae71dea003b80eb574c05e8aa45
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu May 21 00:19:18 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 24 ++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   |  7 +++++++
 gcc/testsuite/ChangeLog | 13 +++++++++++++
 libstdc++-v3/ChangeLog  | 25 +++++++++++++++++++++++++
 5 files changed, 70 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2e458a6952c9..79f2929327dc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-20  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-05-08  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125049
+	* config/loongarch/predicates.md (ssp_operand): New
+	define_predicate.
+	(ssp_normal_operand): New define_predicate.
+	* config/loongarch/constraints.md (ZE): New define_constraint.
+	(ZF): New define_constraint.
+	* config/loongarch/loongarch.md (UNSPEC_SSP): New unspec.
+	(cbranch4): Add "@" to create gen_cbranch4(machine_mode, ...).
+	(@stack_protect_combined_set_normal_<mode>): New define_insn.
+	(@stack_protect_combined_set_extreme_<mode>): New define_insn.
+	(@stack_protect_combined_test_internal_<mode>): New define_insn.
+	(stack_protect_combined_set): New define_expand.
+	(stack_protect_combined_test): New define_expand.
+	* config/loongarch/loongarch-protos.h
+	(loongarch_output_asm_load_canary): Declare.
+	* config/loongarch/loongarch.cc (loongarch_print_operand): Allow
+	'v' to print d/w for DImode/SImode.
+	(loongarch_output_asm_load_canary): Implement.
+
 2026-05-19  Andi Kleen  <ak@gcc.gnu.org>
 
 	PR target/125351
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 25622053d367..49fefbb3d21d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260520
+20260521
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 663ccc579e05..5cb0ac84b3b7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/115260
+	* trans-expr.cc (gfc_conv_subref_array_arg): Pass false to
+	dealloc argument of gfc_trans_scalar_assign if we are
+	converting a g77-style argument.
+
 2026-05-19  Andre Vehreschild  <vehre@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a58b7d9c648d..e3576922e316 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2026-05-20  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-05-08  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125049
+	* gcc.target/loongarch/pr125049.c: New test.
+
+2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/115260
+	* gfortran.dg/pr115260.f90: New test.
+
 2026-05-19  Andre Vehreschild  <vehre@gcc.gnu.org>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0f3c77833e47..a6c6ddd62298 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,28 @@
+2026-05-20  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	* src/c++20/tzdata.zi: Import new file from 2026b release.
+
+2026-05-20  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
+	Reduce iterations for debug mode.
+
+2026-05-20  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-14  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From tkaminsk@gcc.gnu.org  Thu May 21 07:08:00 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 21 May 2026 07:08:00 +0000 (GMT)
Subject: [gcc r17-636] libstdc++: Support integer-class sized range in
 inplace_vector.
Message-ID: <20260521070800.C7B514BA23D8@sourceware.org>

https://gcc.gnu.org/g:07448319bb645010fac7cc924a2bc287f4f394e9

commit r17-636-g07448319bb645010fac7cc924a2bc287f4f394e9
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 05:25:59 2026 +0200

    libstdc++: Support integer-class sized range in inplace_vector.
    
    Simply cast size of the input range to size_t, after verifying that
    it fits in remaining capacity, and thus in size_t.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/inplace_vector            |  12 ++-
 .../inplace_vector/cons/from_range.cc              |  59 +++++++++++-
 .../inplace_vector/modifiers/assign.cc             |  55 ++++++++++-
 .../inplace_vector/modifiers/multi_insert.cc       | 106 +++++++++++++++++++--
 4 files changed, 219 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/include/std/inplace_vector b/libstdc++-v3/include/std/inplace_vector
index 5ad92332a02c..0096bd83a175 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -248,9 +248,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	{
 	  if constexpr (ranges::forward_range<_Rg> || ranges::sized_range<_Rg>)
 	    {
-	      const auto __sz = ranges::distance(__rg);
-	      if (__sz > _Nm)
+	      const auto __len = ranges::distance(__rg);
+	      if (__len > _Nm)
 		__throw_bad_alloc();
+
+	      const size_t __sz = size_t(__len);
 	      if (__sz <= size())
 		{
 		  ranges::copy_n(ranges::begin(__rg), __sz, data());
@@ -523,9 +525,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	{
 	  if constexpr (ranges::forward_range<_Rg> || ranges::sized_range<_Rg>)
 	    {
-	      const auto __sz = ranges::distance(__rg);
-	      if (__sz > (_Nm - size()))
+	      const auto __len = ranges::distance(__rg);
+	      if (__len > (_Nm - size()))
 		__throw_bad_alloc();
+
+	      const size_t __sz = size_t(__len);
 	      // Bounded on output range due PR121143
 	      ranges::uninitialized_copy(
 		ranges::begin(__rg), unreachable_sentinel,
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
index b79434dd1119..b30fc04e4cdd 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
@@ -2,6 +2,7 @@
 
 #include <inplace_vector>
 
+#include <ranges>
 #include <span>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
@@ -77,7 +78,7 @@ test_iterators()
   do_test_it<int, input_iterator_wrapper>();
   do_test_it<int, forward_iterator_wrapper>();
   do_test_it<int, random_access_iterator_wrapper>();
-  
+
   do_test_it<short, forward_iterator_wrapper>();
   return true;
 }
@@ -108,7 +109,7 @@ do_test_r()
     return;
   }
 #endif
-  
+
   try
   {
     std::inplace_vector<V, 5> v9(std::from_range, Range(a, a+9));
@@ -161,11 +162,65 @@ test_ranges()
   return true;
 }
 
+template<typename T>
+constexpr void
+test_iota()
+{
+  T a[]{1,2,3,4,5,6,7,8,9,10};
+
+  std::inplace_vector<T, 10> v1(
+    std::from_range, std::views::iota(T(1), T(11)));
+  VERIFY( eq<T>(v1, {a, a+10}) );
+
+  std::inplace_vector<T, 10> v2(
+    std::from_range,
+    std::views::iota(T(1))
+    | std::views::as_input
+    | std::views::take_while([](T t) { return t <= 10; }));
+  VERIFY( eq<T>(v2, {a, a+10}) );
+
+#ifdef __cpp_exceptions
+#ifndef __cpp_lib_constexpr_exceptions
+  if consteval {
+    return;
+  }
+#endif
+  constexpr T max = std::numeric_limits<T>::max();
+  try
+  {
+    std::inplace_vector<T, 10> v(
+      std::from_range, std::views::iota(T(0), max));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+
+  try
+  {
+    std::inplace_vector<T, 10> v(
+      std::from_range,
+      std::views::iota(T(0))
+      | std::views::as_input
+      | std::views::take_while([](T t) { return t < 15; }));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+#endif
+}
+
 int main()
 {
   auto test_all = [] {
     test_iterators();
     test_ranges();
+
+    test_iota<long long>();
+#ifdef __SIZEOF_INT128__
+    test_iota<__int128>();
+#endif
     return true;
   };
 
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc
index c1d867ee1d41..577c10477086 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc
@@ -2,6 +2,7 @@
 
 #include <inplace_vector>
 
+#include <ranges>
 #include <span>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
@@ -353,6 +354,53 @@ test_assigns()
   test_resize<T>();
 }
 
+template<typename T>
+constexpr void
+test_iota()
+{
+  T a[]{1,2,3,4,5,6,7,8,9,10};
+
+  std::inplace_vector<T, 10> v;
+  v.assign_range(std::views::iota(T(1), T(11)));
+  VERIFY( eq<T>(v, {a, a+10}) );
+
+  v.assign_range(
+    std::views::iota(T(1))
+    | std::views::as_input
+    | std::views::take_while([](T t) { return t <= 10; }));
+  VERIFY( eq<T>(v, {a, a+10}) );
+
+#ifdef __cpp_exceptions
+#ifndef __cpp_lib_constexpr_exceptions
+  if consteval {
+    return;
+  }
+#endif
+  constexpr T max = std::numeric_limits<T>::max();
+  try
+  {
+    v.assign_range(std::views::iota(T(0), max));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+  VERIFY( eq<T>(v, {a, 10}) );
+
+  try
+  {
+    v.assign_range(
+      std::views::iota(T(0))
+      | std::views::as_input
+      | std::views::take_while([](T t) { return t < 15; }));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+#endif
+}
+
 int main()
 {
   auto test_all = [] {
@@ -368,10 +416,15 @@ int main()
       test_assign_empty<2, X>();
       test_assigns<X>();
     }
+
+    test_iota<long long>();
+#ifdef __SIZEOF_INT128__
+    test_iota<__int128>();
+#endif
+
     return true;
   };
 
-
   test_all();
   static_assert(test_all());
 }
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
index e5a482cdc65d..bde66847a34c 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
@@ -2,6 +2,7 @@
 
 #include <inplace_vector>
 
+#include <ranges>
 #include <span>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
@@ -506,6 +507,8 @@ test_insert_repeated()
 #endif
 }
 
+
+
 template<typename T>
 constexpr void
 test_inserts()
@@ -526,16 +529,102 @@ test_inserts()
   test_insert_iterators<T, forward_iterator_wrapper>();
   test_insert_iterators<T, random_access_iterator_wrapper>();
 
-test_insert_initializer_list<T>();
-test_insert_repeated<T>();
+  test_insert_initializer_list<T>();
+  test_insert_repeated<T>();
+}
+
+template<typename T>
+constexpr void
+test_iota()
+{
+  T a[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+
+  std::inplace_vector<T, 20> v;
+  auto it = v.insert_range(v.begin(), std::views::iota(T(1), T(11)));
+  VERIFY( eq<T>(v, {a, a+10}) );
+  VERIFY( it == v.begin() );
+
+  v.append_range(std::views::iota(T(11), T(16)));
+  VERIFY( eq<T>(v, {a, 15}) );
+
+  v.clear();
+  it = v.insert_range(v.begin(),
+    std::views::iota(T(1))
+    | std::views::as_input
+    | std::views::take_while([](T t) { return t <= 10; }));
+  VERIFY( eq<T>(v, {a, a+10}) );
+  VERIFY( it == v.begin() );
+
+  v.append_range(
+    std::views::iota(T(11))
+    | std::views::as_input
+    | std::views::take_while([](T t) { return t <= 15; }));
+  VERIFY( eq<T>(v, {a, 15}) );
+
+#ifdef __cpp_exceptions
+#ifndef __cpp_lib_constexpr_exceptions
+  if consteval {
+    return;
+  }
+#endif
+  constexpr T max = std::numeric_limits<T>::max();
+  try
+  {
+    v.insert_range(v.end(), std::views::iota(T(0), max));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+  VERIFY( eq<T>(v, {a, 15}) );
+
+  try
+  {
+    v.append_range(std::views::iota(T(0), max));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+  VERIFY( eq<T>(v, {a, 15}) );
+
+  auto vc = v;
+  try
+  {
+    vc.insert_range(vc.end(),
+      std::views::iota(T(1))
+      | std::views::as_input
+      | std::views::take_while([](T t) { return t <= 20; }));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+  VERIFY( prefix<T>(vc, {a, 15}) );
+
+  vc = v;
+  try
+  {
+    vc.append_range(
+      std::views::iota(T(1))
+      | std::views::as_input
+      | std::views::take_while([](T t) { return t <= 20; }));
+    VERIFY(false);
+  }
+  catch (std::bad_alloc const&)
+  {
+  }
+  VERIFY( prefix<T>(vc, {a, 15}) );
+
+#endif
 }
 
 int main()
 {
-auto test_all = []{
-  test_add_to_full<0, int>();
-  test_add_to_full<0, X>();
-  test_add_to_full<4, int>();
+  auto test_all = []{
+    test_add_to_full<0, int>();
+    test_add_to_full<0, X>();
+    test_add_to_full<4, int>();
 
     test_inserts<int>();
 #ifdef __cpp_lib_constexpr_inplace_vector
@@ -545,6 +634,11 @@ auto test_all = []{
       test_add_to_full<4, X>();
       test_inserts<X>();
     }
+
+    test_iota<long long>();
+#ifdef __SIZEOF_INT128__
+    test_iota<__int128>();
+#endif
     return true;
   };

From redi@gcc.gnu.org  Thu May 21 09:05:43 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 09:05:43 +0000 (GMT)
Subject: [gcc r17-638] libstdc++: Restore allocator constructor for
 std::packaged_task (P3503R3)
Message-ID: <20260521090543.CC7CA4BAE7E5@sourceware.org>

https://gcc.gnu.org/g:2ba702c966e3772d3d4e29e4b25beb7ef4dabf73

commit r17-638-g2ba702c966e3772d3d4e29e4b25beb7ef4dabf73
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 23:45:03 2026 +0100

    libstdc++: Restore allocator constructor for std::packaged_task (P3503R3)
    
    WG21 approved P3503R3 (by me and Nicolas Morales) in Sofia, 2025. The
    change is to make std::promise and std::packaged_task be constructible
    with an allocator, but not to support general uses-allocator
    construction. So they do not have specializations of std::uses_allocator
    and do not have an allocator-extended version of every normal
    constructor (i.e., no allocator-extended move constructors and for
    std::packaged_task, no allocator-extended default constructor).
    
    Since the changes were originally proposed as resolutions to LWG 2095
    and LWG 3003, this treats the change as a DR for all standard versions
    from C++11 up. This means the constructor semantics are consistent (and
    sensible) for all standard versions.
    
    Because I pre-emptively implemented the original resolution of LWG 2095
    (in r0-112872-g376d7c51ece6f8), we need to remove the allocator-extended
    constructors of std::promise and std::packaged_task which I added but
    which are not in the working draft after the P3503R3 changes.
    
    To restore the packaged_task(allocator_arg_t, const Alloc&, F&&)
    constructor that was removed by LWG 2921 we just need to remove the #if
    that disabled it for C++17 and later.
    
    Finally, we need to remove the std::uses_allocator partial
    specialization for std::promise (removed by P3503R3) and the one for
    std::packaged_task (already disabled for C++17 and later by LWG 2976).
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/html/index.html                   |  2 +-
 libstdc++-v3/doc/html/manual/api.html              |  4 ++
 libstdc++-v3/doc/html/manual/appendix.html         |  2 +-
 libstdc++-v3/doc/html/manual/appendix_porting.html |  2 +-
 libstdc++-v3/doc/html/manual/index.html            |  2 +-
 libstdc++-v3/doc/xml/manual/evolution.xml          |  8 +++
 libstdc++-v3/include/std/future                    | 76 ++++------------------
 .../30_threads/packaged_task/uses_allocator.cc     |  6 +-
 .../testsuite/30_threads/promise/uses_allocator.cc |  4 +-
 9 files changed, 34 insertions(+), 72 deletions(-)

diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html
index 782f3bbc299c..857de004c951 100644
--- a/libstdc++-v3/doc/html/index.html
+++ b/libstdc++-v3/doc/html/index.html
@@ -142,7 +142,7 @@
     Existing tests
 </a></span></dt><dt><span class="section"><a href="manual/test.html#test.exception.safety.containers">
 C++11 Requirements Test Sequence Descriptions
-</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
+</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_16"><code class="constant">16</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_17"><code class="constant">17</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
 </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.streamattach">
 No <code class="code">stream::attach(int fd)</code>
 </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.support_cxx98">
diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html
index f004ddc166d8..4fce14127ef8 100644
--- a/libstdc++-v3/doc/html/manual/api.html
+++ b/libstdc++-v3/doc/html/manual/api.html
@@ -515,4 +515,8 @@ Deprecated the non-standard overload of <code class="code">std::fabs</code> for
 </p><p>
 Made <code class="code">std::is_integral_v&lt;__int128&gt;</code> true for strict
 <code class="code">-std</code> dialects.
+</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_17"></a><code class="constant">17</code></h3></div></div></div><p>
+Removed allocator-extended constructors and support for uses-allocator
+construction from <code class="classname">std::promise</code> and
+<code class="classname">std::packaged_task</code>.
 </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="abi.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ABI Policy and Guidelines?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Backwards Compatibility</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/appendix.html b/libstdc++-v3/doc/html/manual/appendix.html
index e71ea5423a0a..bb9184bcb217 100644
--- a/libstdc++-v3/doc/html/manual/appendix.html
+++ b/libstdc++-v3/doc/html/manual/appendix.html
@@ -16,7 +16,7 @@
     Existing tests
 </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
 C++11 Requirements Test Sequence Descriptions
-</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
+</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_17"><code class="constant">17</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
 No <code class="code">stream::attach(int fd)</code>
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html
index dc46db3086a6..028c766b5345 100644
--- a/libstdc++-v3/doc/html/manual/appendix_porting.html
+++ b/libstdc++-v3/doc/html/manual/appendix_porting.html
@@ -14,7 +14,7 @@
     Existing tests
 </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
 C++11 Requirements Test Sequence Descriptions
-</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
+</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_17"><code class="constant">17</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
 No <code class="code">stream::attach(int fd)</code>
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html
index fb61205678f2..8a13efcfbc45 100644
--- a/libstdc++-v3/doc/html/manual/index.html
+++ b/libstdc++-v3/doc/html/manual/index.html
@@ -123,7 +123,7 @@
     Existing tests
 </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
 C++11 Requirements Test Sequence Descriptions
-</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
+</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_17"><code class="constant">17</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
 No <code class="code">stream::attach(int fd)</code>
 </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml
index 911db8a7538b..2ebdebc98204 100644
--- a/libstdc++-v3/doc/xml/manual/evolution.xml
+++ b/libstdc++-v3/doc/xml/manual/evolution.xml
@@ -1164,4 +1164,12 @@ Made <code>std::is_integral_v&lt;__int128&gt;</code> true for strict
 </para>
 </section>
 
+<section xml:id="api.rel_17"><info><title><constant>17</constant></title></info>
+<para>
+Removed allocator-extended constructors and support for uses-allocator
+construction from <classname>std::promise</classname> and
+<classname>std::packaged_task</classname>.
+</para>
+</section>
+
 </section>
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index 693c52037b52..96a852e60cdc 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -52,7 +52,6 @@
 #include <bits/shared_ptr.h>
 #include <bits/std_function.h>
 #include <bits/std_thread.h>
-#include <bits/uses_allocator.h>
 #include <ext/aligned_buffer.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -1112,22 +1111,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_M_storage(new _Res_type())
       { }
 
-      promise(promise&& __rhs) noexcept
-      : _M_future(std::move(__rhs._M_future)),
-	_M_storage(std::move(__rhs._M_storage))
-      { }
-
       template<typename _Allocator>
 	promise(allocator_arg_t, const _Allocator& __a)
 	: _M_future(std::allocate_shared<_State>(__a)),
 	  _M_storage(__future_base::_S_allocate_result<_Res>(__a))
 	{ }
 
-      template<typename _Allocator>
-	promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
-	: _M_future(std::move(__rhs._M_future)),
-	  _M_storage(std::move(__rhs._M_storage))
-	{ }
+      promise(promise&& __rhs) noexcept
+      : _M_future(std::move(__rhs._M_future)),
+	_M_storage(std::move(__rhs._M_storage))
+      { }
 
       promise(const promise&) = delete;
 
@@ -1207,11 +1200,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     swap(promise<_Res>& __x, promise<_Res>& __y) noexcept
     { __x.swap(__y); }
 
-  template<typename _Res, typename _Alloc>
-    struct uses_allocator<promise<_Res>, _Alloc>
-    : public true_type { };
-
-
   /// Partial specialization for promise<R&>
   template<typename _Res>
     class promise<_Res&>
@@ -1231,22 +1219,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_M_storage(new _Res_type())
       { }
 
-      promise(promise&& __rhs) noexcept
-      : _M_future(std::move(__rhs._M_future)),
-	_M_storage(std::move(__rhs._M_storage))
-      { }
-
       template<typename _Allocator>
 	promise(allocator_arg_t, const _Allocator& __a)
 	: _M_future(std::allocate_shared<_State>(__a)),
 	  _M_storage(__future_base::_S_allocate_result<_Res&>(__a))
 	{ }
 
-      template<typename _Allocator>
-	promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
-	: _M_future(std::move(__rhs._M_future)),
-	  _M_storage(std::move(__rhs._M_storage))
-	{ }
+      promise(promise&& __rhs) noexcept
+      : _M_future(std::move(__rhs._M_future)),
+	_M_storage(std::move(__rhs._M_storage))
+      { }
 
       promise(const promise&) = delete;
 
@@ -1329,24 +1311,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_M_storage(new _Res_type())
       { }
 
-      promise(promise&& __rhs) noexcept
-      : _M_future(std::move(__rhs._M_future)),
-	_M_storage(std::move(__rhs._M_storage))
-      { }
-
       template<typename _Allocator>
 	promise(allocator_arg_t, const _Allocator& __a)
 	: _M_future(std::allocate_shared<_State>(__a)),
 	  _M_storage(__future_base::_S_allocate_result<void>(__a))
 	{ }
 
-      // _GLIBCXX_RESOLVE_LIB_DEFECTS
-      // 2095.  missing constructors needed for uses-allocator construction
-      template<typename _Allocator>
-	promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
-	: _M_future(std::move(__rhs._M_future)),
-	  _M_storage(std::move(__rhs._M_storage))
-	{ }
+      promise(promise&& __rhs) noexcept
+      : _M_future(std::move(__rhs._M_future)),
+	_M_storage(std::move(__rhs._M_storage))
+      { }
 
       promise(const promise&) = delete;
 
@@ -1575,33 +1549,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _M_state(_Task_state<_Fn>::_S_create(std::forward<_Fn>(__fn), {}))
 	{ }
 
-#if __cplusplus < 201703L
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 2097. packaged_task constructors should be constrained
       // 2407. [this constructor should not be] explicit
       // 2921. packaged_task and type-erased allocators
+      // 3003. <future> still has type-erased allocators in promise
       template<typename _Fn, typename _Alloc, typename = __not_same<_Fn>>
 	packaged_task(allocator_arg_t, const _Alloc& __a, _Fn&& __fn)
 	: _M_state(_Task_state<_Fn, _Alloc>::_S_create(std::forward<_Fn>(__fn),
 						       __a))
 	{ }
 
-      // _GLIBCXX_RESOLVE_LIB_DEFECTS
-      // 2095.  missing constructors needed for uses-allocator construction
-      template<typename _Allocator>
-	packaged_task(allocator_arg_t, const _Allocator&) noexcept
-	{ }
-
-      template<typename _Allocator>
-	packaged_task(allocator_arg_t, const _Allocator&,
-		      const packaged_task&) = delete;
-
-      template<typename _Allocator>
-	packaged_task(allocator_arg_t, const _Allocator&,
-		      packaged_task&& __other) noexcept
-	{ this->swap(__other); }
-#endif
-
       ~packaged_task()
       {
 	if (static_cast<bool>(_M_state) && !_M_state.unique())
@@ -1678,14 +1636,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	 packaged_task<_Res(_ArgTypes...)>& __y) noexcept
     { __x.swap(__y); }
 
-#if __cplusplus < 201703L
-  // _GLIBCXX_RESOLVE_LIB_DEFECTS
-  // 2976. Dangling uses_allocator specialization for packaged_task
-  template<typename _Res, typename _Alloc>
-    struct uses_allocator<packaged_task<_Res>, _Alloc>
-    : public true_type { };
-#endif
-
   /// @cond undocumented
 
   // Shared state created by std::async().
diff --git a/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc b/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
index c9b9f088f2f8..3b458a341bbc 100644
--- a/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
+++ b/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
@@ -1,4 +1,4 @@
-// { dg-do compile { target { c++11_only || c++14_only } } }
+// { dg-do compile { target c++11 } }
 // { dg-require-gthreads "" }
 
 // Copyright (C) 2011-2026 Free Software Foundation, Inc.
@@ -25,5 +25,5 @@
 using std::uses_allocator;
 using std::allocator;
 using std::packaged_task;
-static_assert( uses_allocator<packaged_task<int()>, allocator<int>>::value,
-               "packaged_task supports uses-allocator construction" );
+static_assert( ! uses_allocator<packaged_task<int()>, allocator<int>>::value,
+               "packaged_task does not support uses-allocator construction" );
diff --git a/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc b/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
index 398d4f108b60..1233ef47a3ad 100644
--- a/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
+++ b/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
@@ -25,5 +25,5 @@
 using std::uses_allocator;
 using std::allocator;
 using std::promise;
-static_assert( uses_allocator<promise<int>, allocator<int>>::value,
-               "promise supports uses-allocator construction" );
+static_assert( ! uses_allocator<promise<int>, allocator<int>>::value,
+               "promise does not support uses-allocator construction" );

From redi@gcc.gnu.org  Thu May 21 12:04:14 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 12:04:14 +0000 (GMT)
Subject: [gcc r14-12618] libstdc++: Make chrono::parse fail for bad %z
 [PR125369]
Message-ID: <20260521120414.7BB8E4BA23E4@sourceware.org>

https://gcc.gnu.org/g:46b74a7b248545312346b9a924d25ceb4bada80a

commit r14-12618-g46b74a7b248545312346b9a924d25ceb4bada80a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 18 15:44:21 2026 +0100

    libstdc++: Make chrono::parse fail for bad %z [PR125369]
    
    The chrono parsing code failed to check for errors when parsing input to
    match %z. The expected input is [+-]hh[mm] but if we read less than two
    valid digits for the hh or mm parts we didn't set failbit in the stream,
    and used the -1 error values returned for each bad digit in the offset
    value. This resulted in a "successful" parse that produced a value like
    -11h or -11min for the time zone offset.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 11a1cf805aac7b7db21bd2ea6cc22a69f5aa92f9)

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h           | 16 ++++--
 libstdc++-v3/testsuite/std/time/parse/125369.cc | 65 +++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 6b3f361f8294..6e398a4ad3dd 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -3943,8 +3943,12 @@ namespace __detail
 		      else
 			{
 			  // Read hh
-			  __hh = 10 * _S_try_read_digit(__is, __err);
-			  __hh += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __hh = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (__is_failed(__err))
@@ -3978,8 +3982,12 @@ namespace __detail
 		      int_least32_t __mm = 0;
 		      if (__read_mm)
 			{
-			  __mm = 10 * _S_try_read_digit(__is, __err);
-			  __mm += _S_try_read_digit(__is, __err);
+			  auto __d1 = _S_try_read_digit(__is, __err);
+			  auto __d2 = _S_try_read_digit(__is, __err);
+			  if (__d1 >= 0 && __d2 >= 0) [[likely]]
+			    __mm = 10 * __d1 + __d2;
+			  else
+			    __err |= ios_base::failbit;
 			}
 
 		      if (!__is_failed(__err))
diff --git a/libstdc++-v3/testsuite/std/time/parse/125369.cc b/libstdc++-v3/testsuite/std/time/parse/125369.cc
new file mode 100644
index 000000000000..719c56dc9282
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/parse/125369.cc
@@ -0,0 +1,65 @@
+// { dg-do run { target c++20 } }
+
+#include <chrono>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+using namespace std::chrono;
+
+const std::string input = "2026-05-18 15:26:48 ";
+const std::string fmt = "%F %T %";
+sys_seconds ss;
+minutes offset{};
+std::string abbrev;
+
+void
+test_parse_z()
+{
+  for (auto suffix : {"Z", "+", "+Z", "-A", "+1Z", "+010", "+010Z"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "z").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Ez()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Ez").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+void
+test_parse_Oz()
+{
+  for (auto suffix : {"Z", "+", "-", "+01:", "+01:X"})
+  {
+    std::istringstream in{input + suffix};
+    from_stream(in, (fmt + "Oz").c_str(), ss, &abbrev, &offset);
+
+    VERIFY( in.fail() );
+    VERIFY( ss == sys_seconds(0s) );
+    VERIFY( offset == 0min );
+    VERIFY( abbrev.empty() );
+  }
+}
+
+int main()
+{
+  test_parse_z();
+  test_parse_Ez();
+  test_parse_Oz();
+}

From redi@gcc.gnu.org  Thu May 21 12:04:24 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 12:04:24 +0000 (GMT)
Subject: [gcc r14-12619] libstdc++: Update tzdata to 2026b
Message-ID: <20260521120424.DC7404C91750@sourceware.org>

https://gcc.gnu.org/g:ec4e83652f96c5986b6255639246b62b62991406

commit r14-12619-gec4e83652f96c5986b6255639246b62b62991406
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jan 12 16:57:41 2024 +0000

    libstdc++: Update tzdata to 2026b
    
    Import the new 2026b tzdata.zi file.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++20/tzdata.zi: Import new file from 2026b release.
    
    (cherry picked from commit 120d284e9bbb335d0fb5b59b8a019bb4d38bae4b)

Diff:
---
 libstdc++-v3/src/c++20/tzdata.zi | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++20/tzdata.zi b/libstdc++-v3/src/c++20/tzdata.zi
index 88f7d34a3817..530829647034 100644
--- a/libstdc++-v3/src/c++20/tzdata.zi
+++ b/libstdc++-v3/src/c++20/tzdata.zi
@@ -1,4 +1,4 @@
-# version 2026a
+# version 2026b
 # redo posix_only
 # This zic input file is in the public domain.
 R d 1916 o - Jun 14 23s 1 S
@@ -2966,7 +2966,9 @@ Z America/Toronto -5:17:32 - LMT 1895
 -5 C E%sT
 Z America/Vancouver -8:12:28 - LMT 1884
 -8 Va P%sT 1987
--8 C P%sT
+-8 C P%sT 2026 Mar 9
+-8 1 PDT 2026 N 1 2
+-7 - MST
 Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
 -9 Y Y%sT 1965
 -9 Yu Y%sT 1966 F 27

From redi@gcc.gnu.org  Thu May 21 12:04:30 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 12:04:30 +0000 (GMT)
Subject: [gcc r14-12620] libstdc++: Don't test for __unused on Glibc targets
Message-ID: <20260521120430.0A4584B99F54@sourceware.org>

https://gcc.gnu.org/g:0d7fe8a45df5435d91a9cd6e2c7a6010d3fed35c

commit r14-12620-g0d7fe8a45df5435d91a9cd6e2c7a6010d3fed35c
Author: Xi Ruoyao <xry111@xry111.site>
Date:   Thu Feb 12 18:46:05 2026 +0000

    libstdc++: Don't test for __unused on Glibc targets
    
    x86_64 glibc has started to use it since the 2.43 release, but is
    expected to fix it before the 2.44 release.
    
    Link: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b9579342c68b#patch67
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/17_intro/badnames.cc (__unused): Do not define.
            * testsuite/17_intro/names.cc [glibc == 2.43] (__unused): Undef.
    
    Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 1a0b276f69f535244cf8d0983db2ebbc537de536)

Diff:
---
 libstdc++-v3/testsuite/17_intro/badnames.cc | 2 +-
 libstdc++-v3/testsuite/17_intro/names.cc    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/testsuite/17_intro/badnames.cc b/libstdc++-v3/testsuite/17_intro/badnames.cc
index ec76d8e74c0b..df2e8d8ff461 100644
--- a/libstdc++-v3/testsuite/17_intro/badnames.cc
+++ b/libstdc++-v3/testsuite/17_intro/badnames.cc
@@ -67,7 +67,7 @@
 
 // BSD adds:
 #define __used		__used is a BADNAME
-#define __unused	__unused is a BADNAME
+        // __unused	(glibc uses this so can't test here)
         // __inline	(glibc uses this so can't test here)
         // _Complex	(glibc uses this so can't test here)
 #define __istype	__istype is a BADNAME
diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc
index 5b4ad97c724f..b6b833c6255c 100644
--- a/libstdc++-v3/testsuite/17_intro/names.cc
+++ b/libstdc++-v3/testsuite/17_intro/names.cc
@@ -291,7 +291,7 @@
 #if defined (__linux__) || defined (__gnu_hurd__)
 #if __has_include(<features.h>)
 #include <features.h>
-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 19
+#if __GLIBC__ == 2 && (__GLIBC_MINOR__ < 19 || __GLIBC_MINOR__ == 43)
 // Glibc defines this prior to 2.19
 #undef __unused
 #endif

From redi@gcc.gnu.org  Thu May 21 12:04:35 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 12:04:35 +0000 (GMT)
Subject: [gcc r14-12621] libstdc++: Fix unsafe comma operators in <random>
 [PR122062]
Message-ID: <20260521120435.32D334BB3B88@sourceware.org>

https://gcc.gnu.org/g:02a6d25c0e84f76f0c419a671f0837e60e3d8ce2

commit r14-12621-g02a6d25c0e84f76f0c419a671f0837e60e3d8ce2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Sep 25 17:23:28 2025 +0100

    libstdc++: Fix unsafe comma operators in <random> [PR122062]
    
    This fixes a 'for' loop in std::piecewise_linear_distribution that
    increments two iterators with a comma operator between them, making it
    vulnerable to evil overloads of the comma operator.
    
    It also changes a 'for' loop used by some other distributions, even
    though those are only used with std::vector<double>::iterator and so
    won't find any overloaded commas.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/122062
            * include/bits/random.tcc (__detail::__normalize): Use void cast
            for operands of comma operator.
            (piecewise_linear_distribution): Likewise.
            * testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc:
            New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Hewill Kang <hewillk@gmail.com>
    (cherry picked from commit 11ce485bcffac0db005d77e100420535e54d0aa5)

Diff:
---
 libstdc++-v3/include/bits/random.tcc                     |  4 ++--
 .../random/piecewise_linear_distribution/cons/122062.cc  | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index 8216883c448e..d22b6d520419 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -83,7 +83,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __normalize(_InputIterator __first, _InputIterator __last,
 		  _OutputIterator __result, const _Tp& __factor)
       {
-	for (; __first != __last; ++__first, ++__result)
+	for (; __first != __last; ++__first, (void) ++__result)
 	  *__result = *__first / __factor;
 	return __result;
       }
@@ -3075,7 +3075,7 @@ namespace __detail
 		 _InputIteratorW __wbegin)
       : _M_int(), _M_den(), _M_cp(), _M_m()
       {
-	for (; __bbegin != __bend; ++__bbegin, ++__wbegin)
+	for (; __bbegin != __bend; ++__bbegin, (void) ++__wbegin)
 	  {
 	    _M_int.push_back(*__bbegin);
 	    _M_den.push_back(*__wbegin);
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
new file mode 100644
index 000000000000..0f0caa7f89b4
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
@@ -0,0 +1,16 @@
+// { dg-do compile { target c++11 } }
+
+// PR libstdc++/122062
+// piecewise_linear_distribution(firstB, lastB, firstW) invokes comma operator
+
+#include <random>
+#include <testsuite_iterators.h>
+
+void
+test_pr122062()
+{
+  double b[1]{};
+  double w[1]{};
+  __gnu_test::random_access_container<double> B(b), W(w);
+  std::piecewise_linear_distribution<double> p(B.begin(), B.end(), W.begin());
+}

From redi@gcc.gnu.org  Thu May 21 12:28:23 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 12:28:23 +0000 (GMT)
Subject: [gcc r17-647] libstdc++: Deprecate numeric_limits::has_denorm for
 C++23
Message-ID: <20260521122823.5C40C4B920AD@sourceware.org>

https://gcc.gnu.org/g:6a4cfad20b7f7eacb352aed01b6159baa9935f2a

commit r17-647-g6a4cfad20b7f7eacb352aed01b6159baa9935f2a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 19 17:44:44 2026 +0100

    libstdc++: Deprecate numeric_limits::has_denorm for C++23
    
    The paper P2614R2 was approved in Issaquah, 2023. It deprecates the
    float_denorm_style enumeration type, its enumerators, and the
    numeric_limits::has_denorm and numeric_limits::has_denorm_loss static
    data members.
    
    The std/ranges/iota/max_size_type.cc test doesn't get warnings for using
    numeric_limits::has_denorm{,_loss} because of PR c++/125406. If that
    gets fixed, we'll need two new dg-warning lines in that test.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/html/manual/api.html              |  5 ++
 libstdc++-v3/doc/xml/manual/evolution.xml          |  8 +++
 libstdc++-v3/include/bits/max_size_type.h          | 10 ++++
 libstdc++-v3/include/std/limits                    | 59 ++++++++++++++++++++--
 .../18_support/numeric_limits/char16_32_t.cc       |  3 ++
 .../testsuite/18_support/numeric_limits/char8_t.cc |  3 ++
 .../18_support/numeric_limits/denorm_min.cc        |  2 +
 .../testsuite/18_support/numeric_limits/dr559.cc   |  2 +
 .../numeric_limits/requirements/constexpr_data.cc  |  3 ++
 .../specialization_default_values.cc               |  2 +
 .../testsuite/std/ranges/iota/max_size_type.cc     |  2 +
 11 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html
index 4fce14127ef8..2398bf495361 100644
--- a/libstdc++-v3/doc/html/manual/api.html
+++ b/libstdc++-v3/doc/html/manual/api.html
@@ -519,4 +519,9 @@ Made <code class="code">std::is_integral_v&lt;__int128&gt;</code> true for stric
 Removed allocator-extended constructors and support for uses-allocator
 construction from <code class="classname">std::promise</code> and
 <code class="classname">std::packaged_task</code>.
+</p><p>
+<code class="code">std::numeric_limits::has_denorm</code>,
+<code class="code">std::numeric_limits::has_denorm_loss</code>,
+and <code class="code">enum std::float_denorm_style</code> and its enumerators
+were deprecated for C++23.
 </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="abi.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ABI Policy and Guidelines?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Backwards Compatibility</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml
index 2ebdebc98204..8c471cca5b89 100644
--- a/libstdc++-v3/doc/xml/manual/evolution.xml
+++ b/libstdc++-v3/doc/xml/manual/evolution.xml
@@ -1170,6 +1170,14 @@ Removed allocator-extended constructors and support for uses-allocator
 construction from <classname>std::promise</classname> and
 <classname>std::packaged_task</classname>.
 </para>
+
+<para>
+<code>std::numeric_limits::has_denorm</code>,
+<code>std::numeric_limits::has_denorm_loss</code>,
+and <code>enum std::float_denorm_style</code> and its enumerators
+were deprecated for C++23.
+</para>
+
 </section>
 
 </section>
diff --git a/libstdc++-v3/include/bits/max_size_type.h b/libstdc++-v3/include/bits/max_size_type.h
index 042aad10a138..28596f0dd51f 100644
--- a/libstdc++-v3/include/bits/max_size_type.h
+++ b/libstdc++-v3/include/bits/max_size_type.h
@@ -791,9 +791,14 @@ namespace ranges
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
       static constexpr bool tinyness_before = false;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // denorm_absent
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+#pragma GCC diagnostic pop
       static constexpr float_round_style round_style = round_toward_zero;
 
       static constexpr _Sp
@@ -858,9 +863,14 @@ namespace ranges
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
       static constexpr bool tinyness_before = false;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+#pragma GCC diagnostic pop
       static constexpr float_round_style round_style = round_toward_zero;
 
       static constexpr _Dp
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index cfdbe02c844c..4dc9c643bba6 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -45,6 +45,7 @@
 #pragma GCC diagnostic ignored "-Wpedantic" // Q suffix
 #pragma GCC diagnostic ignored "-Wlong-long"
 #pragma GCC diagnostic ignored "-Wc++23-extensions"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // denorm enums
 
 #include <bits/c++config.h>
 
@@ -191,14 +192,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  These values represent the presence or absence of a variable number
    *  of exponent bits.  This type is used in the std::numeric_limits class.
   */
-  enum float_denorm_style
+  enum _GLIBCXX23_DEPRECATED float_denorm_style
   {
     /// Indeterminate at compile time whether denormalized values are allowed.
-    denorm_indeterminate = -1,
+    denorm_indeterminate _GLIBCXX23_DEPRECATED = -1,
     /// The type does not allow denormalized values.
-    denorm_absent        = 0,
+    denorm_absent        _GLIBCXX23_DEPRECATED = 0,
     /// The type allows denormalized values.
-    denorm_present       = 1
+    denorm_present       _GLIBCXX23_DEPRECATED = 1
   };
 
   /**
@@ -275,10 +276,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
 
     /** See std::float_denorm_style for more information.  */
+    _GLIBCXX23_DEPRECATED
     static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
 
     /** True if loss of accuracy is detected as a denormalization loss,
 	rather than as an inexact result. */
+    _GLIBCXX23_DEPRECATED
     static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
     /** True if-and-only-if the type adheres to the IEC 559 standard, also
@@ -431,8 +434,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR bool
@@ -498,8 +503,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR
@@ -566,8 +573,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR signed char
@@ -637,8 +646,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned char
@@ -709,8 +720,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR wchar_t
@@ -773,8 +786,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR char8_t
@@ -838,7 +853,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
 
       static constexpr char16_t
@@ -899,7 +916,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
 
       static constexpr char32_t
@@ -965,8 +984,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR short
@@ -1034,8 +1055,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned short
@@ -1105,8 +1128,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR int
@@ -1174,8 +1199,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned int
@@ -1244,8 +1271,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR long
@@ -1313,8 +1342,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned long
@@ -1386,8 +1417,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR long long
@@ -1456,8 +1489,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned long long
@@ -1525,8 +1560,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;		\
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;		\
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;	\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm	\
 	= denorm_absent;						\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;	\
 									\
       static _GLIBCXX_CONSTEXPR TYPE					\
@@ -1594,8 +1631,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;		\
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;		\
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;	\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm	\
        = denorm_absent; 						\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;	\
 									\
       static _GLIBCXX_CONSTEXPR unsigned TYPE 				\
@@ -1715,8 +1754,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __FLT_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __FLT_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= bool(__FLT_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
        = __glibcxx_float_has_denorm_loss;
 
@@ -1790,8 +1831,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __DBL_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __DBL_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= bool(__DBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
         = __glibcxx_double_has_denorm_loss;
 
@@ -1865,8 +1908,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __LDBL_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __LDBL_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= bool(__LDBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
 	= __glibcxx_long_double_has_denorm_loss;
 
@@ -1958,9 +2003,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	= __glibcxx_concat3 (__FLT, BITSIZE, _HAS_QUIET_NAN__);		\
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN		\
 	= has_quiet_NaN;						\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm	\
 	= bool(__glibcxx_concat3 (__FLT, BITSIZE, _HAS_DENORM__))	\
 	  ? denorm_present : denorm_absent;				\
+      _GLIBCXX23_DEPRECATED						\
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;	\
 									\
       static _GLIBCXX_CONSTEXPR _Float##BITSIZE				\
@@ -2057,8 +2104,10 @@ __glibcxx_float_n(128)
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN
 	= __BFLT16_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= bool(__BFLT16_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR __gnu_cxx::__bfloat16_t
@@ -2157,8 +2206,10 @@ __glibcxx_float_n(128)
 #else
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
 #endif
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
 	= denorm_present;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR __float128
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
index 2c8712c861cd..8bedf48ceb4a 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
@@ -66,6 +66,9 @@ template<typename T, typename R>
     VERIFY( char_type::round_style == impl_type::round_style );
   }
 
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 55 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 56 }
+
 int main()
 {
   do_test<char16_t, std::uint_least16_t>();
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
index e23dbb7adbf6..a114860610e8 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
@@ -63,6 +63,9 @@ template<typename T, typename R>
     VERIFY( char_type::round_style == impl_type::round_style );
   }
 
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 52 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 53 }
+
 int main()
 {
   do_test<char8_t, unsigned char>();
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
index b508d082b8e7..d4113ebf3d8d 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
@@ -43,6 +43,8 @@ test_denorm_min()
 
   VERIFY (test);
 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 36 }
+// { dg-warning "denorm_present' is deprecated" "" { target c++23 } 36 }
 
 int main()
 {
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
index 88c0ca505f28..a329b80fc8e5 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
@@ -65,6 +65,8 @@ template<typename T>
     VERIFY( cv_limits::tinyness_before == limits::tinyness_before );
     VERIFY( cv_limits::round_style == limits::round_style );
   }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 52 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 53 }
 
 template<typename T>
   void
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
index 43985b5b7348..5cd53b35f5ed 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
@@ -88,6 +88,9 @@ namespace __gnu_test
       }
   };
 }
+// { dg-warning "float_denorm_style' is deprecated" "" { target c++23 } 67 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 68 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 70 }
 
 int main()
 {
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
index 1bff0ad7f4d6..63a42bee0e15 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
@@ -78,6 +78,8 @@ void test01()
   VERIFY( !obj.tinyness_before );
   VERIFY( obj.round_style == std::round_toward_zero );
 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 68 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 69 }
 
 // test linkage of the generic bits
 template struct std::numeric_limits<B>;
diff --git a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
index af53718a95b3..d200554cbd16 100644
--- a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
+++ b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
@@ -428,6 +428,8 @@ constexpr bool verify_numeric_limits_values_not_meaningful_for = true
 	&& (numeric_limits<integer_class>::quiet_NaN() == 0)
 	&& (numeric_limits<integer_class>::signaling_NaN() == 0);
 
+// { dg-warning "denorm_absent' is deprecated" "" { target c++23 } 422 }
+
 static_assert(verify_numeric_limits_values_not_meaningful_for<max_size_t>);
 static_assert(verify_numeric_limits_values_not_meaningful_for<max_diff_t>);

From tkaminsk@gcc.gnu.org  Thu May 21 13:33:59 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 21 May 2026 13:33:59 +0000 (GMT)
Subject: [gcc r16-8948] libstdc++: Make is_exhaustive const for
 layout_(left/right)_padded
Message-ID: <20260521133359.A7DA44BAD14A@sourceware.org>

https://gcc.gnu.org/g:b7ac3d622afb2218d7f21a4c53ad5eda09d34d63

commit r16-8948-gb7ac3d622afb2218d7f21a4c53ad5eda09d34d63
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 18 09:45:46 2026 +0200

    libstdc++: Make is_exhaustive const for layout_(left/right)_padded
    
    This is specified as const in the standard, and required to be const-callable
    per layout mapping requirement. This made calls to is_exhaustive on mdspan
    with such layout ill-formed.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 10aa8833b04b52bb1ba3084bc59de604d7c38229)

Diff:
---
 libstdc++-v3/include/std/mdspan                                | 4 ++--
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc | 8 ++++++++
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc  | 6 +++---
 libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc  | 2 +-
 libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc          | 6 +++---
 5 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index a3ab64633ac3..5310fbbb956d 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -2628,7 +2628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return _PaddedStorage::_M_is_always_exhaustive(); }
 
 	constexpr bool
-	is_exhaustive() noexcept
+	is_exhaustive() const noexcept
 	{ return _M_storage._M_is_exhaustive(); }
 
 	static constexpr bool
@@ -2801,7 +2801,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return _PaddedStorage::_M_is_always_exhaustive(); }
 
 	constexpr bool
-	is_exhaustive() noexcept
+	is_exhaustive() const noexcept
 	{ return _M_storage._M_is_exhaustive(); }
 
 	static constexpr bool
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
index 17cfac54113b..28aa69eca779 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
@@ -44,6 +44,14 @@ template<typename Layout, typename Extents>
     static_assert(M::is_always_strided() && M::is_strided());
     if constexpr (has_static_is_exhaustive<M>)
       static_assert(M::is_always_exhaustive() && M::is_exhaustive());
+
+    static_assert(noexcept(M::is_always_unique()));
+    static_assert(noexcept(M::is_always_strided()));
+    static_assert(noexcept(M::is_always_exhaustive()));
+    static_assert(noexcept(std::declval<const M>().is_unique()));
+    static_assert(noexcept(std::declval<const M>().is_strided()));
+    static_assert(noexcept(std::declval<const M>().is_exhaustive()));
+
     return true;
   }
 
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
index 1b6e063d12de..18821795355f 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
@@ -509,7 +509,7 @@ template<template<size_t> typename Layout>
   {
     auto exts = std::extents<int>{};
 
-    auto check = [](auto m)
+    auto check = [](const auto m)
     {
       static_assert(m.is_always_exhaustive());
       VERIFY(m.is_exhaustive());
@@ -529,7 +529,7 @@ constexpr void
     {
       auto check = [](auto exts)
       {
-	auto m = typename PaddedLayout::mapping(exts);
+	const auto m = typename PaddedLayout::mapping(exts);
 	static_assert(m.is_always_exhaustive());
 	VERIFY(m.is_exhaustive());
       };
@@ -554,7 +554,7 @@ template<template<size_t> typename Layout>
     auto ctrue = std::cw<true>;
     auto cfalse= std::cw<false>;
 
-    auto check = [](auto m, auto static_expected, auto runtime_expected)
+    auto check = [](const auto m, auto static_expected, auto runtime_expected)
     {
       static_assert(m.is_always_exhaustive() == static_expected);
       VERIFY(m.is_exhaustive() == runtime_expected);
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
index 8d2fad2936f6..94deea33e1cf 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
@@ -278,7 +278,7 @@ template<typename Extents, typename Strides>
   constexpr void
   test_is_exhaustive(Extents extents, Strides strides, bool expected)
   {
-    std::layout_stride::mapping<Extents> m(extents, strides);
+    const std::layout_stride::mapping<Extents> m(extents, strides);
     VERIFY(m.is_exhaustive() == expected);
 
     bool always_exhaustive = extents.rank() == 0 || m.required_span_size() == 0;
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
index 62ff7201cce9..a2e244df3c56 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
@@ -720,9 +720,9 @@ template<typename Layout, bool Expected>
     static_assert(noexcept(MDSpan::is_always_exhaustive()) == Expected);
     static_assert(noexcept(MDSpan::is_always_strided()) == Expected);
 
-    static_assert(noexcept(std::declval<MDSpan>().is_unique()) == Expected);
-    static_assert(noexcept(std::declval<MDSpan>().is_exhaustive()) == Expected);
-    static_assert(noexcept(std::declval<MDSpan>().is_strided()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_unique()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_exhaustive()) == Expected);
+    static_assert(noexcept(std::declval<const MDSpan>().is_strided()) == Expected);
   }
 
 int

From ppalka@gcc.gnu.org  Thu May 21 14:38:01 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 21 May 2026 14:38:01 +0000 (GMT)
Subject: [gcc r16-8949] libstdc++: Fix incorrect move in
 flat_map::_M_try_emplace [PR125374]
Message-ID: <20260521143801.C67AF4B7A1C6@sourceware.org>

https://gcc.gnu.org/g:f7e3e2881412f1f80bdeb8303ab20fc8f84dda3e

commit r16-8949-gf7e3e2881412f1f80bdeb8303ab20fc8f84dda3e
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue May 19 13:43:10 2026 -0400

    libstdc++: Fix incorrect move in flat_map::_M_try_emplace [PR125374]
    
            PR libstdc++/125374
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 6d114645fa1c9831a109c8a8934685f49364818a)

Diff:
---
 libstdc++-v3/include/std/flat_map                  |  2 +-
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index e270735a87ba..18f06e6bdaf8 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -534,7 +534,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      return {iterator{this, __key_it}, false};
 
 	  auto __guard = _M_make_clear_guard();
-	  __key_it = _M_cont.keys.insert(__key_it, std::move(__k));
+	  __key_it = _M_cont.keys.insert(__key_it, std::forward<_Key2>(__k));
 	  __value_it = _M_cont.values.begin() + (__key_it - _M_cont.keys.begin());
 	  _M_cont.values.emplace(__value_it, std::forward<_Args>(__args)...);
 	  __guard._M_disable();
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 04c2101aab13..096b9eeac3e4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -13,6 +13,7 @@
 #include <testsuite_allocator.h>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
+#include <string>
 #include <tuple>
 
 struct Gt {
@@ -283,6 +284,21 @@ test09()
   using value_type = std::pair<int, int>;
 }
 
+constexpr
+void
+test10()
+{
+  // PR libstdc++/125374 - flat_map unconditionally moves from lvalue keys in
+  // _M_try_emplace
+  std::flat_map<std::string, int, std::less<>> m;
+  std::string k = "hello";
+  m[k] = 1;
+  VERIFY (k == "hello");
+  k = "world";
+  m.try_emplace(k, 2);
+  VERIFY (k == "world");
+}
+
 void
 test()
 {
@@ -298,6 +314,7 @@ test()
   test07();
   test08();
   test09();
+  test10();
 }
 
 constexpr
@@ -313,6 +330,7 @@ test_constexpr()
   test07();
   test08();
   test09();
+  test10();
   return true;
 }

From ppalka@gcc.gnu.org  Thu May 21 17:20:23 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 21 May 2026 17:20:23 +0000 (GMT)
Subject: [gcc r15-11190] libstdc++/ranges: Implement LWG 3599 change to
 lazy_split_view
Message-ID: <20260521172023.4DF4749002D1@sourceware.org>

https://gcc.gnu.org/g:4b8e6ab3a95a871f6ff155913e750ce11f8bf587

commit r15-11190-g4b8e6ab3a95a871f6ff155913e750ce11f8bf587
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Apr 10 10:14:47 2026 -0400

    libstdc++/ranges: Implement LWG 3599 change to lazy_split_view
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 8c46c7d647bf42aafab17f7e3dd4c2e18722241f)

Diff:
---
 libstdc++-v3/include/std/ranges                          |  7 ++++++-
 libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc | 10 ++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 5954aa1b54b5..569b681b9fe1 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -3681,8 +3681,12 @@ namespace views::__adaptor
 	  }
       }
 
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 3599. The const overload of lazy_split_view::begin should be
+      // constrained by const Pattern
       constexpr auto
       begin() const requires forward_range<_Vp> && forward_range<const _Vp>
+	&& forward_range<const _Pattern>
       {
 	return _OuterIter<true>{this, ranges::begin(_M_base)};
       }
@@ -3700,7 +3704,8 @@ namespace views::__adaptor
       {
 	if constexpr (forward_range<_Vp>
 		      && forward_range<const _Vp>
-		      && common_range<const _Vp>)
+		      && common_range<const _Vp>
+		      && forward_range<const _Pattern>)
 	  return _OuterIter<true>{this, ranges::end(_M_base)};
 	else
 	  return default_sentinel;
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
index 321ae271bf2b..498b6f3b0bdf 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
@@ -239,6 +239,15 @@ test13()
   constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;
 }
 
+void
+test14()
+{
+  // LWG 3599
+  auto p = views::iota(0) | views::take(1) | views::reverse;
+  auto r = views::single(42) | views::lazy_split(p);
+  auto f = r.front();
+}
+
 int
 main()
 {
@@ -255,4 +264,5 @@ main()
   test11();
   static_assert(test12());
   test13();
+  test14();
 }

From ppalka@gcc.gnu.org  Thu May 21 17:20:28 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 21 May 2026 17:20:28 +0000 (GMT)
Subject: [gcc r15-11191] libstdc++: Fix incorrect move in
 flat_map::_M_try_emplace [PR125374]
Message-ID: <20260521172028.7651248F8E1A@sourceware.org>

https://gcc.gnu.org/g:c9cc091338b13835afbb0f5d68bfde80da172fd2

commit r15-11191-gc9cc091338b13835afbb0f5d68bfde80da172fd2
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue May 19 13:43:10 2026 -0400

    libstdc++: Fix incorrect move in flat_map::_M_try_emplace [PR125374]
    
            PR libstdc++/125374
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 6d114645fa1c9831a109c8a8934685f49364818a)

Diff:
---
 libstdc++-v3/include/std/flat_map                  |  2 +-
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index e48c3eae07fd..9956738ea630 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -482,7 +482,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      return {iterator{this, __key_it}, false};
 
 	  auto __guard = _M_make_clear_guard();
-	  __key_it = _M_cont.keys.insert(__key_it, std::move(__k));
+	  __key_it = _M_cont.keys.insert(__key_it, std::forward<_Key2>(__k));
 	  __value_it = _M_cont.values.begin() + (__key_it - _M_cont.keys.begin());
 	  _M_cont.values.emplace(__value_it, std::forward<_Args>(__args)...);
 	  __guard._M_disable();
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 2f4ffa2d1bd4..f762a64797fb 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -12,6 +12,7 @@
 #include <testsuite_allocator.h>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
+#include <string>
 #include <tuple>
 
 struct Gt {
@@ -272,6 +273,20 @@ test09()
   using value_type = std::pair<int, int>;
 }
 
+void
+test10()
+{
+  // PR libstdc++/125374 - flat_map unconditionally moves from lvalue keys in
+  // _M_try_emplace
+  std::flat_map<std::string, int, std::less<>> m;
+  std::string k = "hello";
+  m[k] = 1;
+  VERIFY (k == "hello");
+  k = "world";
+  m.try_emplace(k, 2);
+  VERIFY (k == "world");
+}
+
 int
 main()
 {
@@ -287,4 +302,5 @@ main()
   test07();
   test08();
   test09();
+  test10();
 }

From ppalka@gcc.gnu.org  Thu May 21 22:36:18 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 21 May 2026 22:36:18 +0000 (GMT)
Subject: [gcc r17-663] libstdc++: Fix recent std::flat_map test with COW
 std::string
Message-ID: <20260521223618.6C9CF48F664C@sourceware.org>

https://gcc.gnu.org/g:ea57201777f8cb58766953f87880bcf89244411b

commit r17-663-gea57201777f8cb58766953f87880bcf89244411b
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 21 18:35:55 2026 -0400

    libstdc++: Fix recent std::flat_map test with COW std::string
    
    ... which is not constexpr, so just disable constant evaluation of the
    test in this case.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/23_containers/flat_map/1.cc (test_constexpr):
            If std::string isn't constexpr don't run test10.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 096b9eeac3e4..1cb088f511eb 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -330,7 +330,9 @@ test_constexpr()
   test07();
   test08();
   test09();
+#if __cpp_lib_constexpr_string >= 201907L
   test10();
+#endif
   return true;
 }

From ppalka@gcc.gnu.org  Thu May 21 22:36:56 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 21 May 2026 22:36:56 +0000 (GMT)
Subject: [gcc r16-8950] libstdc++: Fix recent std::flat_map test with COW
 std::string
Message-ID: <20260521223656.B825048F664D@sourceware.org>

https://gcc.gnu.org/g:92f550b49b3ab4c9b7b06222d71b2f2c10843657

commit r16-8950-g92f550b49b3ab4c9b7b06222d71b2f2c10843657
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 21 18:35:55 2026 -0400

    libstdc++: Fix recent std::flat_map test with COW std::string
    
    ... which is not constexpr, so just disable constant evaluation of the
    test in this case.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/23_containers/flat_map/1.cc (test_constexpr):
            If std::string isn't constexpr don't run test10.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit ea57201777f8cb58766953f87880bcf89244411b)

Diff:
---
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 096b9eeac3e4..1cb088f511eb 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -330,7 +330,9 @@ test_constexpr()
   test07();
   test08();
   test09();
+#if __cpp_lib_constexpr_string >= 201907L
   test10();
+#endif
   return true;
 }

From redi@gcc.gnu.org  Thu May 21 23:40:00 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 21 May 2026 23:40:00 +0000 (GMT)
Subject: [gcc r17-667] libstdc++: Combine duplicated tests for <atomic>
Message-ID: <20260521234000.E547048F6649@sourceware.org>

https://gcc.gnu.org/g:d39ca567e695ceef1ca83637af99f32af2c228b8

commit r17-667-gd39ca567e695ceef1ca83637af99f32af2c228b8
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 21 23:13:53 2026 +0100

    libstdc++: Combine duplicated tests for <atomic>
    
    The types_std_c++0x.cc and types_std_c++20.cc tests are almost
    identical, and the latter is redundant now that we can (and do) run all
    tests for any -std option, and run with -std=gnu++20 by default.
    Likewise for the _neg.cc tests.
    
    Merge the C++20-specific parts into the c++0x tests and remove the c++20
    ones.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 .../29_atomics/headers/atomic/types_std_c++0x.cc   | 15 +++-
 .../headers/atomic/types_std_c++0x_neg.cc          |  1 +
 .../29_atomics/headers/atomic/types_std_c++20.cc   | 95 ----------------------
 .../headers/atomic/types_std_c++20_neg.cc          | 80 ------------------
 .../29_atomics/headers/atomic/types_std_c++2a.cc   | 31 -------
 5 files changed, 15 insertions(+), 207 deletions(-)

diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
index 809b07e29ad5..2b0685345c33 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
@@ -30,6 +30,19 @@ void test01()
   using std::memory_order_acq_rel;
   using std::memory_order_seq_cst;
 
+#if __cplusplus >= 202002L
+  using std::memory_order;
+  constexpr auto relaxed = memory_order::relaxed;
+  constexpr auto consume = memory_order::consume;
+  constexpr auto acquire = memory_order::acquire;
+  constexpr auto release = memory_order::release;
+  constexpr auto acq_rel = memory_order::acq_rel;
+  constexpr auto seq_cst = memory_order::seq_cst;
+#ifdef __cpp_lib_is_scoped_enum
+  static_assert(std::is_scoped_enum_v<std::memory_order>);
+#endif
+#endif
+
   using std::atomic_flag;
 
   // atomics for builtins types
@@ -46,7 +59,7 @@ void test01()
   using std::atomic_llong;
   using std::atomic_ullong;
   using std::atomic_wchar_t;
-#ifdef _GLIBCXX_USE_CHAR8_T
+#ifdef __cpp_lib_char8_t
   using std::atomic_char8_t;
 #endif
   using std::atomic_char16_t;
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
index 6a83a7b981ee..554364c0fcc3 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
@@ -45,6 +45,7 @@ void test01()
   using atomic_llong;		// { dg-error "expected nested-name-specifier" }
   using atomic_ullong;		// { dg-error "expected nested-name-specifier" }
   using atomic_wchar_t;		// { dg-error "expected nested-name-specifier" }
+  using atomic_char8_t;		// { dg-error "expected nested-name-specifier" }
   using atomic_char16_t;	// { dg-error "expected nested-name-specifier" }
   using atomic_char32_t;	// { dg-error "expected nested-name-specifier" }
 
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
deleted file mode 100644
index 4c22b8ca7077..000000000000
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-// { dg-do compile { target c++20 } }
-// { dg-require-cstdint "" }
-
-// Copyright (C) 2008-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#include <atomic>
-
-void test01()
-{
-  using std::memory_order;
-  // TODO add checks for new enumerators memory_order::relaxed etc.
-  // using std::memory_order::relaxed;
-  // using std::memory_order::consume;
-  // using std::memory_order::acquire;
-  // using std::memory_order::release;
-  // using std::memory_order::acq_rel;
-  // using std::memory_order::seq_cst;
-  using std::memory_order_relaxed;
-  using std::memory_order_consume;
-  using std::memory_order_acquire;
-  using std::memory_order_release;
-  using std::memory_order_acq_rel;
-  using std::memory_order_seq_cst;
-
-  using std::atomic_flag;
-
-  // atomics for builtins types
-  using std::atomic_bool;
-  using std::atomic_char;
-  using std::atomic_schar;
-  using std::atomic_uchar;
-  using std::atomic_short;
-  using std::atomic_ushort;
-  using std::atomic_int;
-  using std::atomic_uint;
-  using std::atomic_long;
-  using std::atomic_ulong;
-  using std::atomic_llong;
-  using std::atomic_ullong;
-  using std::atomic_wchar_t;
-#ifdef _GLIBCXX_USE_CHAR8_T
-  using std::atomic_char8_t;
-#endif
-  using std::atomic_char16_t;
-  using std::atomic_char32_t;
-
-  // atomics for standard typedefs
-  using std::atomic_int_least8_t;
-  using std::atomic_uint_least8_t;
-  using std::atomic_int_least16_t;
-  using std::atomic_uint_least16_t;
-  using std::atomic_int_least32_t;
-  using std::atomic_uint_least32_t;
-  using std::atomic_int_least64_t;
-  using std::atomic_uint_least64_t;
-  using std::atomic_int_fast8_t;
-  using std::atomic_uint_fast8_t;
-  using std::atomic_int_fast16_t;
-  using std::atomic_uint_fast16_t;
-  using std::atomic_int_fast32_t;
-  using std::atomic_uint_fast32_t;
-  using std::atomic_int_fast64_t;
-  using std::atomic_uint_fast64_t;
-  using std::atomic_intptr_t;
-  using std::atomic_uintptr_t;
-  using std::atomic_size_t;
-  using std::atomic_ptrdiff_t;
-  using std::atomic_intmax_t;
-  using std::atomic_uintmax_t;
-
-  // DR 2441
-  using std::atomic_int8_t;
-  using std::atomic_uint8_t;
-  using std::atomic_int16_t;
-  using std::atomic_uint16_t;
-  using std::atomic_int32_t;
-  using std::atomic_uint32_t;
-  using std::atomic_int64_t;
-  using std::atomic_uint64_t;
-}
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
deleted file mode 100644
index 518d26d1818a..000000000000
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-// { dg-do compile { target c++20 } }
-// { dg-require-cstdint "" }
-
-// Copyright (C) 2009-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#include <atomic>
-
-void test01()
-{
-  // Not global scoped, only namespace std.
-  using memory_order;		// { dg-error "expected nested-name-specifier" }
-  // TODO add checks for new enumerators memory_order::relaxed etc.
-  using memory_order_relaxed;	// { dg-error "expected nested-name-specifier" }
-  using memory_order_consume;	// { dg-error "expected nested-name-specifier" }
-  using memory_order_acquire;	// { dg-error "expected nested-name-specifier" }
-  using memory_order_release;	// { dg-error "expected nested-name-specifier" }
-  using memory_order_acq_rel;	// { dg-error "expected nested-name-specifier" }
-  using memory_order_seq_cst;	// { dg-error "expected nested-name-specifier" }
-
-  using atomic_flag;		// { dg-error "expected nested-name-specifier" }
-
-  using atomic_bool;		// { dg-error "expected nested-name-specifier" }
-  using atomic_char;		// { dg-error "expected nested-name-specifier" }
-  using atomic_schar;		// { dg-error "expected nested-name-specifier" }
-  using atomic_uchar;		// { dg-error "expected nested-name-specifier" }
-  using atomic_short;		// { dg-error "expected nested-name-specifier" }
-  using atomic_ushort;		// { dg-error "expected nested-name-specifier" }
-  using atomic_int;		// { dg-error "expected nested-name-specifier" }
-  using atomic_uint;		// { dg-error "expected nested-name-specifier" }
-  using atomic_long;		// { dg-error "expected nested-name-specifier" }
-  using atomic_ulong;		// { dg-error "expected nested-name-specifier" }
-  using atomic_llong;		// { dg-error "expected nested-name-specifier" }
-  using atomic_ullong;		// { dg-error "expected nested-name-specifier" }
-  using atomic_wchar_t;		// { dg-error "expected nested-name-specifier" }
-  using atomic_char8_t;		// { dg-error "expected nested-name-specifier" }
-  using atomic_char16_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_char32_t;	// { dg-error "expected nested-name-specifier" }
-
-  using atomic_int_least8_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_least8_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_least16_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_least16_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_least32_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_least32_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_least64_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_least64_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_fast8_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_fast8_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_fast16_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_fast16_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_fast32_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_fast32_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_int_fast64_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uint_fast64_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_intptr_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uintptr_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_size_t;		// { dg-error "expected nested-name-specifier" }
-  using atomic_ptrdiff_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_intmax_t;	// { dg-error "expected nested-name-specifier" }
-  using atomic_uintmax_t;	// { dg-error "expected nested-name-specifier" }
-
-  using atomic_address;		// { dg-error "expected nested-name-specifier" }
-  // Present in C++0x drafts but not final C++11 standard:
-  using std::atomic_address;	// { dg-error "has not been declared" }
-}
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
deleted file mode 100644
index 3751bb65f99f..000000000000
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-// { dg-do compile { target c++20 } }
-
-// Copyright (C) 2019-2026 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3.  If not see
-// <http://www.gnu.org/licenses/>.
-
-#include <atomic>
-
-void test01()
-{
-  using std::memory_order;
-  constexpr auto relaxed = memory_order::relaxed;
-  constexpr auto consume = memory_order::consume;
-  constexpr auto acquire = memory_order::acquire;
-  constexpr auto release = memory_order::release;
-  constexpr auto acq_rel = memory_order::acq_rel;
-  constexpr auto seq_cst = memory_order::seq_cst;
-}

From gccadmin@gcc.gnu.org  Fri May 22 00:17:05 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 22 May 2026 00:17:05 +0000 (GMT)
Subject: [gcc r17-668] Daily bump.
Message-ID: <20260522001705.82F3848F60D5@sourceware.org>

https://gcc.gnu.org/g:8b45b008f07892bdb9765d7bbbf718c7bb78b8b1

commit r17-668-g8b45b008f07892bdb9765d7bbbf718c7bb78b8b1
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 22 00:16:32 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 140 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  29 ++++++++++
 gcc/fortran/ChangeLog   |   9 ++++
 gcc/testsuite/ChangeLog |  81 ++++++++++++++++++++++++++++
 libffi/ChangeLog        | 102 +++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |  44 +++++++++++++++
 libgomp/ChangeLog       |   5 ++
 libstdc++-v3/ChangeLog  |  69 ++++++++++++++++++++++++
 9 files changed, 480 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a68d5afee2d0..0a300d73daa1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,143 @@
+2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* avoid-store-forwarding.cc
+	(store_forwarding_analyzer::avoid_store_forwarding): Replace
+	return with flush-and-continue for complex memory operations.
+
+2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* avoid-store-forwarding.cc: Include regs.h.
+	(record_hard_reg_clobbers): New callback.
+	(store_forwarding_analyzer::m_bb_live_after): New cache.
+	(store_forwarding_analyzer::compute_bb_live_after): New helper.
+	(store_forwarding_analyzer::process_store_forwarding): Add
+	liveness check for hard registers clobbered by bit-insert
+	sequences, using the cached per-BB live-out information, and
+	evict the load_insn entry from the cache before delete_insn
+	in the load-elim path.
+	(store_forwarding_analyzer::avoid_store_forwarding): Clear the
+	per-BB liveness cache on entry.
+
+2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* avoid-store-forwarding.cc
+	(store_forwarding_analyzer::avoid_store_forwarding): Remove
+	store_exprs_del vector and all associated tracking.  Remove the
+	same_range_as_removed check from the forwarding loop.  Update
+	block comment.
+
+2026-05-21  Gerald Pfeifer  <gerald@pfeifer.com>
+
+	* doc/install.texi (Prerequisites): The C++ front end also does
+	not use extensions.
+
+2026-05-21  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	PR target/123791
+	* config/aarch64/aarch64.cc (aarch64_cannot_force_const_mem): Remove
+	forcing symbol references to const mem.
+	(aarch64_can_use_per_function_literal_pools_p): Return false for
+	large model.
+	(aarch64_use_blocks_for_constant_p): Update comment.
+	(initialize_aarch64_code_model): Allow PIC/PIE.
+	(aarch64_classify_symbol): Use SYMBOL_SMALL_ABSOLUTE for constant
+	references and SYMBOL_SMALL_GOT_4G for writeable data.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125320
+	* config/riscv/riscv.md (stack_protect_test_<mode>): Call
+	riscv_output_move() instead of hard coding <load>.
+	(stack_protect_set_<mode>): Call riscv_output_move() instead of
+	hard coding <load> and <store>.
+
+2026-05-21  Martin Jambor  <mjambor@suse.cz>
+
+	* ipa-cp.cc (get_max_overall_size): Remove parameter CUR_SWEEP and
+	its use.
+	(decide_about_value): Adjust the call to get_max_overall_size.
+	(decide_whether_version_node): Likewise.
+	* params.opt (param_ipa_cp_eval_threshold): Initialize to 1100.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/riscv.opt.urls: Regenerate.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* common/config/riscv/riscv-common.cc (riscv_handle_option):
+	Handle Zilsd alignment options and clear the Zilsd-specific
+	explicit marker for -mstrict-align.
+	* config/riscv/riscv-opts.h (riscv_zilsd_align_type): New enum.
+	* config/riscv/riscv-protos.h
+	(riscv_expand_zilsd_misaligned_move): Declare as void.
+	(riscv_zilsd_valid_mem_p): Declare.
+	* config/riscv/riscv.cc (riscv_zilsd_required_align): New
+	functions.
+	(riscv_zilsd_valid_mem_p): New function.
+	(riscv_rtx_costs): Honor Zilsd alignment policy.
+	(riscv_split_64bit_move_p): Split invalid Zilsd GPR accesses.
+	(riscv_expand_zilsd_misaligned_move): New function.
+	(riscv_can_inline_p): Check effective Zilsd alignment policy.
+	(riscv_override_options_internal): Reject explicit Zilsd
+	alignment options for RV64.
+	* config/riscv/riscv.md (movmisaligndi): New expander.
+	(movmisaligndf): New expander.
+	* config/riscv/riscv.opt: Add -mzilsd-word-align and
+	-mzilsd-strict-align.
+	* config/riscv/riscv.opt.urls: Regenerate.
+	* doc/invoke.texi: Document the new options.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/andes_vector.h: Define intrinsic detection macros.
+	* config/riscv/riscv_bitmanip.h: Likewise.
+	* config/riscv/riscv_crypto.h: Likewise.
+	* config/riscv/riscv_vector.h: Likewise.
+	* config/riscv/sifive_vector.h: Likewise.
+	* doc/extend.texi: Document RISC-V intrinsic detection macros.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* common/config/riscv/riscv-ext-bitmask.def: Add zicfiss.
+	* config/riscv/riscv-ext.def: Add C API bit position for
+	zicfiss.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* common/config/riscv/riscv-ext-bitmask.def: Add supm,
+	zicntr, zihpm, zfbfmin, zvfbfmin, zvfbfwma, zicbom,
+	zaamo, zalrsc, zabha, zalasr, zicbop, and zicfilp.
+	* config/riscv/riscv-ext.def: Add C API bit positions for
+	supm, zicntr, zihpm, zfbfmin, zvfbfmin, zvfbfwma,
+	zicbom, zaamo, zalrsc, zabha, zalasr, zicbop, and
+	zicfilp.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* common/config/riscv/riscv-ext-bitmask.def: Add b, e, h,
+	zilsd, zclsd, zcmp, zifencei, and zmmul.
+
+2026-05-21  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/121343
+	* config/avr/avr.md (ctz_ffs, cxz_ffs): New code iterators.
+	(clzhi2, ctzhi2, ffshi2, clzsi2, ctzsi2, ffssi2, bswapsi2): New
+	insn-and-split's from former expanders.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/50481
+	* config/loongarch/loongarch.md (@rbit<GPR:mode>2): Rename to
+	...
+	(@bitreverse<mode>2): ... this.
+	(rbithi2): Rename to ...
+	(bitreversehi2): ... this.
+	(rbitqi2): Rename to ...
+	(bitreverseqi2): ... this.
+	(rbitsi_extended): Rename to ...
+	(bitreversesi2_extended): ... this.
+
 2026-05-20  Shivam Gupta  <shivam98.tkg@gmail.com>
 
 	PR tree-optimization/112533
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 49fefbb3d21d..6c8fe59e10d0 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260521
+20260522
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 175fcc604cea..7190df3b7164 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,32 @@
+2026-05-21  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125330
+	* parser.cc (cp_parser_parameter_declaration_list): Also
+	pushdecl when parameter->default_argument is this_identifier.
+
+2026-05-21  Jason Merrill  <jason@redhat.com>
+
+	* constexpr.cc (init_subob_ctx): Check is_empty_field.
+
+2026-05-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125384
+	PR c++/113563
+	* lambda.cc (build_capture_proxy): 'this' capture proxy is const.
+
+2026-05-21  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125284
+	PR c++/125333
+	* pt.cc (tsubst_decl) <case USING_DECL>: Copy targs before
+	modifying them.
+
+2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* coroutines.cc (register_local_var_uses): Ignore DECL_NAME for
+	name independent decls.
+
 2026-05-19  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/123536
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a7837d18a4f0..783cafd440d0 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/125379
+	* gfortran.h (gfc_find_symbol_by_name): Add prototype.
+	* resolve.cc (gfc_verify_binding_labels): Call gfc_find_symbol_by_name
+	if direct lookup fails.
+	* symbol.cc (compare_target_sym_name): New function.
+	(gfc_find_symbol_by_name): New function.
+
 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/106546
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4accee3b91c6..e097144c7f5b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,84 @@
+2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* gcc.target/aarch64/avoid-store-forwarding-6.c: New test.
+
+2026-05-21  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125330
+	* g++.dg/cpp23/explicit-obj-basic8.C: New test.
+
+2026-05-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125384
+	PR c++/113563
+	* g++.dg/cpp0x/lambda/lambda-this23.C: New test.
+
+2026-05-21  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	PR target/123791
+	* gcc.target/aarch64/pr123791.c: Update test.
+	* gcc.target/aarch64/pr63304_1.c: Likewise.
+	* gcc.target/aarch64/pr78733.c: Likewise.
+	* gcc.target/aarch64/pr79041-2.c: Likewise.
+
+2026-05-21  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125284
+	PR c++/125333
+	* g++.dg/cpp1z/using-variadic4.C: New test.
+	* g++.dg/cpp1z/using-variadic5.C: New test.
+
+2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* g++.dg/coroutines/pr125376.C: New test.
+
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/125379
+	* gfortran.dg/binding_label_tests_38.f90: New test.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125320
+	* gcc.target/riscv/pr125320.c: New test.
+
+2026-05-21  Martin Jambor  <mjambor@suse.cz>
+
+	* gcc.dg/ipa/ipa-5.c: Adjust dump.
+	* gcc.dg/independent-cloneids-1.c: Set lower param
+	ipa-cp-eval-threshold.
+	* gcc.dg/vla-1.c: Likewise.
+	* g++.dg/ipa/devirt-2.C: Add an extra caller of the to-be-cloned
+	function.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* gcc.target/riscv/zilsd-align-default-1.c: New test.
+	* gcc.target/riscv/zilsd-align-df-1.c: New test.
+	* gcc.target/riscv/zilsd-align-rv64-1.c: New test.
+	* gcc.target/riscv/zilsd-align-rv64-2.c: New test.
+	* gcc.target/riscv/zilsd-align-rv64-3.c: New test.
+	* gcc.target/riscv/zilsd-align-rv64-4.c: New test.
+	* gcc.target/riscv/zilsd-align-word-1.c: New test.
+	* gcc.target/riscv/zilsd-align-word-2.c: New test.
+	* gcc.target/riscv/zilsd-align-word-3.c: New test.
+	* gcc.target/riscv/zilsd-align-word-4.c: New test.
+	* gcc.target/riscv/zilsd-align-word-5.c: New test.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* gcc.target/riscv/intrinsic-detection-bitmanip.c: New test.
+	* gcc.target/riscv/intrinsic-detection-crypto.c: New test.
+	* gcc.target/riscv/intrinsic-detection-scalar-reverse.c: New test.
+	* gcc.target/riscv/intrinsic-detection-scalar.c: New test.
+	* gcc.target/riscv/rvv/base/intrinsic-detection.c: New test.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/50481
+	* gcc.target/loongarch/la64/bitreverse.c: New test.
+
 2026-05-20  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* algol68/execute/entier-1.a68: Add test for FLOOR = ENTIER.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 7ea25625fdf3..f4219d46e5bd 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,105 @@
+2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	* LOCAL_PATCHES: Update list.
+
+2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR libffi/117635
+	* src/x86/ffitarget.h (if defined (X86_64) &&
+	defined (__i386__)): Remove #warning.
+
+2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR libffi/117635
+	* src/aarch64/ffi.c: Define `WIN32_LEAN_AND_MEAN` before
+	`#include <windows.h>`.
+
+2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR libffi/117635
+	* testsuite/lib/libffi.exp (load_gcc_lib): Load library from GCC
+	testsuite.
+	Load target-supports.exp and target-supports-dg.exp.
+	(libffi-init): Use libraries in GCC build tree.
+	Pass correct flags on darwin.
+	(libffi_target_compile): If '--with-build-sysroot=[...]' was
+	specified, use it for build-tree testing. Link with
+	-shared-libgcc -lstdc++ for C++ sources.
+
+2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR libffi/117635
+	* Makefile.am (AUTOMAKE_OPTIONS): Add info-in-builddir.
+	(ACLOCAL_AMFLAGS): Set to -I .. -I ../config.
+	(SUBDIRS): Don't add doc.
+	(TEXINFO_TEX): New.
+	(MAKEINFOFLAGS): Likewise.
+	(info_TEXINFOS): Likewise.
+	(STAMP_GENINSRC): Likewise.
+	(STAMP_BUILD_INFO): Likewise.
+	(all-local): Likewise.
+	(stamp-geninsrc): Likewise.
+	(doc/libffi.info): Likewise.
+	(stamp-build-info:): Likewise.
+	(CLEANFILES): Likewise.
+	(MAINTAINERCLEANFILES): Likewise.
+	(AM_MAKEFLAGS): Likewise.
+	(LTLDFLAGS): Replace libtool-ldflags with ../libtool-ldflags.
+	(AM_CFLAGS): Add -Wall -g -fexceptions $(CET_FLAGS).
+	(libffi.map-sun): Replace make_sunver.pl with
+	../contrib/make_sunver.pl. Pass $(libffi_la_OBJECTS),
+	$(libffi_la_LIBADD) to make_sunver.pl unmodified.
+	(libffi_la_LDFLAGS): Handle Darwin rpaths.
+	(AM_CCASFLAGS): Add $(CET_FLAGS).
+	(all-recursive): New.
+	(install-recursive): Likewise.
+	(mostlyclean-recursive): Likewise.
+	(clean-recursive): Likewise.
+	(distclean-recursive): Likewise.
+	(maintainer-clean-recursive): Likewise.
+	(dist-hook): Removed.
+	Include $(top_srcdir)/../multilib.am.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Add AM_ENABLE_MULTILIB.
+	Remove the frv*-elf check.
+	(AX_ENABLE_BUILDDIR): Removed.
+	(AM_INIT_AUTOMAKE): Add [no-dist].
+	Add --enable-generated-files-in-srcdir.
+	(CET_FLAGS): Add GCC_CET_FLAGS and AC_SUBST.
+	(AC_CONFIG_MACRO_DIR): Removed.
+	(AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH])): New.
+	(AX_COMPILER_VENDOR): Removed.
+	(AX_CC_MAXOPT): Likewise.
+	(AX_CFLAGS_WARN_ALL): Likewise.
+	Remove the GCC check.
+	(AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)): New.
+	<local.exp>: Don't set 'CC_FOR_TARGET', 'CXX_FOR_TARGET',
+	instead set 'SYSROOT_CFLAGS_FOR_TARGET'.
+	(m4_warn([obsolete])): Removed.
+	(LT_SYS_SYMBOL_USCORE): Likewise.
+	(AX_CHECK_COMPILE_FLAG): Likewise.
+	Remove --disable-docs.
+	(ACX_CHECK_PROG_VER): Check makeinfo.
+	(BUILD_DOCS): Updated.
+	(exec-static-tramp): Don't enable use of static exec trampolines
+	by default.
+	Remove --disable-multi-os-directory.
+	(GCC_WITH_TOOLEXECLIBDIR): New.
+	Support cross host.
+	Support --enable-multilib.
+	(GCC_BASE_VER): New.
+	(AC_CONFIG_FILES): Remove doc/Makefile.
+	(AC_CONFIG_LINKS): New.
+	* fficonfig.h.in: Regenerate.
+	* include/Makefile.am (nodist_include_HEADERS): Removed.
+	(gcc_version): New.
+	(toollibffidir): Likewise.
+	(toollibffi_HEADERS): Likewise.
+	* include/Makefile.in: Regenerate.
+	* man/Makefile.in: Regenerate.
+	* testsuite/Makefile.in: Regenerate.
+
 2026-01-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	PR libffi/117635
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 1a7e3cee8958..6aee23b12bfc 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,47 @@
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/feature_bits.c (ZICFISS_GROUPID,
+	ZICFISS_BITMASK, RISCV_HWPROBE_KEY_IMA_EXT_1,
+	RISCV_HWPROBE_EXT_ZICFISS): Define.
+	(SET_FROM_IMA_EXT_1): Define.
+	(__init_riscv_features_bits_linux): Query IMA_EXT_1 and set
+	zicfiss from the corresponding upstream Linux hwprobe bit.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/feature_bits.c (RISCV_HWPROBE_EXT_SUPM,
+	RISCV_HWPROBE_EXT_ZICNTR, RISCV_HWPROBE_EXT_ZIHPM,
+	RISCV_HWPROBE_EXT_ZFBFMIN, RISCV_HWPROBE_EXT_ZVFBFMIN,
+	RISCV_HWPROBE_EXT_ZVFBFWMA, RISCV_HWPROBE_EXT_ZICBOM,
+	RISCV_HWPROBE_EXT_ZAAMO, RISCV_HWPROBE_EXT_ZALRSC,
+	RISCV_HWPROBE_EXT_ZABHA, RISCV_HWPROBE_EXT_ZALASR,
+	RISCV_HWPROBE_EXT_ZICBOP, RISCV_HWPROBE_EXT_ZILSD,
+	RISCV_HWPROBE_EXT_ZCLSD, RISCV_HWPROBE_EXT_ZICFILP): Define.
+	(__init_riscv_features_bits_linux): Set feature bits from the
+	corresponding upstream Linux hwprobe bits.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/feature_bits.c (SUPM_GROUPID, SUPM_BITMASK,
+	ZICNTR_GROUPID, ZICNTR_BITMASK, ZIHPM_GROUPID,
+	ZIHPM_BITMASK, ZFBFMIN_GROUPID, ZFBFMIN_BITMASK,
+	ZVFBFMIN_GROUPID, ZVFBFMIN_BITMASK, ZVFBFWMA_GROUPID,
+	ZVFBFWMA_BITMASK, ZICBOM_GROUPID, ZICBOM_BITMASK,
+	ZAAMO_GROUPID, ZAAMO_BITMASK, ZALRSC_GROUPID,
+	ZALRSC_BITMASK, ZABHA_GROUPID, ZABHA_BITMASK,
+	ZALASR_GROUPID, ZALASR_BITMASK, ZICBOP_GROUPID,
+	ZICBOP_BITMASK, ZICFILP_GROUPID, ZICFILP_BITMASK):
+	Define.
+
+2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
+
+	* config/riscv/feature_bits.c (B_GROUPID, B_BITMASK,
+	E_GROUPID, E_BITMASK, H_GROUPID, H_BITMASK,
+	ZILSD_GROUPID, ZILSD_BITMASK, ZCLSD_GROUPID,
+	ZCLSD_BITMASK, ZCMP_GROUPID, ZCMP_BITMASK,
+	ZIFENCEI_GROUPID, ZIFENCEI_BITMASK, ZMMUL_GROUPID,
+	ZMMUL_BITMASK): Define.
+
 2026-05-19  Georg-Johann Lay  <avr@gjlay.de>
 
 	* config/avr/t-avr (LIB1ASMFUNCS): Add _bitreverse8, _bitreverse16,
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index b568584ae9c7..076d49ec342c 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-21  Martin Jambor  <mjambor@suse.cz>
+
+	* testsuite/libgomp.c/ipcp-cb-spec1.c: Set lower param
+	ipa-cp-eval-threshold.
+
 2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
 	    Chung-Lin Tang  <cltang@baylibre.com>
 	    Sandra Loosemore  <sloosemore@baylibre.com>
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 866d38c9b561..1857354526a9 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,72 @@
+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

From gccadmin@gcc.gnu.org  Fri May 22 00:18:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 22 May 2026 00:18:53 +0000 (GMT)
Subject: [gcc r14-12623] Daily bump.
Message-ID: <20260522001853.427134BA5435@sourceware.org>

https://gcc.gnu.org/g:c325ce8038b45095653b0e1c8c859f61f3fc4e9c

commit r14-12623-gc325ce8038b45095653b0e1c8c859f61f3fc4e9c
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 22 00:18:24 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 10 ++++++++++
 gcc/testsuite/ChangeLog |  8 ++++++++
 libstdc++-v3/ChangeLog  | 38 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 49fefbb3d21d..6c8fe59e10d0 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260521
+20260522
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2783a3b41b90..8ae33996141f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* frontend-passes.cc (create_var): Set attr->automatic on
+	new symbol.
+	(create_do_loop): Likewise on iteration variable.
+
 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/115260
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index aa24c6b6a089..9f0443bc499f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* gfortran.dg/inline_matmul_27.f90: New test.
+
 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/115260
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9ba786177cb4..e4cd106b492a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,41 @@
+2026-05-21  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-09-26  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/122062
+	* include/bits/random.tcc (__detail::__normalize): Use void cast
+	for operands of comma operator.
+	(piecewise_linear_distribution): Likewise.
+	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc:
+	New test.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	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-05-21  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-19  Jonathan Wakely  <jwakely@redhat.com>
+
+	* src/c++20/tzdata.zi: Import new file from 2026b release.
+
+2026-05-21  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-14  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Fri May 22 00:19:59 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 22 May 2026 00:19:59 +0000 (GMT)
Subject: [gcc r15-11193] Daily bump.
Message-ID: <20260522001959.CEF294BA5435@sourceware.org>

https://gcc.gnu.org/g:19de5568f75cd7e213df318bcd1ebd9976a56d14

commit r15-11193-g19de5568f75cd7e213df318bcd1ebd9976a56d14
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 22 00:19:28 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 10 ++++++++++
 gcc/testsuite/ChangeLog |  8 ++++++++
 libstdc++-v3/ChangeLog  | 21 +++++++++++++++++++++
 4 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 49fefbb3d21d..6c8fe59e10d0 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260521
+20260522
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5cb0ac84b3b7..d99093eed33a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* frontend-passes.cc (create_var): Set attr->automatic on
+	new symbol.
+	(create_do_loop): Likewise on iteration variable.
+
 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/115260
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e3576922e316..0a596a357ce0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* gfortran.dg/inline_matmul_27.f90: New test.
+
 2026-05-20  Xi Ruoyao  <xry111@xry111.site>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a6c6ddd62298..75a6b65a4ec6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,24 @@
+2026-05-21  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-21  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-05-20  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Fri May 22 00:20:42 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 22 May 2026 00:20:42 +0000 (GMT)
Subject: [gcc r16-8951] Daily bump.
Message-ID: <20260522002042.A0EBB4BA5435@sourceware.org>

https://gcc.gnu.org/g:23087e5d504720af56468089234df13e812ccf6a

commit r16-8951-g23087e5d504720af56468089234df13e812ccf6a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 22 00:20:12 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 11 +++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/fortran/ChangeLog   | 10 ++++++++++
 gcc/testsuite/ChangeLog | 16 ++++++++++++++++
 libstdc++-v3/ChangeLog  | 33 +++++++++++++++++++++++++++++++++
 5 files changed, 71 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 959adb7d8668..806aa93cdbca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125320
+	* config/riscv/riscv.md (stack_protect_test_<mode>): Call
+	riscv_output_move() instead of hard coding <load>.
+	(stack_protect_set_<mode>): Call riscv_output_move() instead of
+	hard coding <load> and <store>.
+
 2026-05-20  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 49fefbb3d21d..6c8fe59e10d0 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260521
+20260522
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 991fcd505df2..6782ed3b0a19 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* frontend-passes.cc (create_var): Set attr->automatic on
+	new symbol.
+	(create_do_loop): Likewise on iteration variable.
+
 2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 66e7fd8ea549..38b49dcec1c7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	Backported from master:
+	2026-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+	PR fortran/106546
+	* gfortran.dg/inline_matmul_27.f90: New test.
+
+2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-05-21  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125320
+	* gcc.target/riscv/pr125320.c: New test.
+
 2026-05-20  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 54a5a13b8ae8..12520894b479 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,36 @@
+2026-05-21  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-21  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	Backported from master:
+	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-19  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From redi@gcc.gnu.org  Fri May 22 12:32:21 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 22 May 2026 12:32:21 +0000 (GMT)
Subject: [gcc r17-673] libstdc++: Fix some test failures due to vector using
 allocate_at_least
Message-ID: <20260522123222.031664BA23C8@sourceware.org>

https://gcc.gnu.org/g:80ec18c6ef51653fcaf2ff5b0d41408af5adef87

commit r17-673-g80ec18c6ef51653fcaf2ff5b0d41408af5adef87
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri May 22 13:25:57 2026 +0100

    libstdc++: Fix some test failures due to vector using allocate_at_least
    
    Some std::vector tests are FAILing for 32-bit targets because
    std::vector now rounds up allocations to an alignment boundary,
    perturbing the expected capacity of the vectors in the tests.
    
    Tweak the tests so that they don't depend on the precise capacity, which
    is unspecified anyway.
    
    The 23_containers/vector/modifiers/insert_vs_emplace.cc test still
    FAILs, that needs a different fix.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 .../testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc | 5 +++--
 .../testsuite/23_containers/vector/modifiers/insert/self_insert.cc   | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
index 629f35f05bac..abb416208ead 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
@@ -31,11 +31,12 @@ test01()
     };
 
   // Make sure emplace will imply reallocation.
-  VERIFY( vv.capacity() == 3 );
+  const auto n = vv.capacity();
+  vv.resize(n);
 
   vv.emplace(vv.begin(), vv[0]);
 
-  VERIFY( vv.size() == 4 );
+  VERIFY( vv.size() == (n + 1) );
   VERIFY( vv[0].size() == 2 );
   VERIFY( vv[0][0] == 2 );
   VERIFY( vv[0][1] == 3 );
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
index 689b0d93d7d7..d6e33983b1e7 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
@@ -51,11 +51,12 @@ void test02()
     };
 
   // Make sure we will reallocate for insertion.
-  VERIFY( vv.capacity() == 3 );
+  const auto n = vv.capacity();
+  vv.resize(n);
 
   vv.insert(vv.begin(), vv[0]);
 
-  VERIFY( vv.size() == 4 );
+  VERIFY( vv.size() == (n + 1) );
   VERIFY( vv[0].size() == 2 );
   VERIFY( vv[0][0] == 2 );
   VERIFY( vv[0][1] == 3 );

From gccadmin@gcc.gnu.org  Sat May 23 00:16:54 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 23 May 2026 00:16:54 +0000 (GMT)
Subject: [gcc r17-681] Daily bump.
Message-ID: <20260523001654.854964BB3BFC@sourceware.org>

https://gcc.gnu.org/g:25e1ceebd373c7bb5076c9db2d9b77ac0bd274dc

commit r17-681-g25e1ceebd373c7bb5076c9db2d9b77ac0bd274dc
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat May 23 00:16:25 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 38 +++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/c-family/ChangeLog  | 16 ++++++++++
 gcc/c/ChangeLog         |  7 +++++
 gcc/cp/ChangeLog        | 23 ++++++++++++++
 gcc/fortran/ChangeLog   | 12 ++++++++
 gcc/testsuite/ChangeLog | 80 +++++++++++++++++++++++++++++++++++++++++++++++++
 libgfortran/ChangeLog   | 19 ++++++++++++
 libstdc++-v3/ChangeLog  |  7 +++++
 9 files changed, 203 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a300d73daa1..da5bb7a0cd1f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,41 @@
+2026-05-22  Disservin  <disservin.social@gmail.com>
+
+	PR target/50481
+	* config/aarch64/aarch64.md (bitreverse<mode>2, bitreverseqi2,
+	bitreversehi2): New expanders.
+	* config/aarch64/aarch64-simd.md (bitreverse<mode>2): New expander.
+
+2026-05-22  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* config/riscv/riscv-protos.h (common_vector_cost): Add
+	reduc_i8_cost through reduc_f64_cost and
+	reduc_f{16,32,64}_ordered_cost.
+	* config/riscv/riscv.cc: Set costs in rvv_vls_vector_cost and
+	rvv_vla_vector_cost.
+	* config/riscv/riscv-vector-costs.cc (is_reduction): New helper.
+	(get_reduction_cost): New helper.
+	(costs::adjust_stmt_cost): Use them for vec_to_scalar kind.
+
+2026-05-22  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR rtl-optimization/125375
+	* cfgrtl.cc (flow_active_insn_p): Return true for clobbers.
+
+2026-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125399
+	* match.pd (BITREVERSE): Add BUILT_IN_BITREVERSE8.
+
+2026-05-22  Steve Markgraf  <steve@steve-m.de>
+
+	* config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Add PROCESSOR_MPCCORE.
+
+2026-05-22  Avinal Kumar  <avinal.xlvii@gmail.com>
+
+	PR tree-optimization/125050
+	* match.pd: (X != C1 ? -X : C2): Handle C1 being INT_MIN
+	by emitting (signed)(-(unsigned)X) instead of bailing out.
+
 2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
 
 	* avoid-store-forwarding.cc
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 6c8fe59e10d0..79cae2e86857 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260522
+20260523
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index f25c276e061d..17b2e96f4fe7 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-22  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-common.h (enum c_omp_region_type): Add C_ORT_UPDATE and
+	C_ORT_OMP_UPDATE codes.
+	* c-omp.cc (omp_basic_map_kind_name): New function.
+	(omp_instantiate_mapper): Add LOC parameter and 'target update'
+	support.
+	(c_omp_instantiate_mappers): Add 'target update' support.
+
+2026-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/119059
+	* c-cppbuiltin.cc (c_cpp_builtins): For C++26 predefine
+	__cpp_trivial_union to 202502L.
+
 2026-05-15  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/125081
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 523d18208754..eadb5eea8015 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-22  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-parser.cc (c_parser_omp_clause_from_to): Add parsing
+	for mapper modifier.
+	(c_parser_omp_target_update): Instantiate mappers.
+
 2026-05-19  Paul-Antoine Arras  <parras@baylibre.com>
 	    Chung-Lin Tang  <cltang@baylibre.com>
 	    Sandra Loosemore  <sloosemore@baylibre.com>
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7190df3b7164..bc74f5b19cdd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,26 @@
+2026-05-22  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* parser.cc (cp_parser_omp_clause_from_to): Add parsing for
+	mapper modifier.
+	(cp_parser_omp_target_update): Instantiate mappers.
+
+2026-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/119059
+	* method.cc: Implement C++26 P3074R7 - trivial unions (was
+	std::uninitialized<T>) (except the sentence removed again in P3726R2)
+	and proposed resolution of CWG3189 - Implicitly deleted destructors
+	for union-like classes.
+	(walk_field_subobs): Don't do default_init_uninitialized_part checks
+	for variant members.  Don't check subobject ctor/dtor for variant
+	members for ctor/inheriting ctor or when subobject doesn't have member
+	initializer for dtor and it is either the dtor_from_ctor case or
+	the current class doesn't have user provided ctors.
+	* class.cc (check_field_decl): Don't or in
+	TYPE_HAS_NONTRIVIAL_DESTRUCTOR or TYPE_HAS_DEFAULT_CONSTRUCTOR of
+	variant subobjects for C++26.
+
 2026-05-21  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125330
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 783cafd440d0..0e7e89139958 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,15 @@
+2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
+
+	* dump-parse-tree.cc: Fix comment typo.
+	* gfortran.texi: Fix typo.
+	* intrinsic.texi: Likewise.
+	* invoke.texi: Likewise.
+
+2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR fortran/125416
+	* invoke.texi (fcoarray): Document 'shared'.
+
 2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/125379
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e097144c7f5b..70b19149c8b5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,83 @@
+2026-05-22  Julian Brown  <julian@codesourcery.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* c-c++-common/gomp/target-update-iterators-1.c: Update for
+	dg-error change.
+	* c-c++-common/gomp/declare-mapper-19.c: New test.
+
+2026-05-22  Disservin  <disservin.social@gmail.com>
+
+	PR target/50481
+	* gcc.target/aarch64/bitreverse.c: New test.
+
+2026-05-22  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* gcc.dg/vect/costmodel/riscv/rvv/reduc_vla_ordered.c: New.
+	* gcc.dg/vect/costmodel/riscv/rvv/reduc_vla_unordered.c: New.
+	* gcc.dg/vect/costmodel/riscv/rvv/reduc_vls_ordered.c: New.
+	* gcc.dg/vect/costmodel/riscv/rvv/reduc_vls_unordered.c: New.
+	* gcc.target/riscv/rvv/autovec/cond/pr111401.c: Use
+	-mmax-vectorization.
+	* gcc.target/riscv/rvv/autovec/vls/reduc-19.c: Use
+	-mmax-vectorization, adjust scan counts.
+	* gcc.target/riscv/rvv/autovec/vls/reduc-20.c: Likewise.
+	* gcc.target/riscv/rvv/autovec/vls/reduc-21.c: Likewise.
+	* gcc.target/riscv/rvv/autovec/vls/wred-3.c: Likewise.
+
+2026-05-22  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gcc.dg/pr125375.c: New test.
+
+2026-05-22  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/aarch64/tbz_1.c: Update expected output.
+
+2026-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125399
+	* gcc.dg/builtin-bitreverse-4.c (foo9): New function.
+	* gcc.dg/builtin-bitreverse-5.c: New test.
+	* gcc.dg/builtin-bitreverse-6.c: New test.
+	* gcc.dg/builtin-bitreverse-7.c: New test.
+	* gcc.dg/builtin-bitreverse-8.c: New test.
+
+2026-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/119059
+	* g++.dg/DRs/dr2581-1.C: Expect warning for __cpp_trivial_union.
+	* g++.dg/DRs/dr2581-2.C: Expect error for __cpp_trivial_union.
+	* g++.dg/cpp26/feat-cxx26.C: Add __cpp_trivial_union checking.
+	* g++.dg/cpp26/trivial-union1.C: New test.
+	* g++.dg/cpp26/trivial-union2.C: New test.
+	* g++.dg/reflect/trivial-union1.C: New test.
+	* g++.dg/reflect/type_trait6.C: Adjust expected result of
+	one is_destructible_type and two is_nothrow_destructible_type calls.
+	* g++.dg/reflect/is_constructible_type1.C: Adjust expected result
+	of one is_constructible_type call.
+	* g++.dg/init/pr43719.C: Don't expect one error.
+	* g++.dg/init/pr25811.C: Don't expect 3 diagnostic messages,
+	instead expect a different one for C++98 only.
+	* g++.dg/other/anon-union2.C: Only expect one diagnostic for
+	C++23 and older.
+	* g++.dg/cpp0x/union1.C: Only expect 6 diagnostic messages for
+	C++23 and older.
+	* g++.dg/cpp0x/union4.C: Only expect 3 diagnostic messages for
+	C++23 and older.
+	* g++.dg/cpp0x/defaulted2.C: Only expect 2 diagnostic messages for
+	C++23 and older.
+
+2026-05-22  Steve Markgraf  <steve@steve-m.de>
+
+	* gcc.target/powerpc/mpc860_no_lwsync.c: New test.
+
+2026-05-22  Avinal Kumar  <avinal.xlvii@gmail.com>
+
+	PR tree-optimization/125050
+	* gcc.dg/fold-condneg-2.c: Update expected optimization.
+	* gcc.dg/pr125050.c: New test.
+	* gcc.dg/tree-ssa/phi-opt-50.c: New test.
+	* gcc.dg/tree-ssa/phi-opt-51.c: New test.
+
 2026-05-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
 
 	* gcc.target/aarch64/avoid-store-forwarding-6.c: New test.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 480abb0e4e03..526edb7a11ed 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,22 @@
+2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
+
+	* m4/matmul.m4: Fix comment typo.
+	* generated/matmul_c10.c: Regenerate.
+	* generated/matmul_c16.c: Regenerate.
+	* generated/matmul_c17.c: Regenerate.
+	* generated/matmul_c4.c: Regenerate.
+	* generated/matmul_c8.c: Regenerate.
+	* generated/matmul_i1.c: Regenerate.
+	* generated/matmul_i16.c: Regenerate.
+	* generated/matmul_i2.c: Regenerate.
+	* generated/matmul_i4.c: Regenerate.
+	* generated/matmul_i8.c: Regenerate.
+	* generated/matmul_r10.c: Regenerate.
+	* generated/matmul_r16.c: Regenerate.
+	* generated/matmul_r17.c: Regenerate.
+	* generated/matmul_r4.c: Regenerate.
+	* generated/matmul_r8.c: Regenerate.
+
 2026-05-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* caf/shmem/sync.h (lock_t): Rename to caf_shmem_lock_t.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1857354526a9..66ba3b8e5604 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+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

From tkaminsk@gcc.gnu.org  Mon May 25 08:21:21 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 25 May 2026 08:21:21 +0000 (GMT)
Subject: [gcc r17-714] libstdc++: Add data/member for initializer_list,
 and remove std overloads
Message-ID: <20260525082121.C134E4BABF38@sourceware.org>

https://gcc.gnu.org/g:9df83006384d5d6dbfc2bb53f090791862f7ed67

commit r17-714-g9df83006384d5d6dbfc2bb53f090791862f7ed67
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 18 13:14:25 2026 +0200

    libstdc++: Add data/member for initializer_list, and remove std overloads
    
    This implements changes section 4.6 of P3016R6, and initializer_list related
    parts of 4.7 and 4.8. The change makes immediately dangling invocations of
    std::begin, std::end, and std::data on braced-init list ill-formed (see
    range_access_neg.cc and range_access17_neg.cc):
      auto it = std::begin({1, 2, 3});  // ILL-FORMED, it was dangling
      (it == std::end({1, 2, 3}));      // ILL-FORMED, was unspecified
      auto* ptr = std::data({1, 2, 3}); // ILL-FORMED, ptr was dangling
    However, similary problemetic calls for std::rbegin, std::rend remain
    well-formed (see range_access14_neg.cc), as initializer_list overloads
    are preserved for these functions:
      auto rit = ranges::rbegin({1, 2, 3}); // COMPILES, dangling
      auto rend = ranges::rend({1, 2, 3});  // COMPILES, danging
    Note, that non-problematic std::size({1, 2, 3}) and std::empty({1, 2, 3})
    use c-array overloads, and remain well-formed.
    
    Per paper, to keep std::data(il) and std::empty(il) well-formed, the data
    and empty member are added to initializer_list.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/range_access.h           |  4 ++++
 libstdc++-v3/include/bits/version.def              |  8 ++++++++
 libstdc++-v3/include/bits/version.h                | 10 +++++++++
 libstdc++-v3/libsupc++/initializer_list            | 13 ++++++++++++
 .../18_support/initializer_list/data_empty_mem.cc  | 21 +++++++++++++++++++
 .../18_support/initializer_list/range_access.cc    | 10 +++------
 .../18_support/initializer_list/range_access14.cc  | 24 ++++++++++++++++++++++
 .../initializer_list/range_access14_neg.cc         | 18 ++++++++++++++++
 .../18_support/initializer_list/range_access17.cc  | 16 +++++++++++++++
 .../initializer_list/range_access17_neg.cc         | 14 +++++++++++++
 .../initializer_list/range_access_neg.cc           | 13 ++++++++++++
 11 files changed, 144 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h
index 5a748257f197..b89129f0233b 100644
--- a/libstdc++-v3/include/bits/range_access.h
+++ b/libstdc++-v3/include/bits/range_access.h
@@ -328,6 +328,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     empty(const _Tp (&)[_Nm]) noexcept
     { return false; }
 
+#if __glibcxx_initializer_list < 202511L
   /**
    *  @brief  Return whether an initializer_list is empty.
    *  @param  __il  Initializer list.
@@ -338,6 +339,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr bool
     empty(initializer_list<_Tp> __il) noexcept
     { return __il.size() == 0;}
+#endif
 
   /**
    *  @brief  Return the data pointer of a container.
@@ -374,6 +376,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     data(_Tp (&__array)[_Nm]) noexcept
     { return __array; }
 
+#if __glibcxx_initializer_list < 202511L
   /**
    *  @brief  Return the data pointer of an initializer list.
    *  @param  __il  Initializer list.
@@ -384,6 +387,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr const _Tp*
     data(initializer_list<_Tp> __il) noexcept
     { return __il.begin(); }
+#endif
 #endif // __glibcxx_nonmember_container_access
 
 #ifdef __glibcxx_ssize // C++ >= 20
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 1f0d3a2670e5..14337b5b6b6d 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2410,6 +2410,14 @@ ftms = {
   };
 };
 
+ftms = {
+  name = initializer_list;
+  values = {
+    v = 202511;
+    cxxmin = 26;
+  };
+};
+
 // Standard test specifications.
 stds[97] = ">= 199711L";
 stds[03] = ">= 199711L";
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 66ac0ebef680..9402f25df375 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2675,4 +2675,14 @@
 #endif /* !defined(__cpp_lib_is_structural) */
 #undef __glibcxx_want_is_structural
 
+#if !defined(__cpp_lib_initializer_list)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_initializer_list 202511L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_initializer_list)
+#   define __cpp_lib_initializer_list 202511L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_initializer_list) */
+#undef __glibcxx_want_initializer_list
+
 #undef __glibcxx_want_all
diff --git a/libstdc++-v3/libsupc++/initializer_list b/libstdc++-v3/libsupc++/initializer_list
index baf47baa5f86..fbea49dfb012 100644
--- a/libstdc++-v3/libsupc++/initializer_list
+++ b/libstdc++-v3/libsupc++/initializer_list
@@ -40,6 +40,9 @@
 
 #include <bits/c++config.h>
 
+#define __glibcxx_want_initializer_list
+#include <bits/version.h>
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
   /// initializer_list
@@ -77,8 +80,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
       // One past the last element.
       constexpr const_iterator
       end() const noexcept { return begin() + size(); }
+
+#if __glibcxx_initializer_list >= 202511L
+      constexpr bool
+      empty() const noexcept { return _M_len == 0; }
+
+      constexpr const value_type*
+      data() const noexcept { return _M_array; }
+#endif
     };
 
+#if __glibcxx_initializer_list < 202511L
   /**
    *  @brief  Return an iterator pointing to the first element of
    *          the initializer_list.
@@ -100,6 +112,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
     constexpr const _Tp*
     end(initializer_list<_Tp> __ils) noexcept
     { return __ils.end(); }
+#endif // __glibcxx_initializer_list < 202511L
 }
 
 #endif // C++11
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc b/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc
new file mode 100644
index 000000000000..d5673ebf5922
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc
@@ -0,0 +1,21 @@
+// { dg-do compile { target c++26 } }
+
+#include <initializer_list>
+#include <iterator>
+
+#ifndef __cpp_lib_initializer_list
+# error "Feature-test macro for text_encoding missing in <initializer_list>"
+#elif __cpp_lib_initializer_list != 202511L
+# error "Feature-test macro for text_encoding has wrong value in <initializer_list>"
+#endif
+
+void
+test02()
+{
+  static constexpr std::initializer_list<int> il{1};
+  static_assert( il.data() == il.begin() );
+  static_assert( il.empty() == false );
+  static_assert( noexcept(il.data()) );
+  static_assert( noexcept(il.empty()) );
+}
+
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
index 8d7cb0dfb3f1..feffd4ee4e43 100644
--- a/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
@@ -20,16 +20,12 @@
 // 18.9.3 Initializer list range access [support.initlist.range]
 
 #include <initializer_list>
+#if __cpp_lib_initializer_list >= 202511L
+#  include <iterator>
+#endif
 
 void
 test01()
-{
-  std::begin({1, 2, 3});
-  std::end({1, 2, 3});
-}
-
-void
-test02()
 {
   static constexpr std::initializer_list<int> il{1};
   static_assert( std::begin(il) == il.begin() );
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc
new file mode 100644
index 000000000000..b98e9ccf7b53
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc
@@ -0,0 +1,24 @@
+// { dg-do compile { target c++14 } }
+
+#include <initializer_list>
+#include <iterator>
+
+void
+test01()
+{
+  static constexpr std::initializer_list<int> il{1, 2};
+  static_assert( std::cbegin(il) == il.begin() );
+  static_assert( std::cend(il) == il.end() );
+#if __cplusplus >= 201703L
+  static_assert( std::rbegin(il).base() == il.end() );
+  static_assert( std::rend(il).base() == il.begin() );
+  static_assert( std::rbegin(il).base() == il.end() );
+  static_assert( std::rend(il).base() == il.begin() );
+#endif 
+  static_assert( noexcept(std::cbegin(il)) );
+  static_assert( noexcept(std::cend(il)) );
+  static_assert( noexcept(std::rbegin(il)) );
+  static_assert( noexcept(std::rend(il)) );
+  static_assert( noexcept(std::crbegin(il)) );
+  static_assert( noexcept(std::crend(il)) );
+}
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc
new file mode 100644
index 000000000000..e1c4062fc674
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc
@@ -0,0 +1,18 @@
+// { dg-do compile { target c++17 } }
+
+#include <iterator>
+
+void
+test01()
+{
+  (void)std::cbegin({1, 2, 3});  // { dg-error "no matching function for call" }
+  (void)std::cend({1, 2, 3});    // { dg-error "no matching function for call" }
+  (void)std::rbegin({1, 2, 3});  // initializer_list overload not removed
+  (void)std::rend({1, 2, 3});    // initializer_list overload not removed
+  (void)std::crbegin({1, 2, 3}); // { dg-error "no matching function for call" }
+  (void)std::crend({1, 2, 3});   // { dg-error "no matching function for call" }
+
+}
+
+// { dg-prune-output "cannot bind non-const lvalue reference of type" }
+// { dg-prune-output "which is of non-class type" }
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc
new file mode 100644
index 000000000000..443aae3aaa03
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc
@@ -0,0 +1,16 @@
+// { dg-do compile { target c++17 } }
+
+#include <initializer_list>
+#include <iterator>
+
+void
+test01()
+{
+  static constexpr std::initializer_list<int> il{1};
+  static_assert( std::data(il) == il.begin() );
+  static_assert( std::size(il) == il.size() );
+  static_assert( !std::empty(il) );
+  static_assert( noexcept(std::data(il)) );
+  static_assert( noexcept(std::size(il)) );
+  static_assert( noexcept(std::empty(il)) );
+}
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc
new file mode 100644
index 000000000000..fbe18f78bf81
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc
@@ -0,0 +1,14 @@
+// { dg-do compile { target c++17 } }
+
+#include <iterator>
+
+void
+test01()
+{
+  (void)std::data({1, 2, 3});  // { dg-error "no matching function for call" "" { target c++26 } }
+  (void)std::size({1, 2, 3});  // uses array overload
+  (void)std::empty({1, 2, 3}); // uses array overload
+}
+
+// { dg-prune-output "cannot bind non-const lvalue reference of type" }
+// { dg-prune-output "which is of non-class type" }
diff --git a/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc b/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc
new file mode 100644
index 000000000000..e4bff4ecbed7
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++11 } }
+
+#include <iterator>
+
+void
+test01()
+{
+  (void)std::begin({1, 2, 3}); // { dg-error "no matching function for call" "" { target c++26 } }
+  (void)std::end({1, 2, 3});   // { dg-error "no matching function for call" "" { target c++26 } }
+}
+
+// { dg-prune-output "cannot bind non-const lvalue reference of type" }
+// { dg-prune-output "which is of non-class type" }

From tkaminsk@gcc.gnu.org  Mon May 25 09:41:46 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 25 May 2026 09:41:46 +0000 (GMT)
Subject: [gcc r17-755] libstdc++: Add begin, end,
 (const_)iterator members to valarray.
Message-ID: <20260525094146.A63DA4BA9006@sourceware.org>

https://gcc.gnu.org/g:955316dfc2af3cc5e7bf6b6418f7a2e60820f89f

commit r17-755-g955316dfc2af3cc5e7bf6b6418f7a2e60820f89f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri May 15 13:41:16 2026 +0200

    libstdc++: Add begin, end, (const_)iterator members to valarray.
    
    This implements additions from sections 4.3, 4.4, 4.5 of P3016R6.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Nathan Myers <ncm@cantrip.org>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/range_access.h           |  2 +
 libstdc++-v3/include/bits/version.def              |  8 ++++
 libstdc++-v3/include/bits/version.h                | 10 +++++
 libstdc++-v3/include/std/valarray                  | 41 ++++++++++++++++++-
 .../26_numerics/valarray/range_access3.cc          | 47 ++++++++++++++++++++++
 5 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h
index b89129f0233b..01f790868522 100644
--- a/libstdc++-v3/include/bits/range_access.h
+++ b/libstdc++-v3/include/bits/range_access.h
@@ -119,12 +119,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __cplusplus >= 201402L
 
+#if __glibcxx_valarray < 202511L
   template<typename _Tp> class valarray;
   // These overloads must be declared for cbegin and cend to use them.
   template<typename _Tp> _Tp* begin(valarray<_Tp>&) noexcept;
   template<typename _Tp> const _Tp* begin(const valarray<_Tp>&) noexcept;
   template<typename _Tp> _Tp* end(valarray<_Tp>&) noexcept;
   template<typename _Tp> const _Tp* end(const valarray<_Tp>&) noexcept;
+#endif
 
   /**
    *  @brief  Return an iterator pointing to the first element of
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 14337b5b6b6d..2f32a8bda98f 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2418,6 +2418,14 @@ ftms = {
   };
 };
 
+ftms = {
+  name = valarray;
+  values = {
+    v = 202511;
+    cxxmin = 26; 
+  };
+};
+
 // Standard test specifications.
 stds[97] = ">= 199711L";
 stds[03] = ">= 199711L";
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 9402f25df375..517b9020ec65 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2685,4 +2685,14 @@
 #endif /* !defined(__cpp_lib_initializer_list) */
 #undef __glibcxx_want_initializer_list
 
+#if !defined(__cpp_lib_valarray)
+# if (__cplusplus >  202302L)
+#  define __glibcxx_valarray 202511L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_valarray)
+#   define __cpp_lib_valarray 202511L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_valarray) */
+#undef __glibcxx_want_valarray
+
 #undef __glibcxx_want_all
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index abb158d22c35..5a1f5c0ac5e8 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -46,6 +46,9 @@
 #include <bits/range_access.h>
 #endif
 
+#define __glibcxx_want_valarray
+#include <bits/version.h>
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -139,6 +142,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	};
     public:
       typedef _Tp value_type;
+#if __glibcxx_valarray >= 202511L
+      typedef _Tp* iterator;
+      typedef const _Tp* const_iterator;
+#endif
 
 	// _lib.valarray.cons_ construct/destroy:
       ///  Construct an empty array.
@@ -572,6 +579,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        */
       void resize(size_t __size, _Tp __c = _Tp());
 
+#if __glibcxx_valarray >= 202511L
+      /**
+        *  @brief  Return an iterator pointing to the first element of
+        *          the valarray.
+        */
+      [[nodiscard]]
+      iterator
+      begin() noexcept
+      { return _M_data; }
+
+      [[nodiscard]]
+      const_iterator
+      begin() const noexcept
+      { return _M_data; }
+
+      /**
+        *  @brief  Return an iterator pointing to one past the last element of
+        *          the valarray.
+        */
+      [[nodiscard]]
+      iterator
+      end() noexcept
+      { return _M_data + _M_size; }
+
+      [[nodiscard]]
+      const_iterator
+      end() const noexcept
+      { return _M_data + _M_size; }
+#endif
+
     private:
       size_t _M_size;
       _Tp* __restrict__ _M_data;
@@ -1218,7 +1255,7 @@ _DEFINE_BINARY_OPERATOR(>=, __greater_equal)
 #undef _DEFINE_BINARY_OPERATOR
   /// @endcond
 
-#if __cplusplus >= 201103L
+#if (__cplusplus >= 201103L) && (__glibcxx_valarray < 202511L)
   /**
    *  @brief  Return an iterator pointing to the first element of
    *          the valarray.
@@ -1272,7 +1309,7 @@ _DEFINE_BINARY_OPERATOR(>=, __greater_equal)
       else
 	return nullptr;
     }
-#endif // C++11
+#endif // C++11 to C++23
 
   /// @} group numeric_arrays
 
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc b/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc
new file mode 100644
index 000000000000..09ee7dc3e050
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc
@@ -0,0 +1,47 @@
+// { dg-do run { target c++26 } }
+
+#include <valarray>
+#include <testsuite_hooks.h>
+
+#ifndef __cpp_lib_valarray
+# error "Feature-test macro for text_encoding missing in <initializer_list>"
+#elif __cpp_lib_valarray != 202511L
+# error "Feature-test macro for text_encoding has wrong value in <initializer_list>"
+#endif
+
+void
+test01()
+{
+  std::valarray<double> va(3);
+  va[0] = 1.0; va[1] = 2.0; va[2] = 3.0;
+
+  typename std::valarray<double>::iterator it = va.begin();
+  VERIFY( it != va.end() );
+  VERIFY( *it++ == 1.0 );
+  VERIFY( *it++ == 2.0 );
+  VERIFY( *it++ == 3.0 );
+  VERIFY( it == va.end() );
+
+  const std::valarray<double>& cva = va;
+  typename std::valarray<double>::const_iterator cit = cva.begin();
+  VERIFY( cit != va.end() );
+  VERIFY( *cit++ == 1.0 );
+  VERIFY( *cit++ == 2.0 );
+  VERIFY( *cit++ == 3.0 );
+  VERIFY( cit == cva.end() );
+}
+
+void
+test02()
+{
+  std::valarray<double> va;
+  VERIFY( va.begin() == va.end() );
+  const std::valarray<double>& cva = va;
+  VERIFY( cva.begin() == cva.end() );
+}
+
+int main()
+{
+  test01();
+  test02();
+}

From tkaminsk@gcc.gnu.org  Mon May 25 14:39:36 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon, 25 May 2026 14:39:36 +0000 (GMT)
Subject: [gcc r17-757] libstdc++: Fix some test failures due trivial unions
 (P3074R7) change.
Message-ID: <20260525143936.4B2AD4BA5435@sourceware.org>

https://gcc.gnu.org/g:2ae6b772dc5ebd2ce209f613828288a99447659a

commit r17-757-g2ae6b772dc5ebd2ce209f613828288a99447659a
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 25 16:30:46 2026 +0200

    libstdc++: Fix some test failures due trivial unions (P3074R7) change.
    
    The corresponding types are now trivially destructible, per changes
    from P3074R7, see PR119059.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc      | 4 ++++
 libstdc++-v3/testsuite/20_util/is_destructible/value.cc         | 4 ++++
 libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc | 5 +++++
 3 files changed, 13 insertions(+)

diff --git a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
index d8c2f680d6dc..aabadc5c13d9 100644
--- a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
+++ b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
@@ -715,7 +715,11 @@ static_assert(!std::is_constructible<const DelnAny, Empty, B, D>::value,
 	      "Error");
 
 // Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_constructible<NontrivialUnion>::value, "Error");
+#else
 static_assert(!std::is_constructible<NontrivialUnion>::value, "Error");
+#endif
 static_assert(!std::is_constructible<NontrivialUnion,
 	      const NontrivialUnion&>::value, "Error");
 
diff --git a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
index d6ce6949b9a2..e3c8481b0f8e 100644
--- a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
@@ -99,7 +99,11 @@ static_assert(!std::is_destructible<Del[]>::value, "Error");
 static_assert(!std::is_destructible<const Del[]>::value, "Error");
 
 // Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_destructible<NontrivialUnion>::value, "Error");
+#else
 static_assert(!std::is_destructible<NontrivialUnion>::value, "Error");
+#endif
 
 // Unusual copy:
 static_assert(std::is_destructible<UnusualCopy>::value, "Error");
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
index 71860099dbd3..5565d8111bbd 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
@@ -96,8 +96,13 @@ static_assert(!std::is_nothrow_destructible<TD2>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Aggr2>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Aggr2[1]>::value, "Error");
 static_assert(!std::is_nothrow_destructible<TD1[1][2]>::value, "Error");
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_nothrow_destructible<Ut>::value, "Error");
+static_assert(std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#else
 static_assert(!std::is_nothrow_destructible<Ut>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#endif
 static_assert(!std::is_nothrow_destructible<AbstractDelDtor>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Abstract2>::value, "Error");
 static_assert(!std::is_nothrow_destructible<Abstract3>::value, "Error");

From gccadmin@gcc.gnu.org  Tue May 26 00:16:57 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 26 May 2026 00:16:57 +0000 (GMT)
Subject: [gcc r17-762] Daily bump.
Message-ID: <20260526001657.DA2EB4BA23F1@sourceware.org>

https://gcc.gnu.org/g:9ab56d9ab46c2b1739b9fd35d6aff8e24c2913f9

commit r17-762-g9ab56d9ab46c2b1739b9fd35d6aff8e24c2913f9
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue May 26 00:16:30 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  42 +++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 417 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog         |   4 +
 gcc/testsuite/ChangeLog |  42 +++++
 libgfortran/ChangeLog   |   9 ++
 libstdc++-v3/ChangeLog  |  46 ++++++
 7 files changed, 561 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9212c0a30258..2a817f2f87f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,45 @@
+2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125453
+	* match.pd (`(smaller)a ==/!= (smaller) b`): Reject
+	non integral types.
+
+2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/125409
+	* config/avr/avr-fixed.md (FIXED_A, FIXED_B): Add PSI to iterators.
+
+2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/121343
+	* config/avr/avr.md (load_<mode>_libgcc): Rewrite to use
+	a hard-reg constraint for operand 0.
+	(gen_load<mode>_libgcc): Remove expander.
+	(mov<mode>): No more special handling needed for sources that
+	satisfy avr_load_libgcc_p.
+
+2026-05-25  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/125377
+	* omp-general.cc (omp_check_for_duplicate_variant): Fix used
+	tree for 'inform' part of the error message.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* doc/invoke.texi (fstack-usage): Document new second field.
+	* toplev.cc (output_stack_usage_1): Revert latest changes and add
+	the mangled name as the second field.
+
+2026-05-25  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.cc (bitmap_last_set_bit): Fix handling of index 0.
+
+2026-05-25  liuhongt  <hongtao.liu@intel.com>
+
+	PR middle-end/124630
+	* match.pd (popcount (x ^ (x - 1))): Fold to ctz (x) + 1 when
+	x is nonzero and CTZ is directly supported.
+
 2026-05-24  Raven Hallsby  <karl@hallsby.com>
 
 	PR tree-optimization/125104
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 612b4a74bc9a..8d594f290dce 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260525
+20260526
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index ad18fe41259b..3f2a6b6f6019 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,420 @@
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_util.adb (Prefix_Is_Formal_Parameter): Rename into...
+	(Prefix_Is_Formal_Parameter_Of_EQ): ...this.  Return True only if
+	the formal parameter is that of an equality function built for an
+	unchecked union type.
+	(Has_Inferable_Discriminants): Adjust to above renaming.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_put_image.ads (Image_Should_Call_Put_Image): Rename into...
+	(Image_Must_Call_Put_Image): ...this.
+	* exp_put_image.adb (Image_Should_Call_Put_Image): Rename into...
+	(Image_Must_Call_Put_Image): ...this.
+	* exp_imgv.adb (Expand_Image_Attribute): Adjust to above renaming.
+	(Expand_Wide_Image_Attribute): Likewise.
+	(Expand_Wide_Wide_Image_Attribute): Likewise.
+	* sem_attr.adb (Eval_Attribute): Likewise.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_attr.adb: Add with and use clauses for Exp_Put_Image.
+	(Eval_Attribute.Fold_Compile_Time_Known_Enumeration_Image): New
+	procedure factored out from....
+	(Eval_Attribute): ...here.  Attempt to fold 'Img and 'Image for all
+	compile-time known values of enumeration, but not character, types,
+	provided that Put_Image need not be called, by invoking the nested
+	Fold_Compile_Time_Known_Enumeration_Image procedure on the value.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* sem_util.adb: Fix RM references.
+	* sem_util.ads: Likewise.
+	* sem_warn.adb: Likewise.
+
+2026-05-25  Martin Clochard  <clochard@adacore.com>
+
+	* sem_util.adb (As_Boolean): utility to fill decoration in expressions
+	(Determining_Condition): set Etype for generated Boolean connectors
+	(Conditional_Evaluation_Condition): set Etype for generated connectors
+
+2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+
+	* par-ch12.adb (P_Formal_Subprogram_Declaration): Pass True for
+	the Is_Core_Extension parameter on call to Error_Msg_GNAT_Extension.
+
+2026-05-25  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch13.adb (Analyze_Aspect_Specifications): Record aspect CPU and
+	Priority applied to subprogram as a representation item.
+
+2026-05-25  Claire Dross  <dross@adacore.com>
+
+	* sem_prag.adb (Analyze_Exit_Contract): The Exception_Raised exit kind
+	is not compatible with No_Raise.
+	(Analyze_Pragma): The Exceptional_Cases pragma is not compatible with
+	No_Raise.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gen_il-gen-gen_entities.adb (E_Subprogram_Type): Add the missing
+	Scope_Depth_Value field.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/93702
+	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Revert latest
+	change.
+	* sem_ch12.adb (Analyze_One_Association): Remove redundant line.
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze the profile
+	again for bodies that are not generated from expression functions.
+
+2026-05-25  Javier Miranda  <miranda@adacore.com>
+
+	* sem_disp.adb (Check_Controlling_Formals): Formals of a type
+	specifying aspect First_Controlling_Parameter are not candidate
+	controlling parameters when they are not the first formal of
+	the dispatching primitive.
+
+2026-05-25  Javier Miranda  <miranda@adacore.com>
+
+	* exp_ch5.adb (Expand_N_Assignment_Statement): Handle internally
+	generated initialization invoking a C++ constructor.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/93702
+	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): Call
+	Freeze_Expr_Types_Before instead of Freeze_Expr_Types.
+	(Process_Preconditions_For): Likewise.
+	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not set
+	Was_Expression_Function flag on the generated bodies.
+	* exp_ch6.adb (Expand_Call_Helper): Call Original_Node on the
+	result of the call to Expression_Of_Expression_Function.
+	* freeze.ads (Freeze_Expr_Types): Delete.
+	(Freeze_Expr_Types_Before): New procedure declaration.
+	* freeze.adb (Check_Expression_Function): Delete.
+	(Freeze_And_Append): Add Do_Freeze_Profile formal parameter and
+	pass it to Freeze_Entity.  Remove call to Check_Expression_Function.
+	(Freeze_Entity): Set Test_E consistently and freeze the expression
+	of expression functions that are primitives of a tagged type.
+	(Freeze_Profile): Adjust calls to Should_Freeze_Type.
+	(In_Expanded_Body): Also return true for DIC procedures.
+	(Freeze_Expression): Remove call to Check_Expression_Function.
+	Freeze the expression of expression functions.
+	(Freeze_Expr_Types): Add Result and Before formal parameters.
+	Make a copy and preanalyze/resolve it only if Typ is present.
+	(Freeze_Expr_Types.Explain_Error): New procedure.
+	(Freeze_Expr_Types.Find_Incomplete_Constant): Likewise.
+	(Freeze_Expr_Types.Check_And_Freeze_Type): Return immediately if
+	the type is already frozen.  Report errors on N instead of Node.
+	If Before is False, append the freeze nodes to Result.
+	(Freeze_Expr_Types.Freeze_Type_Refs): Call Find_Incomplete_Constant.
+	(Freeze_Expr_Types_Before): New procedure.
+	(Should_Freeze_Type): Remove formal parameter E and
+	specific kludge for stand-alone expression functions.
+	* ghost.ads (Mark_And_Set_Ghost_Body_Of_Expression_Function): New
+	procedure declaration.
+	* ghost.adb (Mark_And_Set_Ghost_Body_Of_Expression_Function): New
+	procedure body.
+	* rtsfind.adb (RTE): Preserve and reset the In_Inlined_Body flag.
+	(RTE_Record_Component): Likewise.
+	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Just call
+	Freeze_Expression to freeze the expression of prefixes that are
+	expression functions and remove obsolete implementation.
+	* sem_ch3.adb (Analyze_Declarations): Adjust commentary.
+	(Check_Completion): Also skip stand-alone expressions functions.
+	* sem_ch4.adb (Analyze_Case_Expression): Always analyze the choices.
+	* sem_ch6.adb: Add with and use clauses for Sem_Ch7.
+	(Analyze_Expression_Function): Call Freeze_Expr_Types_Before instead
+	of Freeze_Expr_Types for expression functions that are completions.
+	For stand-alone expression functions, set In_Private_Part on the
+	entity if it is in the private part, propagate the results of the
+	resolution of the specification of the the declaration to that of
+	the body and insert the body at the next freezing point.
+	(Analyze_Subprogram_Body_Helper): Remove the machinery for masking
+	and unmasking unfrozen types. For a stand-alone expression function,
+	call Mark_And_Set_Ghost_Body_Of_Expression_Function, remove obsolete
+	code dealing with the freezing of the spec, set In_Inlined_Body to
+	True, make the full view of the private types of its scope visible
+	if this is not the current scope and it is in the private part, and
+	avoid making the spec immediately visible.
+	(Analyze_Subprogram_Specification): Fix typo.
+	(New_Overloaded_Entity): Set Has_Completion on a [generic] package
+	that conflicts with the entity to prevent a cascaded error.
+	* sem_ch7.ads (Is_Private_Base_Type): New function declaration moved
+	here from...
+	* sem_ch7.adb (Is_Private_Base_Type): ...here.  Remove.
+	* sem_ch8.adb (Analyze_Subprogram_Renaming): Call Freeze_Expression
+	to freeze the expression of expression functions, but only if the
+	renaming comes from source.
+	* sem_ch12.adb (Analyze_One_Association): Likewise, and remove the
+	manual freezing for calls to them.
+	* sem_res.adb (Resolve): Remove obsolete commentary.
+	(Resolve_Call): Always freeze the expression of names that are
+	expression functions.
+	* sem_util.adb (Check_Fully_Declared): Add commentary and do not
+	check types with private component declared outside of the current
+	scope when it is a generic unit.
+	(Expression_Of_Expression_Function): Return Expression directly.
+	(Is_Inlinable_Expression_Function): Call Original_Node on the
+	result of the call to Expression_Of_Expression_Function.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch8.adb (Analyze_Subprogram_Renaming): Retrieve again the
+	expression of the expression function manually.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_res.adb (Resolve_Entity_Name): Add the name of the constant
+	to the error message for premature freezing of deferred constants.
+
+2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+
+	* sem_ch12.adb (Build_Subprogram_Wrapper): Remove the subprogram
+	renaming created for the formal-to-actual association from the
+	list of renamings (only when such a subprogram renaming is present).
+	Also, change the name from plural to singular, since the procedure
+	only creates one wrapper, update the spec comment to reflect that,
+	and clarify the state and use of the Renamings parameter.
+
+2026-05-25  Viljar Indus  <indus@adacore.com>
+
+	* sem_prag.adb (Analyze_Abstract_State): Improve handling of
+	True/False for Abstract_State with Ghost.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Add Initialize
+	aspect with default others to trigger Initialize aspect analysis.
+	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): Fix
+	initialization order.
+	(Init_From_Initialize_Expression): Retrieve initialization expression or
+	the default one base on the Initialize aspect.
+	(Init_From_Default_Or_Constructor):. Retrieve initialization expression
+	based on the default one in the record initialization list or the init
+	procedure.
+	* sem_ch13.adb (Analyze_Aspect_Specifications): Add check for
+	missing components that require initialization, and add an
+	expression_with_action node to place ABE during resolution of
+	aggregates with function calls.
+	(Check_Constructor_Choices): Helper to check that the aggregate choices
+	do not refer to ancestors.
+	(Diagnose_Misplaced_Aspects): Improve diagnostics when it is a clear
+	misspelling of Initialize aspect.
+	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): If missing, add a
+	compiler generated Initialize aspect with default others to trigger
+	Initialize analysis.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* contracts.adb (Has_Public_Visibility_Of_Subprogram): Use Subp_Id
+	throughout and Is_Expression_Function to spot expression functions.
+	* ghost.adb (Is_OK_Declaration): Likewise.
+	* sem_ch12.adb (Analyze_One_Association): Likewise.
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
+	(Analyze_Subprogram_Specification): Fix typo.
+	(Find_Corresponding_Spec): Call Is_Expression_Function.
+	* sem_ch8.adb (Analyze_Subprogram_Renaming): Retrieve the expression
+	by means of Expression_Of_Expression_Function.
+	* sem_res.adb (Resolve_Allocator): Call Is_Expression_Function.
+	(Rewrite_Renamed_Operator): Likewise.
+	* sem_util.adb (Expression_Of_Expression_Function): Streamline the
+	the implementation.
+	(Is_Expression_Function): Likewise.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch6.adb (Expand_Ctrl_Function_Call): Bail out for the name
+	of an object renaming declaration at library level, if the call
+	does not return on the secondary stack.
+	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Rewrite the
+	renaming as a regular object declaration if it is declared at
+	library level and the name is a controlled function call whose
+	result is not returned on the secondary stack.
+	* exp_util.adb (Rewrite_Object_Declaration_As_Renaming): Minor fix.
+
+2026-05-25  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch3.adb (Analyze_Subtype_Declaration): Record subtypes
+	inherit the CPP_Class attribute; required for instantiations.
+
+2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+
+	* contracts.adb (Analyze_Contracts): Add cases for formal subprogram
+	Nkinds so that Analyze_Entry_Or_Subprogram_Contract will be called
+	for them.
+	* sem_attr.adb (Analyze_Attribute_Old_Result): Account for the cases
+	of formal subprogram Nkinds, allowing Old attributes for those.
+	* sem_ch12.adb (Build_Subprogram_Wrappers): Add a formal for passing
+	the unanalyzed generic formal, and use it for copying any aspect
+	specifications of the generic formal rather than copying the analyzed
+	generic formal's aspects.
+	(Analyze_One_Association): Pass Assoc.Un_Formal as an additional
+	actual in the call to Build_Subprogram_Wrappers.
+
+2026-05-25  Steve Baird  <baird@adacore.com>
+
+	* accessibility.adb (Needs_Accessibility_Level_Temp_Or_Check): Conform
+	to spec changes. Return True for the RHS of an assignment statement.
+	* accessibility.ads: Change name of Is_Anonymous_Access_Actual
+	to Needs_Accessibility_Level_Temp_Or_Check; the function now returns
+	True in cases other than those described by the old name.
+	Also change name of the formal parameter from N to Conditional_Expr.
+	* exp_ch4.adb (Expand_N_If_Expression): Update call to a function
+	whose name changed.
+
+2026-05-25  Javier Miranda  <miranda@adacore.com>
+
+	* sem_util.adb (Is_Fully_Initialized_Variant): Moved inside
+	subprogram Is_Fully_Initialized_Type.
+	(Is_Fully_Initialized_Constrained_Array): New subprogram that
+	factorizes code of Is_[Fully|Partially]_Initialized_Type.
+	(Is_Fully_Initialized_Record_Type): New subprogram; add missing
+	support for incomplete types.
+	(Is_Partially_Initialized_Record_Type): New subprogram; add missing
+	support for incomplete types.
+	(Is_Partially_Initialized_Type): Add new formal for predicate checks.
+	* sem_util.ads (Is_Partially_Initialized_Type): Add new formal for
+	predicate checks.
+	* sem_warn.adb (Type_OK_For_No_Value_Assigned): Use named parameters
+	in call to Is_Partially_Initialized_Type.
+	* sem_ch3.adb (Analyze_Object_Declaration): Add new actual for
+	predicate checks.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Introduce new local
+	boolean constant From_Expression_Function, use it throughout, and
+	replace an equivalent test by it.  Do not deal with name conflicts
+	here when it is true.  Do not verify the consistency of overriding
+	indicators for stand-alone expression functions.
+	* sem_util.ads (Is_Expression_Function_Or_Completion): Fix improper
+	wording in description.
+	* sem_util.adb (Is_Expression_Function_Or_Completion): Streamline
+	the implementation.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_util.adb (Remove_Init_Call.Find_Init_Call_In_List): Check that
+	the first actual denotes the expected variable modulo qualification
+	and conversion.
+
+2026-05-25  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch3.adb (Analyze_Object_Declaration): Report an error if the
+	return statement of a function with foreign convention has a call
+	to a C++ constructor.
+	* exp_ch3.adb (Expand_N_Object_Declaration): Handle initialization
+	expression calling a C++ constructor in an extended return statement
+	of a subprogram with Ada convention.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Pull out the generic
+	case from the if-statement and put it first.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* exp_disp.adb (Expand_Dispatching_Call): Remove suppression of checks
+	during analysis of expanded dispatching calls.
+
+2026-05-25  Ronan Desplanques  <desplanques@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst: Add that finally is a
+	non-reserved keyword.
+	* par-ch5.adb (P_Sequence_Of_Statements): handle "finally" syntax
+	extension.
+	* snames.ads-tmpl: Remove the concept of GNAT extension reserved
+	word.
+	* snames.adb-tmpl (Is_Keyword_Name): Likewise.
+	* scans.adb (Initialize_Ada_Keywords): Likewise.
+	* par-util.adb (Check_Future_Keyword): Likewise.
+	* gnat_rm.texi: Regenerate.
+
+2026-05-25  Bob Duff  <duff@adacore.com>
+
+	* exp_ch9.adb (Expand_N_Protected_Body):
+	Remove "raise Program_Error" and consolidate other
+	cases.
+
+2026-05-25  Sebastian Poeplau  <poeplau@adacore.com>
+
+	* libgnarl/libgnarl.gpr: Add dependency on libgnat.gpr.
+	Set Library_Name and Library_Version depending on Library_Kind.
+	* libgnat/libgnat.gpr: Likewise.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* aspects.ads (Aspects): Make Super aspect optional to allow for
+	explicit call to parent parameterless constructor.
+	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Build implicit
+	parameterless constructor when no other constructors are defined but the
+	type has an ancestor with constructors.
+	* exp_ch6.adb
+	(Init_Expression_If_Any): Pe4rmit implicit calls to parameterless
+	constructors in initialization expressions if available.
+	(Make_Parent_Constructor_Call): Super without parameters calls the
+	parent parameterless constructor.
+	* sem_ch13.adb (Analyze_Aspect_Specification): Allow Super aspect
+	without expression.
+	* sem_ch3.adb (Analyze_Object_Declaration): Delay check for missing
+	parameterless constructor until the the implicit constructor is built.
+
+2026-05-25  Steve Baird  <baird@adacore.com>
+
+	* aspects.ads: Add three new Taint_Xxx aspects to the Aspect_Id
+	enumeration type and define a corresponding subtype,
+	Ignored_Aspects.
+	* exp_prag.adb (Expand_N_Pragma): Don't rewrite a taint-related
+	pragma as a null statement. We want to leave the (unanalyzed)
+	pragma in the tree.
+	* sem_ch13.adb (Analyze_One_Aspect): Leave taint-related aspect
+	specifications
+	(and their arguments, if any) unanalyzed.
+	(Check_Aspect_At_Freeze_Point): Update a case statement to treat
+	the new aspects as an error case.
+	* sem_util.adb (Should_Ignore_Pragma_Sem): Return True for an
+	ignored pragma.
+	* snames.ads-tmpl: Define names for the three new aspects.
+
+2026-05-25  Bob Duff  <duff@adacore.com>
+
+	* scans.adb (Save_Scan_State): Use an aggregate.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* exp_ch6.adb (Build_Helper_Call): Refactor code to handle both static and
+	dynamic precondition calls in the same way.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* exp_ch3.adb (Build_Record_Init_Proc): Move Build_Assignment to
+	Build_Component_Assignment in Exp_Util for a more general use.
+	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): refactor using
+	Build_Component_Assignment.
+	* exp_util.adb (Build_Component_Assignment): Logic to build component
+	assignments for initialization procedures and constructor prologues.
+	* exp_util.ads (Build_Component_Assignment): Likewise.
+	* sem_ch5.adb (Analyze_Assignment): Revert back changes from previous
+	attempt to fix assignments of limited types in constructor prologues,
+	the use of Build_Component_Assignment makes those changes unnecessary.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch3.adb (Expand_N_Object_Declaration): Minor comment fixes.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sinput.ads: Small tweak to head comment.
+
+2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* sem_ch3.adb (Build_Derived_Type): Propagate by-constructor indication
+	only for derived tagged types, not for composition.
+
 2026-05-19  Jakub Jelinek  <jakub@redhat.com>
 
 	PR other/125348
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 92f64dd0e915..251657eedcba 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-25  Sam James  <sam@gentoo.org>
+
+	* c-parser.cc: Delete errant optimize pragma.
+
 2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
 
 	* c-typeck.cc (build_conditional_expr): Likewise.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 80e301cbeea3..937808551ce6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,45 @@
+2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125453
+	* gcc.dg/torture/pr125453-1.c: New test.
+
+2026-05-25  H.J. Lu  <hjl.tools@gmail.com>
+
+	* gcc.target/i386/stack-usage-realign.c: Adjusted.
+
+2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/125409
+	* gcc.target/avr/torture/pr125409.h: New file.
+	* gcc.target/avr/torture/pr125409-fx24-ssk.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-ssr.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-suk.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-sur.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-usk.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-usr.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-uuk.c: New test.
+	* gcc.target/avr/torture/pr125409-fx24-uur.c: New test.
+
+2026-05-25  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/125377
+	* c-c++-common/gomp/begin-declare-variant-1.c: New test.
+
+2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc.dg/stack-usage-1.c: Adjust.
+
+2026-05-25  H.J. Lu  <hjl.tools@gmail.com>
+
+	* gcc.target/i386/stack-usage-realign.c: Add the user visibility
+	name to scan-stack-usage.
+
+2026-05-25  liuhongt  <hongtao.liu@intel.com>
+
+	PR middle-end/124630
+	* gcc.dg/pr124630.c: New test.
+	* gcc.target/i386/pr124630.c: New test.
+
 2026-05-24  Raven Hallsby  <karl@hallsby.com>
 
 	PR tree-optimization/125104
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 8facb8ef6e65..0b8ba591e71d 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/93727
+	* io/write_float.def (get_float_hex_string): Fix kind=8 frac_part
+	from unsigned long to GFC_UINTEGER_8 to correct truncated hex
+	output and IEEE_INVALID_FLAG on ILP32 targets.  Update kind=10
+	and kind=16 to use GFC_UINTEGER_8 for consistency.
+	Assisted by: Claude Sonnet 4.6
+
 2026-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 	    Harald Anlauf  <anlauf@gcc.gnu.org>
 
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 66ba3b8e5604..4524c3589572 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,49 @@
+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:

From tkaminsk@gcc.gnu.org  Tue May 26 10:10:45 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 26 May 2026 10:10:45 +0000 (GMT)
Subject: [gcc r17-805] libstdc++: Merged concept for ranges with static sized.
Message-ID: <20260526101045.AAC154BA23D6@sourceware.org>

https://gcc.gnu.org/g:68b90fc4e95ba1ecaa6a2ca9d59be87000968e78

commit r17-805-g68b90fc4e95ba1ecaa6a2ca9d59be87000968e78
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 05:25:47 2026 +0200

    libstdc++: Merged concept for ranges with static sized.
    
    This patch replaces duplicated __detail::__statically_sized (from std/meta)
    and simd::__static_sized_range (from include/bits/simd_details.h) concepts
    with single range::__static_sized_range. The concept uses the implementation
    based on __statically_sized concept, as it avoids triggering instantiations
    of some class template for each possible size value.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/ranges_base.h        |  6 ++++++
 libstdc++-v3/include/bits/simd_details.h       |  9 +--------
 libstdc++-v3/include/bits/simd_loadstore.h     |  8 ++++----
 libstdc++-v3/include/bits/simd_vec.h           | 12 +++++++-----
 libstdc++-v3/include/std/meta                  | 12 +-----------
 libstdc++-v3/testsuite/std/simd/traits_impl.cc |  4 ----
 6 files changed, 19 insertions(+), 32 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_base.h b/libstdc++-v3/include/bits/ranges_base.h
index 519927f5613e..fea4100eb09e 100644
--- a/libstdc++-v3/include/bits/ranges_base.h
+++ b/libstdc++-v3/include/bits/ranges_base.h
@@ -558,6 +558,12 @@ namespace ranges
   template<sized_range _Range>
     using range_size_t = decltype(ranges::size(std::declval<_Range&>()));
 
+#if __cplusplus > 202302L
+  template<typename _Tp>
+    concept __static_sized_range = sized_range<_Tp> && requires (_Tp& __t)
+      { static_cast<char(*)[size_t(ranges::size(__t) >= 0)]>(nullptr); };
+#endif // C++26
+
   template<typename _Derived>
     requires is_class_v<_Derived> && same_as<_Derived, remove_cv_t<_Derived>>
     class view_interface; // defined in <bits/ranges_util.h>
diff --git a/libstdc++-v3/include/bits/simd_details.h b/libstdc++-v3/include/bits/simd_details.h
index a1acc5bd9464..e2002b6de824 100644
--- a/libstdc++-v3/include/bits/simd_details.h
+++ b/libstdc++-v3/include/bits/simd_details.h
@@ -986,18 +986,11 @@ namespace simd
     using mask = basic_mask<sizeof(_Tp), __deduce_abi_t<_Tp, _Np>>;
 
   // [simd.ctor] load constructor constraints
-  template <typename _Tp, size_t _Np = -1uz>
-    concept __static_sized_range
-      = ranges::sized_range<_Tp> && requires(_Tp&& __r) {
-	typename integral_constant<size_t, ranges::size(__r)>;
-	requires (_Np == -1uz || ranges::size(__r) == _Np);
-      };
-
   template <typename _Rg>
     consteval size_t
     __static_range_size(_Rg& __r)
     {
-      if constexpr (requires { typename integral_constant<size_t, ranges::size(__r)>; })
+      if constexpr (ranges::__static_sized_range<_Rg>)
 	return ranges::size(__r);
       else
 	return dynamic_extent;
diff --git a/libstdc++-v3/include/bits/simd_loadstore.h b/libstdc++-v3/include/bits/simd_loadstore.h
index 20c5fb5cf7fe..2390ea289f5c 100644
--- a/libstdc++-v3/include/bits/simd_loadstore.h
+++ b/libstdc++-v3/include/bits/simd_loadstore.h
@@ -75,7 +75,7 @@ namespace simd
       constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
       constexpr size_t __static_size = __static_range_size(__r);
 
-      if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
+      if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
 	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
 
       const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
@@ -121,7 +121,7 @@ namespace simd
       constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
       constexpr auto __static_size = __static_range_size(__r);
 
-      if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
+      if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
 	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
 
       const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
@@ -248,7 +248,7 @@ namespace simd
 		    "'flag_convert' must be used for conversions that are not value-preserving");
 
       constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
-      if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
+      if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
 	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
 
       auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
@@ -285,7 +285,7 @@ namespace simd
 		    "'flag_convert' must be used for conversions that are not value-preserving");
 
       constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
-      if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
+      if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
 	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
 
       auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
diff --git a/libstdc++-v3/include/bits/simd_vec.h b/libstdc++-v3/include/bits/simd_vec.h
index 5f3bd7fd2f61..6657587e4d4a 100644
--- a/libstdc++-v3/include/bits/simd_vec.h
+++ b/libstdc++-v3/include/bits/simd_vec.h
@@ -1207,14 +1207,15 @@ namespace simd
 	}
 
       template <ranges::contiguous_range _Rg, typename... _Flags>
-	requires __static_sized_range<_Rg, _S_size>
+	requires ranges::__static_sized_range<_Rg>
 	  && __vectorizable<ranges::range_value_t<_Rg>>
 	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
 	[[__gnu__::__always_inline__]]
 	constexpr
 	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
-	  : basic_vec(_LoadCtorTag(), __flags.template _S_adjust_pointer<basic_vec>(
-					ranges::data(__range)))
+	requires (ranges::size(__range) == _S_size)
+	: basic_vec(_LoadCtorTag(), __flags.template _S_adjust_pointer<basic_vec>(
+				      ranges::data(__range)))
 	{
 	  static_assert(__loadstore_convertible_to<ranges::range_value_t<_Rg>, value_type,
 						   _Flags...>);
@@ -2072,11 +2073,12 @@ namespace simd
 	{}
 
       template <ranges::contiguous_range _Rg, typename... _Flags>
-	requires __static_sized_range<_Rg, _S_size>
+	requires ranges::__static_sized_range<_Rg>
 	  && __vectorizable<ranges::range_value_t<_Rg>>
 	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
 	constexpr
 	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
+	requires (ranges::size(__range) == _S_size)
 	: basic_vec(_LoadCtorTag(),
 		    __flags.template _S_adjust_pointer<basic_vec>(ranges::data(__range)))
 	{
@@ -2245,7 +2247,7 @@ namespace simd
 
   // [simd.overview] deduction guide ------------------------------------------
   template <ranges::contiguous_range _Rg, typename... _Ts>
-    requires __static_sized_range<_Rg>
+    requires ranges::__static_sized_range<_Rg>
     basic_vec(_Rg&& __r, _Ts...)
     -> basic_vec<ranges::range_value_t<_Rg>,
 		 __deduce_abi_t<ranges::range_value_t<_Rg>,
diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta
index 21a4df45bfc0..bc04dddcb649 100644
--- a/libstdc++-v3/include/std/meta
+++ b/libstdc++-v3/include/std/meta
@@ -640,16 +640,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return meta::extract<const ranges::range_value_t<_Rg>*>(__str);
     }
 
-  namespace __detail
-  {
-    template<typename _Rg>
-    concept __statically_sized
-      = requires(_Rg&& __r) {
-	static_cast<char(*)[static_cast<size_t>(ranges::size(__r))
-			    >= 0]>(nullptr);
-      };
-  } // namespace __detail
-
   template<ranges::input_range _Rg>
     consteval auto
     define_static_array(_Rg&& __r)
@@ -657,7 +647,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       using _Tp = ranges::range_value_t<_Rg>;
       auto __array = meta::reflect_constant_array(__r);
       auto __type = meta::type_of(__array);
-      if constexpr (__detail::__statically_sized<_Rg>)
+      if constexpr (ranges::__static_sized_range<_Rg>)
 	{
 	  constexpr size_t __extent = static_cast<size_t>(ranges::size(__r));
 	  if constexpr (__extent)
diff --git a/libstdc++-v3/testsuite/std/simd/traits_impl.cc b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
index 2f705c7df2f7..02e2b690a6a6 100644
--- a/libstdc++-v3/testsuite/std/simd/traits_impl.cc
+++ b/libstdc++-v3/testsuite/std/simd/traits_impl.cc
@@ -83,10 +83,6 @@ void test()
   static_assert(!__streq_to_1("0"));
   static_assert(!__streq_to_1("1 "));
 
-  static_assert(__static_sized_range<int[4]>);
-  static_assert(__static_sized_range<int[4], 4>);
-  static_assert(__static_sized_range<std::array<int, 4>, 4>);
-
   static_assert( __value_preserving_convertible_to<int, double>);
   static_assert(!__value_preserving_convertible_to<int, float>);
   static_assert( __value_preserving_convertible_to<float, double>);

From redi@gcc.gnu.org  Tue May 26 10:14:41 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 26 May 2026 10:14:41 +0000 (GMT)
Subject: [gcc r17-806] libstdc++: Split <iosfwd> and only include it in <ios>
 [PR125371]
Message-ID: <20260526101441.323534BA23CE@sourceware.org>

https://gcc.gnu.org/g:396ad1175450c22098a59a0e033dcdd5fc19b2ff

commit r17-806-g396ad1175450c22098a59a0e033dcdd5fc19b2ff
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 19 16:51:14 2026 +0100

    libstdc++: Split <iosfwd> and only include it in <ios> [PR125371]
    
    The standard explicitly requires the <ios> header to include <iosfwd>,
    which has declarations of all the standard stream buffers and stream
    types. Because we include <ios> in <istream> and <ostream>, this means
    that <iosfwd> is included everywhere, and so every iostream header has a
    forward declaration of every iostream type. This means that for example,
    <fstream> has a declaration (but not the definition) of std::stringbuf.
    
    This leads to a poor user experience, because the compiler's fixit hints
    for undeclared types do not trigger of the type _has_ been declared,
    instead users get an error about using an incomplete type. See the
    example in PR 125371, where using std::istringstream after including
    <fstream> fails to suggest including <sstream>.
    
    If we stop including <ios> in <istream> and <ostream>, and instead
    include _most_ of the same things that <ios> provides, then we can avoid
    the unhelpful declarations of the entire family of iostream types in
    every header. Users who really do want a declaration of std::filebuf
    or std::istringstream (but don't want the full definition) can still
    explicitly include <iosfwd> to get those declarations. But they won't
    get them as a side effect of <fstream> etc.
    
    Various headers currently include <iosfwd> because they really do want
    the declaration of e.g. std::ostream of std::streambuf_iterator. We can
    split <iosfwd> into five smaller headers and then only include the relevant
    one where required, e.g. <fstream> only needs to include iosfwd_file.h
    and not iosfwd_string.h.
    
    We need to add an explicit include of <ios> in <iostream>.  The standard
    requires it there, and after this change we no longer get it via
    <istream> and <ostream>.
    
    libstdc++-v3/ChangeLog:
    
            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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/config/io/basic_file_stdio.h   |   2 +-
 libstdc++-v3/include/Makefile.am            |   5 +
 libstdc++-v3/include/Makefile.in            |   5 +
 libstdc++-v3/include/bits/fs_path.h         |   2 +-
 libstdc++-v3/include/bits/iosfwd.h          | 112 +++++++++++++++
 libstdc++-v3/include/bits/iosfwd_file.h     |  91 ++++++++++++
 libstdc++-v3/include/bits/iosfwd_span.h     |  78 +++++++++++
 libstdc++-v3/include/bits/iosfwd_string.h   | 101 ++++++++++++++
 libstdc++-v3/include/bits/iosfwd_sync.h     |  72 ++++++++++
 libstdc++-v3/include/bits/locale_facets.h   |   2 -
 libstdc++-v3/include/bits/localefwd.h       |   2 +-
 libstdc++-v3/include/bits/ostream.h         |   7 +-
 libstdc++-v3/include/bits/ostream_insert.h  |   2 +-
 libstdc++-v3/include/bits/shared_ptr.h      |   2 +-
 libstdc++-v3/include/bits/std_thread.h      |   2 +-
 libstdc++-v3/include/bits/stream_iterator.h |   2 +-
 libstdc++-v3/include/std/fstream            |   1 +
 libstdc++-v3/include/std/iomanip            |   2 +-
 libstdc++-v3/include/std/ios                |   2 -
 libstdc++-v3/include/std/iosfwd             | 208 ++--------------------------
 libstdc++-v3/include/std/iostream           |   2 +-
 libstdc++-v3/include/std/istream            |   8 +-
 libstdc++-v3/include/std/random             |   2 +-
 libstdc++-v3/include/std/spanstream         |   1 +
 libstdc++-v3/include/std/sstream            |   1 +
 libstdc++-v3/include/std/streambuf          |   2 +-
 libstdc++-v3/include/std/string_view        |   2 +-
 libstdc++-v3/include/std/syncstream         |   1 +
 libstdc++-v3/include/std/system_error       |   2 +-
 29 files changed, 505 insertions(+), 216 deletions(-)

diff --git a/libstdc++-v3/config/io/basic_file_stdio.h b/libstdc++-v3/config/io/basic_file_stdio.h
index a4fd25271c2d..5e06fd378eab 100644
--- a/libstdc++-v3/config/io/basic_file_stdio.h
+++ b/libstdc++-v3/config/io/basic_file_stdio.h
@@ -39,7 +39,7 @@
 #include <bits/c++config.h>
 #include <bits/c++io.h>  // for __c_lock and __c_file
 #include <bits/move.h>   // for swap
-#include <ios>
+#include <bits/ios_base.h>     // For ios_base declarations.
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index ec932181a966..f91a93ae4aa6 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -140,6 +140,11 @@ bits_freestanding = \
 	${bits_srcdir}/functional_hash.h \
 	${bits_srcdir}/intcmp.h \
 	${bits_srcdir}/invoke.h \
+	${bits_srcdir}/iosfwd.h \
+	${bits_srcdir}/iosfwd_file.h \
+	${bits_srcdir}/iosfwd_span.h \
+	${bits_srcdir}/iosfwd_string.h \
+	${bits_srcdir}/iosfwd_sync.h \
 	${bits_srcdir}/iterator_concepts.h \
 	${bits_srcdir}/new_except.h \
 	${bits_srcdir}/new_throw.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 00ae5209f604..611ef30c6cdb 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -498,6 +498,11 @@ bits_freestanding = \
 	${bits_srcdir}/functional_hash.h \
 	${bits_srcdir}/intcmp.h \
 	${bits_srcdir}/invoke.h \
+	${bits_srcdir}/iosfwd.h \
+	${bits_srcdir}/iosfwd_file.h \
+	${bits_srcdir}/iosfwd_span.h \
+	${bits_srcdir}/iosfwd_string.h \
+	${bits_srcdir}/iosfwd_sync.h \
 	${bits_srcdir}/iterator_concepts.h \
 	${bits_srcdir}/new_except.h \
 	${bits_srcdir}/new_throw.h \
diff --git a/libstdc++-v3/include/bits/fs_path.h b/libstdc++-v3/include/bits/fs_path.h
index f0c8c47f0aed..8d0078000294 100644
--- a/libstdc++-v3/include/bits/fs_path.h
+++ b/libstdc++-v3/include/bits/fs_path.h
@@ -34,11 +34,11 @@
 
 #include <type_traits>
 #include <locale>
-#include <iosfwd>
 #include <iomanip>
 #include <codecvt>
 #include <string_view>
 #include <system_error>
+#include <bits/iosfwd.h>
 #include <bits/stl_algobase.h>
 #include <bits/stl_pair.h>
 #include <bits/locale_conv.h>
diff --git a/libstdc++-v3/include/bits/iosfwd.h b/libstdc++-v3/include/bits/iosfwd.h
new file mode 100644
index 000000000000..525482770b28
--- /dev/null
+++ b/libstdc++-v3/include/bits/iosfwd.h
@@ -0,0 +1,112 @@
+// <iosfwd> Forward declarations -*- C++ -*-
+
+// Copyright (C) 1997-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/iosfwd
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_IOSFWD_H
+#define _GLIBCXX_IOSFWD_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // iostreams
+
+#include <bits/c++config.h>
+#include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @addtogroup io
+   *  @{
+  */
+  class ios_base;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ios;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_streambuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_istream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ostream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_iostream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class istreambuf_iterator;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class ostreambuf_iterator;
+
+
+  /// Base class for @c char streams.
+  typedef basic_ios<char> 		ios;
+
+  /// Base class for @c char buffers.
+  typedef basic_streambuf<char> 	streambuf;
+
+  /// Base class for @c char input streams.
+  typedef basic_istream<char> 		istream;
+
+  /// Base class for @c char output streams.
+  typedef basic_ostream<char> 		ostream;
+
+  /// Base class for @c char mixed input and output streams.
+  typedef basic_iostream<char> 		iostream;
+
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// Base class for @c wchar_t streams.
+  typedef basic_ios<wchar_t> 		wios;
+
+  /// Base class for @c wchar_t buffers.
+  typedef basic_streambuf<wchar_t> 	wstreambuf;
+
+  /// Base class for @c wchar_t input streams.
+  typedef basic_istream<wchar_t> 	wistream;
+
+  /// Base class for @c wchar_t output streams.
+  typedef basic_ostream<wchar_t> 	wostream;
+
+  /// Base class for @c wchar_t mixed input and output streams.
+  typedef basic_iostream<wchar_t> 	wiostream;
+#endif
+
+  /** @}  */
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOSFWD_H */
diff --git a/libstdc++-v3/include/bits/iosfwd_file.h b/libstdc++-v3/include/bits/iosfwd_file.h
new file mode 100644
index 000000000000..dc7359de02f7
--- /dev/null
+++ b/libstdc++-v3/include/bits/iosfwd_file.h
@@ -0,0 +1,91 @@
+// <iosfwd> Forward declarations for <fstream> -*- C++ -*-
+
+// Copyright (C) 1997-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/iosfwd_file.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_IOSFWD_FILE_H
+#define _GLIBCXX_IOSFWD_FILE_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // iostreams
+
+#include <bits/iosfwd.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @addtogroup io
+   *  @{
+  */
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_filebuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ifstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_ofstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT> >
+    class basic_fstream;
+
+  /// Class for @c char file buffers.
+  typedef basic_filebuf<char> 		filebuf;
+
+  /// Class for @c char input file streams.
+  typedef basic_ifstream<char> 		ifstream;
+
+  /// Class for @c char output file streams.
+  typedef basic_ofstream<char> 		ofstream;
+
+  /// Class for @c char mixed input and output file streams.
+  typedef basic_fstream<char> 		fstream;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+    /// Class for @c wchar_t file buffers.
+  typedef basic_filebuf<wchar_t> 	wfilebuf;
+
+  /// Class for @c wchar_t input file streams.
+  typedef basic_ifstream<wchar_t> 	wifstream;
+
+  /// Class for @c wchar_t output file streams.
+  typedef basic_ofstream<wchar_t> 	wofstream;
+
+  /// Class for @c wchar_t mixed input and output file streams.
+  typedef basic_fstream<wchar_t> 	wfstream;
+#endif
+  /// @}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOSFWD_FILE_H */
diff --git a/libstdc++-v3/include/bits/iosfwd_span.h b/libstdc++-v3/include/bits/iosfwd_span.h
new file mode 100644
index 000000000000..13d998d477e4
--- /dev/null
+++ b/libstdc++-v3/include/bits/iosfwd_span.h
@@ -0,0 +1,78 @@
+// <iosfwd> Forward declarations for <spanstream> -*- C++ -*-
+
+// Copyright (C) 2022-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/iosfwd_span.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_IOSFWD_SPAN_H
+#define _GLIBCXX_IOSFWD_SPAN_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // iostreams
+
+#include <bits/version.h>
+
+#ifdef __glibcxx_spanstream // >= C++23
+#include <bits/iosfwd.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @addtogroup io
+   *  @{
+  */
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>>
+    class basic_spanbuf;
+  template<typename _CharT, typename _Traits = char_traits<_CharT>>
+    class basic_ispanstream;
+  template<typename _CharT, typename _Traits = char_traits<_CharT>>
+    class basic_ospanstream;
+  template<typename _CharT, typename _Traits = char_traits<_CharT>>
+    class basic_spanstream;
+
+  using spanbuf     = basic_spanbuf<char>;
+  using ispanstream = basic_ispanstream<char>;
+  using ospanstream = basic_ospanstream<char>;
+  using spanstream  = basic_spanstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  using wspanbuf     = basic_spanbuf<wchar_t>;
+  using wispanstream = basic_ispanstream<wchar_t>;
+  using wospanstream = basic_ospanstream<wchar_t>;
+  using wspanstream  = basic_spanstream<wchar_t>;
+#endif
+  /// @}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+#endif // C++23
+#endif /* _GLIBCXX_IOSFWD_SPAN_H */
diff --git a/libstdc++-v3/include/bits/iosfwd_string.h b/libstdc++-v3/include/bits/iosfwd_string.h
new file mode 100644
index 000000000000..28daa101d4ba
--- /dev/null
+++ b/libstdc++-v3/include/bits/iosfwd_string.h
@@ -0,0 +1,101 @@
+// <iosfwd> Forward declarations for <sstream> -*- C++ -*-
+
+// Copyright (C) 1997-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/iosfwd_string.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_IOSFWD_STRING_H
+#define _GLIBCXX_IOSFWD_STRING_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // iostreams
+
+#include <bits/iosfwd.h>
+#include <bits/stringfwd.h> 	// For string forward declarations.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @addtogroup io
+   *  @{
+  */
+
+_GLIBCXX_BEGIN_NAMESPACE_CXX11
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	    typename _Alloc = allocator<_CharT> >
+    class basic_stringbuf;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_istringstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_ostringstream;
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Alloc = allocator<_CharT> >
+    class basic_stringstream;
+
+_GLIBCXX_END_NAMESPACE_CXX11
+
+  /// Class for @c char memory buffers.
+  typedef basic_stringbuf<char> 	stringbuf;
+
+  /// Class for @c char input memory streams.
+  typedef basic_istringstream<char> 	istringstream;
+
+  /// Class for @c char output memory streams.
+  typedef basic_ostringstream<char> 	ostringstream;
+
+  /// Class for @c char mixed input and output memory streams.
+  typedef basic_stringstream<char> 	stringstream;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  /// Class for @c wchar_t memory buffers.
+  typedef basic_stringbuf<wchar_t> 	wstringbuf;
+
+  /// Class for @c wchar_t input memory streams.
+  typedef basic_istringstream<wchar_t> 	wistringstream;
+
+  /// Class for @c wchar_t output memory streams.
+  typedef basic_ostringstream<wchar_t> 	wostringstream;
+
+  /// Class for @c wchar_t mixed input and output memory streams.
+  typedef basic_stringstream<wchar_t> 	wstringstream;
+#endif
+  /// @}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+
+#endif /* _GLIBCXX_IOSFWD_STRING_H */
diff --git a/libstdc++-v3/include/bits/iosfwd_sync.h b/libstdc++-v3/include/bits/iosfwd_sync.h
new file mode 100644
index 000000000000..9f5e9948e74a
--- /dev/null
+++ b/libstdc++-v3/include/bits/iosfwd_sync.h
@@ -0,0 +1,72 @@
+// <iosfwd> Forward declarations for <syncstream> -*- C++ -*-
+
+// Copyright (C) 2022-2026 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/bits/iosfwd_sync.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{iosfwd}
+ */
+
+#ifndef _GLIBCXX_IOSFWD_SYNC_H
+#define _GLIBCXX_IOSFWD_SYNC_H 1
+
+#ifdef _GLIBCXX_SYSHDR
+#pragma GCC system_header
+#endif
+
+#include <bits/requires_hosted.h> // iostreams
+
+#include <bits/version.h>
+
+#ifdef __glibcxx_syncbuf // >= C++20 && CXX11_ABI
+#include <bits/iosfwd.h>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   *  @addtogroup io
+   *  @{
+  */
+
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Allocator = allocator<_CharT>>
+    class basic_syncbuf;
+  template<typename _CharT, typename _Traits = char_traits<_CharT>,
+	   typename _Allocator = allocator<_CharT>>
+    class basic_osyncstream;
+
+  using syncbuf = basic_syncbuf<char>;
+  using osyncstream = basic_osyncstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  using wsyncbuf = basic_syncbuf<wchar_t>;
+  using wosyncstream = basic_osyncstream<wchar_t>;
+#endif
+  /// @}
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+#endif // __glibcxx_syncbuf
+#endif /* _GLIBCXX_IOSFWD_SYNC_H */
diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h
index ba6f6e694ff1..902ba047b265 100644
--- a/libstdc++-v3/include/bits/locale_facets.h
+++ b/libstdc++-v3/include/bits/locale_facets.h
@@ -41,9 +41,7 @@
 #include <cwctype>	// For wctype_t
 #include <cctype>
 #include <bits/ctype_base.h>
-#include <iosfwd>
 #include <bits/ios_base.h>  // For ios_base, ios_base::iostate
-#include <streambuf>
 #include <bits/cpp_type_traits.h>
 #include <ext/type_traits.h>
 #include <ext/numeric_traits.h>
diff --git a/libstdc++-v3/include/bits/localefwd.h b/libstdc++-v3/include/bits/localefwd.h
index 4e4836d523cc..dcab8b331085 100644
--- a/libstdc++-v3/include/bits/localefwd.h
+++ b/libstdc++-v3/include/bits/localefwd.h
@@ -40,7 +40,7 @@
 
 #include <bits/c++config.h>
 #include <bits/c++locale.h>  // Defines __c_locale, config-specific include
-#include <iosfwd>            // For ostreambuf_iterator, istreambuf_iterator
+#include <bits/iosfwd.h>     // For ostreambuf_iterator, istreambuf_iterator
 #include <cctype>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/bits/ostream.h b/libstdc++-v3/include/bits/ostream.h
index 7c53b21bdb3d..703ebf7890cd 100644
--- a/libstdc++-v3/include/bits/ostream.h
+++ b/libstdc++-v3/include/bits/ostream.h
@@ -40,7 +40,12 @@
 
 #include <bits/requires_hosted.h> // iostreams
 
-#include <ios>
+#include <bits/iosfwd.h>	// For declarations of default template args.
+#include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
+#include <bits/localefwd.h>	// For class locale
+#include <bits/ios_base.h>	// For ios_base declarations.
+#include <streambuf>
+#include <bits/basic_ios.h>
 #include <bits/ostream_insert.h>
 
 # define __glibcxx_want_print
diff --git a/libstdc++-v3/include/bits/ostream_insert.h b/libstdc++-v3/include/bits/ostream_insert.h
index 4e52a1d164cb..a512283502ea 100644
--- a/libstdc++-v3/include/bits/ostream_insert.h
+++ b/libstdc++-v3/include/bits/ostream_insert.h
@@ -34,7 +34,7 @@
 #pragma GCC system_header
 #endif
 
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <bits/cxxabi_forced.h>
 #include <bits/exception_defines.h>
 
diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index ada32d3d3cb9..8be9aace1711 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -49,7 +49,7 @@
 #ifndef _SHARED_PTR_H
 #define _SHARED_PTR_H 1
 
-#include <iosfwd>           	  // std::basic_ostream
+#include <bits/iosfwd.h>           	  // std::basic_ostream
 #include <bits/shared_ptr_base.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/bits/std_thread.h b/libstdc++-v3/include/bits/std_thread.h
index 9e85ae2c6e2e..7e529897998f 100644
--- a/libstdc++-v3/include/bits/std_thread.h
+++ b/libstdc++-v3/include/bits/std_thread.h
@@ -37,7 +37,7 @@
 #if __cplusplus >= 201103L
 #include <bits/c++config.h>
 
-#include <iosfwd>		// std::basic_ostream
+#include <bits/iosfwd.h>	// std::basic_ostream
 #include <tuple>		// std::tuple
 #include <bits/functional_hash.h> // std::hash
 #include <bits/invoke.h>	// std::__invoke
diff --git a/libstdc++-v3/include/bits/stream_iterator.h b/libstdc++-v3/include/bits/stream_iterator.h
index 54130026ec29..74da499bc7dd 100644
--- a/libstdc++-v3/include/bits/stream_iterator.h
+++ b/libstdc++-v3/include/bits/stream_iterator.h
@@ -34,7 +34,7 @@
 #pragma GCC system_header
 #endif
 
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <bits/move.h>
 #include <bits/stl_iterator_base_types.h>
 #include <debug/debug.h>
diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream
index c4e222b8fefb..653d417c6288 100644
--- a/libstdc++-v3/include/std/fstream
+++ b/libstdc++-v3/include/std/fstream
@@ -41,6 +41,7 @@
 
 #include <istream>
 #include <ostream>
+#include <bits/iosfwd_file.h>
 #include <bits/codecvt.h>
 #include <cstdio>             // For BUFSIZ
 #include <bits/basic_file.h>  // For __basic_file, __c_lock
diff --git a/libstdc++-v3/include/std/iomanip b/libstdc++-v3/include/std/iomanip
index 3841390b6335..34a9edf178c4 100644
--- a/libstdc++-v3/include/std/iomanip
+++ b/libstdc++-v3/include/std/iomanip
@@ -43,7 +43,7 @@
 #include <bits/requires_hosted.h> // iostreams
 
 #include <bits/c++config.h>
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <bits/ios_base.h>
 
 #define __glibcxx_want_quoted_string_io
diff --git a/libstdc++-v3/include/std/ios b/libstdc++-v3/include/std/ios
index 49f3aafd1de0..e9b1d6a165cd 100644
--- a/libstdc++-v3/include/std/ios
+++ b/libstdc++-v3/include/std/ios
@@ -40,8 +40,6 @@
 #include <bits/requires_hosted.h> // iostreams
 
 #include <iosfwd>
-#include <exception> 		// For ios_base::failure
-#include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
 #include <bits/localefwd.h>	// For class locale
 #include <bits/ios_base.h>	// For ios_base declarations.
 #include <streambuf>
diff --git a/libstdc++-v3/include/std/iosfwd b/libstdc++-v3/include/std/iosfwd
index 42124ad30df4..1d5e684b53bb 100644
--- a/libstdc++-v3/include/std/iosfwd
+++ b/libstdc++-v3/include/std/iosfwd
@@ -39,222 +39,36 @@
 
 #include <bits/requires_hosted.h> // iostreams
 
-#include <bits/c++config.h>
-#include <bits/stringfwd.h> 	// For string forward declarations.
-#include <bits/postypes.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
   /**
    *  @defgroup io I/O
    *
    *  Nearly all of the I/O classes are parameterized on the type of
-   *  characters they read and write.  (The major exception is ios_base at
+   *  characters they read and write.  (The major exception is `ios_base` at
    *  the top of the hierarchy.)  This is a change from pre-Standard
    *  streams, which were not templates.
    *
-   *  For ease of use and compatibility, all of the basic_* I/O-related
+   *  For ease of use and compatibility, all of the `basic_*` I/O-related
    *  classes are given typedef names for both of the builtin character
    *  widths (wide and narrow).  The typedefs are the same as the
    *  pre-Standard names, for example:
    *
-   *  @code
+   *  ```
    *     typedef basic_ifstream<char>  ifstream;
-   *  @endcode
+   *  ```
    *
    *  Because properly forward-declaring these classes can be difficult, you
-   *  should not do it yourself.  Instead, include the &lt;iosfwd&gt;
+   *  should not do it yourself.  Instead, include the `<iosfwd>`
    *  header, which contains only declarations of all the I/O classes as
    *  well as the typedefs.  Trying to forward-declare the typedefs
-   *  themselves (e.g., <code>class ostream;</code>) is not valid ISO C++.
+   *  themselves (e.g., `class ostream;`) is not valid ISO C++.
    *
    *  For more specific declarations, see
    *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects
-   *
-   *  @{
-  */
-  class ios_base;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_ios;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_streambuf;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_istream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_ostream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_iostream;
-
-
-_GLIBCXX_BEGIN_NAMESPACE_CXX11
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-	    typename _Alloc = allocator<_CharT> >
-    class basic_stringbuf;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-	   typename _Alloc = allocator<_CharT> >
-    class basic_istringstream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-	   typename _Alloc = allocator<_CharT> >
-    class basic_ostringstream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-	   typename _Alloc = allocator<_CharT> >
-    class basic_stringstream;
-
-_GLIBCXX_END_NAMESPACE_CXX11
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_filebuf;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_ifstream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_ofstream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class basic_fstream;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class istreambuf_iterator;
-
-  template<typename _CharT, typename _Traits = char_traits<_CharT> >
-    class ostreambuf_iterator;
-
-
-  /// Base class for @c char streams.
-  typedef basic_ios<char> 		ios;
-
-  /// Base class for @c char buffers.
-  typedef basic_streambuf<char> 	streambuf;
-
-  /// Base class for @c char input streams.
-  typedef basic_istream<char> 		istream;
-
-  /// Base class for @c char output streams.
-  typedef basic_ostream<char> 		ostream;
-
-  /// Base class for @c char mixed input and output streams.
-  typedef basic_iostream<char> 		iostream;
-
-  /// Class for @c char memory buffers.
-  typedef basic_stringbuf<char> 	stringbuf;
-
-  /// Class for @c char input memory streams.
-  typedef basic_istringstream<char> 	istringstream;
-
-  /// Class for @c char output memory streams.
-  typedef basic_ostringstream<char> 	ostringstream;
-
-  /// Class for @c char mixed input and output memory streams.
-  typedef basic_stringstream<char> 	stringstream;
-
-  /// Class for @c char file buffers.
-  typedef basic_filebuf<char> 		filebuf;
-
-  /// Class for @c char input file streams.
-  typedef basic_ifstream<char> 		ifstream;
-
-  /// Class for @c char output file streams.
-  typedef basic_ofstream<char> 		ofstream;
-
-  /// Class for @c char mixed input and output file streams.
-  typedef basic_fstream<char> 		fstream;
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  /// Base class for @c wchar_t streams.
-  typedef basic_ios<wchar_t> 		wios;
-
-  /// Base class for @c wchar_t buffers.
-  typedef basic_streambuf<wchar_t> 	wstreambuf;
-
-  /// Base class for @c wchar_t input streams.
-  typedef basic_istream<wchar_t> 	wistream;
-
-  /// Base class for @c wchar_t output streams.
-  typedef basic_ostream<wchar_t> 	wostream;
-
-  /// Base class for @c wchar_t mixed input and output streams.
-  typedef basic_iostream<wchar_t> 	wiostream;
-
-  /// Class for @c wchar_t memory buffers.
-  typedef basic_stringbuf<wchar_t> 	wstringbuf;
-
-  /// Class for @c wchar_t input memory streams.
-  typedef basic_istringstream<wchar_t> 	wistringstream;
-
-  /// Class for @c wchar_t output memory streams.
-  typedef basic_ostringstream<wchar_t> 	wostringstream;
-
-  /// Class for @c wchar_t mixed input and output memory streams.
-  typedef basic_stringstream<wchar_t> 	wstringstream;
-
-  /// Class for @c wchar_t file buffers.
-  typedef basic_filebuf<wchar_t> 	wfilebuf;
-
-  /// Class for @c wchar_t input file streams.
-  typedef basic_ifstream<wchar_t> 	wifstream;
-
-  /// Class for @c wchar_t output file streams.
-  typedef basic_ofstream<wchar_t> 	wofstream;
-
-  /// Class for @c wchar_t mixed input and output file streams.
-  typedef basic_fstream<wchar_t> 	wfstream;
-#endif
-
-#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-           typename _Allocator = allocator<_CharT>>
-    class basic_syncbuf;
-  template<typename _CharT, typename _Traits = char_traits<_CharT>,
-           typename _Allocator = allocator<_CharT>>
-    class basic_osyncstream;
-
-  using syncbuf = basic_syncbuf<char>;
-  using osyncstream = basic_osyncstream<char>;
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  using wsyncbuf = basic_syncbuf<wchar_t>;
-  using wosyncstream = basic_osyncstream<wchar_t>;
-#endif
-#endif // C++20 && CXX11_ABI
-
-#if __cplusplus > 202002L
-  template<typename _CharT, typename _Traits = char_traits<_CharT>>
-    class basic_spanbuf;
-  template<typename _CharT, typename _Traits = char_traits<_CharT>>
-    class basic_ispanstream;
-  template<typename _CharT, typename _Traits = char_traits<_CharT>>
-    class basic_ospanstream;
-  template<typename _CharT, typename _Traits = char_traits<_CharT>>
-    class basic_spanstream;
-
-  using spanbuf     = basic_spanbuf<char>;
-  using ispanstream = basic_ispanstream<char>;
-  using ospanstream = basic_ospanstream<char>;
-  using spanstream  = basic_spanstream<char>;
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  using wspanbuf     = basic_spanbuf<wchar_t>;
-  using wispanstream = basic_ispanstream<wchar_t>;
-  using wospanstream = basic_ospanstream<wchar_t>;
-  using wspanstream  = basic_spanstream<wchar_t>;
-#endif
-#endif // C++23
-
-  /** @}  */
+   */
 
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
+#include <bits/iosfwd_file.h>
+#include <bits/iosfwd_string.h>
+#include <bits/iosfwd_sync.h>
+#include <bits/iosfwd_span.h>
 
 #endif /* _GLIBCXX_IOSFWD */
diff --git a/libstdc++-v3/include/std/iostream b/libstdc++-v3/include/std/iostream
index f4b5fd868346..4b97dd2951ae 100644
--- a/libstdc++-v3/include/std/iostream
+++ b/libstdc++-v3/include/std/iostream
@@ -39,7 +39,7 @@
 
 #include <bits/requires_hosted.h> // iostreams
 
-#include <bits/c++config.h>
+#include <ios>
 #include <ostream>
 #include <istream>
 
diff --git a/libstdc++-v3/include/std/istream b/libstdc++-v3/include/std/istream
index 6a982460a1dc..9b8474a0da8d 100644
--- a/libstdc++-v3/include/std/istream
+++ b/libstdc++-v3/include/std/istream
@@ -39,7 +39,13 @@
 
 #include <bits/requires_hosted.h> // iostreams
 
-#include <ios>
+#include <bits/iosfwd.h>	// For declarations of default template args.
+#include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
+#include <bits/localefwd.h>	// For class locale
+#include <bits/ios_base.h>	// For ios_base declarations.
+#include <streambuf>
+#include <bits/basic_ios.h>
+
 #include <ostream>
 
 #if __cplusplus > 202302L
diff --git a/libstdc++-v3/include/std/random b/libstdc++-v3/include/std/random
index ebbd9be296ea..ad512764a852 100644
--- a/libstdc++-v3/include/std/random
+++ b/libstdc++-v3/include/std/random
@@ -46,7 +46,7 @@
 #include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
 #include <cstdlib>
 #include <string>
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <limits>
 #include <debug/debug.h>
 #include <type_traits>
diff --git a/libstdc++-v3/include/std/spanstream b/libstdc++-v3/include/std/spanstream
index fbb40ff1db26..fd2a446ddaa3 100644
--- a/libstdc++-v3/include/std/spanstream
+++ b/libstdc++-v3/include/std/spanstream
@@ -43,6 +43,7 @@
 #include <streambuf>
 #include <istream>
 #include <ostream>
+#include <bits/iosfwd_span.h>
 #include <bits/ranges_base.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index 421c1f744b3d..1c491e16458e 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -42,6 +42,7 @@
 #include <istream>
 #include <ostream>
 
+#include <bits/iosfwd_string.h>
 #include <bits/alloc_traits.h> // allocator_traits, __allocator_like
 
 #define __glibcxx_want_sstream_from_string_view
diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf
index d6036bd5ddc4..616e44f74a76 100644
--- a/libstdc++-v3/include/std/streambuf
+++ b/libstdc++-v3/include/std/streambuf
@@ -40,7 +40,7 @@
 #include <bits/requires_hosted.h> // iostreams
 
 #include <bits/c++config.h>
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <bits/localefwd.h>
 #include <bits/ios_base.h>
 #include <bits/cpp_type_traits.h>
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index efbf432f1129..81b0011245b5 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -63,7 +63,7 @@
 #endif
 
 #if _GLIBCXX_HOSTED
-# include <iosfwd>
+# include <bits/iosfwd.h>
 # include <bits/ostream_insert.h>
 #endif
 
diff --git a/libstdc++-v3/include/std/syncstream b/libstdc++-v3/include/std/syncstream
index 29a44ba1d7af..9cecd513e9a5 100644
--- a/libstdc++-v3/include/std/syncstream
+++ b/libstdc++-v3/include/std/syncstream
@@ -43,6 +43,7 @@
 #ifdef __cpp_lib_syncbuf // C++ >= 20 && HOSTED && CXX11ABI
 #include <sstream>
 
+#include <bits/iosfwd_sync.h>
 #include <bits/alloc_traits.h>
 #include <bits/allocator.h>
 #include <bits/std_mutex.h>
diff --git a/libstdc++-v3/include/std/system_error b/libstdc++-v3/include/std/system_error
index 6fe63010e339..6dbef5ed45dc 100644
--- a/libstdc++-v3/include/std/system_error
+++ b/libstdc++-v3/include/std/system_error
@@ -41,7 +41,7 @@
 
 #include <bits/c++config.h>
 #include <bits/error_constants.h>
-#include <iosfwd>
+#include <bits/iosfwd.h>
 #include <stdexcept>
 #if __cplusplus > 201703L
 # include <compare>

From redi@gcc.gnu.org  Tue May 26 10:14:51 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 26 May 2026 10:14:51 +0000 (GMT)
Subject: [gcc r17-807] libstdc++: Add missing constraints to vector and deque
 deduction guides
Message-ID: <20260526101451.847B14BA23E9@sourceware.org>

https://gcc.gnu.org/g:4598d7fcbde6dd87274a91a247134ba3c12be0cd

commit r17-807-g4598d7fcbde6dd87274a91a247134ba3c12be0cd
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 21 18:58:14 2026 +0100

    libstdc++: Add missing constraints to vector and deque deduction guides
    
    The standard requires that these deduction guides are constrained to
    only accept a type that qualifies as an allocator for the second
    templates argument.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/stl_deque.h                      |  2 +-
 libstdc++-v3/include/bits/stl_vector.h                     |  2 +-
 libstdc++-v3/include/debug/deque                           |  2 +-
 libstdc++-v3/include/debug/vector                          |  2 +-
 .../testsuite/23_containers/deque/cons/deduction_c++23.cc  | 14 ++++++++++++++
 .../testsuite/23_containers/vector/cons/deduction_c++23.cc | 14 ++++++++++++++
 6 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index aebe865ffc1a..28f61d2ccd37 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -2414,7 +2414,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
 #if __glibcxx_containers_ranges // C++ >= 23
   template<ranges::input_range _Rg,
-	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
+	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
     deque(from_range_t, _Rg&&, _Alloc = _Alloc())
       -> deque<ranges::range_value_t<_Rg>, _Alloc>;
 #endif
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index 0c9b74fdbb24..9ddf35502e69 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -2383,7 +2383,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
 #if __glibcxx_containers_ranges // C++ >= 23
   template<ranges::input_range _Rg,
-	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
+	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
     vector(from_range_t, _Rg&&, _Alloc = _Alloc())
       -> vector<ranges::range_value_t<_Rg>, _Alloc>;
 #endif
diff --git a/libstdc++-v3/include/debug/deque b/libstdc++-v3/include/debug/deque
index 9fba4ffc4997..00b4220051e7 100644
--- a/libstdc++-v3/include/debug/deque
+++ b/libstdc++-v3/include/debug/deque
@@ -715,7 +715,7 @@ namespace __debug
 
 #if __glibcxx_containers_ranges // C++ >= 23
   template<ranges::input_range _Rg,
-	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
+	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
     deque(from_range_t, _Rg&&, _Alloc = _Alloc())
       -> deque<ranges::range_value_t<_Rg>, _Alloc>;
 #endif
diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector
index 61e5ff78a7a4..56645d1e92c3 100644
--- a/libstdc++-v3/include/debug/vector
+++ b/libstdc++-v3/include/debug/vector
@@ -1001,7 +1001,7 @@ namespace __debug
 
 #if __glibcxx_containers_ranges // C++ >= 23
   template<ranges::input_range _Rg,
-	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
+	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
     vector(from_range_t, _Rg&&, _Alloc = _Alloc())
       -> vector<ranges::range_value_t<_Rg>, _Alloc>;
 #endif
diff --git a/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc b/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc
new file mode 100644
index 000000000000..5893de92dc6f
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc
@@ -0,0 +1,14 @@
+// { dg-do compile { target c++23 } }
+
+#include <deque>
+#include <testsuite_iterators.h>
+
+using Range = __gnu_test::test_input_range<int>;
+
+template<typename Alloc>
+concept can_deduce_deque = requires(Range r, Alloc a) {
+  std::deque(std::from_range, r, a);
+};
+
+// Deduction should fail because int does not qualify as an allocator.
+static_assert( ! can_deduce_deque<int> );
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc
new file mode 100644
index 000000000000..1a442a8ed5c2
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc
@@ -0,0 +1,14 @@
+// { dg-do compile { target c++23 } }
+
+#include <vector>
+#include <testsuite_iterators.h>
+
+using Range = __gnu_test::test_input_range<int>;
+
+template<typename Alloc>
+concept can_deduce_vector = requires(Range r, Alloc a) {
+  std::vector(std::from_range, r, a);
+};
+
+// Deduction should fail because int does not qualify as an allocator.
+static_assert( ! can_deduce_vector<int> );

From redi@gcc.gnu.org  Tue May 26 10:14:56 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 26 May 2026 10:14:56 +0000 (GMT)
Subject: [gcc r17-808] libstdc++: Deprecate std::memory_order::consume
Message-ID: <20260526101456.AEEDE4BA23FF@sourceware.org>

https://gcc.gnu.org/g:e309e09187c07589901df1d3913e4def4afb5817

commit r17-808-ge309e09187c07589901df1d3913e4def4afb5817
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 21 17:09:47 2026 +0100

    libstdc++: Deprecate std::memory_order::consume
    
    This implements P3475R2, "Defang and deprecate memory_order::consume",
    approved in Hagenberg, 2025.
    
    It looks like the using-declaration for memory_order_consume in
    <stdatomic.h> was not deprecated by the paper, but I don't think we can
    implement that if we warn for the name in <atomic>. It doesn't make
    sense to me for it to be deprecated in C++ but still usable in the C/C++
    compatibility header. It's still just as useless in common C/C++
    headers, so we should warn.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/warn/Winvalid-memory-model-2.C: Disable deprecated
            warnings for C++26 and up.
            * g++.dg/warn/Winvalid-memory-model.C: Likewise.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../g++.dg/warn/Winvalid-memory-model-2.C          |  3 ++-
 gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C  |  3 ++-
 libstdc++-v3/include/bits/atomic_base.h            | 29 ++++++++++++++++------
 libstdc++-v3/include/c_compatibility/stdatomic.h   |  3 +++
 .../requirements/compare_exchange_lowering.cc      |  2 ++
 .../atomic_flag/test_and_set/explicit-hle.cc       |  2 ++
 .../29_atomics/headers/atomic/types_std_c++0x.cc   |  2 +-
 .../29_atomics/headers/stdatomic.h/c_compat.cc     |  4 ++-
 8 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
index a15706159aaf..05d5c4eda21d 100644
--- a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
+++ b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
@@ -2,7 +2,8 @@
    -Wsystem-headers
    Verify warnings for atomic functions with optimization.
    { dg-do compile { target c++11 } }
-   { dg-options "-O1" } */
+   { dg-options "-O1" }
+   { dg-additional-options "-Wno-deprecated-declarations" { target c++26 } } */
 
 #include <atomic>
 
diff --git a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
index 0ef2c75dee76..509ce280534c 100644
--- a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
+++ b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
@@ -2,7 +2,8 @@
    -Wsystem-headers
    Verify warnings for basic atomic functions with no optimization.
    { dg-do compile { target c++11 } }
-   { dg-options "-O0 -Wall" } */
+   { dg-options "-O0 -Wall" }
+   { dg-additional-options "-Wno-deprecated-declarations" { target c++26 } } */
 
 #include <atomic>
 
diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h
index e9cf174e4607..3a8e9a7b4c1f 100644
--- a/libstdc++-v3/include/bits/atomic_base.h
+++ b/libstdc++-v3/include/bits/atomic_base.h
@@ -64,20 +64,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #if __cplusplus > 201703L
   enum class memory_order : int
     {
-      relaxed,
-      consume,
-      acquire,
-      release,
-      acq_rel,
-      seq_cst
+      relaxed = 0,
+      consume _GLIBCXX26_DEPRECATED = 1,
+      acquire = 2,
+      release = 3,
+      acq_rel = 4,
+      seq_cst = 5
     };
 
   inline constexpr memory_order memory_order_relaxed = memory_order::relaxed;
-  inline constexpr memory_order memory_order_consume = memory_order::consume;
   inline constexpr memory_order memory_order_acquire = memory_order::acquire;
   inline constexpr memory_order memory_order_release = memory_order::release;
   inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel;
   inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst;
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+  _GLIBCXX26_DEPRECATED
+  inline constexpr memory_order memory_order_consume = memory_order::consume;
+#pragma GCC diagnostic pop
 #else
   enum memory_order : int
     {
@@ -152,6 +157,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /// kill_dependency
   template<typename _Tp>
+    _GLIBCXX26_DEPRECATED
     inline _Tp
     kill_dependency(_Tp __y) noexcept
     {
@@ -278,6 +284,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     // TODO add const volatile overload
 #endif // __glibcxx_atomic_wait
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
     _GLIBCXX_ALWAYS_INLINE void
     clear(memory_order __m = memory_order_seq_cst) noexcept
     {
@@ -301,6 +309,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       __atomic_clear (&_M_i, int(__m));
     }
+#pragma GCC diagnostic pop
 
   private:
     static constexpr __atomic_flag_data_type
@@ -482,6 +491,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    reinterpret_cast<void *>(-_S_alignment));
       }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
       _GLIBCXX_ALWAYS_INLINE void
       store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
       {
@@ -506,6 +517,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 	__atomic_store_n(&_M_i, __i, int(__m));
       }
+#pragma GCC diagnostic pop
 
       _GLIBCXX_ALWAYS_INLINE __int_type
       load(memory_order __m = memory_order_seq_cst) const noexcept
@@ -831,6 +843,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    reinterpret_cast<void *>(-__alignof(_M_p)));
       }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
       _GLIBCXX_ALWAYS_INLINE void
       store(__pointer_type __p,
 	    memory_order __m = memory_order_seq_cst) noexcept
@@ -857,6 +871,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 	__atomic_store_n(&_M_p, __p, int(__m));
       }
+#pragma GCC diagnostic pop
 
       _GLIBCXX_ALWAYS_INLINE __pointer_type
       load(memory_order __m = memory_order_seq_cst) const noexcept
diff --git a/libstdc++-v3/include/c_compatibility/stdatomic.h b/libstdc++-v3/include/c_compatibility/stdatomic.h
index 72b9446eb170..c118d880bac3 100644
--- a/libstdc++-v3/include/c_compatibility/stdatomic.h
+++ b/libstdc++-v3/include/c_compatibility/stdatomic.h
@@ -39,7 +39,10 @@
 
 using std::memory_order;
 using std::memory_order_relaxed;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 using std::memory_order_consume;
+#pragma GCC diagnostic pop
 using std::memory_order_acquire;
 using std::memory_order_release;
 using std::memory_order_acq_rel;
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc b/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
index fa69558e7239..089e4bdf48d0 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
@@ -20,6 +20,8 @@
 #include <atomic>
 #include <testsuite_common_types.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 #define TEST_ALL_ORDERS()                       \
   do {                                          \
     ORDER_TEST(std::memory_order_relaxed);      \
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
index 587e3eea127d..f7bccfe498d5 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
@@ -25,6 +25,8 @@
 
 #include <atomic>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 const auto ACQ = std::memory_order_acquire | std::__memory_order_hle_acquire;
 const auto REL = std::memory_order_release | std::__memory_order_hle_release;
 
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
index 2b0685345c33..ce6e0728c4bc 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
@@ -33,7 +33,7 @@ void test01()
 #if __cplusplus >= 202002L
   using std::memory_order;
   constexpr auto relaxed = memory_order::relaxed;
-  constexpr auto consume = memory_order::consume;
+  constexpr auto consume = memory_order::consume; // { dg-warning "deprecated" "" { target c++26 } }
   constexpr auto acquire = memory_order::acquire;
   constexpr auto release = memory_order::release;
   constexpr auto acq_rel = memory_order::acq_rel;
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
index bcdb969b0c0f..ed980a50b353 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
@@ -41,7 +41,9 @@
 #endif
 
 constexpr const memory_order* orders[] = {
-  &memory_order_relaxed, &memory_order_consume, &memory_order_acquire,
+  &memory_order_relaxed,
+  &memory_order_consume, // { dg-warning "deprecated" "" { target c++26 } }
+  &memory_order_acquire,
   &memory_order_release, &memory_order_acq_rel, &memory_order_seq_cst
 };

From tkaminsk@gcc.gnu.org  Tue May 26 10:18:36 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 26 May 2026 10:18:36 +0000 (GMT)
Subject: [gcc r17-809] libstdc++: static_assert that static sized range size
 is less than inplace_vector capacity
Message-ID: <20260526101836.CB7704BA23CE@sourceware.org>

https://gcc.gnu.org/g:e38acbc88bfede15884009330ab75debb114905d

commit r17-809-ge38acbc88bfede15884009330ab75debb114905d
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 05:26:06 2026 +0200

    libstdc++: static_assert that static sized range size is less than inplace_vector capacity
    
    Resolves LWG 4396. Improve inplace_vector(from_range_t, R&& rg)
    
    The test case illustrates that views applied to span<T, N> are still
    statically sized, but once applied to array<T, N> are not. This is
    caused by the fact that ref_view stores a pointer to array, and
    dereference of unknown pointers does not produce reference to unknown,
    and simply yield non-constant expressions (unknown pointer is not
    equivalent to pointer to unknown, as it may be null).
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/inplace_vector            | 16 ++++-
 .../inplace_vector/cons/from_iota_neg.cc           | 46 +++++++++++++
 .../inplace_vector/cons/from_range_neg.cc          | 78 ++++++++++++++++++++++
 3 files changed, 138 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/inplace_vector b/libstdc++-v3/include/std/inplace_vector
index 0096bd83a175..caf9c2032452 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -41,7 +41,7 @@
 #include <optional>
 #include <bits/stdexcept_throw.h>
 #include <bits/range_access.h>
-#include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range
+#include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range, __static_sized_range
 #include <bits/ranges_util.h> // subrange
 #include <bits/ranges_uninitialized.h>
 #include <bits/stl_construct.h>
@@ -120,7 +120,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	constexpr
 	inplace_vector(from_range_t, _Rg&& __rg)
 	: inplace_vector()
-	{ append_range(__rg); }
+	{ 
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 4396. Improve inplace_vector(from_range_t, R&& rg)
+	  if constexpr (ranges::__static_sized_range<_Rg>)
+	    static_assert(ranges::size(__rg) <= _Nm);
+
+	  append_range(__rg);
+	}
 
       constexpr
       inplace_vector(initializer_list<_Tp> __il)
@@ -934,6 +941,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	constexpr
 	inplace_vector(from_range_t, _Rg&& __rg)
 	{
+	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+	  // 4396. Improve inplace_vector(from_range_t, R&& rg)
+	  if constexpr (ranges::__static_sized_range<_Rg>)
+	    static_assert(ranges::size(__rg) == 0);
+
 	  if (ranges::begin(__rg) != ranges::end(__rg))
 	    __throw_bad_alloc();
 	}
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
new file mode 100644
index 000000000000..ae0b96175b7d
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
@@ -0,0 +1,46 @@
+// { dg-do compile { target c++26 } }
+// { dg-require-effective-target int128 }
+
+#include <array>
+#include <ranges>
+#include <span>
+#include <inplace_vector>
+
+template<typename Int, Int min, Int max = std::numeric_limits<Int>::max()>
+struct StaticIota : std::ranges::iota_view<Int, Int>
+{
+  using Base = std::ranges::iota_view<Int, Int>;
+  using size_type = std::ranges::range_size_t<Base>;
+
+  constexpr StaticIota() noexcept : Base(min, max) {}
+
+  constexpr static size_type
+  size()
+  { return size_type(max) - size_type(min); }
+};
+
+template<typename Range>
+constexpr std::ranges::ref_view<Range>
+ref_view(Range& rg)
+{ return std::ranges::ref_view<Range>(rg); }
+
+void
+test_all()
+{
+  StaticIota<__int128, 0, 12> m12;
+
+  std::inplace_vector<int, 15> tm1(std::from_range, m12);
+  std::inplace_vector<int, 15> tr1(std::from_range, ref_view(m12));
+
+  std::inplace_vector<int, 10> tm2(std::from_range, m12); // { dg-error "(from here|expansion of)" }
+  // ref_view is not statically sized due pointer dereference
+  std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12));
+
+  StaticIota<__int128, 0> mm;
+
+  std::inplace_vector<int, 10> tm3(std::from_range, mm); // { dg-error "(from here|expansion of)" }
+  // ref_view is not statically sized due pointer dereference
+  std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm));
+}
+
+// { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
new file mode 100644
index 000000000000..48d5b4c56f59
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
@@ -0,0 +1,78 @@
+// { dg-do compile { target c++26 } }
+
+#include <array>
+#include <ranges>
+#include <span>
+#include <inplace_vector>
+
+template<typename Range0>
+void
+test_zero(Range0&& r0)
+{
+  std::inplace_vector<int, 0> f0(std::from_range, r0);
+  std::inplace_vector<int, 1> f1(std::from_range, r0);
+  std::inplace_vector<int, 5> f5(std::from_range, r0);
+  std::inplace_vector<int, 7> f7(std::from_range, r0);
+}
+
+template<typename Range1>
+void
+test_one(Range1&& r1)
+{
+  std::inplace_vector<int, 0> f0(std::from_range, r1); // { dg-error "required from" }
+  std::inplace_vector<int, 1> f1(std::from_range, r1);
+  std::inplace_vector<int, 5> f5(std::from_range, r1);
+  std::inplace_vector<int, 7> f7(std::from_range, r1);
+}
+
+template<typename Range5>
+void
+test_five(Range5&& r5)
+{
+  std::inplace_vector<int, 0> f0(std::from_range, r5); // { dg-error "required from" }
+  std::inplace_vector<int, 1> f1(std::from_range, r5); // { dg-error "required from" }
+  std::inplace_vector<int, 3> f3(std::from_range, r5); // { dg-error "required from" }
+  std::inplace_vector<int, 5> f5(std::from_range, r5);
+  std::inplace_vector<int, 7> f7(std::from_range, r5);
+}
+
+template<typename Range>
+constexpr std::ranges::ref_view<Range>
+ref_view(Range& rg)
+{ return std::ranges::ref_view<Range>(rg); }
+
+void
+test_all()
+{
+  std::array<int, 0> a0;
+  std::span<int, 0> s0(a0);
+  std::array<int, 1> a1;
+  std::span<int, 1> s1(a1);
+  std::array<int, 5> a5;
+  std::span<int, 5> s5(a5);
+  std::array<int, 7> a7;
+  std::span<int, 7> s7(a7);
+
+  test_zero(a0);
+  test_zero(s0);
+  test_zero(ref_view(a0));
+  test_zero(std::views::empty<int>);
+  test_zero(s5 | std::views::adjacent<7> | std::views::elements<0>);
+  test_zero(a5 | std::views::adjacent<7> | std::views::elements<0>);
+
+  test_one(a1); // { dg-error "from here" }
+  test_one(s1); // { dg-error "from here" }
+  // ref_view is not statically sized due pointer dereference
+  test_one(ref_view(a1));
+  test_one(a5 | std::views::adjacent<7> | std::views::elements<0>);
+  test_one(s5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
+
+  test_five(a5); // { dg-error "from here" }
+  test_five(s5); // { dg-error "from here" }
+  // ref_view is not statically sized due pointer dereference
+  test_five(ref_view(a5));
+  test_five(a7 | std::views::adjacent<3> | std::views::elements<0>);
+  test_five(s7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
+}
+
+// { dg-error "static assertion failed" "" { target *-*-* } 0 }

From tkaminsk@gcc.gnu.org  Tue May 26 10:53:40 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 26 May 2026 10:53:40 +0000 (GMT)
Subject: [gcc r17-810] libstdc++: Make ref_view<R> statically sized if R has
 static size
Message-ID: <20260526105340.E30974BA2E3C@sourceware.org>

https://gcc.gnu.org/g:7239744d25dadf39f431dfe38f3c03942acdb979

commit r17-810-g7239744d25dadf39f431dfe38f3c03942acdb979
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Apr 24 05:26:13 2026 +0200

    libstdc++: Make ref_view<R> statically sized if R has static size
    
    This patch introduces ranges::__static_size<_Range> helper functions,
    that returns ranges::size(__rg) for __statically_sized_range.
    This function is then used for ref_view<R>::size if R has static size,
    avoiding dereference of pointer value that is not known at compile time.
    Similarly for ref_view<R>::empty() we compare the size with zero, if it
    is known statically.
    
    This implements relevant part of P3928R0: static_sized_range by
    Hewill Kang. As standard does not specify when constexpr functions
    are usable at compile time, such implementation are allowed (but not
    mandated) by current draft.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/ranges_base.h                | 14 ++++++++++++++
 libstdc++-v3/include/std/ranges                        | 18 ++++++++++++++++--
 .../23_containers/inplace_vector/cons/from_iota_neg.cc |  6 ++----
 .../inplace_vector/cons/from_range_neg.cc              | 10 ++++------
 4 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_base.h b/libstdc++-v3/include/bits/ranges_base.h
index fea4100eb09e..ce1c40fc17f6 100644
--- a/libstdc++-v3/include/bits/ranges_base.h
+++ b/libstdc++-v3/include/bits/ranges_base.h
@@ -562,6 +562,20 @@ namespace ranges
   template<typename _Tp>
     concept __static_sized_range = sized_range<_Tp> && requires (_Tp& __t)
       { static_cast<char(*)[size_t(ranges::size(__t) >= 0)]>(nullptr); };
+
+  template<__static_sized_range _Range>
+    consteval range_size_t<_Range>
+    __static_size()
+    {
+      auto __conjure = [](_Range& __r)
+      {
+	if constexpr (ranges::size(__r) <= size_t(-1))
+	  return integral_constant<size_t, size_t(ranges::size(__r))>{};
+	else
+	  return integral_constant<range_size_t<_Range>, ranges::size(__r)>{};
+      };
+      return range_size_t<_Range>(decltype(__conjure(std::declval<_Range&>()))::value);
+    }
 #endif // C++26
 
   template<typename _Derived>
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 7d8b37f8c5cf..2f11cc2336f7 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -1382,11 +1382,25 @@ namespace views::__adaptor
 
       constexpr bool
       empty() const requires requires { ranges::empty(*_M_r); }
-      { return ranges::empty(*_M_r); }
+      {
+#if __cplusplus > 202302L
+	if constexpr (__static_sized_range<_Range>)
+	  return ranges::__static_size<_Range>() == 0;
+	else
+#endif
+	  return ranges::empty(*_M_r);
+      }
 
       constexpr auto
       size() const requires sized_range<_Range>
-      { return ranges::size(*_M_r); }
+      {
+#if __cplusplus > 202302L
+	if constexpr (__static_sized_range<_Range>)
+	  return ranges::__static_size<_Range>();
+	else
+#endif
+	  return ranges::size(*_M_r);
+      }
 
       constexpr auto
       data() const requires contiguous_range<_Range>
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
index ae0b96175b7d..6b66b5d97ed9 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
@@ -33,14 +33,12 @@ test_all()
   std::inplace_vector<int, 15> tr1(std::from_range, ref_view(m12));
 
   std::inplace_vector<int, 10> tm2(std::from_range, m12); // { dg-error "(from here|expansion of)" }
-  // ref_view is not statically sized due pointer dereference
-  std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12));
+  std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12)); // { dg-error "(from here|expansion of)" }
 
   StaticIota<__int128, 0> mm;
 
   std::inplace_vector<int, 10> tm3(std::from_range, mm); // { dg-error "(from here|expansion of)" }
-  // ref_view is not statically sized due pointer dereference
-  std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm));
+  std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm)); // { dg-error "(from here|expansion of)" }
 }
 
 // { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
index 48d5b4c56f59..ea187761e5e7 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
@@ -62,16 +62,14 @@ test_all()
 
   test_one(a1); // { dg-error "from here" }
   test_one(s1); // { dg-error "from here" }
-  // ref_view is not statically sized due pointer dereference
-  test_one(ref_view(a1));
-  test_one(a5 | std::views::adjacent<7> | std::views::elements<0>);
+  test_one(ref_view(a1)); // { dg-error "from here" }
+  test_one(a5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
   test_one(s5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
 
   test_five(a5); // { dg-error "from here" }
   test_five(s5); // { dg-error "from here" }
-  // ref_view is not statically sized due pointer dereference
-  test_five(ref_view(a5));
-  test_five(a7 | std::views::adjacent<3> | std::views::elements<0>);
+  test_five(ref_view(a5)); // { dg-error "from here" }
+  test_five(a7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
   test_five(s7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
 }

From redi@gcc.gnu.org  Tue May 26 11:26:15 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 26 May 2026 11:26:15 +0000 (GMT)
Subject: [gcc r17-811] libstdc++: Fix <optional> for freestanding [PR125450]
Message-ID: <20260526112615.D96A84BA23E8@sourceware.org>

https://gcc.gnu.org/g:23b9ac257cf508bc4fa479c82fcfc768c4abcd79

commit r17-811-g23b9ac257cf508bc4fa479c82fcfc768c4abcd79
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 26 10:50:53 2026 +0100

    libstdc++: Fix <optional> for freestanding [PR125450]
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125450
            * include/std/optional (range_format): Do not define for
            freestanding.

Diff:
---
 libstdc++-v3/include/std/optional | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index 8d6d049e8ccc..dec1a50413ab 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -60,7 +60,9 @@
 # include <concepts>
 #endif
 #ifdef __cpp_lib_optional_range_support // C++ >= 26
-# include <bits/formatfwd.h>
+# if _GLIBCXX_HOSTED
+#  include <bits/formatfwd.h>
+# endif
 # include <bits/ranges_base.h>
 # include <bits/range_access.h>
 #endif
@@ -2285,9 +2287,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     ranges::enable_borrowed_range<optional<_Tp&>> = true;
 #endif
 
+#if _GLIBCXX_HOSTED
   template<typename _Tp>
     inline constexpr range_format
       format_kind<optional<_Tp>> = range_format::disabled;
+#endif
 #endif // __cpp_lib_optional_range_support
 
 #undef _GLIBCXX_USE_CONSTRAINTS_FOR_OPTIONAL

From tkaminsk@gcc.gnu.org  Tue May 26 16:18:59 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 26 May 2026 16:18:59 +0000 (GMT)
Subject: [gcc r17-816] libstdc++: Revert making ref_view<R> statically sized.
Message-ID: <20260526161859.CCA364BA23EB@sourceware.org>

https://gcc.gnu.org/g:bd02a048e92a778c2d3fcc011b8a88e1ac6f8183

commit r17-816-gbd02a048e92a778c2d3fcc011b8a88e1ac6f8183
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue May 26 18:01:40 2026 +0200

    libstdc++: Revert making ref_view<R> statically sized.
    
    This patch reverts all changes except introduction of
    ranges::__static_size from r17-810-g7239744d25dadf.
    
    In addition to expected errors from breaking inplace_vector
    preconditions, this lead to change in the return type of
    define_static_array, when applied on (adapted) ref_view:
      int x[10];
      auto x = define_static_array(x | views::transform(...));
    Type of x changed from span<const ...> to span<const ..., 10>,
    due size being statically know.
    
    This was considered beyond the scope of implementation freedom,
    and we should wait for acceptance of P3928R0 instead.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/std/ranges                        | 18 ++----------------
 .../23_containers/inplace_vector/cons/from_iota_neg.cc |  6 ++++--
 .../inplace_vector/cons/from_range_neg.cc              | 10 ++++++----
 3 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 2f11cc2336f7..7d8b37f8c5cf 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -1382,25 +1382,11 @@ namespace views::__adaptor
 
       constexpr bool
       empty() const requires requires { ranges::empty(*_M_r); }
-      {
-#if __cplusplus > 202302L
-	if constexpr (__static_sized_range<_Range>)
-	  return ranges::__static_size<_Range>() == 0;
-	else
-#endif
-	  return ranges::empty(*_M_r);
-      }
+      { return ranges::empty(*_M_r); }
 
       constexpr auto
       size() const requires sized_range<_Range>
-      {
-#if __cplusplus > 202302L
-	if constexpr (__static_sized_range<_Range>)
-	  return ranges::__static_size<_Range>();
-	else
-#endif
-	  return ranges::size(*_M_r);
-      }
+      { return ranges::size(*_M_r); }
 
       constexpr auto
       data() const requires contiguous_range<_Range>
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
index 6b66b5d97ed9..ae0b96175b7d 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
@@ -33,12 +33,14 @@ test_all()
   std::inplace_vector<int, 15> tr1(std::from_range, ref_view(m12));
 
   std::inplace_vector<int, 10> tm2(std::from_range, m12); // { dg-error "(from here|expansion of)" }
-  std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12)); // { dg-error "(from here|expansion of)" }
+  // ref_view is not statically sized due pointer dereference
+  std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12));
 
   StaticIota<__int128, 0> mm;
 
   std::inplace_vector<int, 10> tm3(std::from_range, mm); // { dg-error "(from here|expansion of)" }
-  std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm)); // { dg-error "(from here|expansion of)" }
+  // ref_view is not statically sized due pointer dereference
+  std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm));
 }
 
 // { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff --git a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
index ea187761e5e7..48d5b4c56f59 100644
--- a/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
@@ -62,14 +62,16 @@ test_all()
 
   test_one(a1); // { dg-error "from here" }
   test_one(s1); // { dg-error "from here" }
-  test_one(ref_view(a1)); // { dg-error "from here" }
-  test_one(a5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
+  // ref_view is not statically sized due pointer dereference
+  test_one(ref_view(a1));
+  test_one(a5 | std::views::adjacent<7> | std::views::elements<0>);
   test_one(s5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
 
   test_five(a5); // { dg-error "from here" }
   test_five(s5); // { dg-error "from here" }
-  test_five(ref_view(a5)); // { dg-error "from here" }
-  test_five(a7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
+  // ref_view is not statically sized due pointer dereference
+  test_five(ref_view(a5));
+  test_five(a7 | std::views::adjacent<3> | std::views::elements<0>);
   test_five(s7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
 }

From gccadmin@gcc.gnu.org  Wed May 27 00:17:01 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 27 May 2026 00:17:01 +0000 (GMT)
Subject: [gcc r17-821] Daily bump.
Message-ID: <20260527001701.B7B3D4BA2E1E@sourceware.org>

https://gcc.gnu.org/g:d15becf86032e043c051f359659380e1d7949336

commit r17-821-gd15becf86032e043c051f359659380e1d7949336
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed May 27 00:16:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  52 ++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 333 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog        |   6 +
 gcc/fortran/ChangeLog   |   5 +
 gcc/testsuite/ChangeLog |  30 +++++
 libffi/ChangeLog        |   7 +
 libstdc++-v3/ChangeLog  | 132 +++++++++++++++++++
 8 files changed, 566 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a817f2f87f6..e9f356f96857 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,55 @@
+2026-05-26  Sergei Trofimovich  <siarheit@google.com>
+
+	PR bootstrap/125318
+	* tree-vect-stmts.cc (vectorizable_load): Explicitly
+	initialize stride_step to work around
+	-Werror=maybe-uninitialized build failure.
+
+2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125396
+	* tree-cfgcleanup.cc (bb_phis_references_abnormal_uses): New function.
+	(maybe_remove_forwarder_block): Check to make sure the
+	forwarder block does not have a phi that references ssa name that has
+	abnormal uses.
+
+2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv-fusion.cc (riscv_fusion_same_dest_p):
+	New function.
+	(riscv_set_is_add_p): Rename from riscv_set_is_add.
+	(riscv_set_is_addi_p): Rename from riscv_set_is_addi.
+	(riscv_set_is_adduw_p): Rename from riscv_set_is_adduw.
+	(riscv_set_is_shNadd_p): Rename from riscv_set_is_shNadd.
+	(riscv_set_is_shNadduw_p): Rename from riscv_set_is_shNadduw.
+	(riscv_fuse_zextws): New function.
+	(riscv_fuse_zexth): Likewise.
+	(riscv_fuse_ldindexed): Likewise.
+	(riscv_fuse_expanded_ld): Likewise.
+	(riscv_fuse_ldpreincrement): Likewise.
+	(riscv_fuse_lui_addi): Likewise.
+	(riscv_fuse_auipc_addi): Likewise.
+	(riscv_fuse_lui_ld): Likewise.
+	(riscv_fuse_auipc_ld): Likewise.
+	(riscv_fuse_cache_aligned_std): Likewise.
+	(riscv_fuse_aligned_std): Likewise.
+	(riscv_fuse_bfext): Likewise.
+	(riscv_fuse_b_alui): Likewise.
+	(struct riscv_fusion_entry): New struct.
+	(riscv_fusion_table): New table.
+	(riscv_macro_fusion_pair_p): Refactor to use table-driven
+	dispatch loop with simplified checker interface.
+
+2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv-fusion.cc (riscv_macro_fusion_pair_p):
+	Fix XINT to access SET_SRC (prev_set) in AUIPC_LD case.
+	Fix base register comparison from != to == in
+	CACHE_ALIGNED_STD case.  Remove redundant CONST_INT_P
+	check in B_ALUI sub+smax case.  Remove duplicate REG_P
+	check in LDINDEXED case.  Fix typo in comment.  Fix dump
+	output name for CACHE_ALIGNED_STD.
+
 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/125453
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 8d594f290dce..f756da54533c 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260526
+20260527
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3f2a6b6f6019..4c6bbc29ee7e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,336 @@
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* xsintnam.sed: Disable style checks.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* xsintnam.sed: Handle special case.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/Makefile.in ($(RTSDIR)/s-intnam.ads): Change recipe
+	to use a basic invocation of 'sed'.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* xsintnam.sed: Do not filter out comments.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* libgnarl/s-interr__sigaction.adb: Add with clause for
+	System.OS_Interface.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.adb (Apply_Accessibility_Check_For_Anonymous):
+	Rename into...
+	(Apply_Accessibility_Check_For_Anonymous_Return): ...this.
+	(Apply_Accessibility_Check_For_Class_Wide): Rename into...
+	(Apply_Accessibility_Check_For_Class_Wide_Return): ...this.
+	(Apply_Accessibility_Check_For_Discriminant): Rename into...
+	(Apply_Accessibility_Check_For_Discriminated_Return): ...this.
+	(Apply_Accessibility_Check_For_Return): Adjust to above renamings.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.ads (Apply_Accessibility_Check): Rename into...
+	(Apply_Accessibility_Check_For_Parameter): ...this.
+	(Apply_Accessibility_Check_For_Return): New procedure.
+	(Effective_Extra_Accessibility): Minor tweak in description.
+	* accessibility.adb (Function_Call_Or_Allocator_Level): Apply the
+	specific treatment for returns to anonymous allocators as well.
+	(Accessibility_Level): Deal with literal null and Deref attribute.
+	(Apply_Accessibility_Check): Rename into...
+	(Apply_Accessibility_Check_For_Anonymous): New procedure extracted
+	from the old Apply_Access_Discrims_Accessibility_Check.
+	(Apply_Accessibility_Check_For_Class_Wide): New procedure taken
+	from Exp_Ch6.
+	(Apply_Accessibility_Check_For_Discriminant): Likewise.
+	(Apply_Accessibility_Check_For_Parameter): ...this.
+	(Apply_Accessibility_Check_For_Return): New procedure.
+	(Static_Accessibility_Level): Minor reformatting.
+	* exp_attr.adb (Expand_N_Attribute_Reference): Adjust to renaming.
+	* exp_ch3.adb (Expand_N_Object_Declaration): Generate accessibility
+	checks for returns by calling Apply_Accessibility_Check_For_Return.
+	* exp_ch4.adb (Expand_N_Type_Conversion): Adjust to renaming.
+	* exp_ch6.ads (Apply_Access_Discrims_Accessibility_Check): Delete.
+	(Apply_CW_Accessibility_Check): Likewise.
+	* exp_ch6.adb: Remove clauses for Exp_Atag.
+	(Apply_Access_Discrims_Accessibility_Check): Move to Accessibility.
+	(Apply_CW_Accessibility_Check): Likewise.
+	(Expand_Actuals): Adjust to renaming.
+	(Expand_Simple_Function_Return): Generate accessibility checks by
+	calling Apply_Accessibility_Check_For_Return.
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Tidy up and make
+	the computation of minimum accessibility levels more uniform.
+	(Create_Extra_Formals): Minor reformatting.
+
+2026-05-26  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch3.adb (Derive_Subprogram): Do not replace the type when
+	Derived_Type inherits the first controlling parameter aspect and
+	it is not the first formal of this operation.
+	* sem_disp.adb (Check_Controlling_Formals): For overriding
+	primitives of types with the first controlling parameter aspect
+	inherit controlling formals of the overridden parent primitive.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Check_Ghost_Equality_Op): Supply the type of the
+	operation as an argument.
+	* ghost.ads (Check_Ghost_Equality_Op): Likewise.
+	* sem_ch6.adb (Valid_Operator_Definition): Remove call to
+	Check_Ghost_Equality_Op.
+	(Check_For_Primitive_Subprogram): Call Check_Ghost_Equality_Op.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-inttyp.ads: New file.
+	* libgnarl/a-interr.ads (Interrupt_ID): Derive from
+	Preelab_Interrupt_ID.
+	* libgnarl/s-interr.ads (Interrupt_ID): Derive from
+	Preelab_Interrupt_ID.
+	(Ada_Interrupt_ID): Remove.
+	* libgnarl/s-interr__vxworks.ads (Ada_Interrupt_ID): Remove.
+	* xsintnam.sed: New file.
+	* Makefile.rtl: Register new runtime files.
+	* libgnarl/a-interr.adb: Adjust with clauses.
+	* rtsfind.ads (RE_Interrupt_Names, RE_Preelab_Interrupt_ID): New
+	variants.
+	* sem_prag.adb: Use entities from new preelaborate packages.
+	* gcc-interface/Makefile.in: Generate System.Interrupt_Names.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-interr.adb (Unprotected_Exchange_Handler): Improve
+	comment and formatting.
+	(Server_Task): Fix task state.
+	* rtsfind.adb (RTE): Remove incorrect comment.
+
+2026-05-26  Javier Miranda  <miranda@adacore.com>
+
+	* exp_ch4.adb (Expand_N_Type_Conversion): When the operand is a
+	qualified expression of an aggregate, force its evaluation by
+	capturing its value in a constant (to ensure full initialization
+	of the tagged object).
+
+2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+
+	* doc/gnat_ugn/platform_specific_information.rst
+	(Using gnatdll): Document switch -m.
+	* gnat_ugn.texi: Regenerate.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Check_Valid_Ghost_Declaration): Relocate the procedure.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Check_Ghost_Equality_Op): New function for the
+	implementation of the rule.
+	* ghost.ads (Check_Ghost_Equality_Op): Likewise.
+	* sem_ch6.adb (Valid_Operator_Definition): Add check for rule 23.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch4.adb (Analyze_Qualified_Expression): For a class-wide type,
+	check for an exact match modulo the Non_Limited_View attribute.
+
+2026-05-26  Steve Baird  <baird@adacore.com>
+
+	* aspects.adb (Has_Aspect): In the call to Find_Aspect, pass in
+	True for the Or_Rep_Item parameter instead of letting it default
+	to False.
+
+2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+
+	* tempdir.ads, tempdir.adb: Remove.
+	* gcc-interface/Makefile.in (GNATMAKE_OBJS): Remove dependency on Tempdir.
+
+2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+
+	* gnatname.adb: Use System.OS_Lib routine.
+
+2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+
+	* make.adb: Use System.OS_Lib routine.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/89609
+	* sem_res.adb (Resolve_Call): Do not override the Etype of the Name
+	entity when it denotes a function that returns the limited view of a
+	type coming from a limited_with clause.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch6.adb (Get_Function_Entity): New function.
+	(Make_Build_In_Place_Call_In_Allocator): Call it, turn some local
+	variables into constants and rename Function_Id as Func_Id.
+	(Make_Build_In_Place_Call_In_Anonymous_Context): Likewise.
+	(Make_Build_In_Place_Call_In_Assignment): Likewise.
+	(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
+
+2026-05-26  Gary Dismukes  <dismukes@adacore.com>
+
+	* contracts.adb (Expand_Subprogram_Contract): Don't call
+	Build_Subprogram_Contract_Wrapper for a No_Return subprogram,
+	but include any prologue declarations (such as for preconditions).
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* errid-diagnostic_repository.ads: Add new diagnostics to the
+	repository. Map diagnostics to restrictions.
+	* errid-restriction_repository.ads: New pacakges for mapping
+	restricitions to diagnostics.
+	* errid.adb (heck_Diagnostic_To_Restriction_Consistency): New
+	method for repository consistency.
+	(Check_Diagnostic_To_Restriction_Consistency): New method for
+	repository consistency.
+	(Add_All_Restriction_Rules): New method for adding all of the
+	restrictions.
+	* errid.ads: Add new Diagnostic_Id-s.
+	* errout.adb (Add_Unique_Diagnostics_And_Switches): Add
+	restrictions to the SARIF_Printer.
+	* erroutc.ads: Add restrictions to the Error_Msg_Object.
+	* erroutc-sarif_emitter.adb (Print_Rule): Add method for printing
+	rules for restrictions.
+	* erroutc-sarif_emitter.ads: add restrictions as part of the
+	printer.
+	* errutil.adb (Error_Msg): Update diagnostic element creation.
+	* restrict.adb (Restriction_Msg): Add diagnostic id based on the
+	restriction id.
+	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
+	new files.
+	* gcc-interface/Makefile.in (GNATMAKE_OBJS): Likewise.
+
+2026-05-26  Javier Miranda  <miranda@adacore.com>
+
+	* exp_util.adb (Remove_Side_Effects): Propagate actuals in
+	recursion calls, unless this is a known side-effect free
+	attribute whose expressions are also side-effect free.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* sem_util.adb (Depends_On_Level): Fix condition for Runtime
+	level.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* sem_util.adb (Policy_In_Effect): Normalize the policy names.
+
+2026-05-26  Bob Duff  <duff@adacore.com>
+
+	* gen_il-fields.ads (Is_Boolean_Aspect): Remove.
+	* gen_il-gen-gen_nodes.adb: Likewise.
+	* sinfo.ads: Likewise.
+	* sem_ch13.adb: Likewise. Minor comment fix.
+	* aspects.ads: Clean up comments, including removing
+	some redundancy.
+	* freeze.adb: Fix comment typo.
+	* sem_eval.ads: Fix comment typo.
+	* tbuild.ads: Fix comment; there's no reason to mention the
+	number, especially when it's wrong.
+
+2026-05-26  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Check_Ghost_Policy): Add check for assertion levels
+	inside aspect specifications.
+
+2026-05-26  Bob Duff  <duff@adacore.com>
+
+	* aspects.ads (Aspect_Unimplemented): Remove.
+	* sem_ch13.adb (Aspect_Unimplemented): Remove.
+
+2026-05-26  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb (Analyze_One_Aspect): Remove the exception
+	declaration, raises, and handler. Inline the code in
+	Check_Expr_Is_OK_Static_Expression, which was called only once.
+
+2026-05-26  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* exp_unst.adb (Unnest_Subprogram): Push/Pop scope around Analyze
+	call.
+
+2026-05-26  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* exp_unst.adb (Maybe_Subp_Index): New non throwing version of
+	Subp_Index.
+	(Nullify_Renamings, Move_Pending_Renamings): New.
+	(Register_Subprogram): Record subp renamings. Call
+	Nullify_Renamings when a subp is dropped.
+	(with Elist): Moved to...
+	* exp_unst.ads (with Elist): ... here.
+	(Subp_Entry): Add Renamings component.
+	(Pending_Renamings): New list.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-interr__vxworks.adb (Unprotected_Exchange_Handler): Fix
+	exception message.
+
+2026-05-26  Sebastian Poeplau  <poeplau@adacore.com>
+
+	* s-oscons-tmplt.c (PTY_Library): Define empty for Linux targets.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-interr.adb (Interrupt_Manager, Server_Task): Fix
+	comments.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-interr.adb (User_Handler): Improve comment.
+	(Unprotected_Exchange_Handler): Fix message string.
+
+2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch6.adb (Check_Anonymous_Access_Return_With_Tasks): Declare
+	Scop as a constant and call the Might_Have_Tasks predicate instead
+	of using a custom implementation of it.
+
+2026-05-26  Steve Baird  <baird@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst: Correct example
+	to avoid using a not-yet-implemented form of deep delta aggregate.
+	* exp_aggr.adb (Make_Delta_Choice_LHS): Call Core_Extensions_Allowed
+	instead of All_Extensions_Allowed.
+	* par-ch4.adb (P_Simple_Expression): Likewise.
+	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Likewise.
+	* gnat_rm.texi: Regenerate.
+
+2026-05-26  Gary Dismukes  <dismukes@adacore.com>
+
+	* par.adb (P_Expression_If_OK): Add declare expression to spec comment.
+	* par-ch4.adb (P_Expression_If_OK): Add declare expression to comments.
+	* par-ch12.adb (P_Formal_Subprogram_Declaration): Call
+	P_Expression_If_OK rather than P_Expression.
+
+2026-05-26  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch13.adb (Analyze_One_Aspect): For Unsigned_Base_Range aspect,
+	skip generating its corresponding pragma when the aspect is set
+	to False.
+	* sem_ch3.adb (Analyze_Full_Type_Declaration): Fix initialization
+	of local variable Is_Unsigned_Base_Range_Type_Decl to handle
+	Unsigned_Base_Range aspect set to False.
+
+2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+
+	* libgnarl/s-interr.adb (Unprotected_Exchange_Handler): Fix
+	exception message.
+
+2026-05-26  Javier Miranda  <miranda@adacore.com>
+
+	* aspects.adb (Get_Aspect_Id): Enable aspect Unsigned_Base_Range
+	* debug.adb (Debug_Flag_Dot_U): Leave free this switch
+	* par-ch4.adb (Scan_Apostrophe): Enable attribute Unsigned_Base_Range
+	* sem_prag.adb (Analyze_Pragma): Enable pragma Unsigned_Base_Range
+	* doc/gnat_rm/gnat_language_extensions.rst: Document unsigned base range.
+	* gnat_rm.texi: Regenerate.
+	* gnat_ugn.texi: Regenerate.
+
 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* sem_util.adb (Prefix_Is_Formal_Parameter): Rename into...
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 34394abd5e27..deeb99962ec0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-26  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125423
+	* pt.cc (tsubst_expr) <case REFLECT_EXPR>: Don't tsubst
+	REFLECT_BASEs.
+
 2026-05-23  Jason Merrill  <jason@redhat.com>
 
 	PR c++/125135
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 94762c37a305..abc34cefeac1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-26  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* dump-parse-tree.cc (debug): Add debug functions for gfc_omp_namelist
+	and gfc_omp_clauses.
+
 2026-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 	    Harald Anlauf  <anlauf@gcc.gnu.org>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 937808551ce6..745cef9ae760 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,33 @@
+2026-05-26  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125423
+	* g++.dg/reflect/bases_of6.C: New test.
+
+2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125396
+	* gcc.dg/torture/pr125396-1.c: New test.
+
+2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+
+	* g++.dg/warn/Winvalid-memory-model-2.C: Disable deprecated
+	warnings for C++26 and up.
+	* g++.dg/warn/Winvalid-memory-model.C: Likewise.
+
+2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+
+	* gcc.target/riscv/fusion-auipc-addi-2.c: New test.
+	* gcc.target/riscv/fusion-lui-addi-2.c: New test.
+	* gcc.target/riscv/fusion-zexth-2.c: New test.
+	* gcc.target/riscv/fusion-zextw-2.c: New test.
+
+2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+
+	* gcc.target/riscv/fusion-auipc-ld.c: New test.
+	* gcc.target/riscv/fusion-b-alui.c: New test.
+	* gcc.target/riscv/fusion-cache-aligned-std.c: New test.
+	* gcc.target/riscv/fusion-ldindexed.c: New test.
+
 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/125453
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index f4219d46e5bd..9047e335db35 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-26  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR libffi/125417
+	* testsuite/lib/libffi.exp (libffi_target_compile): Use
+	${libffi_include} and ${blddirffi} instead of "../include" and
+	".." for include paths.
+
 2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* LOCAL_PATCHES: Update list.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4524c3589572..e21d29e58836 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,135 @@
+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:

From redi@gcc.gnu.org  Wed May 27 14:03:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 27 May 2026 14:03:07 +0000 (GMT)
Subject: [gcc r16-8967] libstdc++: Fix <optional> for freestanding [PR125450]
Message-ID: <20260527140307.7BE6C4BA2E13@sourceware.org>

https://gcc.gnu.org/g:ca5c9ec549009b95cc6a322db3ee10b3fed377e7

commit r16-8967-gca5c9ec549009b95cc6a322db3ee10b3fed377e7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 26 10:50:53 2026 +0100

    libstdc++: Fix <optional> for freestanding [PR125450]
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125450
            * include/std/optional (range_format): Do not define for
            freestanding.
    
    (cherry picked from commit 23b9ac257cf508bc4fa479c82fcfc768c4abcd79)

Diff:
---
 libstdc++-v3/include/std/optional | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index e3c6ea209889..9f03d3e89414 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -60,7 +60,9 @@
 # include <concepts>
 #endif
 #ifdef __cpp_lib_optional_range_support // C++ >= 26
-# include <bits/formatfwd.h>
+# if _GLIBCXX_HOSTED
+#  include <bits/formatfwd.h>
+# endif
 # include <bits/ranges_base.h>
 # include <bits/stl_iterator.h>
 #endif
@@ -2285,9 +2287,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     ranges::enable_borrowed_range<optional<_Tp&>> = true;
 #endif
 
+#if _GLIBCXX_HOSTED
   template<typename _Tp>
     inline constexpr range_format
       format_kind<optional<_Tp>> = range_format::disabled;
+#endif
 #endif // __cpp_lib_optional_range_support
 
 #undef _GLIBCXX_USE_CONSTRAINTS_FOR_OPTIONAL

From gccadmin@gcc.gnu.org  Thu May 28 00:20:23 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 28 May 2026 00:20:23 +0000 (GMT)
Subject: [gcc r16-8968] Daily bump.
Message-ID: <20260528002023.167A54BABF3B@sourceware.org>

https://gcc.gnu.org/g:bd18f6c4a6adcd63253f200f7f63377583629916

commit r16-8968-gbd18f6c4a6adcd63253f200f7f63377583629916
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu May 28 00:19:54 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog          | 9 +++++++++
 gcc/DATESTAMP          | 2 +-
 libstdc++-v3/ChangeLog | 9 +++++++++
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a81fca960696..27a88d08643e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-27  liuhongt  <hongtao.liu@intel.com>
+
+	Backported from master:
+	2026-05-27  liuhongt  <hongtao.liu@intel.com>
+
+	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Disable
+	for m_DIAMONDRAPIDS.
+	(X86_TUNE_USE_GATHER_4PARTS): Likewise.
+
 2026-05-26  Soumya AR  <soumyaa@nvidia.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index f756da54533c..70406bf9d422 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260527
+20260528
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 12520894b479..10d64113f3e9 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-27  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/125450
+	* include/std/optional (range_format): Do not define for
+	freestanding.
+
 2026-05-21  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:

From tkaminsk@gcc.gnu.org  Thu May 28 11:32:48 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 28 May 2026 11:32:48 +0000 (GMT)
Subject: [gcc r17-900] libstdc++: Expand serialization test for piecewise
 distributions.
Message-ID: <20260528113248.7690B4BA2E08@sourceware.org>

https://gcc.gnu.org/g:7e61b29d9186e5d1405fe103e69ff61082a5173f

commit r17-900-g7e61b29d9186e5d1405fe103e69ff61082a5173f
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 25 14:53:43 2026 +0200

    libstdc++: Expand serialization test for piecewise distributions.
    
    Due the viariability of the resutls, the test are currently limited
    to x86_64 architectures. float/double test are disabled for -m32
    as I was getting unstable result.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc:
            New test.
            * testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc:
            New test.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 .../operators/serialize2.cc                        | 109 ++++++++++++++++++++
 .../operators/serialize2.cc                        | 112 +++++++++++++++++++++
 2 files changed, 221 insertions(+)

diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc
new file mode 100644
index 000000000000..60838d7396b6
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc
@@ -0,0 +1,109 @@
+// { dg-do run { target c++11 } }
+// { dg-require-effective-target x86  }
+// { dg-require-cstdint "" }
+
+#include <random>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+template<typename RealType>
+void
+test_default()
+{
+  std::stringstream str;
+  std::piecewise_constant_distribution<RealType>
+     u(1, RealType(0), RealType(1), [](RealType) -> RealType { return 1.0; });
+  std::minstd_rand0 rng;
+
+  str << u;
+  std::string res = str.str();
+
+  std::piecewise_constant_distribution<RealType> v;
+  str >> v;
+  VERIFY( u == v );
+
+  if (!std::numeric_limits<RealType>::is_iec559)
+    return;
+
+  char const* expected = nullptr;
+  switch (std::numeric_limits<RealType>::digits)
+  {
+  case 24: // ieee32
+    expected =
+      "1 0.000000000e+00 1.000000000e+00 1.000000000e+00";
+    VERIFY( res == expected );
+    break;
+  case 53: // ieee64
+    expected =
+      "1 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00";
+    VERIFY( res == expected );
+    break;
+  case 64: // ieee80 
+    expected =
+      "1 0.000000000000000000000e+00 1.000000000000000000000e+00 1.000000000000000000000e+00";
+    VERIFY( res == expected );
+    break;
+  default:
+    break;
+  };
+}
+
+template<typename RealType>
+void
+test_custom()
+{
+  std::stringstream str;
+  std::piecewise_constant_distribution<RealType>
+     u(3, RealType(0), RealType(1), [](RealType r) -> RealType { return 1.0 + r; });
+  std::minstd_rand0 rng;
+
+  str << u;
+  std::string res = str.str();
+
+  std::piecewise_constant_distribution<RealType> v;
+  str >> v;
+  // This does not hold currently.
+  // VERIFY( u == v ); 
+
+  if (!std::numeric_limits<RealType>::is_iec559)
+    return;
+
+  char const* expected = nullptr;
+  switch (std::numeric_limits<RealType>::digits)
+  {
+  case 24: // ieee32
+    expected =
+      "3 0.000000000e+00 3.333333433e-01 6.666666865e-01 1.000000000e+00"
+	" 7.777777281e-01 9.999999702e-01 1.222222322e+00";
+    VERIFY( res == expected );
+    break;
+  case 53: // ieee64
+    expected =
+      "3 0.00000000000000000e+00 3.33333333333333315e-01 6.66666666666666630e-01 1.00000000000000000e+00"
+	" 7.77777777777777901e-01 1.00000000000000000e+00 1.22222222222222210e+00";
+    VERIFY( res == expected );
+    break;
+  case 64: // ieee80 
+    expected =
+      "3 0.000000000000000000000e+00 3.333333333333333333424e-01 6.666666666666666666847e-01 1.000000000000000000000e+00"
+	" 7.777777777777779011359e-01 1.000000000000000000000e+00 1.222222222222222098864e+00";
+    VERIFY( res == expected );
+    break;
+  default:
+    break;
+  };
+}
+
+int main()
+{
+  test_default<float>();
+  test_default<double>();
+  test_default<long double>();
+
+#ifdef __x86_64__
+  test_custom<float>();
+#endif
+  test_custom<double>();
+  test_custom<long double>();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc
new file mode 100644
index 000000000000..e8ab174eb702
--- /dev/null
+++ b/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc
@@ -0,0 +1,112 @@
+// { dg-do run { target c++11 } }
+// { dg-require-effective-target x86  }
+// { dg-require-cstdint "" }
+
+#include <random>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+template<typename RealType>
+void
+test_default()
+{
+  std::stringstream str;
+  std::piecewise_linear_distribution<RealType>
+     u(1, RealType(0), RealType(1), [](RealType) -> RealType { return 1.0; });
+  std::minstd_rand0 rng;
+
+  str << u;
+  std::string res = str.str();
+
+  std::piecewise_linear_distribution<RealType> v;
+  str >> v;
+  VERIFY( u == v );
+
+  if (!std::numeric_limits<RealType>::is_iec559)
+    return;
+ 
+  char const* expected = nullptr;
+  switch (std::numeric_limits<RealType>::digits)
+  {
+  case 24: // ieee32
+    expected =
+      "1 0.000000000e+00 1.000000000e+00"
+       " 1.000000000e+00 1.000000000e+00";
+    VERIFY( res == expected );
+    break;
+  case 53: // ieee64
+    expected =
+      "1 0.00000000000000000e+00 1.00000000000000000e+00"
+       " 1.00000000000000000e+00 1.00000000000000000e+00";
+    VERIFY( res == expected );
+    break;
+  case 64: // ieee80 
+    expected =
+      "1 0.000000000000000000000e+00 1.000000000000000000000e+00"
+       " 1.000000000000000000000e+00 1.000000000000000000000e+00";
+    VERIFY( res == expected );
+    break;
+  default:
+    break;
+  };
+}
+
+template<typename RealType>
+void
+test_custom()
+{
+  std::stringstream str;
+  std::piecewise_linear_distribution<RealType>
+     u(3, RealType(0), RealType(1), [](RealType r) -> RealType { return 1.0 + r; });
+  std::minstd_rand0 rng;
+
+  str << u;
+  std::string res = str.str();
+
+  std::piecewise_constant_distribution<RealType> v;
+  str >> v;
+  // This does not hold currently
+  // VERIFY( u == v );
+
+  if (!std::numeric_limits<RealType>::is_iec559)
+    return;
+
+  char const* expected = nullptr;
+  switch (std::numeric_limits<RealType>::digits)
+  {
+  case 24: // ieee32
+    expected =
+      "3 0.000000000e+00 3.333333433e-01 6.666666865e-01 1.000000000e+00"
+	" 7.272727292e-01 9.090909278e-01 1.090909061e+00 1.272727325e+00";
+    VERIFY( res == expected );
+    break;
+  case 53: // ieee64
+    expected =
+      "3 0.00000000000000000e+00 3.33333333333333315e-01 6.66666666666666630e-01 1.00000000000000000e+00" 
+	" 7.27272727272727182e-01 9.09090909090908950e-01 1.09090909090909083e+00 1.27272727272727249e+00";
+    VERIFY( res == expected );
+    break;
+  case 64: // ieee80 
+    expected =
+      "3 0.000000000000000000000e+00 3.333333333333333333424e-01 6.666666666666666666847e-01 1.000000000000000000000e+00"
+	" 7.272727272727271818908e-01 9.090909090909090606303e-01 1.090909090909090828347e+00 1.272727272727272707087e+00";
+    VERIFY( res == expected );
+    break;
+  default:
+    break;
+  };
+}
+
+int main()
+{
+  test_default<float>();
+  test_default<double>();
+  test_default<long double>();
+
+#ifdef __x86_64__
+  test_custom<float>();
+  test_custom<double>();
+#endif  
+  test_custom<long double>();
+  return 0;
+}

From tkaminsk@gcc.gnu.org  Thu May 28 11:40:05 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Thu, 28 May 2026 11:40:05 +0000 (GMT)
Subject: [gcc r17-901] libstdc++: Optimize operator<< for piecewise
 distributions.
Message-ID: <20260528114005.F3CE74BA2E23@sourceware.org>

https://gcc.gnu.org/g:33ac889aa27d9917e6e7d07c282015b7c48e0440

commit r17-901-g33ac889aa27d9917e6e7d07c282015b7c48e0440
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon May 25 15:15:09 2026 +0200

    libstdc++: Optimize operator<< for piecewise distributions.
    
    This avoids creating an temporary vector and uses _M_int and _M_den
    members of _M_param. Empty _M_int (default) values are handled by
    printing values direclty.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/random.h   | 10 ++++++++
 libstdc++-v3/include/bits/random.tcc | 44 +++++++++++++++++++++---------------
 2 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index 5d037465d3cf..a0592a007634 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -6474,6 +6474,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	std::vector<_RealType> _M_int;
 	std::vector<double> _M_den;
 	std::vector<double> _M_cp;
+
+	template<typename _RealType1, typename _CharT, typename _Traits>
+	  friend std::basic_ostream<_CharT, _Traits>&
+	  operator<<(std::basic_ostream<_CharT, _Traits>&,
+		     const std::piecewise_constant_distribution<_RealType1>&);
       };
 
       piecewise_constant_distribution()
@@ -6758,6 +6763,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	std::vector<double> _M_den;
 	std::vector<double> _M_cp;
 	std::vector<double> _M_m;
+
+	template<typename _RealType1, typename _CharT, typename _Traits>
+	  friend std::basic_ostream<_CharT, _Traits>&
+	  operator<<(std::basic_ostream<_CharT, _Traits>&,
+		     const std::piecewise_linear_distribution<_RealType1>&);
       };
 
       piecewise_linear_distribution()
diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index 80b51d099fad..e581f9127648 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -3173,15 +3173,19 @@ namespace __detail
       __os.fill(__space);
       __os.precision(std::numeric_limits<_RealType>::max_digits10);
 
-      std::vector<_RealType> __int = __x.intervals();
-      __os << __int.size() - 1;
-
-      for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
-	__os << __space << *__xit;
-
-      std::vector<double> __den = __x.densities();
-      for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
-	__os << __space << *__dit;
+      const auto& __int = __x._M_param._M_int;
+      if (__int.empty())
+	__os << size_t(1)
+	     << __space << _RealType(0) << __space << _RealType(1)
+	     << __space << _RealType(1);
+      else
+	{
+	  __os << __int.size() - 1;
+	  for (auto __xv : __int)
+	    __os << __space << __xv;
+	  for (auto __dv : __x._M_param._M_den)
+	    __os << __space << __dv;
+	}
 
       __os.flags(__flags);
       __os.fill(__fill);
@@ -3436,15 +3440,19 @@ namespace __detail
       __os.fill(__space);
       __os.precision(std::numeric_limits<_RealType>::max_digits10);
 
-      std::vector<_RealType> __int = __x.intervals();
-      __os << __int.size() - 1;
-
-      for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
-	__os << __space << *__xit;
-
-      std::vector<double> __den = __x.densities();
-      for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
-	__os << __space << *__dit;
+      auto const& __int = __x._M_param._M_int;
+      if (__int.empty())
+	__os << size_t(1)
+	     << __space << _RealType(0) << __space << _RealType(1)
+	     << __space << _RealType(1) << __space << _RealType(1);
+      else
+	{
+	  __os << __int.size() - 1;
+	  for (auto __xv : __int)
+	    __os << __space << __xv;
+	  for (auto __dv : __x._M_param._M_den)
+	    __os << __space << __dv;
+	}
 
       __os.flags(__flags);
       __os.fill(__fill);

From ppalka@gcc.gnu.org  Thu May 28 14:39:43 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 28 May 2026 14:39:43 +0000 (GMT)
Subject: [gcc r17-907] libstdc++: Fix suboptimal complexity of
 flat_map::_M_insert
Message-ID: <20260528143943.A9DFC4BA7999@sourceware.org>

https://gcc.gnu.org/g:457c7bb2d3dc605738f044c02c66512770cb7d10

commit r17-907-g457c7bb2d3dc605738f044c02c66512770cb7d10
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:27 2026 -0400

    libstdc++: Fix suboptimal complexity of flat_map::_M_insert
    
    Ever since r16-1742 ranges::inplace_merge is now correctly C++20 iterator
    aware which allows us to idiomatically implement this helper with the
    correct optimal complexity N + M log M instead of N log N.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/flat_map | 32 +++++++++-----------------------
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index 18f06e6bdaf8..a51c6625d54a 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -602,13 +602,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Iter, typename _Sent>
 	_GLIBCXX26_CONSTEXPR
 	void
-	_M_insert(_Iter __first, _Sent __last)
+	_M_insert(_Iter __first, _Sent __last, bool __is_sorted = false)
 	{
-	  // FIXME: This implementation fails its complexity requirements.
-	  // We can't idiomatically implement an efficient version (as in the
-	  // disabled code) until ranges::inplace_merge is fixed to dispatch
-	  // on iterator concept instead of iterator category.
-#if 0
 	  auto __guard = _M_make_clear_guard();
 	  auto __n = size();
 	  for (; __first != __last; ++__first)
@@ -618,22 +613,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      _M_cont.values.emplace_back(std::move(__value.second));
 	    }
 	  auto __zv = views::zip(_M_cont.keys, _M_cont.values);
-	  ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
-	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(), value_comp());
+	  if (__is_sorted)
+	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__zv.begin() + __n, __zv.end(),
+						    value_comp()));
+	  else
+	    ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
+	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(),
+				value_comp());
 	  if constexpr (!_Multi)
 	    _M_unique();
-	  __guard._M_cont = nullptr;
-#else
-	  auto __guard = _M_make_clear_guard();
-	  for (; __first != __last; ++__first)
-	    {
-	      value_type __value = *__first;
-	      _M_cont.keys.emplace_back(std::move(__value.first));
-	      _M_cont.values.emplace_back(std::move(__value.second));
-	    }
-	  _M_sort_uniq();
 	  __guard._M_disable();
-#endif
 	}
 
     public:
@@ -647,10 +636,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_GLIBCXX26_CONSTEXPR
 	void
 	insert(__sorted_t, _InputIterator __first, _InputIterator __last)
-	{
-	  // FIXME: This implementation fails its complexity requirements; see above.
-	  insert(std::move(__first), std::move(__last));
-	}
+	{ _M_insert(std::move(__first), std::move(__last), true); }
 
       template<__detail::__container_compatible_range<value_type> _Rg>
 	_GLIBCXX26_CONSTEXPR

From ppalka@gcc.gnu.org  Thu May 28 14:39:48 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 28 May 2026 14:39:48 +0000 (GMT)
Subject: [gcc r17-908] libstdc++: Implement P3567R2 flat_meow fixes
Message-ID: <20260528143948.CFCC14BA79B8@sourceware.org>

https://gcc.gnu.org/g:f46eccc9409136831225e30017a1d8ba6654a9b9

commit r17-908-gf46eccc9409136831225e30017a1d8ba6654a9b9
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:29 2026 -0400

    libstdc++: Implement P3567R2 flat_meow fixes
    
    This implements the changes in sections 5, 6 and 8 of P3567R2; the other
    changes (in section 4 and 7) are effectively already implemented.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |   9 +-
 libstdc++-v3/include/bits/version.h                |   8 +-
 libstdc++-v3/include/std/flat_map                  |  54 +++++++++--
 libstdc++-v3/include/std/flat_set                  |  69 ++++++++++++--
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 104 ++++++++++++++++++++-
 .../testsuite/23_containers/flat_multimap/1.cc     | 102 ++++++++++++++++++++
 .../testsuite/23_containers/flat_multiset/1.cc     |  94 +++++++++++++++++++
 libstdc++-v3/testsuite/23_containers/flat_set/1.cc |  96 ++++++++++++++++++-
 8 files changed, 513 insertions(+), 23 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 2f32a8bda98f..97f7d6865190 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1898,16 +1898,21 @@ ftms = {
 
 ftms = {
   name = flat_map;
+  // 202207 P0429R9 A Standard flat_map
+  // 202511 P3567R2 flat_meow Fixes
   values = {
-    v = 202207;
+    v = 202511; // P3567R2 applied as DR for C++23
     cxxmin = 23;
   };
 };
 
 ftms = {
   name = flat_set;
+  // 202207 P1222R4 A Standard flat_set
+  //        LWG3751 Missing feature macro for flat_set
+  // 202511 P3567R2 flat_meow Fixes
   values = {
-    v = 202207;
+    v = 202511; // P3567R2 applied as DR for C++23
     cxxmin = 23;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 517b9020ec65..c31893e34c4e 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2108,9 +2108,9 @@
 
 #if !defined(__cpp_lib_flat_map)
 # if (__cplusplus >= 202100L)
-#  define __glibcxx_flat_map 202207L
+#  define __glibcxx_flat_map 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
-#   define __cpp_lib_flat_map 202207L
+#   define __cpp_lib_flat_map 202511L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_flat_map) */
@@ -2118,9 +2118,9 @@
 
 #if !defined(__cpp_lib_flat_set)
 # if (__cplusplus >= 202100L)
-#  define __glibcxx_flat_set 202207L
+#  define __glibcxx_flat_set 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
-#   define __cpp_lib_flat_set 202207L
+#   define __cpp_lib_flat_set 202511L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_flat_set) */
diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index a51c6625d54a..f06c75a16f65 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -74,9 +74,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
       static_assert(is_same_v<_Tp, typename _MappedContainer::value_type>);
 
-      static_assert(is_nothrow_swappable_v<_KeyContainer>);
-      static_assert(is_nothrow_swappable_v<_MappedContainer>);
-
       using _Derived = __conditional_t<_Multi,
 				       flat_multimap<_Key, _Tp, _Compare,
 						     _KeyContainer, _MappedContainer>,
@@ -395,6 +392,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _Flat_map_impl(__s, __il.begin(), __il.end(), __comp, __a)
 	{ }
 
+      _Flat_map_impl(const _Flat_map_impl&) = default;
+      _Flat_map_impl& operator=(const _Flat_map_impl&) = default;
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_map_impl(_Flat_map_impl&& __other)
+      noexcept(is_nothrow_move_constructible_v<containers>
+	       && is_nothrow_move_constructible_v<key_compare>)
+#if __cpp_exceptions
+      try
+#endif
+      : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+      { __other.clear(); }
+#if __cpp_exceptions
+      catch (...)
+      { __other.clear(); }
+#endif
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_map_impl&
+      operator=(_Flat_map_impl&& __other)
+      noexcept(is_nothrow_move_assignable_v<containers>
+	       && is_nothrow_move_assignable_v<key_compare>)
+      {
+	auto __guard = _M_make_clear_guard();
+	auto __guard_other = _ClearGuard{__other._M_cont};
+	_M_cont = std::move(__other._M_cont);
+	_M_comp = std::move(__other._M_comp);
+	__guard._M_disable();
+	// __guard_other._M_disable is deliberately not called.
+	return *this;
+      }
+
       _GLIBCXX26_CONSTEXPR
       _Derived&
       operator=(initializer_list<value_type> __il)
@@ -644,6 +673,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	insert_range(_Rg&& __rg)
 	{ _M_insert(ranges::begin(__rg), ranges::end(__rg)); }
 
+      template<__detail::__container_compatible_range<value_type> _Rg>
+	_GLIBCXX26_CONSTEXPR
+	void
+	insert_range(__sorted_t, _Rg&& __rg)
+	{ _M_insert(ranges::begin(__rg), ranges::end(__rg), true); }
+
       _GLIBCXX26_CONSTEXPR
       void
       insert(initializer_list<value_type> __il)
@@ -728,11 +763,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       _GLIBCXX26_CONSTEXPR
       void
-      swap(_Derived& __y) noexcept
+      swap(_Derived& __y)
+      noexcept(is_nothrow_swappable_v<key_container_type>
+	       && is_nothrow_swappable_v<mapped_container_type>
+	       && is_nothrow_swappable_v<key_compare>)
       {
-	ranges::swap(_M_comp, __y._M_comp);
+	auto __guard = _M_make_clear_guard();
+	auto __guard_y = _ClearGuard{__y._M_cont};
 	ranges::swap(_M_cont.keys, __y._M_cont.keys);
 	ranges::swap(_M_cont.values, __y._M_cont.values);
+	ranges::swap(_M_comp, __y._M_comp);
+	__guard._M_disable();
+	__guard_y._M_disable();
       }
 
       _GLIBCXX26_CONSTEXPR
@@ -974,7 +1016,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
 
       friend _GLIBCXX26_CONSTEXPR void
-      swap(_Derived& __x, _Derived& __y) noexcept
+      swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
       { return __x.swap(__y); }
 
       template<typename _Predicate>
diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index 286290896ae0..e92559949ebb 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -71,7 +71,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     class _Flat_set_impl
     {
       static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
-      static_assert(is_nothrow_swappable_v<_KeyContainer>);
 
       using _Derived = __conditional_t<_Multi,
 				       flat_multiset<_Key, _Compare, _KeyContainer>,
@@ -324,6 +323,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _Flat_set_impl(__s, __il.begin(), __il.end(), __comp, __a)
 	{ }
 
+      _Flat_set_impl(const _Flat_set_impl&) = default;
+      _Flat_set_impl& operator=(const _Flat_set_impl&) = default;
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_set_impl(_Flat_set_impl&& __other)
+      noexcept(is_nothrow_move_constructible_v<container_type>
+	       && is_nothrow_move_constructible_v<key_compare>)
+#if __cpp_exceptions
+      try
+#endif
+      : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+      { __other.clear(); }
+#if __cpp_exceptions
+      catch (...)
+      { __other.clear(); }
+#endif
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_set_impl&
+      operator=(_Flat_set_impl&& __other)
+      noexcept(is_nothrow_move_assignable_v<container_type>
+	       && is_nothrow_move_assignable_v<key_compare>)
+      {
+	auto __guard = _M_make_clear_guard();
+	auto __guard_other = _ClearGuard{__other._M_cont};
+	_M_cont = std::move(__other._M_cont);
+	_M_comp = std::move(__other._M_comp);
+	__guard._M_disable();
+	// __guard_other._M_disable is deliberately not called.
+	return *this;
+      }
+
       _GLIBCXX26_CONSTEXPR
       _Derived&
       operator=(initializer_list<value_type> __il)
@@ -540,10 +571,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __guard._M_disable();
 	}
 
-      template<__detail::__container_compatible_range<value_type> _Rg>
+      template<typename _Rg>
 	_GLIBCXX26_CONSTEXPR
 	void
-	insert_range(_Rg&& __rg)
+	_M_insert_range(_Rg&& __rg, bool __is_sorted = false)
 	{
 	  auto __guard = _M_make_clear_guard();
 	  typename container_type::iterator __it;
@@ -561,13 +592,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		_M_cont.emplace_back(*__first);
 	      __it = _M_cont.begin() + __n;
 	    }
-	  std::sort(__it, _M_cont.end(), _M_comp);
+	  if (__is_sorted)
+	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__it, _M_cont.end(), _M_comp));
+	  else
+	    std::sort(__it, _M_cont.end(), _M_comp);
 	  std::inplace_merge(_M_cont.begin(), __it, _M_cont.end(), _M_comp);
 	  if constexpr (!_Multi)
 	    _M_unique();
 	  __guard._M_disable();
 	}
 
+    template<__detail::__container_compatible_range<value_type> _Rg>
+      _GLIBCXX26_CONSTEXPR
+      void
+      insert_range(_Rg&& __rg)
+      { _M_insert_range(std::forward<_Rg>(__rg)); }
+
+    template<__detail::__container_compatible_range<value_type> _Rg>
+      _GLIBCXX26_CONSTEXPR
+      void
+      insert_range(__sorted_t, _Rg&& __rg)
+      { _M_insert_range(std::forward<_Rg>(__rg), true); }
+
       _GLIBCXX26_CONSTEXPR
       void
       insert(initializer_list<value_type> __il)
@@ -628,11 +674,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       _GLIBCXX26_CONSTEXPR
       void
-      swap(_Derived& __x) noexcept
+      swap(_Derived& __y)
+      noexcept(is_nothrow_swappable_v<container_type>
+	       && is_nothrow_swappable_v<key_compare>)
       {
-	using std::swap;
-	swap(_M_cont, __x._M_cont);
-	swap(_M_comp, __x._M_comp);
+	auto __guard = _M_make_clear_guard();
+	auto __guard_y = _ClearGuard{__y._M_cont};
+	ranges::swap(_M_comp, __y._M_comp);
+	ranges::swap(_M_cont, __y._M_cont);
+	__guard._M_disable();
+	__guard_y._M_disable();
       }
 
       _GLIBCXX26_CONSTEXPR
@@ -830,7 +881,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
 
       friend _GLIBCXX26_CONSTEXPR void
-      swap(_Derived& __x, _Derived& __y) noexcept
+      swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
       { return __x.swap(__y); }
 
       template<typename _Predicate>
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 1cb088f511eb..7e22e0366ec2 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -3,7 +3,7 @@
 
 #include <flat_map>
 
-#if __cpp_lib_flat_map != 202207L
+#if __cpp_lib_flat_map != 202511L
 # error "Feature-test macro __cpp_lib_flat_map has wrong value in <flat_map>"
 #endif
 
@@ -299,6 +299,103 @@ test10()
   VERIFY (k == "world");
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+template<template<typename> class KC, template<typename> class MC>
+void
+test11()
+{
+#if __cpp_exceptions
+  using flat_map = std::flat_map<int, int, std::less<int>, KC<int>, MC<int>>;
+
+  auto is_really_empty = [](const flat_map& m) {
+    return m.empty() && m.keys().empty() && m.values().empty();
+  };
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_map source;
+  source.insert({{1, 100}, {2, 200}});
+  try
+    {
+      flat_map target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  flat_map target;
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  target.clear();
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+#endif
+}
+
+constexpr
+void
+test12()
+{
+  // Verify usability of flat_map::insert_range(sorted_unique_t, Rg&&).
+  std::flat_map<int, int> m = {{2, 200}};
+  std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+  m.insert_range(std::sorted_unique, s);
+  VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+}
+
 void
 test()
 {
@@ -315,6 +412,9 @@ test()
   test08();
   test09();
   test10();
+  test11<std::vector, throwing_vector>();
+  test11<throwing_vector, std::vector>();
+  test12();
 }
 
 constexpr
@@ -333,6 +433,8 @@ test_constexpr()
 #if __cpp_lib_constexpr_string >= 201907L
   test10();
 #endif
+  // test11() is non-constexpr
+  test12();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
index 00644c14061a..48688b7583ed 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
@@ -252,6 +252,103 @@ test09()
   using value_type = std::pair<int, int>;
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+template<template<typename> class KC, template<typename> class MC>
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_multimap = std::flat_multimap<int, int, std::less<int>, KC<int>, MC<int>>;
+
+  auto is_really_empty = [](const flat_multimap& m) {
+    return m.empty() && m.keys().empty() && m.values().empty();
+  };
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_multimap source;
+  source.insert({{1, 100}, {2, 200}});
+  try
+    {
+      flat_multimap target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  flat_multimap target;
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  target.clear();
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_multimap::insert_range(sorted_equivalent_t, Rg&&).
+  std::flat_multimap<int, int> m = {{2, 200}};;
+  std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+  m.insert_range(std::sorted_equivalent, s);
+  VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+}
+
 void
 test()
 {
@@ -266,6 +363,9 @@ test()
   test06();
   test07();
   test09();
+  test10<std::vector, throwing_vector>();
+  test10<throwing_vector, std::vector>();
+  test11();
 }
 
 constexpr
@@ -280,6 +380,8 @@ test_constexpr()
   test06();
   test07();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
index be330fefdd05..4544adb50770 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
@@ -265,6 +265,96 @@ test09()
   VERIFY( std::ranges::equal(s, (int[]){2,2,4}) );
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_multiset = std::flat_multiset<int, std::less<int>, throwing_vector<int>>;
+
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_multiset source = {1, 2};
+  try
+    {
+      flat_multiset target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({1, 2});
+  flat_multiset target = {3, 4};
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({1, 2});
+  target.clear();
+  target.insert({3, 4});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_multiset::insert_range(sorted_equivalent_t, Rg&&).
+  std::flat_multiset<int> m = {2};
+  int s[] = {1, 3};
+  m.insert_range(std::sorted_equivalent, s);
+  VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -278,6 +368,8 @@ test()
   test07();
   test08();
   test09();
+  test10();
+  test11();
 }
 
 constexpr
@@ -292,6 +384,8 @@ test_constexpr()
   test07();
   test08();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
index a14d03476e18..ac12815bd0d4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
@@ -2,7 +2,7 @@
 
 #include <flat_set>
 
-#if __cpp_lib_flat_set != 202207L
+#if __cpp_lib_flat_set != 202511L
 # error "Feature-test macro __cpp_lib_flat_set has wrong value in <flat_set>"
 #endif
 
@@ -277,6 +277,96 @@ test09()
   VERIFY( std::ranges::equal(s, (int[]){2,4}) );
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_set = std::flat_set<int, std::less<int>, throwing_vector<int>>;
+
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_set source = {1, 2};
+  try
+    {
+      flat_set target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({1, 2});
+  flat_set target = {3, 4};
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({1, 2});
+  target.clear();
+  target.insert({3, 4});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_set::insert_range(sorted_unique_t, Rg&&).
+  std::flat_set<int> m = {2};
+  int s[] = {1, 3};
+  m.insert_range(std::sorted_unique, s);
+  VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -290,6 +380,8 @@ test()
   test07();
   test08();
   test09();
+  test10();
+  test11();
 }
 
 constexpr
@@ -304,6 +396,8 @@ test_constexpr()
   test07();
   test08();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }

From ppalka@gcc.gnu.org  Thu May 28 14:39:54 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 28 May 2026 14:39:54 +0000 (GMT)
Subject: [gcc r17-909] libstdc++: Fix availability of
 flat_meow::operator=(initializer_list)
Message-ID: <20260528143954.04A024BA79A1@sourceware.org>

https://gcc.gnu.org/g:c345d6afd9a9b331cb679b82e89213deb8f8a69a

commit r17-909-gc345d6afd9a9b331cb679b82e89213deb8f8a69a
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:32 2026 -0400

    libstdc++: Fix availability of flat_meow::operator=(initializer_list)
    
    This assignment operator was not being brought in from the private base
    class causing assignments from {...} to be inefficiently treated as
    construction + move assignment.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/std/flat_map                  | 10 +++++++++
 libstdc++-v3/include/std/flat_set                  | 10 +++++++++
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 23 +++++++++++++++------
 .../testsuite/23_containers/flat_multimap/1.cc     | 23 +++++++++++++++------
 .../testsuite/23_containers/flat_multiset/1.cc     | 24 ++++++++++++++++------
 libstdc++-v3/testsuite/23_containers/flat_set/1.cc | 24 ++++++++++++++++------
 6 files changed, 90 insertions(+), 24 deletions(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index f06c75a16f65..b82d41b4f5e1 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -1275,6 +1275,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
@@ -1628,6 +1633,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index e92559949ebb..2f204cc08bf9 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -967,6 +967,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
@@ -1115,6 +1120,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 7e22e0366ec2..0cd06b72e96c 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -351,8 +351,7 @@ test11()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
+  source = {{1, 100}, {2, 200}};
   flat_map target;
   target.insert({{3, 300}, {4, 400}});
   try
@@ -367,10 +366,8 @@ test11()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
-  target.clear();
-  target.insert({{3, 300}, {4, 400}});
+  source = {{1, 100}, {2, 200}};
+  target = {{3, 300}, {4, 400}};
   try
     {
       source.swap(target);
@@ -396,6 +393,18 @@ test12()
   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
 }
 
+void
+test13()
+{
+  // Verify usability of flat_map::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_map<int, int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+  s = il;
+  VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+}
+
 void
 test()
 {
@@ -415,6 +424,7 @@ test()
   test11<std::vector, throwing_vector>();
   test11<throwing_vector, std::vector>();
   test12();
+  test13();
 }
 
 constexpr
@@ -435,6 +445,7 @@ test_constexpr()
 #endif
   // test11() is non-constexpr
   test12();
+  // test13() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
index 48688b7583ed..a070c5ef0911 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
@@ -304,8 +304,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
+  source = {{1, 100}, {2, 200}};
   flat_multimap target;
   target.insert({{3, 300}, {4, 400}});
   try
@@ -320,10 +319,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
-  target.clear();
-  target.insert({{3, 300}, {4, 400}});
+  source = {{1, 100}, {2, 200}};
+  target = {{3, 300}, {4, 400}};
   try
     {
       source.swap(target);
@@ -349,6 +346,18 @@ test11()
   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_multimap::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_multimap<int, int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+  s = il;
+  VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+}
+
 void
 test()
 {
@@ -366,6 +375,7 @@ test()
   test10<std::vector, throwing_vector>();
   test10<throwing_vector, std::vector>();
   test11();
+  test12();
 }
 
 constexpr
@@ -382,6 +392,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
index 4544adb50770..eea53733f6d2 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
@@ -289,6 +289,8 @@ struct throwing_vector : std::vector<T>
       throw std::runtime_error("move assign");
     return *this;
   }
+
+  using std::vector<int>::operator=;
 };
 
 void
@@ -312,8 +314,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({1, 2});
+  source = {1, 2};
   flat_multiset target = {3, 4};
   try
     {
@@ -327,10 +328,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({1, 2});
-  target.clear();
-  target.insert({3, 4});
+  source = {1, 2};
+  target = {3, 4};
   try
     {
       source.swap(target);
@@ -355,6 +354,17 @@ test11()
   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_multiset::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_multiset<int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<int> il = {2, 3, 1};
+  s = il;
+  VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -370,6 +380,7 @@ test()
   test09();
   test10();
   test11();
+  test12();
 }
 
 constexpr
@@ -386,6 +397,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
index ac12815bd0d4..116ccdcb48d4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
@@ -301,6 +301,8 @@ struct throwing_vector : std::vector<T>
       throw std::runtime_error("move assign");
     return *this;
   }
+
+  using std::vector<int>::operator=;
 };
 
 void
@@ -324,8 +326,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({1, 2});
+  source = {1, 2};
   flat_set target = {3, 4};
   try
     {
@@ -339,10 +340,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({1, 2});
-  target.clear();
-  target.insert({3, 4});
+  source = {1, 2};
+  target = {3, 4};
   try
     {
       source.swap(target);
@@ -367,6 +366,17 @@ test11()
   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_set::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_set<int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<int> il = {2, 3, 1};
+  s = il;
+  VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -382,6 +392,7 @@ test()
   test09();
   test10();
   test11();
+  test12();
 }
 
 constexpr
@@ -398,6 +409,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }

From ppalka@gcc.gnu.org  Thu May 28 14:41:49 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu, 28 May 2026 14:41:49 +0000 (GMT)
Subject: [gcc r17-910] libstdc++: Fix -fno-exceptions support in
 testsuite_allocator.h
Message-ID: <20260528144149.BB32A4BA7985@sourceware.org>

https://gcc.gnu.org/g:b64700dec403f9b2b605df295e43c73b3185d0f5

commit r17-910-gb64700dec403f9b2b605df295e43c73b3185d0f5
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:41:33 2026 -0400

    libstdc++: Fix -fno-exceptions support in testsuite_allocator.h
    
    This fixes the error
    
    .../testsuite_allocator.h:402:13: error: exception handling disabled, use '-fexceptions' to enable
      402 |             catch(...)
          |             ^~~~~
    
    seen when running some C++23 library tests with -fno-exceptions.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/util/testsuite_allocator.h
            (uneq_allocator::allocate): Use __try/__catch instead.
            (uneq_allocator::allocate_at_least): Likewise.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/testsuite/util/testsuite_allocator.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/testsuite/util/testsuite_allocator.h b/libstdc++-v3/testsuite/util/testsuite_allocator.h
index 27372a97161d..3a9ae0de5853 100644
--- a/libstdc++-v3/testsuite/util/testsuite_allocator.h
+++ b/libstdc++-v3/testsuite/util/testsuite_allocator.h
@@ -369,12 +369,12 @@ namespace __gnu_test
 	if (std::__is_constant_evaluated())
 	  return p;
 
-	try
+	__try
 	  {
 	    get_map().insert(map_type::value_type(reinterpret_cast<void*>(p),
 						  personality));
 	  }
-	catch(...)
+	__catch(...)
 	  {
 	    AllocTraits::deallocate(*this, p, n);
 	    __throw_exception_again;
@@ -394,12 +394,12 @@ namespace __gnu_test
 	  { return r; }
 	else
 	  {
-	    try
+	    __try
 	      {
 		get_map().insert(map_type::value_type(
 		      reinterpret_cast<void*>(r.ptr), personality));
 	      }
-	    catch(...)
+	    __catch(...)
 	      {
 		AllocTraits::deallocate(*this, r.ptr, r.count);
 		__throw_exception_again;

From gccadmin@gcc.gnu.org  Fri May 29 00:17:09 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 29 May 2026 00:17:09 +0000 (GMT)
Subject: [gcc r17-923] Daily bump.
Message-ID: <20260529001709.A94734BA2E2A@sourceware.org>

https://gcc.gnu.org/g:cdaec79820fd6f9c2e1fee38d8f543a4e2db7528

commit r17-923-gcdaec79820fd6f9c2e1fee38d8f543a4e2db7528
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri May 29 00:16:40 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog                     | 343 ++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP                     |   2 +-
 gcc/ada/ChangeLog                 | 270 ++++++++++++++++++++++++++++++
 gcc/cobol/ChangeLog               |   6 +
 gcc/cp/ChangeLog                  |   5 +
 gcc/fortran/ChangeLog             |  33 ++++
 gcc/testsuite/ChangeLog           | 174 +++++++++++++++++++
 libcody/ChangeLog                 |   6 +
 libgcc/config/avr/libf7/ChangeLog |   5 +
 libgfortran/ChangeLog             |   9 +
 libstdc++-v3/ChangeLog            |  88 ++++++++++
 11 files changed, 940 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0998dec6fb4e..dd5339a114db 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,346 @@
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* tree-ssa-loop-im.cc (ref_always_accessed_p): Rename to...
+	(ref_always_stored_p): New function specialized to determine if
+	REF is a store that is always executed in LOOP.
+	(execute_sm): Use ref_always_stored_p instead of
+	ref_always_accessed_p.
+	(class ref_always_accessed): Rename to..
+	(class ref_always_stored): Remove (always true) stored_p field.
+	(ref_always_stored::operator ()): Always check for a store.
+	Move hash table lookup, get_lim_data, after store test.
+	(can_sm_ref_p): Use ref_always_stored_p insead of
+	ref_always_accessed_p.
+
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/i386/i386-features.cc (compute_convert_gain): Tweak
+	the cost of a 128-bit rotation to be 4 (or 5) instructions.
+
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* config/i386/i386-features.cc (scalar_chain::add_insn): Don't
+	call analyze_register_chain if the USE is a SUBREG.
+	(scalar_chain::convert_op): Call gen_lowpart to convert
+	scalar (TImode) SUBREGs to vector (V1TImode) SUBREGs.
+	(convertible_comparison_p): We can now handle all general_operands
+	of *cmp<dwi>_doubleword.
+	(timode_remove_non_convertible_regs): We only need to check TImode
+	uses that aren't TImode SUBREGs of registers in other modes.
+
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (inv_insn): New define_code_attr.
+	* config/i386/sse.md (<plusminus><mode>3): Accept a CONST_VECTOR
+	as the second operand.  If the second operand is CONST1_RTX,
+	canonicalize to use CONSTM1_RTX instead.
+	(*add<mode>3_one): New define_insn_and_split to convert padd +1
+	to psub -1.
+	(*sub<mode>3_one): Likewise, a new define_insn_and_split to
+	convert psub +1 to padd -1.
+
+2026-05-28  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv.cc (riscv_regno_to_class): Use the minimal
+	class containing each FP hard register: FP_REGS for f0-f7 and
+	f16-f31, RVC_FP_REGS for f8-f15.
+	(riscv_secondary_memory_needed): Use reg_class_subset_p to
+	detect FP classes.
+
+2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	* config/riscv/riscv-vector-costs.cc (get_lmul_cost_scaling):
+	Enable scaling for all vector modes (VLA and VLS).
+
+2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+	* config/avr/avr.opt.urls (-masm-len-notes, -Wasm-len-notes): Add.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md
+	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>):
+	New pattern.
+	* config/aarch64/iterators.md (VCONSV): New mode attribute.
+	(vconsv): Likewise.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-simd.md (*aarch64_combine_internal<mode>):
+	New insn pattern.
+	(*aarch64_combine_internal_be<mode>): Likewise.
+	(*aarch64_combinez<mode>): Likewise.
+	(*aarch64_combinez_be<mode>): Likewise.
+	(@aarch64_vec_concat<mode>): Support smaller vector and scalar modes.
+	* config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback):
+	Handle the case of two scalar elements.
+	* config/aarch64/iterators.md (SSUB64): New mode iterator.
+	(VSSUB64): Likewise.
+	(VSSUB32_I) : Likewise.
+	(VSSUB64_F): Likewise.
+	(VS32_I_SUB64_F): Likewise.
+	(single_wx): Define attribute for sub-64-bit vector and scalar modes.
+	(bitsize): Likewise.
+	(VDBL): Likewise.
+	(single_dwx): New mode attribute.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-simd.md (*aarch64_simd_dup_subvector<vconq><mode>):
+	New insn pattern.
+	(*aarch64_simd_dup_subvector<vcond><mode>): Likewise.
+	(@aarch64_simd_vec_set<mode>): Likewise.
+	(vec_set<mode>): Handle 16- and 32-bit vector modes in the expander.
+	* config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Add
+	logic to initialize vector from starting subsequence.  Make static.
+	(scalar_move_insn_p): Consider sub-64-bit vector moves scalar.
+	* config/aarch64/iterators.md (VDDUP): New iterator.
+	(VQDUP): Likewise.
+	(elem_bits): Define attribute for sub-64-bit vector modes.
+	(Vetype): Likewise.
+	(VEL): Likewise.
+	(single_wx): Define attribute for sub-64-bit vector and scalar modes.
+	(single_type): Likewise.
+	(VCOND): Likewise.
+	(VCONQ): Likewise.
+	(Vqduptype): New mode attribute.
+	(Vdduptype): Likewise.
+	(vcond): Likewise.
+	(vconq): Likewise.
+	(vstype): Define attribute for 64-bit vector and sub-128-bit scalar
+	modes.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-modes.def (VECTOR_MODE): Remove V2HF.
+	(VECTOR_MODES): Define V2QI, V4QI, V2HI, V2HF, V2BF.
+	* config/aarch64/aarch64-protos.h
+	(aarch64_advsimd_sub_dword_mode_p): Declare new predicate.
+	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): New
+	define_insn_and_split pattern.
+	(mov<mode>): Add sub-64-bit vector modes to the VALL_F16 expander.
+	Forego const vector expansion for those modes.
+	* config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
+	Handle 16- and 32-bit vector modes.
+	(aarch64_advsimd_sub_dword_mode_p): Define new predicate.
+	(aarch64_vectorize_vec_perm_const): Refuse for partial vector modes.
+	* config/aarch64/constraints.md (Da): New constraint.
+	* config/aarch64/iterators.md (VSUB64): New iterator.
+	(VALL_F16_SUB64): Likewise.
+	(size): Define attribute for sub-64-bit vector modes.
+	(VSC): New mode attribute.
+	(vstype): Likewise.
+
+2026-05-28  Kewen Lin  <linkewen@hygon.cn>
+	    Xin Liu  <liulxx@hygon.cn>
+
+	* config/i386/c86-4g-m7.md (c86_4g_m7_fpu): Remove automaton.
+	(c86_4g_m7_fpu02): New automaton.
+	(c86_4g_m7_fpu13): Ditto.
+	(c86-4g-m7-fpu0): Move to c86_4g_m7_fpu02 automaton.
+	(c86-4g-m7-fpu1): Move to c86_4g_m7_fpu13 automaton.
+	(c86-4g-m7-fpu2): Move to c86_4g_m7_fpu02 automaton.
+	(c86-4g-m7-fpu3): Move to c86_4g_m7_fpu13 automaton.
+	(c86-4g-m7-fdiv): Remove cpu unit.
+	(c86-4g-m7-fdiv1): New cpu unit.
+	(c86-4g-m7-fdiv3): Ditto.
+	(c86-4g-m7-fpu_0_3): New reservation.
+	(c86-4g-m7-fpu_1_3x2): Ditto.
+	(c86-4g-m7-fpu_1_3x3): Ditto.
+	(c86-4g-m7-fpu_1_3x6): Ditto.
+	(c86-4g-m7-fpux2): Ditto.
+	(c86-4g-m7-fpux4): Ditto.
+	(c86-4g-m7-fpux6): Ditto.
+	(c86-4g-m7-fpux8): Ditto.
+	(c86-4g-m7-fpux16): Ditto.
+	(c86-4g-m7-fp1fdiv1x4): Ditto.
+	(c86-4g-m7-fp3fdiv3x4): Ditto.
+	(c86-4g-m7-fdiv13): Ditto.
+	(c86-4g-m7-fp13div13): Ditto.
+	(c86-4g-m7-fp13div13x4): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x8): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x9): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x11): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x15): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x18): Ditto.
+	(c86_4g_m7_idiv): New reservation.
+	(c86_4g_m7_idiv_QI): Adjust reservation latency and unit occupancy.
+	(c86_4g_m7_idiv_load): New reservation.
+	(c86_4g_m7_idiv_QI_load): Adjust reservation latency and unit
+	occupancy.
+	(c86_4g_m7_idiv_DI): Remove reservation.
+	(c86_4g_m7_idiv_SI): Ditto.
+	(c86_4g_m7_idiv_HI): Ditto.
+	(c86_4g_m7_idiv_DI_load): Ditto.
+	(c86_4g_m7_idiv_SI_load): Ditto.
+	(c86_4g_m7_idiv_HI_load): Ditto.
+	(c86_4g_m7_sse_insertimm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_insert): Ditto.
+	(c86_4g_m7_fp_sqrt): Adjust reservation.
+	(c86_4g_m7_fp_div): Ditto.
+	(c86_4g_m7_fp_div_load): Ditto.
+	(c86_4g_m7_fp_idiv_load): Ditto.
+	(c86_4g_m7_sse_pinsr_reg): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_pinsr_reg_load): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg_load): Ditto.
+	(c86_4g_m7_avx512_perm_xmm): Delete the prefix condition.
+	(c86_4g_m7_avx512_perm_xmm_opload): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_permi2_zmm): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm_load): Ditto.
+	(c86_4g_m7_avx512_permi2_zmm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_noimm): Ditto.
+	(c86_4g_m7_sse_perm_zmm_noimm_load): Ditto.
+	(c86_4g_m7_avx_perm_ymm): Remove.
+	(c86_4g_m7_avx_perm_ymem): Ditto.
+	(c86_4g_m7_avx512_shuf_zmm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_shuf_zmem): Ditto.
+	(c86_4g_m7_avx512_cmpestr): Ditto.
+	(c86_4g_m7_avx512_cmpestr_load): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmm): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmem): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi_load): Ditto.
+	(c86_4g_m7_avx512_expand): Ditto.
+	(c86_4g_m7_avx512_expand_load): Ditto.
+	(c86_4g_m7_avx512_expand_z): Ditto.
+	(c86_4g_m7_avx512_expand_z_load): Ditto.
+	(c86_4g_m7_sse_movnt_xy): Rename to c86_4g_m7_sse_movnt.
+	(c86_4g_m7_avx512_sseadd_xy): Adjust reservation units.
+	(c86_4g_m7_avx512_sseadd_xy_load): Ditto.
+	(c86_4g_m7_sse_sseiadd_hplus): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_sseiadd_hplus_load): Ditto.
+	(c86_4g_m7_avx512_ssemul): Adjust reservation units.
+	(c86_4g_m7_avx512_ssemul_load): Ditto.
+	(c86_4g_m7_avx512_ssediv): Remove.
+	(c86_4g_m7_avx512_ssediv_mem): Remove.
+	(c86_4g_m7_avx512_ssediv_x): New.
+	(c86_4g_m7_avx512_ssediv_xmem): New.
+	(c86_4g_m7_avx512_ssediv_y): New.
+	(c86_4g_m7_avx512_ssediv_ymem): New.
+	(c86_4g_m7_avx512_ssediv_z): Adjust reservation units.
+	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+	(c86_4g_m7_avx512_ssecmp_z): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_ssecmp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_z): New reservation.
+	(c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_test_z): Remove reservation.
+	(c86_4g_m7_avx512_ssecmp_test_z_load): Ditto.
+	(c86_4g_m7_avx512_muladd): Broaden matching condition.
+	(c86_4g_m7_avx512_muladd_load): Ditto.
+	(c86_4g_m7_fma_muladd): Remove reservation.
+	(c86_4g_m7_fma_muladd_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_x): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_sse_conflict_x_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z_load): Ditto.
+	(c86_4g_m7_avx512_sse_class_z): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_sse_class_z_load): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt): Remove.
+	(c86_4g_m7_avx512_sse_sqrt_load): Remove.
+	(c86_4g_m7_avx512_sse_sqrt_sf_x): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_xload): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_y): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_yload): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_z): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_zload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_x): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_xload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_y): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_yload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_z): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_zload): New.
+	(c86_4g_m7_avx512_msklog_vector): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_mskmov_z_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_reg): Ditto.
+	* config/i386/c86-4g.md (c86_4g_fp): Remove automaton.
+	(c86_4g_fp024): New automaton.
+	(c86_4g_fp1): Ditto.
+	(c86-4g-fp0): Move to c86_4g_fp024 automaton.
+	(c86-4g-fp1): Move to c86_4g_fp1 automaton.
+	(c86-4g-fp2): Move to c86_4g_fp024 automaton.
+	(c86-4g-fp3): Ditto.
+	(c86-4g-fp1fdivx4): New reservation.
+	(c86_4g_fp_sqrt): Adjust reservation.
+	(c86_4g_sse_sqrt_sf): Ditto.
+	(c86_4g_sse_sqrt_sf_mem): Ditto.
+	(c86_4g_sse_sqrt_df): Ditto.
+	(c86_4g_sse_sqrt_df_mem): Ditto.
+	(c86_4g_fp_op_div): Ditto.
+	(c86_4g_fp_op_div_load): Ditto.
+	(c86_4g_fp_op_idiv_load): Adjust reservation latency.
+	(c86_4g_ssediv_ss_ps): Adjust reservation.
+	(c86_4g_ssediv_ss_ps_load): Ditto.
+	(c86_4g_ssediv_sd_pd): Ditto.
+	(c86_4g_ssediv_sd_pd_load): Ditto.
+	(c86_4g_ssediv_avx256_ps): Ditto.
+	(c86_4g_ssediv_avx256_ps_load): Ditto.
+	(c86_4g_ssediv_avx256_pd): Ditto.
+	(c86_4g_ssediv_avx256_pd_load): Ditto.
+
+2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	* config/riscv/riscv-vector-costs.cc
+	(estimated_loop_iters): New function.
+	(compare_loop_overhead): New function.
+	(costs::better_main_loop_than_p): Compare RVV loop overhead after
+	inside-loop cost.
+
+2026-05-28  Alex Coplan  <alex.coplan@arm.com>
+
+	* config/aarch64/aarch64.cc (aarch64_strip_extend): Replace
+	(unsigned HOST_WIDE_INT) INVAL (x) with UINTVAL (x).
+	* config/aarch64/predicates.md (aarch64_shift_imm_si): Likewise.
+	(aarch64_shift_imm_di): Likewise.
+	(aarch64_shift_imm64_di): Likewise.
+	(aarch64_imm3): Likewise.
+
+2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+	* config/avr/avr.cc (avr_read_number, avr_length_of_asm)
+	(avr_maybe_length_of_asm): New static functions.
+	(avr_adjust_insn_length): Call avr_maybe_length_of_asm on
+	unrecognized insns.
+	* config/avr/avr.opt (-masm-len-notes, -Wasm-len-notes): New
+	options.
+	* doc/invoke.texi (AVR Options): Add -masm-len-notes,
+	-Wasm-len-notes.
+	* doc/extend.texi (Size of an asm): Add @subsubheading
+	"Specifying the size of an asm on AVR".
+
+2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/121343
+	* config/avr/avr.md (divmod<mode>4, udivmod<mode>4): Use
+	hard-reg constraints instead of explicit hard-regs.
+	(*divmodqi4_call_split, *udivmodqi4_call_split): Remove.
+	(*divmodhi4_call_split, *udivmodhi4_call_split): Remove.
+	(*divmodpsi4_call_split, *udivmodpsi4_call_split): Remove.
+	(*divmodsi4_call_split, *udivmodsi4_call_split): Remove.
+
+2026-05-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125469
+	* config/i386/i386.md (*add<mode>_1<nf_name>): Don't return "#" for
+	the lea non-TARGET_APX_NDD case, instead emit a lea directly.
+
 2026-05-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
 	    Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
 
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 70406bf9d422..24d57167af43 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260528
+20260529
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index ab6448b2de6a..4dfdfd12fc66 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,273 @@
+2026-05-28  Sebastian Poeplau  <poeplau@adacore.com>
+
+	* init.c (__gnat_alternate_stack): add alignment attribute.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_aggr.adb (Resolve_Array_Aggregate): Also rewrite a choice list
+	with a single choice as an iterator specification when the choice's
+	type has the GNAT Iterable aspect specified.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_aggr.adb (Resolve_Array_Aggregate): Analyze the choice before
+	testing whether it is the name of a subtype with a predicate.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* einfo.ads (In_Package_Body): Update description.
+	(In_Private_Part): Likewise.
+	* sem_ch3.adb (Analyze_Object_Declaration): Compute In_Package_Body
+	along with In_Private_Part for the object if its scope is a package.
+	* sem_ch6.adb (Analyze_Expression_Function): Do not compute
+	In_Private_Part here.
+	(Enter_Overloaded_Entity): Compute In_Package_Body & In_Private_Part
+	for the entity if its scope is a package.
+	* sem_util.adb (Collect_Primitive_Operations): Skip the subprograms
+	declared in the body for types declared in a package specification.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch13.adb (Resolve_Aspect_Aggregate.Resolve_Operation): Add
+	missing guard for the presence of Entity on the node.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst
+	(Generalized Finalization): Document the new restriction.
+	* sem_ch13.adb (Resolve_Finalizable_Argument): Adjust wording of
+	error message.
+	(Resolve_Finalization_Procedure.Is_Finalizable_Primitive): Require
+	the procedure to be a primitive operation.
+	* gnat_rm.texi: Regenerate.
+
+2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+
+	* libgnat/g-comlin.adb
+	(Command_Name): New routine to strip platform-specific suffix.
+	(Display_Help, Get_Opt): Use new routine.
+	(Try_Help): Remove hardcoded ".exe" suffix; use new routine.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* sem_util.adb (Is_Access_To_Subprogram_Wrapper): Remove useless
+	call to Can_Have_Formals. Found by Dismukes.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Manually set the
+	Has_Controlling_Result flag on the wrappers.
+	* sem_disp.ads (Override_Dispatching_Operation): Move to...
+	* sem_disp.adb (Override_Dispatching_Operation): ...here.
+	(Find_Dispatching_Type): Return the (controlling) result type for a
+	controlling function wrapper.
+
+2026-05-28  Vadim Godunko  <godunko@adacore.com>
+
+	* doc/gnat_rm/implementation_of_ada_2022_features.rst: Fix casing.
+	* gnat_rm.texi: Regenerate.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch4.adb (Expand_N_Op_Eq): Do not expand an array comparison
+	for validity checking purposes when the component type is covered
+	by the suppression of validity checks.
+
+2026-05-28  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* vast.adb (Do_Node_Pass_2): Only check aspect/pragma consistency for pragma nodes.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* sem_util.ads (Is_Access_Subprogram_Wrapper): Renamed as
+	Is_Access_To_Subprogram_Wrapper.
+	* sem_util.adb (Is_Access_Subprogram_Wrapper): Ditto plus add
+	assertion.
+	* sem_disp.adb (Is_Access_To_Subprogram_Wrapper): Removed.
+	* sem_prag.adb (Find_Related_Declaration_Or_Body): Replace call to
+	Is_Access_Subprogram_Wrapper by call to Is_Access_To_Subprogram_Wrapper.
+	* exp_ch6.adb (Expand_Call): Ditto.
+	* sem_attr.adb (Analyze_Attribute [Attribute_Result]): For access to
+	subprogram wrappers, report that the expected prefix is the name of
+	the access type.
+
+2026-05-28  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sem_ch13.adb (Make_Pragma_From_Boolean_Aspect): Use Decorate.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb (Analyze_Aspect_Specifications):
+	Major rewrite.
+	* sem_ch13.ads: Minor comment improvements.
+	* aspects.ads: Change some aspects to be Never_Delay.
+	Make Boolean_Aspects include Library_Unit_Aspects.
+	* exp_ch9.adb (Build_Corresponding_Record):
+	When copying aspects, set Aspect_Rep_Item to Empty,
+	so Asp_Copy looks like an unanalyzed tree.
+	* sem_ch12.adb (Analyze_Formal_Subprogram_Declaration):
+	Skip Analyze_Aspect_Specifications in case of error.
+	* sem_ch6.adb (Analyze_Expression_Function): Likewise.
+	* sinfo.ads: Minor comment improvement.
+
+2026-05-28  Steve Baird  <baird@adacore.com>
+
+	* sem_ch6.adb (Install_Entity): If the entity to be installed is
+	already installed, assert that an error has already been flagged
+	and then return without introducing a cycle in the entity's
+	Homonyms list.
+
+2026-05-28  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Output_Messages): use the source file name without
+	the directory path when constructing the name of the SARIF file.
+	* osint.adb (Strip_Directory): New method for extracting the file name
+	from a given path.
+	* osint.ads (Strip_Directory): Likewise.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch8.adb (Find_Renamed_Entity): Protect call to First_Formal.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* sem_res.adb (Resolve_Declare_Expression): Do not create a
+	transient scope when expansion is disabled.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* sem_res.adb (Resolve_Declare_Expression): Do not create a
+	transient scope under GNATprove mode.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* vast.adb (Pass): Add a comment.
+
+2026-05-28  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* vast.adb (Do_Node_Pass_2): Adjust check for aspect consistency.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_attr.adb (Expand_N_Attribute_Reference) <Constrained>: If the
+	prefix is a non-In formal parameter of an unchecked union type, give
+	a warning and insert a raise statement for Program_Error.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_util.ads (Is_Distributable_Declaration): New predicate.
+	* exp_util.adb (Is_Distributable_Declaration): New predicate coming
+	from Expand_N_Case_Expression and Expand_N_If_Expression.  Return
+	False for variables of an unconstrained definite nonlimited subtype.
+	* exp_ch4.adb (Expand_N_Case_Expression): Replace calls to local
+	Is_Optimizable_Declaration by calls to Is_Distributable_Declaration.
+	(Expand_N_If_Expression): Likewise.
+	* exp_ch6.adb (Expand_Ctrl_Function_Call): Likewise.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb (Insert_Pragma):
+	Rename to be Insert_Aitem.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb (Analyze_Aspect_Specifications):
+	Misc cleanup.
+
+2026-05-28  Claire Dross  <dross@adacore.com>
+
+	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode):
+	Do not inline subprograms with formals of an unchecked union type.
+
+2026-05-28  Marc Poulhi?s  <poulhies@adacore.com>
+	    Eric Botcazou  <botcazou@adacore.com>
+
+	* sem_ch3.adb (Find_Type_Of_Object): Adjust freezing of the base
+	type of a discriminated type.
+
+2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_ch3.adb (Process_Full_View): Simplify test.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.adb
+	(Apply_Accessibility_Check_For_Class_Wide_Return): Do not test if
+	accessibility checks are suppressed here but...
+	(Apply_Accessibility_Check_For_Return): ...here instead.
+
+2026-05-28  Viljar Indus  <indus@adacore.com>
+
+	* sem_ch6.adb (Check_For_Primitive_Subprogram): add the
+	check for ghost equality functions for all branches handling
+	primitive subprograms.
+
+2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_aux.ads (Is_Immutably_Limited_Type, Is_Inherently_Limited_Type):
+	Improve documentation comments.
+	* sem_aux.adb (Is_Inherently_Limited_Type): Replace inline code with
+	call to Is_Immutably_Limited_Type.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* aspects.ads (Aspect_Initialize):
+	Add to Implementation_Defined_Aspect.
+	* einfo.ads (Alignment_Clause): Minor comment fix.
+	* sem.adb: Remove useless null statements.
+	* sem_ch13.ads (Rep_Item_Too_Late):
+	Minor comment fix (this IS Sem_Ch13).
+	* sem_prag.adb (Fix_Error):
+	Minor comment fix (aspects are not "abnormal").
+	* sinfo.ads: Minor comment fix.
+
+2026-05-28  Javier Miranda  <miranda@adacore.com>
+
+	* gen_il-fields.ads (Scope_Link): New field.
+	* gen_il-gen-gen_nodes.adb (N_Expression_With_Actions): Added Scope_Link.
+	* sinfo.ads (N_Expression_With_Actions): Add field Scope_Link.
+	* sem_ch4.adb (Analyze_Expression_With_Actions): Set field Scope_Link
+	* sem_ch5.ads (Has_Sec_Stack_Call): Declaration moved to the package spec.
+	* sem_ch5.adb (Has_Sec_Stack_Call): ditto.
+	* sem_res.adb (Resolve_Declare_Expression): Push/Pop internally created
+	scope to provide proper visibility of the declare_items.
+
+2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+
+	* sem_prag.adb (Check_References): Don't call Class_Wide_Type if the
+	subprogram is a non-primitive procedure as the dispatching type may be
+	empty.
+
+2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_ch9.adb (Is_Pure_Barrier): Handle unexpanded attribute Count.
+
+2026-05-28  Bob Duff  <duff@adacore.com>
+
+	* vast.adb (Check_Corresponding_Aspect):
+	New checks for aspect/pragma consistency.
+	(Check_Enum): Add documentation of the checks.
+
+2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch9.ads (Build_Master_Declaration): Minor tweaks in comment.
+	(Build_Master_Entity): Likewise.
+	(Build_Master_Renaming): Likewise.
+	(Build_Master_Renaming_Declaration): New function declaration.
+	* exp_ch9.adb (Build_Master_Declaration): Move around.
+	(Build_Master_Renaming_Declaration): New function.
+	(Build_Master_Renaming): Call Build_Master_Renaming_Declaration
+	to build the renaming declaration.
+	* sem_ch6.adb (Check_Anonymous_Access_Return_With_Tasks): Remove
+	useless guard on Declarations (N).  Create a renaming declaration
+	for the current _Master variable and set is as the Master_Id of
+	the access result type.
+
+2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_spark.adb (Expand_SPARK_N_Delta_Aggregate): Special case for
+	"others" clause.
+
 2026-05-27  Iain Sandoe  <iain@sandoe.co.uk>
 
 	* xsintnam.sed: Posix-ify the a, c and i commands.
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 3d0418fcc313..97961460f45c 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-28  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR cobol/125404
+	* symfind.cc (symbol_find): Add assertion that ancestors vector
+	is not empty.
+
 2026-05-12  Robert Dubner  <rdubner@symas.com>
 
 	* Make-lang.in: Incorporate new gcc/cobol/compare.cc file.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 301620f61a8d..8454418e56c0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-28  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125454
+	* typeck.cc (cp_build_array_ref): Don't recurse for array[array].
+
 2026-05-27  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/125412
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index abc34cefeac1..e6392b01a146 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,36 @@
+2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* intrinsic.texi (F_C_STRING): New section.
+	* trans-intrinsic.cc (conv_trim): Delete.
+	(conv_isocbinding_function): Rewrite the F_C_STRING case.
+
+2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* check.cc (gfc_check_c_f_strpointer): New.
+	* f95-lang.cc (gfc_init_builtin_functions): Add BUILT_IN_STRNLEN.
+	* gfortran.h (enum gfc_isym_id): Add GFC_ISYM_C_F_STRPOINTER.
+	* gfortran.texi (Interoperable Subroutines and Functions): Mention
+	f_c_string and c_f_strpointer.
+	* intrinsic.cc (add_subroutines): Add c_f_strpointer.  Fix nearby
+	whitespace errors.
+	(sort_actual): Handle first argument to c_f_strpointer specially.
+	* intrinsic.h (gfc_check_c_f_strpointer): Declare.
+	* intrinsic.texi (C_F_STRPOINTER): New section.  Add entry to menu
+	and cross-references from similar functions.
+	* iso-c-binding.def: Add c_f_strpointer.
+	* trans-intrinsic.cc (conv_isocbinding_subroutine_strpointer): New.
+	(gfc_conv_intrinsic_subroutine): Call it.
+
+2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125430
+	* trans-decl.cc (build_function_decl): Set TREE_PUBLIC for all
+	module-contained procedures so submodules compiled as separate
+	translation units can reach them via host association.  Also set
+	DECL_VISIBILITY to VISIBILITY_HIDDEN for PRIVATE procedures,
+	matching the existing treatment of module variables.
+
 2026-05-26  Paul-Antoine Arras  <parras@baylibre.com>
 
 	* dump-parse-tree.cc (debug): Add debug functions for gfc_omp_namelist
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 92a6f73e4527..187284dd5e5d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,177 @@
+2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gfortran.dg/f_c_string3.f90: New.
+	* gfortran.dg/f_c_string4.f90: New.
+	* gfortran.dg/f_c_string5.f90: New.
+
+2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+	    Tobias Burnus  <tburnus@baylibre.com>
+
+	* gfortran.dg/c_f_strpointer-1.f90: New.
+	* gfortran.dg/c_f_strpointer-2.f90: New.
+	* gfortran.dg/c_f_strpointer-3.f90: New.
+	* gfortran.dg/c_f_strpointer-4.f90: New.
+	* gfortran.dg/c_f_strpointer-5.f90: New.
+	* gfortran.dg/c_f_strpointer-6.f90: New.
+	* gfortran.dg/c_f_strpointer-7.f90: New.
+	* gfortran.dg/c_f_strpointer-8.f90: New.
+	* gfortran.dg/c_f_strpointer-9.f90: New.
+	* gfortran.dg/c_f_strpointer-10.f90: New.
+	* gfortran.dg/pr108961.f90: Rename locally-defined c_f_strpointer.
+
+2026-05-28  Jean-Christian C?RSTEA  <jean.christian.cirstea@gmail.com>
+
+	PR c++/120458
+	* g++.dg/README: Explain purpose of modules/ dir.
+	* g++.dg/modules/pr120458-1_a.C: Define non-ASCII module with
+	default mapper.
+	* g++.dg/modules/pr120458-1_b.C: Import non-ASCII module with
+	default mapper.
+	* g++.dg/modules/pr120458-2_a.C: Define non-ASCII module with
+	a file as mapper.
+	* g++.dg/modules/pr120458-2_b.C: Import non-ASCII module with
+	a file as mapper.
+	* g++.dg/modules/pr120458-2.map: Define mapping for pr120458-2
+	test case.
+
+2026-05-28  H.J. Lu  <hjl.tools@gmail.com>
+
+	* gcc.dg/vect/vect-early-break-no-epilog_11.c: Require
+	avx512f_runtime instead of avx512f_hw.
+
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	* gcc.target/i386/sse4_1-ptest-7.c: New test case.
+
+2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	* gcc.target/i386/avx512f-simd-1.c: Tweak test case.
+	* gcc.target/i386/sse2-paddb-2.c: New test case.
+	* gcc.target/i386/sse2-paddd-2.c: Likewise.
+	* gcc.target/i386/sse2-paddw-2.c: Likewise.
+	* gcc.target/i386/sse2-psubb-2.c: Likewise.
+	* gcc.target/i386/sse2-psubd-2.c: Likewise.
+	* gcc.target/i386/sse2-psubw-2.c: Likewise.
+
+2026-05-28  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125454
+	* g++.dg/other/array8.C: New test.
+
+2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125430
+	* gfortran.dg/module_private_2.f90: Remove scan-tree-dump-times
+	assertion for 'priv'; PRIVATE module procedures now have global
+	linkage with hidden visibility and are no longer optimized away.
+	* gfortran.dg/public_private_module_2.f90: Add xfail markers to
+	scan-assembler-not for 'two' and 'six'; update comment to mention
+	procedures alongside variables.
+	* gfortran.dg/public_private_module_7.f90: Add xfail marker to
+	scan-assembler-not for '__m_common_attrs_MOD_other'.
+	* gfortran.dg/public_private_module_8.f90: Add xfail marker to
+	scan-assembler-not for '__m_MOD_myotherlen'.
+	* gfortran.dg/submodule_private_host.f90: New test.
+	* gfortran.dg/submodule_private_host_aux.f90: New auxiliary file.
+	* gfortran.dg/warn_unused_function_2.f90: Remove 'defined but not
+	used' expectation for s1; PRIVATE module procedures now have
+	global linkage and no longer trigger the unused-function warning.
+
+2026-05-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c: Adjust expected
+	output.
+	* gcc.target/riscv/amo/a-rvwmo-store-relaxed.c: Likewise.
+	* gcc.target/riscv/amo/a-rvwmo-store-release.c: Likewise.
+	* gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c: Likewise.
+	* gcc.target/riscv/amo/a-ztso-store-relaxed.c: Likewise.
+	* gcc.target/riscv/amo/a-ztso-store-release.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-rvwmo-store-release.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c: Likewise.
+	* gcc.target/riscv/amo/zalasr-ztso-store-release.c: Likewise.
+	* gcc.target/riscv/cpymem-64-ooo.c: Likewise.
+	* gcc.target/riscv/cpymem-64.c: Likewise.
+	* gcc.target/riscv/memcpy-nonoverlapping.c: Likewise.
+	* gcc.target/riscv/pr67731.c: Likewise.
+
+2026-05-28  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/106957
+	* g++.dg/cpp2a/lambda-uneval32.C: New test.
+
+2026-05-28  Jin Ma  <jinma@linux.alibaba.com>
+
+	* gcc.target/riscv/fp-reg-class.c: New test.
+
+2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+
+	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c: Update expected LMUL counts.
+	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c: Likewise.
+	* gcc.target/riscv/rvv/autovec/pr123414.c: Disable vector cost model.
+
+2026-05-28  Tamar Christina  <tamar.christina@arm.com>
+
+	* gcc.dg/vect/vect-early-break-no-epilog_11.c: Add AVX512 for x86_64.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve/vec_init_5.c: New test.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve/gather_load_10.c: Adjust testcase.
+	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+	* gcc.target/aarch64/vec-init-18.c: Likewise.
+	* gcc.target/aarch64/vec-init-23.c: Likewise.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/ldp_stp_16.c: Adjust testcase.
+	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+	* gcc.target/aarch64/vec-init-18.c: Likewise.
+	* gcc.target/aarch64/vec-init-23.c: New test.
+
+2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.dg/vect/complex/bb-slp-complex-add-half-float.c: Adjust testcase.
+	* gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c: Likewise.
+	* gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c: Likewise.
+	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+
+2026-05-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125469
+	* gcc.target/i386/apx-nf-pr125469.c: New test.
+
+2026-05-28  oltolm  <oleg.tolmatcev@gmail.com>
+
+	PR target/54412
+	* gcc.target/i386/pr54412-v4d-o0-aligned-locals.c: New test.
+	* gcc.target/i386/pr54412-o2-by-value-cases.c: New test.
+	* gcc.target/i386/pr54412-sret-no-args.c: New test.
+	* gcc.target/i386/pr54412-callee-byref-param.c: New test.
+	* gcc.target/i386/pr54412-avx512-aligned64.c: New test.
+
+2026-05-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/rvv/base/pr115456-3.c: Drop compromised scan-asm
+	part of the test.
+
+2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/93727
+	* gfortran.dg/EXformat_3.F90: New test covering rounding for
+	KIND=4, 8, 10, and 16: clear round-up, ties-to-even (truncate
+	and round-up cases), carry propagation, and normalization.
+	* gfortran.dg/EXrounding.F90: New test checking the various
+	rounding modes for all kinds.
+
 2026-05-27  Marek Polacek  <polacek@redhat.com>
 
 	* g++.dg/warn/Winvalid-memory-model-2.C: Adjust dg-regexp.
diff --git a/libcody/ChangeLog b/libcody/ChangeLog
index c5b5479afa6d..c9eaa219d8b0 100644
--- a/libcody/ChangeLog
+++ b/libcody/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-28  Jean-Christian C?RSTEA  <jean.christian.cirstea@gmail.com>
+
+	PR c++/120458
+	* buffer.cc (S2C): Allow non-ASCII chars in quoted words.
+	* cody.hh: Use unsigned char for S2C().
+
 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
 
 	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index c6e9cc647c88..325b18d392d2 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+	* libf7.h: Add "[len=...]]" notes to all non-empty inline asm's.
+	* libf7.c: Dito.
+
 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
 
 	PR target/122222
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 0b8ba591e71d..033fea9e404f 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/93727
+	* io/write.c (write_ex): Replace simple truncation with
+	rounding-aware logic respecting dtp round_status.  Add carry
+	propagation and integer-digit normalization.
+	* io/write_float.def: Change use of GFC_UINTEGER_8 to
+	long long unsigned.
+
 2026-05-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/93727
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e21d29e58836..28c2c72fbf7a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,91 @@
+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).

From ncm@gcc.gnu.org  Fri May 29 16:35:32 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Fri, 29 May 2026 16:35:32 +0000 (GMT)
Subject: [gcc r17-987] libstdc++: allocate_at_least ask only what it reports
 (P0401)
Message-ID: <20260529163532.A691C4BA7984@sourceware.org>

https://gcc.gnu.org/g:14617bda37f8c7e2da8efa335b47b41332a559eb

commit r17-987-g14617bda37f8c7e2da8efa335b47b41332a559eb
Author: Nathan Myers <ncm@cantrip.org>
Date:   Tue May 26 10:41:27 2026 -0400

    libstdc++: allocate_at_least ask only what it reports (P0401)
    
    allocate_at_least is rounding up the allocation request size to
    its default alignment, which may be more than an integral
    multiple of the object size requested. When the memory is freed,
    what the container reports it is freeing differs from the amount
    that was allocated. This patch rounds the request size back down
    to what will be reported to the caller.
    
    The algorithm to compute the allocation is altered in response
    to findings on godbolt.org, which indicate dropping to uint8 to
    perform the division is a pessimization everywhere other than
    x86. The new version emits code for multiplication, instead.
    
    In addition, the remaining -m32 test that failed under the new
    allocation method is fixed, and guards are added for building
    with -fno-aligned-new and for -fno-sized-deallocation.
    
    Tested on x86 -m64/-m32.
    
    libstdc++-v3/ChangeLog:
            * 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.

Diff:
---
 libstdc++-v3/include/bits/new_allocator.h          | 30 ++++++----
 .../20_util/allocator/allocate_at_least2.cc        | 66 ++++++++++++++++++++++
 .../vector/modifiers/insert_vs_emplace.cc          | 48 ++++++++++------
 3 files changed, 116 insertions(+), 28 deletions(-)

diff --git a/libstdc++-v3/include/bits/new_allocator.h b/libstdc++-v3/include/bits/new_allocator.h
index 4524355a4a0f..e7666b5831c1 100644
--- a/libstdc++-v3/include/bits/new_allocator.h
+++ b/libstdc++-v3/include/bits/new_allocator.h
@@ -177,6 +177,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       [[nodiscard]] constexpr std::allocation_result<_Tp*, size_t>
       allocate_at_least(size_t __n)
       {
+#if __cpp_aligned_new
 	if ! consteval
 	  {
 	    if constexpr (requires { sizeof(_Tp); })
@@ -184,19 +185,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    if constexpr ( sizeof(_Tp) <  __STDCPP_DEFAULT_NEW_ALIGNMENT__)
 	      {
 		_S_check_allocation_limit(__n);
-		const size_t __need = __n * sizeof(_Tp);
+		size_t __bytes = __n * sizeof(_Tp);
 		const size_t __mask = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
-		size_t __ask = (__need + __mask) & ~__mask;
-		// Avoid rounding up to and asking for 2^63 bytes (PR108377):
-		__ask -= __ask >> (__SIZE_WIDTH__ - 1);
-		auto* __p = static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__ask));
-		using _U8 = const unsigned char;
-		static_assert(sizeof(_Tp) <= ~_U8());
-		// Use 8-bit division for minimal latency:
-		_U8 __spare = __ask - __need, __size = sizeof(_Tp);
-		return { __p , __n + __spare / __size };
+		size_t __max = (__bytes + __mask) & ~__mask;
+		// Avoid seeming to ask for 2^63 bytes (PR108377):
+		__max -= __max >> (__SIZE_WIDTH__ - 1);
+		auto __spare = static_cast<unsigned>(__max - __bytes);
+		if constexpr (sizeof(_Tp) < (__mask + 1) / 2)
+		  {
+		    auto __bonus = __spare / sizeof(_Tp);
+		    __n += __bonus;
+		    __bytes += __bonus * sizeof(_Tp);
+		  }
+		else if (sizeof(_Tp) <= __spare)
+		  {
+		    __n += 1;
+		    __bytes += sizeof(_Tp);
+		  }
+		void* __p = _GLIBCXX_OPERATOR_NEW(__bytes);
+		return { static_cast<_Tp*>(__p), __n };
 	      }
 	  }
+#endif
 	return { allocate(__n), __n };
       }
 #endif
diff --git a/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc b/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc
new file mode 100644
index 000000000000..4f8645ed50d5
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc
@@ -0,0 +1,66 @@
+// { dg-do run { target c++23 } }
+
+#include <memory>
+#include <stdlib.h>
+#include <testsuite_hooks.h>
+
+std::size_t gn = 0;
+void* operator new(std::size_t n)
+{
+  gn = n;
+  return ::malloc(n);
+}
+
+// Failing to define ops delete, too, would generate warnings.
+
+void operator delete(void* p) noexcept
+{ ::free(p); }
+
+#if __cpp_sized_deallocation
+void operator delete(void* p, std::size_t) noexcept
+{ ::free(p); }
+#endif
+
+template <unsigned size, unsigned n>
+void test_nm()
+{
+  struct A { char a[size]; };
+  std::allocator<A> alloc;
+  using alloc_traits = std::allocator_traits<std::allocator<A>>;
+  auto [p, m] = alloc_traits::allocate_at_least(alloc, n);
+
+#if __cpp_aligned_new
+  unsigned mod = __STDCPP_DEFAULT_NEW_ALIGNMENT__;
+  unsigned max = ((n * size) + mod - 1) & ~(mod - 1);
+  unsigned count = max / sizeof(A);
+#else
+  unsigned count = n;
+#endif
+  VERIFY(m == count);
+  VERIFY(gn == count * sizeof(A));
+  VERIFY(p != nullptr);  // named it, use it.
+}
+
+void test()
+{                  //  m  gn
+  test_nm<1,3>();  // 16  16
+  test_nm<2,3>();  //  8  16
+  test_nm<3,3>();  //  5  15
+  test_nm<4,3>();  //  4  16
+  test_nm<5,3>();  //  3  15
+  test_nm<6,3>();  //  5  30
+  test_nm<7,3>();  //  4  28
+  test_nm<8,3>();  //  4  32
+  test_nm<9,3>();  //  3  27
+  test_nm<10,3>(); //  3  30
+  test_nm<11,3>(); //  4  44
+  test_nm<12,3>(); //  4  48
+  test_nm<13,3>(); //  3  39
+  test_nm<14,3>(); //  3  42
+  test_nm<15,3>(); //  3  45
+}
+
+int main()
+{
+  test();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
index 187e433d9d37..d226490d6f3b 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
@@ -223,11 +223,12 @@ test03()
 void
 test04()
 {
-  const X::special expected{ 0, 3, 1, 0, 3, 0 };
+  const X::special expected{ 0, 4, 1, 0, 4, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -241,7 +242,8 @@ test04()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -261,11 +263,12 @@ test04()
 void
 test05()
 {
-  const X::special expected{ 0, 3, 0, 0, 4, 0 };
+  const X::special expected{ 0, 4, 0, 0, 5, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -279,7 +282,8 @@ test05()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -299,11 +303,12 @@ test05()
 void
 test06()
 {
-  const X::special expected{ 1, 4, 0, 0, 4, 0 };
+  const X::special expected{ 1, 5, 0, 0, 5, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -316,7 +321,8 @@ test06()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -447,11 +453,12 @@ test09()
 void
 test10()
 {
-  const X::special expected{ 0, 3, 1, 0, 3, 0 };
+  const X::special expected{ 0, 4, 1, 0, 4, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -465,7 +472,8 @@ test10()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -485,11 +493,12 @@ test10()
 void
 test11()
 {
-  const X::special expected{ 0, 3, 0, 0, 4, 0 };
+  const X::special expected{ 0, 4, 0, 0, 5, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -503,7 +512,8 @@ test11()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -523,11 +533,12 @@ test11()
 void
 test12()
 {
-  const X::special expected{ 1, 4, 0, 0, 4, 0 };
+  const X::special expected{ 1, 5, 0, 0, 5, 0 };
   X::special ins, emp;
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
@@ -540,7 +551,8 @@ test12()
   }
   {
     std::vector<X> v;
-    v.reserve(3);
+    v.reserve(4);
+    v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));
     v.push_back(X(0,0));

From ppalka@gcc.gnu.org  Fri May 29 19:21:25 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Fri, 29 May 2026 19:21:25 +0000 (GMT)
Subject: [gcc r17-989] libstdc++: Adjust flat_set::swap swapping order
Message-ID: <20260529192125.70F9B4BA798A@sourceware.org>

https://gcc.gnu.org/g:f052dcf8699fa650cda20944fdd3a96104b6830c

commit r17-989-gf052dcf8699fa650cda20944fdd3a96104b6830c
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri May 29 15:21:06 2026 -0400

    libstdc++: Adjust flat_set::swap swapping order
    
    In r17-908 I accidentally made us swap the comparator first, but we
    decided that the container should be swapped first.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/flat_set (_Flat_set_impl::swap): Swap _M_cont
            first.

Diff:
---
 libstdc++-v3/include/std/flat_set | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index 2f204cc08bf9..31dce48bbe0a 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -680,8 +680,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	auto __guard = _M_make_clear_guard();
 	auto __guard_y = _ClearGuard{__y._M_cont};
-	ranges::swap(_M_comp, __y._M_comp);
 	ranges::swap(_M_cont, __y._M_cont);
+	ranges::swap(_M_comp, __y._M_comp);
 	__guard._M_disable();
 	__guard_y._M_disable();
       }

From gccadmin@gcc.gnu.org  Sat May 30 00:17:07 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 30 May 2026 00:17:07 +0000 (GMT)
Subject: [gcc r17-994] Daily bump.
Message-ID: <20260530001707.EE9EB4BA23F1@sourceware.org>

https://gcc.gnu.org/g:e3b432f1666408eafefdceedfacd205042f2b832

commit r17-994-ge3b432f1666408eafefdceedfacd205042f2b832
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat May 30 00:16:40 2026 +0000

    Daily bump.

Diff:
---
 contrib/ChangeLog       |   5 +
 gcc/ChangeLog           | 224 +++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 338 +++++++++++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog         |   6 +
 gcc/cobol/ChangeLog     | 133 +++++++++++++++++++
 gcc/cp/ChangeLog        |   5 +
 gcc/fortran/ChangeLog   |  15 +++
 gcc/rust/ChangeLog      |   6 +
 gcc/testsuite/ChangeLog | 344 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/ChangeLog       |   8 ++
 libgcc/ChangeLog        |  13 ++
 libgcobol/ChangeLog     | 121 +++++++++++++++++
 libgfortran/ChangeLog   |   5 +
 libgomp/ChangeLog       |   6 +
 libstdc++-v3/ChangeLog  |  13 ++
 16 files changed, 1243 insertions(+), 1 deletion(-)

diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 6b927b0381b1..43ae187f91b8 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-29  Kevin Buettner  <kevinb@redhat.com>
+
+	* dg-extract-results.py: Show warnings instead of erroring out
+	when encountering an unparseable file.
+
 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
 
 	* check-MAINTAINERS.py (get_surname): Rename to ...
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dd5339a114db..03089a4fea09 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,227 @@
+2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125475
+	* gimple-range-fold.cc (fold_using_range::fold_stmt): Don't call
+	gimple_stmt_nonnegative_p. Instead set the varying range to
+	`[type_min, type_max]` if not the same as the precision.
+
+2026-05-29  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR target/121343
+	* config/avr/avr.md (FMUL): New int iterator.
+	(fmul, fmul_X, fmul_1, fmul_2): New int attributes.
+	(fmul, fmuls, fmulsu): Turn from expander to insn_and_split.
+	(fmul_insn, fmuls_insn, fmulsu_insn): Remove.
+
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* gimplify.cc (gimplify_scan_omp_clauses): Update for removed
+	plural -S in GOMP_OMP_PREDEF_ALLOC_THREAD.
+
+2026-05-29  Nathan Sidwell  <nathan@acm.org>
+
+	* config/riscv/sync.md: Move & rename atomic unspec enums to unspecv
+	enum. Use renamed UNSPECV_$NAME enums.
+	* config/riscv/sync-rvwmo.md: Use renamed UNSPECV_$NAME enums.
+	* config/riscv/sync-ztso.md: Use renamed UNSPECV_$NAME enums.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):
+	Emit definitions for __ARM_FEATURE_{SVE,SME}2p2.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-sve2.def (svmul): Define new
+	SVE function variant.
+	* config/aarch64/aarch64-sve2.md (@aarch64_sve_<optab><mode>): New
+	instruction pattern.
+	(@aarch64_sve_<optab><mode>_single): Likewise.
+	* config/aarch64/aarch64.h (TARGET_STREAMING_SME2p2): New macro.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-base.cc (class svexpand_impl):
+	Define new SVE function base.
+	* config/aarch64/aarch64-sve-builtins-base.def (svcompact): Allow
+	execution in streaming mode when SME2p2 is enabled.
+	* config/aarch64/aarch64-sve-builtins-base.h (svexpand): Declare
+	new SVE function base.
+	* config/aarch64/aarch64-sve-builtins-sve2.def (svcompact): Define
+	new SVE function.
+	(svexpand): Likewise.
+	* config/aarch64/aarch64-sve.md (@aarch64_sve_compact<mode>):
+	Enable 32- and 64-bit element variants under SME2p2.  New
+	insn pattern for 8- and 16-bit elements.
+	(@aarch64_sve_expand<mode>): New insn pattern.
+	* config/aarch64/aarch64.h (TARGET_SVE_OR_SME2p2): New macro.
+	* config/aarch64/aarch64.md (UNSPEC_SVE_EXPAND): New UNSPEC.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-sve2.cc
+	(class svfirst_lastp_impl): Define new SVE function base class.
+	(svfirstp): Define new SVE function base.
+	(svlastp): Likewise.
+	* config/aarch64/aarch64-sve-builtins-sve2.def (svfirstp): Define
+	new SVE function.
+	(svlastp): Likewise.
+	* config/aarch64/aarch64-sve-builtins-sve2.h (svfirstp): Declare
+	new SVE function base.
+	* config/aarch64/aarch64-sve2.md (@aarch64_pred_firstp<mode>): New
+	insn pattern.
+	(@aarch64_pred_lastp<mode>): Likewise.
+	* config/aarch64/iterators.md (UNSPEC_FIRSTP): New UNSPEC.
+	(UNSPEC_LASTP): Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-sve2.cc (svrint32x): Define
+	new function base.
+	(svrint32z): Likewise.
+	(svrint64x): Likewise.
+	(svrint64z): Likewise.
+	* config/aarch64/aarch64-sve-builtins-sve2.def (svrint32x):
+	Define new SVE function.
+	(svrint32z): Likewise.
+	(svrint64x): Likewise.
+	(svrint64z): Likewise.
+	* config/aarch64/aarch64-sve-builtins-sve2.h (svrint32x): Declare
+	new function base.
+	(svrint32z): Likewise.
+	(svrint64x): Likewise.
+	(svrint32z): Likewise.
+	* config/aarch64/aarch64-sve-builtins.cc (TYPES_sd_float): New
+	type set.
+	(sd_float): New SVE type array.
+	* config/aarch64/aarch64-sve2.md (@cond_<frintnzs_op><mode>): New
+	insn pattern.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve-builtins-base.cc (class svcvtnt_impl):
+	Remove.
+	(svcvtnt): Redefine using narrowing_top_convert.
+	* config/aarch64/aarch64-sve-builtins-functions.h
+	(class narrowing_top_convert): New SVE function base class.
+	(NARROWING_TOP_CONVERT0): New function-like macro for specializing
+	narrowing_top_convert.
+	(NARROWING_TOP_CONVERT1): Likewise.
+	* config/aarch64/aarch64-sve-builtins-sve2.cc (class svcvtxnt_impl):
+	Remove.
+	(svcvtxnt): Redefine using narrowing_top_convert.
+	* config/aarch64/aarch64-sve-builtins-sve2.def (svcvtlt): Allow
+	zeroing predication.
+	(svcvtnt): Likewise.
+	(svcvtxnt): Likewise.
+	* config/aarch64/aarch64-sve.md (@aarch64_sve_cvtnt<mode>):
+	Convert to compact syntax. Add operand 4 for values of
+	inactive lanes.  New alternative for zeroing predication.
+	* config/aarch64/aarch64-sve2.md
+	(*cond_<sve_fp_op><mode>_relaxed): Convert to compact syntax.
+	New alternative for zeroing predication.
+	(*cond_<sve_fp_op><mode>_strict): Likewise.
+	(@aarch64_sve_cvtnt<mode>): Convert to compact syntax. Add
+	operand 4 for values of inactive lanes.  New alternative for
+	zeroing predication.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md
+	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	(*cond_<optab>_nonextend<SVE_HSDI:mode><SVE_PARTIAL_F:mode>_relaxed):
+	Likewise.
+	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict):
+	Likewise.
+	(*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>):
+	Likewise.
+	(*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>):
+	Likewise.
+	(*cond_<optab>_trunc<SVE_SDF:mode><SVE_PARTIAL_HSF:mode>):
+	Likewise.
+	(*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>):
+	Likewise.
+	(*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>):
+	Likewise.
+	(*cond_<optab>_nontrunc<SVE_PARTIAL_HSF:mode><SVE_SDF:mode>_relaxed):
+	Likewise.
+	* config/aarch64/aarch64-sve2.md
+	(*cond_<sve_fp_op><mode>_any_relaxed): Likewise.
+	(*cond_<sve_fp_op><mode>_any_strict): Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md
+	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	(*cond_<optab>_nontrunc<SVE_PARTIAL_F:mode><SVE_HSDI:mode>_relaxed):
+	Likewise.
+	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict):
+	Likewise.
+	(*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
+	Likewise.
+	(*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx2SI_ONLY:mode>_relaxed):
+	Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_any_relaxed):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	(*cond_<optab><mode>_any_strict): Likewise.
+	* config/aarch64/aarch64-sve2.md (*cond_<sve_fp_op><mode>):
+	Likewise.
+	(*cond_<sve_fp_op><mode>_strict): Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md (@cond_<optab><mode>):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	* config/aarch64/aarch64-sve2.md (@aarch64_pred_<optab><mode>):
+	Use zeroing predication variant for PRED_X.
+	(@cond_<optab><mode>): Accept constant zero as operand 3.  New
+	alternative for zeroing predication.  Add `arch` attribute to
+	every alternative.
+	* config/aarch64/predicates.md (aarch64_simd_reg_or_direct_zero):
+	New predicate.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md
+	(@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	(*cond_uxt<mode>_any): Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_any):
+	New alternative for zeroing predication.  Add `arch` attribute
+	to every alternative.
+	(*cond_cnot<mode>_any): Likewise.
+	* config/aarch64/aarch64-sve2.md: (*cond_<sve_int_op><mode>):
+	Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* config/aarch64/aarch64.h (TARGET_SVE2p2): New macro.
+	(TARGET_SME2p2): Likewise.
+	(TARGET_SVE2p2_OR_SME2p2): Likewise.
+	* config/aarch64/aarch64.md (arches): Add sve2p2_or_sme2p2 enum
+	constant.
+	(arch): Add test for sve2p2_or_sme2p2.
+	* doc/invoke.texi: Document sve2p2 and sme2p2 extensions.
+
+2026-05-29  LIU Hao  <lh_mouse@126.com>
+
+	* config/i386/i386.cc (ix86_decompose_address): Add a special case where
+	there's no base, there's an index, and the scale is 1.
+
 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
 
 	* tree-ssa-loop-im.cc (ref_always_accessed_p): Rename to...
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 24d57167af43..dcf9716c9740 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260529
+20260530
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 4dfdfd12fc66..79622b62f23f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,341 @@
+2026-05-29  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sysdep.c (getc_immediate_common): Read character as unsigned
+	value.
+
+2026-05-29  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb (Delay_Aspect): Remove the side effect.
+	(Decorate): Rename to be Decorate_Aspect_Links.
+	Generalize.
+	(Insert_Aitem): Call Decorate_Aspect_Links.
+	* aspects.ads: Minor comment improvement: we don't need to worry;
+	we just need to do it.
+	* einfo.ads: Minor comment improvement.
+
+2026-05-29  Gary Dismukes  <dismukes@adacore.com>
+
+	* sem_ch6.adb (New_Overloaded_Entity): Add missing call to
+	Check_For_Primitive_Subprogram (Is_Primitive must be set).
+	* sem_ch13.ads (Check_Function_For_Indexing_Aspect): Move declaration
+	to package body.
+	* sem_ch13.adb (Check_Indexing_Functions): Remove early return for
+	derived types. Pass appropriate values for the new Boolean parameters
+	on existing calls to Check_Function_For_Indexing_Aspect. Perform a
+	second interpretation loop, calling Check_Function_For_Indexing_Aspect
+	and passing Indexing_Found for the Has_Eligible_Func parameter and True
+	for the Error_On_Ineligible parameter, and remove the existing call
+	to Error_Msg_NE that was flagging nonlocal entities (a similar error
+	is now reported inside procedure Check_Function_For_Indexing_Aspect).
+	Suppress call to Check_Inherited_Indexing in derived type cases.
+	(Check_Nonoverridable_Aspect_Subprograms): Remove early return when
+	the aspect spec does not come from source, so aspects of derived types
+	will also go through this procedure. Check restrictions of AI22-0159/01
+	for derived types and inheritance of aspects. Replace iteration over
+	overloaded interpretations with iteration over Aspect_Subprograms (and
+	only do that for indexing aspects). Condition Sloc for existing error
+	check for nonprimitive operations based on whether the aspect comes
+	from source, posting the error on the entity rather than the aspect
+	if the aspect is not given explicitly.
+	(Analyze_Aspects_At_Freeze_Point): Split off a new case alternative
+	for iterator aspects, and specialize treatment for indexing aspects
+	by forcing a search for new indexing functions. When none are found,
+	issue an error only in the case where the type has no inherited
+	indexing functions. Test that the version is at least Ada_2012 rather
+	than Ada_2022 for calling Check_Nonoverridable_Aspect_Subprograms.
+	(Check_Function_For_Indexing_Aspect): Move declaration from the package
+	spec to the body. Add Has_Eligible_Func and Error_On_Ineligible formals
+	and update spec comment.
+	Return early if the candidate subprogram was already inherited (present
+	in Aspect_Subprograms).
+	For a scope mismatch on Subp, report error only when Has_Eligible_Func
+	is False and Error_On_Ineligible is True (and never a warning).
+	Add "<<" in several calls to Report_Ineligible_Indexing_Function
+	(formerly Illegal_Indexing) to allow either warnings or errors.
+	Return without adding subprogram to Aspect_Subprograms when
+	Error_On_Ineligible is False.
+	(Report_Ineligible_Indexing_Function): Name changed from
+	Illegal_Indexing.
+	Return early when only a warning can be issued and the ineligible
+	subprogram is inherited, or if its first formal (if any) does not match
+	the aspect's associated type (to reduce false-positive warnings).
+	Set Error_Msg_Warn based on Error_On_Ineligible formal.
+	Report a continuation message identifying the ineligible entity.
+	Remove comment preceding body that has been obviated by AI22-0154.
+	* sem_util.adb (Inherit_Nonoverridable_Aspect): Remove the loop over
+	primitives that was checking and adding eligible primitives. That code
+	was incomplete, and collection of new indexing functions for derived
+	types is now handled by Check_Indexing_Functions. Also remove the
+	associated "???" comment.
+
+2026-05-29  Tonu Naks  <naks@adacore.com>
+
+	* doc/gnat_rm.rst: update toctree
+	* doc/gnat_rm/about_this_guide.rst: add reference
+	* doc/gnat_rm/gnat_implementation_mode.rst: new file
+	* opt.ads: remove redundant comment
+	* gnat_rm.texi: Regenerate.
+
+2026-05-29  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst (Destructors): fix
+	typo.
+	* gnat_rm.texi: Regenerate.
+
+2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+
+	* argv.c: Remove unused include directive.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* erroutc.ads (Warnings_Suppressed): New Boolean overload.
+	* errout.adb (Error_Msg_Internal): Use Boolean Warnings_Suppressed.
+	* errutil.adb (Error_Msg): Likewise.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Is_Before): New helper function.
+	(Find_Msg_Insertion_Point): New procedure.
+	(Error_Msg_Internal): Use Find_Msg_Insertion_Point and Insert_Error_Msg.
+	(Finalize): Remove call to Set_Prev_Pointers.
+	(Set_Prev_Pointers): Removed.
+	* erroutc.adb (Insert_Error_Msg): New procedure.
+	* erroutc.ads (Insert_Error_Msg): New declaration.
+
+2026-05-29  Andres Toom  <toom@adacore.com>
+
+	* gnat1drv.adb (Adjust_Global_Switches): Do not set
+	Global_Discard_Names in GNATprove_Mode.
+
+2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+
+	* argv.c (__gnat_env_count) (__gnat_len_env) (__gnat_fill_env): Move
+	to...
+	* env.c (__gnat_env_count) (__gnat_len_env) (__gnat_fill_env):
+	...here. Tweak comment.
+
+2026-05-29  Bob Duff  <duff@adacore.com>
+
+	* sem_ch6.adb (Subprogram_Subtypes_Have_Same_Declaration):
+	Remove tests for In_Internal_Unit and GNAT_Mode.
+
+2026-05-29  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* vast.adb (Check_Enum)<Check_Entity_Chain>: Add.
+	(Status)<Check_Entity_Chain>: Set to Print_And_Continue.
+	(Check_Entity_Chain): New.
+	(Check_Scope): Call Check_Entity_Chain.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Delete_Warning_And_Continuations): use
+	Delete_Error_And_Continuation_Msgs.
+	(Output_Messages): Call new refactored subprograms.
+	(Delete_Specifically_Suppressed_Warnings): New
+	procedure.
+	* (Set_Prev_Pointers): New procedure.
+	* (Finalize): use Delete_Specifically_Suppressed_Warnigns and
+	Set_Prev_Pointers.
+	(Finalize): use Delete_Error_And_Continuation_Msgs.
+	* erroutc.adb (Delete_Error_And_Continuation_Msgs): New procedure.
+	(Remove_Duplicate_Errors): New_Function.
+	(Write_All_Errors_In_Brief_Format): New function.
+	(Write_All_Errors_In_Verbose_Format): New function.
+	(Write_Error_Summary): New function.
+	* erroutc.ads (Delete_Error_And_Continuation_Msgs): Likewise.
+	(Remove_Duplicate_Errors): Likewise.
+	(Write_All_Errors_In_Brief_Format): Likewise.
+	(Write_All_Errors_In_Verbose_Format): Likewise.
+	(Write_Error_Summary): Likewise.
+	* errutil.adb (Finalize): Call new refactored subprograms.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Remove_Warning_Messages): Use
+	Filter_And_Delete_Errors.
+	* errout.ads (Purge_Messages): Renamed to
+	Delete_Error_Msgs_In_Range.
+	* erroutc.adb (Filter_And_Delete_Errors): New procedure.
+	(Purge_Messages): Renamed to Delete_Error_Msgs_In_Range.
+	* erroutc.ads (Filter_And_Delete_Errors): New procedure.
+	(Purge_Messages): Renamed to Delete_Error_Msgs_In_Range.
+	* par-ch5.adb (Missing_Begin): call Delete_Error_Msgs_In_Range.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Finalize): use Warning_Is_Suppressed.
+	* erroutc.adb (Warning_Is_Suppressed): New subprogram.
+	* erroutc.ads (Warning_Is_Suppressed): Likewise.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb: Use Delete_Error_Msg.
+	* erroutc.adb (Delete_Error_Msg): New subprogram.
+	* erroutc.ads (Delete_Error_Msg): Likewise.
+
+2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_unst.adb (Note_Uplevel_Bound_Trav): Do not register an uplevel
+	reference for a package.  Use a single if_statement in the body.
+
+2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch6.adb (Analyze_Function_Return): Remove obsolete code that
+	wraps the return in a block when the expression is an aggregate.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Error_Msg): Add new function
+	In_Loop_With_Suppressed_Warnings.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* errout.adb (Error_Msg_N): Simplify code.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* erroutc-pretty_emitter.adb (To_String): Relocated to erroutc.
+	(To_File_Name): Likewise.
+	(Line_To_String): Likewise.
+	(Column_To_String): Likewise.
+	* erroutc.adb (dedit): New function for debugging edits.
+	(dfix): New function for debuging fixes.
+	(dloc): New function for debugging locations.
+	(dmsg): Print missing Error_Msg_Object attributes.
+	(To_String): New function for printing spans
+	(To_String): Relocated from erroutc-pretty_emitter.adb
+	(To_File_Name): Likewise.
+	* erroutc.ads: Likewise.
+
+2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+
+	* argv-lynxos178-raven-cert.c: Update comments.
+	* argv.c (gnat_envp): Add comment about it being unused.
+	(__gnat_env_count, __gnat_len_env, __gnat_fill_env): Use
+	__gnat_environ instead of gnat_envp.
+	* bindgen.adb (Command_Line_Used): Update comment.
+	(Gen_Main): Remove gnat_envp assignment generation. Remove generated
+	envp parameter.
+	(Gen_Output_File_Ada): Remove generated envp parameter.
+	* env.h: Make usable as C++.
+	* libgnat/a-colien.ads: Remove comment.
+	* libgnat/a-comlin.ads: Update comment.
+	* targparm.ads: Update comment.
+
+2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* par-ch10.adb (P_Compilation_Unit): Require no indentation.
+
+2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/93702
+	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not set the
+	Was_Expression_Function flag on the body.
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Avoid freezing the
+	profile only for wrapper functions.
+
+2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sprint.adb (Sprint_Node_Actual): Print filter in loop parameter
+	specification.
+
+2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch4.adb (Analyze_Quantified_Expression): If there is a filter,
+	then suppress the warning.
+
+2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+	trivial conditions.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* inline.adb (Adjust_Node): Renamed from Adjust_Sloc and
+	additionally unset Comes_From_Source.
+
+2026-05-29  Javier Miranda  <miranda@adacore.com>
+
+	* checks.adb (Apply_Scalar_Range_Check): When the type of the expression
+	is Universal Integer we cannot statically determine if the expression
+	is in the range of the target type.
+	* sem_eval.adb (In_Subrange_Of): Do not consider T2 in the range of
+	Universal Integer (since theoretically they are not).
+	(Test_In_Range): Do not consider Universal type expressions in range
+	of subtype Typ.
+
+2026-05-29  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* treepr.ads (pech, rpech): New.
+	(Print_Entity_Chain): Adjust signature and comment to handle
+	printing only header and doing the simple check.
+	* treepr.adb (pech, rpech): New.
+	(Print_Entity_Chain): Support for printing only headers and doing
+	simple check.
+
+2026-05-29  Claire Dross  <dross@adacore.com>
+
+	* sem_ch13.adb (Resolve_Iterable_Operation): Handle Previous and Last
+	like Next and First.
+
+2026-05-29  Claire Dross  <dross@adacore.com>
+
+	* libgnat/i-cstrin.ads: New C_Addresses volatile state to use as
+	input of the New_String and New_Char_Array.
+
+2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_util.adb (Statically_Names_Object) <N_Selected_Component>:
+	Return False if the selector is neither component nor discriminant.
+
+2026-05-29  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch3.adb (Build_Derived_Record_Type): Record type derivations
+	inherit Is_Unchecked_Union and Has_Unchecked_Union flags.
+	(Inherit_Component): Add discriminals to the associations list.
+	* exp_ch3.adb (Build_Record_Init_Proc): Derivations of Unchecked_Union
+	types don't need an initialization procedure; they reuse the init proc
+	of their parent type.
+
+2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch4.adb (Expand_N_Case_Expression): Deal with initialization
+	expression of return object.
+	(Expand_N_If_Expression): Likewise.
+	(Insert_Conditional_Object_Declaration): Likewise.
+	* exp_util.adb (Is_Distributable_Declaration): Lift limitation for
+	return objects, including those with a class-wide type.
+	* sem_ch3.adb (Analyze_Object_Declaration): Set Return_Applies_To
+	on artificial return objects created from within a transient scope.
+	Remove test on Expander_Active for better error recovery.
+
+2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
+	markup.
+	* gnat_ugn.texi: Regenerate.
+
+2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+	variables with junk names.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* inline.adb (Inline_Static_Function_Call): Reduce source code nesting.
+	* inline.ads (Inline_Static_Function_Call): Likewise.
+
+2026-05-29  Viljar Indus  <indus@adacore.com>
+
+	* inline.adb (Inline_Static_Function_Call): Add a Source File Index
+	entry for the call and apply the necessary sloc adjustment values
+	for all of the inlined nodes.
+
+2026-05-29  Tonu Naks  <naks@adacore.com>
+
+	* adaint.c (__gnat_copy_attribs): use GetFileAttributesEx to
+	to fetch attributes.
+
 2026-05-28  Sebastian Poeplau  <poeplau@adacore.com>
 
 	* init.c (__gnat_alternate_stack): add alignment attribute.
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 251657eedcba..aced229943e4 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* c-parser.cc (c_parser_omp_allocate): Reject
+	omp_{cgroup,pteam,thread}_mem_alloc for static variables.
+
 2026-05-25  Sam James  <sam@gentoo.org>
 
 	* c-parser.cc: Delete errant optimize pragma.
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 97961460f45c..c8dfbcb2fc61 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,136 @@
+2026-05-29  Robert Dubner  <rdubner@symas.com>
+	    James K. Lowden  <jklowden@cobolworx.com>
+	    Xavier Del Campo  <xdelcampo@symas.com>
+
+	* Make-lang.in: Include gcobc script.
+	* cdf.y: Change formal parameters of cdf_literalize().
+	* cobol1.cc (cobol_langhook_handle_option): Add OPT_ftrunc option.
+	* compare.cc (total_digits_tree): Remove debugging statements.
+	(float_compare): Likewise.
+	* copybook.h (class copybook_elem_t): Update conditional close().
+	* dts.h: Change copyright notice.
+	* gcobc: Likewise.
+	* gcobol.1: Likewise.
+	* gcobol.3: Likewise.
+	* gcobolspec.cc (COMPAT_LIBRARY): POSIX compatibility.
+	(POSIX_LIBRARY): Likewise.
+	(lang_specific_driver): Likewise.
+	* genapi.cc (section_label): Missing LABEL_EXPR detection.
+	(paragraph_label): Likewise.
+	(internal_perform_through): Likewise.
+	(enter_program_common): Add comment.
+	(parser_enter_program): Change current_program_index() handling.
+	(build_alter_switch): Missing LABEL_EXPR detection.
+	(parser_display_internal): Handle REFER_T_ADDRESS_OF flag.
+	(create_and_call): ADDRESS OF is passed BY VALUE.
+	* gengen.cc (LOOK_FOR_MISSING_LABELS_not): Missing LABEL_EXPR
+	detection.
+	(dump_missing_labels): Likewise.
+	(gg_append_statement): Likewise.
+	(gg_struct_field_ref): Likewise.
+	(LABEL_ROOT): Likewise.
+	(gg_create_goto_pair): Likewise.
+	(scm_dump_generic_nodes): Forward declaration.
+	(gg_leaving_the_source_code_file): Missing LABEL_EXPR detection.
+	(label_decl_text_from_expr): New function.
+	* gengen.h (gg_create_assembler_name): New declaration.
+	(label_decl_text_from_expr): New declaration.
+	* genmath.cc (uchar_f_node): Fast ADD N TO NUMERIC-DISPLAY.
+	(uchar_ten_node): Likewise.
+	(fast_add): Likewise.
+	(fast_subtract): Likewise.
+	(parser_add): Likewise.
+	(add_floats): Likewise.
+	(ordinary_add_format_1): Likewise.
+	(ordinary_subtract_format_1): Likewise.
+	(add_case_1): Likewise.
+	(add_case_2): Likewise.
+	(add_case_3): Likewise.
+	(parser_multiply): Likewise.
+	(add_case_4): Likewise.
+	(add_litN_to_numdisp): Likewise.
+	(add_format_1): Likewise.
+	(add_format_2): Likewise.
+	(add_format_3): Likewise.
+	(subtract_floats): Likewise.
+	(subtract_format_1): Likewise.
+	(subtract_format_2): Likewise.
+	(subtract_format_3): Likewise.
+	(parser_subtract): Likewise.
+	* genutil.cc (refer_has_depends): False when type == FldIndex.
+	* lang-specs.h: Add fdefaultbyte, fstatic-call, ftrunc.
+	* lang.opt: Add ftrunc.
+	* lexio.cc (cdftext::open_input): Improved error message.
+	* parse.y: CDF support, POSIX support.
+	* parse_ante.h (cbl_division_t): Different enum.
+	(mode_syntax_only): New implementation of syntax_only.
+	(parse_error_inc): Likewise.
+	(resume_parsing): Likewise.
+	(successful_parse): Likewise.
+	(name_of): Formal parameter is now const.
+	(nice_name_of): Likewise.
+	(ast_op): Chanage formal parameters.
+	(prototype_ok): COBOL function prototypes.
+	(struct prototype_type_t): Likewise.
+	(is_allowed_name): Likewise.
+	(prototype_add): Likewise.
+	(prototype_args): Likewise.
+	(verify_args): Likewise.
+	(valid_pointer_relop): New function.
+	(field_value_all): Eliminate.
+	(current_field): COBOL function prototypes.
+	(ast_enter_exit_section): Improved error messages.
+	(data_division_ready): Improved mode_syntax_only.
+	(file_section_fd_set): Change "return false" to "return 0".
+	(ast_end_program): Improved mode_syntax_only.
+	* scan_ante.h (symbol_function_token): Use symbol_function_any().
+	(symbol_exists): Change for() loop termination.
+	(typed_name): COBOL function prototypes.
+	* structs.cc: Support for buffered FILE READ.
+	* symbols.cc (symbol_field_location): Use field_locs[] map.
+	(symbol_table_extend): Likewise.
+	(is_prototypical): COBOL function prototypes.
+	(symbol_elem_cmp): Likewise.
+	(symbol_program): Likewise.
+	(struct symbol_elem_t): Likewise.
+	(symbol_function): Likewise.
+	(enum protoreq_t): Likewise.
+	(symbol_function_impl): Likewise.
+	(struct cbl_label_t): Likewise.
+	(symbol_function_any): Likewise.
+	(symbols_dump): Likewise.
+	(cbl_field_t::attr_str): Likewise.
+	(field_str): Likewise.
+	(symbols_update): Likewise.
+	(symbol_field_add): Likewise.
+	(symbol_field_same_as): Likewise.
+	(cbl_alphabet_t::reencode): Detect iconv() errors.
+	(symbol_program_add): COBOL function prototypes.
+	* symbols.h (enum dspc_t): Enum for Division, Section, Paragraph,
+	Clause.
+	(cbl_prototype_ok): COBOL function prototypes.
+	(valid_move): Handle strong typing.
+	(struct parameter_t): Improved function parameter handling.
+	(struct cbl_ffi_arg_t): Likewise.
+	(struct cbl_label_t): COBOL function prototypes.
+	(struct function_descr_t): Likewise.
+	(struct cbl_alphabet_t): Detect iconv() errors.
+	(struct cbl_file_t): Support for LINAGE and the like.
+	(prototype_args):COBOL function prototypes.
+	(is_prototypical):COBOL function prototypes.
+	(is_numeric): Refmods are not numeric.
+	(struct symbol_elem_t): Additional declarations.
+	* symfind.cc (update_symbol_map2): Use symbols map.
+	* token_names.h: New comment.
+	* util.cc (cbl_prototype_ok): COBOL function prototypes.
+	(cdf_literalize): New formal parameters.
+	(effective_type): New function.
+	(valid_move): Handle strong typing.
+	(cobol_trunc_binary): Handle new ftrunc option.
+	(parse_error_reset): Forward declaration.
+	(parse_file): Formatting.
+	* util.h (cobol_trunc_binary): New declaration.
+
 2026-05-28  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR cobol/125404
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8454418e56c0..3305fe6ffa2f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* init.cc (build_value_init_noctor): Zero initialize anonymous
+	union/struct subobjects.  Formatting fix.
+
 2026-05-28  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125454
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e6392b01a146..280bd5606754 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,18 @@
+2026-05-29  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125393
+	* interface.cc (get_expr_storage_size): Additionally return
+	character length.
+	(gfc_compare_actual_formal): When the formal is a scalar character
+	variable, use character lengths, not array storage size for check.
+
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* openmp.cc (gfc_resolve_omp_allocate): Reject
+	omp_{cgroup,pteam,thread}_mem_alloc also for local static
+	variables.
+
 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	* intrinsic.texi (F_C_STRING): New section.
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 10dcdb27a0c3..14949029f8bc 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-29  Marc Poulhi?s  <dkm@kataplop.net>
+	    Andreas Schwab  <schwab@linux-m68k.org>
+
+	PR tree-optimization/114385
+	* lex/rust-token.cc (Token::as_string): split concatenation.
+
 2026-04-14  jayant chauhan  <0001jayant@gmail.com>
 
 	* backend/rust-compile-item.cc (CompileItem::visit): Do not insert
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 187284dd5e5d..142900bed52e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,347 @@
+2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* gcc.dg/torture/pr125453-1.c: Add -w to the options.
+
+2026-05-29  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125393
+	* gfortran.dg/argument_checking_28.f90: New test.
+
+2026-05-29  Robert Dubner  <rdubner@symas.com>
+	    James K. Lowden  <jklowden@cobolworx.com>
+	    Xavier Del Campo  <xdelcampo@symas.com>
+
+	* cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob:
+	Updated compiler error message.
+	* cobol.dg/group2/BINARY_and_COMP-5.cob:
+	Likewise.
+	* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob:
+	Likewise.
+	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob:
+	Likewise.
+	* cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob:
+	Likewise.
+	* cobol.dg/group2/Simple_p-scaling.cob:
+	Likewise.
+	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob:
+	Likewise.
+	* cobol.dg/group2/compare_national_to_display.cob:
+	Likewise.
+	* cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob:
+	Likewise.
+	* cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob: New test.
+	* cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out: New test.
+	* cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob: New test.
+	* cobol.dg/group2/CBL_CHECK_FILE_EXIST.out: New test.
+	* cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob: New test.
+	* cobol.dg/group2/CBL_DELETE_FILE.cob: New test.
+	* cobol.dg/group2/CBL_DELETE_FILE.out: New test.
+	* cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob: New test.
+	* cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out: New test.
+	* cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob: New test.
+	* cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out: New test.
+	* cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob: New test.
+	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob: New test.
+	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out: New test.
+	* cobol.dg/group2/MOVE_LEVEL_78.cob: New test.
+	* cobol.dg/group2/MOVE_LEVEL_78.out: New test.
+	* cobol.dg/group2/add_-1_to_negative_pic_S9999.cob: New test.
+	* cobol.dg/group2/add_-1_to_negative_pic_S9999.out: New test.
+	* cobol.dg/group2/add_-1_to_pic_9999.cob: New test.
+	* cobol.dg/group2/add_-1_to_pic_9999.out: New test.
+	* cobol.dg/group2/add_-1_to_positive_pic_S9999.cob: New test.
+	* cobol.dg/group2/add_-1_to_positive_pic_S9999.out: New test.
+	* cobol.dg/group2/add_1_to_pic_9999.cob: New test.
+	* cobol.dg/group2/add_1_to_pic_9999.out: New test.
+	* cobol.dg/group2/add_1_to_positive_pic_S9999.cob: New test.
+	* cobol.dg/group2/add_1_to_positive_pic_S9999.out: New test.
+	* cobol.dg/group2/add__1_to_negative_pic_S9999.cob: New test.
+	* cobol.dg/group2/add__1_to_negative_pic_S9999.out: New test.
+	* cobol.dg/group2/ambiguous_PERFORM.cob: New test.
+	* cobol.dg/group2/ambiguous_PERFORM.out: New test.
+	* cobol.dg/group2/cbltypes.cpy: New test.
+	* cobol.dg/group2/compare_float_to_other_types.cob: New test.
+	* cobol.dg/group2/compare_float_to_other_types.out: New test.
+	* cobol.dg/group2/move_numeric_to_alphanumeric.cob: New test.
+	* cobol.dg/group2/move_numeric_to_alphanumeric.out: New test.
+
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* gfortran.dg/gomp/allocate-static-3.f90: Modify to also
+	disallow local static variables.
+	* c-c++-common/gomp/allocate-20.c: New test.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/pragma_cpp_predefs_3.c: Add SVE2p2 tests.
+	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add SME2p2 test.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c: New test.
+	* gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* g++.target/aarch64/sve/aarch64-ssve.exp: Add sve2p2 to the
+	target string.  Move svcompact from $nonstreaming_only to
+	$streaming_ok.
+	* gcc.target/aarch64/sve2/acle/asm/compact_bf16.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/compact_f32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_f64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_mf8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_s16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_s32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_s64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_s8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_u16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_u64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/compact_u8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_bf16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_f32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_f64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_mf8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_s16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_s32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_s64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_s8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_u16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_u64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/expand_u8.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/firstp_b16.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/firstp_b32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/firstp_b64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/firstp_b8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/lastp_b16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/lastp_b32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/lastp_b64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/lastp_b8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/general/firstp.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/general/lastp.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c: Likewise.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/not_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c: New file.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c: New file.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c: New file.
+	* gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c: New file.
+
+2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* lib/target-supports.exp
+	(check_effective_target_aarch64_sve2p2_hw): New target check.
+	(check_effective_target_aarch64_sve2p2_ok): New target check.
+	(exts_sve2): Add sme2p2.
+
+2026-05-29  LIU Hao  <lh_mouse@126.com>
+
+	* gcc.target/i386/rewrite-sib-without-base.c: New test.
+
+2026-05-29  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* gcc.target/i386/sse2-paddb-2.c: Support -march=cascadelake.
+	* gcc.target/i386/sse2-paddd-2.c: Likewise.
+	* gcc.target/i386/sse2-paddw-2.c: Likewise.
+	* gcc.target/i386/sse2-psubb-2.c: Likewise.
+	* gcc.target/i386/sse2-psubd-2.c: Likewise.
+	* gcc.target/i386/sse2-psubw-2.c: Likewise.
+
+2026-05-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR testsuite/125489
+	* gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c: Add the
+	missing end brace.
+
 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
 
 	* gfortran.dg/f_c_string3.f90: New.
diff --git a/include/ChangeLog b/include/ChangeLog
index 99f84263f479..cf30c2edbe5f 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* gomp-constants.h (GOMP_OMP_PREDEF_ALLOC_THREADS): Rename to ...
+	(GOMP_OMP_PREDEF_ALLOC_THREAD): ... this.
+	(GOMP_OMP_PREDEF_ALLOC_CGROUP, GOMP_OMP_PREDEF_ALLOC_PTEAM): Define
+	with the value of omp_{cgroup,pteam}_mem_alloc
+
 2026-02-05  Matthieu Longo  <matthieu.longo@arm.com>
 
 	* doubly-linked-list.h
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 6aee23b12bfc..854972c18818 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,16 @@
+2026-05-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* config.host <i[34567]86-*-freebsd*> (tmake_file): Add
+	i386/t-msabi.
+	<x86_64-*-freebsd*>: Likewise.
+	* config/i386/i386-asm.h: Update comment.
+	* config/i386/resms64.h: Use .note.GNU-stack on FreeBSD, too.
+	* config/i386/resms64f.h: Likewise.
+	* config/i386/resms64fx.h: Likewise.
+	* config/i386/resms64x.h: Likewise.
+	* config/i386/savms64.h: Likewise.
+	* config/i386/savms64f.h: Likewise.
+
 2026-05-21  Christoph M?llner  <christoph.muellner@vrull.eu>
 
 	* config/riscv/feature_bits.c (ZICFISS_GROUPID,
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 94e1e7b72de4..264bb3b55d23 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,124 @@
+2026-05-29  Robert Dubner  <rdubner@symas.com>
+	    James K. Lowden  <jklowden@cobolworx.com>
+	    Xavier Del Campo  <xdelcampo@symas.com>
+
+	* Makefile.am: Add AM_COBC and AM_COBFLAGS; update
+	toolexeclib_LTLIBRARIES with libgcobol_posix.la and
+	libgcobol_compat_gnu.la.
+	* Makefile.in: POSIX compatibility support.
+	* aclocal.m4: Regenerate.
+	* charmaps.cc (__gg__iconverter): Restore map of encoding pairs.
+	(__gg__get_charmap): Change how encodings are mapped.
+	* charmaps.h (CHARMAPS_H): Include #include <map>.
+	(DEFAULT_32_ENCODING): Wrap in __FreeBSD__ conditional.
+	(error_msg_direct): Wrap in IN_TARGET_LIBS.
+	(class cbl_iconv_t): Wrapper for iconv() calls.
+	(class charmap_t): Explicit constructor.
+	* compat/README.md: POSIX compatibility layer.
+	* compat/gnu/lib/CBL_ALLOC_MEM.cbl: Likewise.
+	* compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl: Likewise.
+	* compat/gnu/lib/CBL_DELETE_FILE.cbl: Likewise.
+	* compat/gnu/lib/CBL_FREE_MEM.cbl: Likewise.
+	* compat/gnu/udf/stored-char-length.cbl: Likewise.
+	* compat/t/Makefile: Likewise.
+	* compat/t/smoke.cbl: Likewise.
+	* configure: Regenerate.
+	* configure.ac: New macros
+	* configure.tgt: Likewise.
+	* ec.h (enum ec_type_t): New implementor-defined ec_imp_iconv_open_e
+	exception.
+	* encodings.h (_ENCODINGS_H_): #include <type_traits> for mapping
+	the cbl_encoding_t values.
+	(struct cbl_encoding_t_hash): Likewise.
+	* exceptl.h (ec_type_of): Remove "extern" from declaration.
+	* gcobolio.h (FILE_BUFFER_SIZE): READ FILE buffer size.
+	* gfileio.cc (sequential_file_write): Honor non-ascii encodings.
+	(line_sequential_file_read): Buffered FILE READ.
+	(line_sequential_file_read_sbc): Buffered FILE READ.
+	* intrinsic.cc (string_to_dest): Eliminate function.
+	(get_all_time): Replace __gg__convert_encoding() with
+	__gg__iconverter().
+	(__gg__when_compiled): Likewise.
+	* io.cc (__compat_file_status_word): POSIX compatibility layer.
+	* io.h (enum file_high_t): Likewise.
+	(enum file_status_t): Likewise.
+	* libgcobol.cc (init_var_both): Eliminate call to
+	initialize_program_state().
+	(__gg__move): Eliminate call to __gg__convert_encoding_length;
+	handle REFER_T_ADDRESS_OF.
+	(display_both): Handle REFER_T_ADDRESS_OF.
+	(__gg__display_clean): Likewise.
+	(__gg__convert_encoding): Eliminate function.
+	(__gg__convert_encoding_length): Likewise.
+	(default_exception_handler): Improve exception handling.
+	(ec_type_descr): Likewise.
+	(ec_type_disposition): Likewise.
+	(ec_is_fatal): Likewise.
+	(__gg__check_fatal_exception): Likewise.
+	(__gg__set_env_value): Remove call to __gg__convert_encoding.
+	* libgcobol.h (__gg__convert_encoding): Eliminate.
+	(__gg__convert_encoding_length): Eliminate.
+	* posix/bin/udf-gen: POSIX compatibility.
+	* posix/cpy/posix-errno.cbl: Likewise.
+	* posix/cpy/psx-lseek.cpy: Likewise.
+	* posix/cpy/psx-open.cpy: Likewise.
+	* posix/cpy/statbuf.cpy: Likewise.
+	* posix/cpy/tm.cpy: Likewise.
+	* posix/shim/lseek.cc (offsetof): Likewise.
+	(posix_lseek): Likewise.
+	* posix/shim/open.cc (posix_open): Likewise.
+	* posix/t/errno.cbl: Likewise.
+	* posix/t/exit.cbl: Likewise.
+	* posix/t/localtime.cbl: Likewise.
+	* posix/t/stat.cbl: Likewise.
+	* posix/udf/posix-exit.cbl: Likewise.
+	* posix/udf/posix-ftruncate.cbl: Likewise.
+	* posix/udf/posix-localtime.cbl: Likewise.
+	* posix/udf/posix-lseek.cbl: Likewise.
+	* posix/udf/posix-mkdir.cbl: Likewise.
+	* posix/udf/posix-open.cbl: Likewise.
+	* posix/udf/posix-read.cbl: Likewise.
+	* posix/udf/posix-stat.cbl: Likewise.
+	* posix/udf/posix-unlink.cbl: Likewise.
+	* posix/udf/posix-write.cbl: Likewise.
+	* valconv.cc: New exceptions.
+	* compat/gnu/cpy/cblproto.cpy: New file.
+	* compat/gnu/cpy/cbltypes.cpy: New file.
+	* compat/gnu/cpy/stored-char-length.cpy: New file.
+	* compat/gnu/lib/CBL_CLOSE_FILE.cbl: New file.
+	* compat/gnu/lib/CBL_CREATE_FILE.cbl: New file.
+	* compat/gnu/lib/CBL_OPEN_FILE.cbl: New file.
+	* compat/gnu/lib/CBL_READ_FILE.cbl: New file.
+	* compat/gnu/lib/CBL_WRITE_FILE.cbl: New file.
+	* compat/gnu/lib/cbl_alloc_mem.3: New file.
+	* compat/gnu/lib/cbl_alloc_mem.cbl3: New file.
+	* compat/gnu/lib/cbl_check_file_exist.3: New file.
+	* compat/gnu/lib/cbl_close_file.3: New file.
+	* compat/gnu/lib/cbl_create_file.3: New file.
+	* compat/gnu/lib/cbl_delete_file.3: New file.
+	* compat/gnu/lib/cbl_free_mem.3: New file.
+	* compat/gnu/lib/cbl_open_file.3: New file.
+	* compat/gnu/lib/cbl_read_file.3: New file.
+	* compat/gnu/lib/cbl_write_file.3: New file.
+	* compat/gnu/udf/cobrt-file-status.cbl: New file.
+	* posix/cpy/posix-close.cpy: New file.
+	* posix/cpy/posix-errno.cpy: New file.
+	* posix/cpy/posix-exit.cpy: New file.
+	* posix/cpy/posix-fstat.cpy: New file.
+	* posix/cpy/posix-ftruncate.cpy: New file.
+	* posix/cpy/posix-localtime.cpy: New file.
+	* posix/cpy/posix-lseek.cpy: New file.
+	* posix/cpy/posix-mkdir.cpy: New file.
+	* posix/cpy/posix-open.cpy: New file.
+	* posix/cpy/posix-read.cpy: New file.
+	* posix/cpy/posix-stat.cpy: New file.
+	* posix/cpy/posix-unlink.cpy: New file.
+	* posix/cpy/posix-write.cpy: New file.
+	* posix/shim/fstat.cc: New file.
+	* posix/udf/posix-close.cbl: New file.
+	* posix/udf/posix-errno.cbl: New file.
+	* posix/udf/posix-fstat.cbl: New file.
+
 2026-05-12  Robert Dubner  <rdubner@symas.com>
 
 	* charmaps.h (class charmap_t): Remove an abort().
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 033fea9e404f..23f4235159a6 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-29  Peter Damianov  <peter0x44@disroot.org>
+
+	* caf/shmem/shared_memory.c (shared_memory_init): Use
+	MapViewOfFileEx instead of MapViewOfFileExNuma.
+
 2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/93727
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index e7eab76bfe88..0743a251d5f6 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR c/122892
+	* allocator.c (_Static_assert): Add asserts for the values of
+	GOMP_OMP_PREDEF_ALLOC_CGROUP and GOMP_OMP_PREDEF_ALLOC_PTEAM.
+
 2026-05-27  Tobias Burnus  <tburnus@baylibre.com>
 
 	* libgomp.texi (Foreign-runtime support for AMD GPUs,
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 28c2c72fbf7a..605d241a613c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,16 @@
+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

From dhruvc@gcc.gnu.org  Sat May 30 14:26:07 2026
From: dhruvc@gcc.gnu.org (Dhruv Chawla)
Date: Sat, 30 May 2026 14:26:07 +0000 (GMT)
Subject: [gcc r17-1036] libstdc++: Fix typos in various files
Message-ID: <20260530142607.CF2474BA798F@sourceware.org>

https://gcc.gnu.org/g:b1263bca56ea82e555ddccf6729042a25805580c

commit r17-1036-gb1263bca56ea82e555ddccf6729042a25805580c
Author: Dhruv Chawla <dhruvc@nvidia.com>
Date:   Thu May 14 09:28:27 2026 +0000

    libstdc++: Fix typos in various files
    
    Signed-off-by: Dhruv Chawla <dhruvc@nvidia.com>
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/acinclude.m4                                         | 4 ++--
 libstdc++-v3/configure                                            | 6 +++---
 libstdc++-v3/configure.ac                                         | 2 +-
 libstdc++-v3/doc/doxygen/doxygroups.cc                            | 2 +-
 libstdc++-v3/doc/doxygen/stdheader.cc                             | 2 +-
 libstdc++-v3/include/bits/basic_string.h                          | 2 +-
 libstdc++-v3/include/bits/chrono.h                                | 2 +-
 libstdc++-v3/include/bits/chrono_io.h                             | 2 +-
 libstdc++-v3/include/bits/cpyfunc_impl.h                          | 2 +-
 libstdc++-v3/include/bits/funcref_impl.h                          | 4 ++--
 libstdc++-v3/include/bits/locale_conv.h                           | 2 +-
 libstdc++-v3/include/bits/mofunc_impl.h                           | 2 +-
 libstdc++-v3/include/bits/shared_ptr_base.h                       | 2 +-
 libstdc++-v3/include/bits/simd_details.h                          | 4 ++--
 libstdc++-v3/include/bits/stl_algo.h                              | 4 ++--
 libstdc++-v3/include/bits/stl_deque.h                             | 2 +-
 libstdc++-v3/include/bits/stl_iterator.h                          | 2 +-
 libstdc++-v3/include/bits/stl_map.h                               | 2 +-
 libstdc++-v3/include/bits/stl_multimap.h                          | 2 +-
 libstdc++-v3/include/bits/stl_multiset.h                          | 2 +-
 libstdc++-v3/include/bits/stl_set.h                               | 2 +-
 libstdc++-v3/include/bits/unicode.h                               | 2 +-
 libstdc++-v3/include/bits/unique_ptr.h                            | 2 +-
 libstdc++-v3/include/bits/version.h                               | 2 +-
 libstdc++-v3/include/experimental/bits/simd.h                     | 2 +-
 libstdc++-v3/include/experimental/bits/simd_fixed_size.h          | 2 +-
 libstdc++-v3/include/experimental/bits/simd_x86_conversions.h     | 4 ++--
 libstdc++-v3/include/ext/concurrence.h                            | 2 +-
 libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp | 4 ++--
 .../ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp  | 2 +-
 .../ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp      | 2 +-
 .../ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp      | 2 +-
 libstdc++-v3/include/ext/pb_ds/tree_policy.hpp                    | 2 +-
 libstdc++-v3/include/ext/pb_ds/trie_policy.hpp                    | 4 ++--
 libstdc++-v3/include/parallel/multiway_merge.h                    | 2 +-
 libstdc++-v3/include/pstl/parallel_backend_tbb.h                  | 8 ++++----
 libstdc++-v3/include/tr1/shared_ptr.h                             | 2 +-
 libstdc++-v3/libsupc++/hash_bytes.cc                              | 2 +-
 libstdc++-v3/libsupc++/vmi_class_type_info.cc                     | 2 +-
 libstdc++-v3/src/c++17/fast_float/fast_float.h                    | 4 ++--
 40 files changed, 53 insertions(+), 53 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index dfdf96cd09d4..13fb32af1e30 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -733,7 +733,7 @@ dnl Assumes cross_compiling bits already done, and with_cross_host in
 dnl particular.
 dnl
 dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir.
-dnl config/gxx-include-dir.m4 must be kept consistant with this as well.
+dnl config/gxx-include-dir.m4 must be kept consistent with this as well.
 AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
   glibcxx_toolexecdir=no
   glibcxx_toolexeclibdir=no
@@ -4026,7 +4026,7 @@ if test x$enable_symvers = xsun ; then
     *)
       # Unlikely to work.
       AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
-      AC_MSG_WARN([=== you are not targetting Solaris 2.])
+      AC_MSG_WARN([=== you are not targeting Solaris 2.])
       AC_MSG_WARN([=== Symbol versioning will be disabled.])
       enable_symvers=no
       ;;
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index cdc912c79896..7c921ed282a2 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16201,7 +16201,7 @@ pic_mode='default'
 postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
 
 # Possibly disable most of the library.
-## TODO: Consider skipping unncessary tests altogether in this case, rather
+## TODO: Consider skipping unnecessary tests altogether in this case, rather
 ## than just ignoring the results.  Faster /and/ more correct, win win.
 
   # Check whether --enable-hosted-libstdcxx was given.
@@ -51308,8 +51308,8 @@ if test x$enable_symvers = xsun ; then
       # Unlikely to work.
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
 $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
-$as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targeting Solaris 2." >&5
+$as_echo "$as_me: WARNING: === you are not targeting Solaris 2." >&2;}
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
 $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
       enable_symvers=no
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index f81dccdeef70..2b1a6ff4193f 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -159,7 +159,7 @@ pic_mode='default'
 postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
 
 # Possibly disable most of the library.
-## TODO: Consider skipping unncessary tests altogether in this case, rather
+## TODO: Consider skipping unnecessary tests altogether in this case, rather
 ## than just ignoring the results.  Faster /and/ more correct, win win.
 GLIBCXX_ENABLE_HOSTED
 
diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc
index 00d945ceba00..3a5de2afaea8 100644
--- a/libstdc++-v3/doc/doxygen/doxygroups.cc
+++ b/libstdc++-v3/doc/doxygen/doxygroups.cc
@@ -47,7 +47,7 @@
  *  interface.
 */
 /** @namespace __gnu_internal
- *  @brief GNU implemenation details, not for public use or
+ *  @brief GNU implementation details, not for public use or
  *  export. Used only when anonymous namespaces cannot be substituted.
 */
 /** @namespace std::experimental
diff --git a/libstdc++-v3/doc/doxygen/stdheader.cc b/libstdc++-v3/doc/doxygen/stdheader.cc
index cb5d17a4f1f7..1920544c9671 100644
--- a/libstdc++-v3/doc/doxygen/stdheader.cc
+++ b/libstdc++-v3/doc/doxygen/stdheader.cc
@@ -26,7 +26,7 @@ std::map<std::string_view, std::string_view>  headers;
 
 void init_map()
 {
-    // Enter the glamourous world of data entry!!  Maintain these!
+    // Enter the glamorous world of data entry!!  Maintain these!
     // Because the map_header function removes common prefixes and suffixes,
     // a header "bits/st[dl]_foo.h" will automatically map to "foo" if that
     // is a standard header, so we don't need to list those cases here.
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index c1871633f1b5..23e6979f03d7 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -4608,7 +4608,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #endif
 
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
-  // DR 1261. Insufficent overloads for to_string / to_wstring
+  // DR 1261. Insufficient overloads for to_string / to_wstring
 
   _GLIBCXX_NODISCARD
   inline string
diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index d639cfaa4851..cf8e7e84321d 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1217,7 +1217,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     // To support the (forward) evolution of the library's defined
     // clocks, wrap inside inline namespace so that the current
-    // defintions of system_clock, steady_clock, and
+    // definitions of system_clock, steady_clock, and
     // high_resolution_clock types are uniquely mangled. This way, new
     // code can use the latests clocks, while the library can contain
     // compatibility definitions for previous versions.  At some
diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index a8b73f1569e6..f8bb485d165b 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -164,7 +164,7 @@ namespace __detail
 }
 /// @endcond
 
-  /** Return an object that asssociates timezone info with a local time.
+  /** Return an object that associates timezone info with a local time.
    *
    * A `chrono::local_time` object has no timezone associated with it. This
    * function creates an object that allows formatting a `local_time` as
diff --git a/libstdc++-v3/include/bits/cpyfunc_impl.h b/libstdc++-v3/include/bits/cpyfunc_impl.h
index 580295a5d635..f293718900b9 100644
--- a/libstdc++-v3/include/bits/cpyfunc_impl.h
+++ b/libstdc++-v3/include/bits/cpyfunc_impl.h
@@ -170,7 +170,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       copyable_function&
       operator=(copyable_function&& __x) noexcept
       {
-	// Standard requires support of self assigment, by specifying it as
+	// Standard requires support of self assignment, by specifying it as
 	// copy and swap.
 	if (this != std::addressof(__x)) [[likely]]
 	  {
diff --git a/libstdc++-v3/include/bits/funcref_impl.h b/libstdc++-v3/include/bits/funcref_impl.h
index 9fc8432b42be..db85f173aab9 100644
--- a/libstdc++-v3/include/bits/funcref_impl.h
+++ b/libstdc++-v3/include/bits/funcref_impl.h
@@ -78,7 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       using _ArgsSignature = _Res(_ArgTypes...) noexcept(_Noex);
       using _TargetQuals = int _GLIBCXX_MOF_CV&;
 
-      // [func.wrap.ref.ctor]/1 is-invokable-using
+      // [func.wrap.ref.ctor]/1 is-invocable-using
       template<typename... _Tps>
 	static constexpr bool __is_invocable_using
 	  = __conditional_t<_Noex,
@@ -101,7 +101,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	requires (!is_same_v<remove_cv_t<_Vt>, function_ref>)
 	       && (!is_member_pointer_v<_Vt>)
 	       // We deviate from standard by having this condition, that forces
-	       // function references to use _Fn* constructors. This simplies
+	       // function references to use _Fn* constructors. This simplifies
 	       // implementation and provide better diagnostic when used in
 	       // constant expression (above constructor is not constexpr).
 	       && (!is_function_v<_Vt>)
diff --git a/libstdc++-v3/include/bits/locale_conv.h b/libstdc++-v3/include/bits/locale_conv.h
index 5ef557cc1e1f..1d2f17d3f8e5 100644
--- a/libstdc++-v3/include/bits/locale_conv.h
+++ b/libstdc++-v3/include/bits/locale_conv.h
@@ -286,7 +286,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt, "wstring_convert")
       { }
 
-      /** Construct with an initial converstion state.
+      /** Construct with an initial conversion state.
        *
        * @param  __pcvt The facet to use for conversions.
        * @param  __state Initial conversion state.
diff --git a/libstdc++-v3/include/bits/mofunc_impl.h b/libstdc++-v3/include/bits/mofunc_impl.h
index 91a78bfca018..15823ab66683 100644
--- a/libstdc++-v3/include/bits/mofunc_impl.h
+++ b/libstdc++-v3/include/bits/mofunc_impl.h
@@ -162,7 +162,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       move_only_function&
       operator=(move_only_function&& __x) noexcept
       {
-	// Standard requires support of self assigment, by specifying it as
+	// Standard requires support of self assignment, by specifying it as
 	// copy and swap.
 	if (this != std::addressof(__x)) [[likely]]
 	  {
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 7366f1e04702..88cac4a06f41 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -891,7 +891,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr size_t
       _S_tail()
       {
-	// The array elemenent type.
+	// The array element type.
 	using _Tp = typename allocator_traits<_Alloc>::value_type;
 
 	// The space needed to store a _Sp_counted_array object.
diff --git a/libstdc++-v3/include/bits/simd_details.h b/libstdc++-v3/include/bits/simd_details.h
index e2002b6de824..fb4edf5b0767 100644
--- a/libstdc++-v3/include/bits/simd_details.h
+++ b/libstdc++-v3/include/bits/simd_details.h
@@ -284,7 +284,7 @@ namespace simd
    *
    * @tparam _Np    The number of elements.
    * @tparam _Nreg  The number of registers needed to store @p _Np elements.
-   * @tparam _Var   Determines how complex value-types are layed out and whether mask types use
+   * @tparam _Var   Determines how complex value-types are laid out and whether mask types use
    *                bit-masks or vector-masks.
    */
   template <int _Np, int _Nreg, underlying_type_t<_AbiVariant> _Var>
@@ -919,7 +919,7 @@ namespace simd
    * On IvyBridge, (vec<float> == 0.f) == (rebind_t<int, vec<float>> == 0) does not compile. It does
    * compile on basically every other target, though. This is due to the difference in ABI tag:
    * _Abi<8, 1, [...]> vs. _Abi<8, 2, [...]> (8 elements, 1 vs. 2 registers).
-   * I know how to define this funtion for libstdc++ to avoid interconvertible masks. The question
+   * I know how to define this function for libstdc++ to avoid interconvertible masks. The question
    * is whether we can specify this in general for C++29.
    *
    * Idea: Is rebind_t<integer-from<...>, mask>::abi_type the same type as
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index adf9b9e0f280..b1a6a10d589e 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -479,7 +479,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return  True if the range @p [__first,__last) is partioned by @p __pred,
+   *  @return  True if the range @p [__first,__last) is partitioned by @p __pred,
    *  i.e. if all elements that satisfy @p __pred appear before those that
    *  do not.
   */
@@ -3542,7 +3542,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 #pragma GCC diagnostic pop
 
   /**
-   *  @brief  Checks whether a permutaion of the second sequence is equal
+   *  @brief  Checks whether a permutation of the second sequence is equal
    *          to the first sequence.
    *  @ingroup non_mutating_algorithms
    *  @param  __first1  Start of first range.
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index 28f61d2ccd37..29a3f1b62896 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -1837,7 +1837,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	insert_range(const_iterator __pos, _Rg&& __rg);
 
       /**
-       * @brief Prepend a range at the begining of the deque.
+       * @brief Prepend a range at the beginning of the deque.
        * @param __rg A range of values that are convertible to `value_type`.
        * @since C++23
        */
diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index ea083543c1d4..747e4a44c274 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -1744,7 +1744,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator==(const move_iterator<_Iterator>& __x,
 	       const move_iterator<_Iterator>& __y)
-    // N.B. No contraints, x.base() == y.base() is always well-formed.
+    // N.B. No constraints, x.base() == y.base() is always well-formed.
     { return __x.base() == __y.base(); }
 
 #ifdef __cpp_lib_three_way_comparison
diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index 88a8faab9244..c7d3e9c3b735 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -262,7 +262,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       && _Alloc_traits::_S_always_equal())
       : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
 
-      /// Allocator-extended initialier-list constructor.
+      /// Allocator-extended initializer-list constructor.
       map(initializer_list<value_type> __l, const allocator_type& __a)
       : _M_t(_Pair_alloc_type(__a))
       { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
diff --git a/libstdc++-v3/include/bits/stl_multimap.h b/libstdc++-v3/include/bits/stl_multimap.h
index 6f4e425d7710..04f54cb16611 100644
--- a/libstdc++-v3/include/bits/stl_multimap.h
+++ b/libstdc++-v3/include/bits/stl_multimap.h
@@ -253,7 +253,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       && _Alloc_traits::_S_always_equal())
       : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
 
-      /// Allocator-extended initialier-list constructor.
+      /// Allocator-extended initializer-list constructor.
       multimap(initializer_list<value_type> __l, const allocator_type& __a)
       : _M_t(_Pair_alloc_type(__a))
       { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
diff --git a/libstdc++-v3/include/bits/stl_multiset.h b/libstdc++-v3/include/bits/stl_multiset.h
index 64047ad7631f..3a9f6260e6af 100644
--- a/libstdc++-v3/include/bits/stl_multiset.h
+++ b/libstdc++-v3/include/bits/stl_multiset.h
@@ -263,7 +263,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       && _Alloc_traits::_S_always_equal())
       : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { }
 
-      /// Allocator-extended initialier-list constructor.
+      /// Allocator-extended initializer-list constructor.
       multiset(initializer_list<value_type> __l, const allocator_type& __a)
       : _M_t(_Key_alloc_type(__a))
       { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h
index ce35e28cde78..10e45b0be4cf 100644
--- a/libstdc++-v3/include/bits/stl_set.h
+++ b/libstdc++-v3/include/bits/stl_set.h
@@ -267,7 +267,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       && _Alloc_traits::_S_always_equal())
       : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { }
 
-      /// Allocator-extended initialier-list constructor.
+      /// Allocator-extended initializer-list constructor.
       set(initializer_list<value_type> __l, const allocator_type& __a)
       : _M_t(_Key_alloc_type(__a))
       { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
diff --git a/libstdc++-v3/include/bits/unicode.h b/libstdc++-v3/include/bits/unicode.h
index 09f7c2d7bfb3..8f414f1091e7 100644
--- a/libstdc++-v3/include/bits/unicode.h
+++ b/libstdc++-v3/include/bits/unicode.h
@@ -97,7 +97,7 @@ namespace __unicode
   // read outside those bounds (incrementing or decrementing at the boundary
   // is erroneously idempotent).
   //
-  // On construction, the iterator attemps to decode a single code point from
+  // On construction, the iterator attempts to decode a single code point from
   // the input range and then encode it into an internal buffer in the output
   // format, e.g. if the input is UTF-8 and the output is UTF-16, it might read
   // three char8_t code units from the input and store two char16_t code units
diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index f4b2e33d13de..4199496d73b7 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -1129,7 +1129,7 @@ namespace __detail
     make_unique(_Args&&...) = delete;
 
 #if __cplusplus > 201703L
-  /** Create a default-initialied object owned by a `unique_ptr`.
+  /** Create a default-initialized object owned by a `unique_ptr`.
    *  @tparam _Tp A non-array object type.
    *  @returns A `unique_ptr<_Tp>` that owns the new object.
    *  @since C++20
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index c31893e34c4e..33eecbfb83b0 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -41,7 +41,7 @@
 //
 // This will generate the FTMs you named, and let you use them in your code as
 // if it was user code.  All macros are also exposed under __glibcxx_NAME even
-// if unwanted, to permit bits and other FTMs to depend on them for condtional
+// if unwanted, to permit bits and other FTMs to depend on them for conditional
 // computation without exposing extra FTMs to user code.
 
 #ifdef _GLIBCXX_SYSHDR
diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h
index ce0867fd8eb8..5b3f622c6ea0 100644
--- a/libstdc++-v3/include/experimental/bits/simd.h
+++ b/libstdc++-v3/include/experimental/bits/simd.h
@@ -1516,7 +1516,7 @@ template <>
 template <typename _Tp, size_t _Np, typename = void>
   struct __vector_type_n {};
 
-// substition failure for 0-element case
+// substitution failure for 0-element case
 template <typename _Tp>
   struct __vector_type_n<_Tp, 0, void> {};
 
diff --git a/libstdc++-v3/include/experimental/bits/simd_fixed_size.h b/libstdc++-v3/include/experimental/bits/simd_fixed_size.h
index c0f1ae422f86..40787ef77317 100644
--- a/libstdc++-v3/include/experimental/bits/simd_fixed_size.h
+++ b/libstdc++-v3/include/experimental/bits/simd_fixed_size.h
@@ -734,7 +734,7 @@ template <typename _Tp, size_t _Np,
 		    __to_simd_tuple<_Tp, _Np - _R::_S_first_size, 0>(
 		      __fromX...)};
 
-	// ill-formed if some unforseen pattern is needed
+	// ill-formed if some unforeseen pattern is needed
 	else
 	  __assert_unreachable<_Tp>();
       }
diff --git a/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h b/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
index ee2497fba0c0..d105c22d7a3f 100644
--- a/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
+++ b/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
@@ -1301,7 +1301,7 @@ template <typename _To, typename _V, typename _Traits>
 		// split low 32-bits, because if __hi32 is a small negative
 		// number, the 24-bit mantissa may lose important information if
 		// any of the high 8 bits of __lo32 is set, leading to
-		// catastrophic cancelation in the FMA
+		// catastrophic cancellation in the FMA
 		const __m512 __hi16
 		  = _mm512_cvtepu32_ps(_mm512_set1_epi32(0xffff0000u) & __lo32);
 		const __m512 __lo16
@@ -1347,7 +1347,7 @@ template <typename _To, typename _V, typename _Traits>
 	else if constexpr (__f64_to_ibw) //{{{2
 	  {
 	    // one-arg __f64_to_ibw goes via _SimdWrapper<int, ?>. The fallback
-	    // would go via two independet conversions to _SimdWrapper<_To> and
+	    // would go via two independent conversions to _SimdWrapper<_To> and
 	    // subsequent interleaving. This is better, because f64->__i32
 	    // allows to combine __v0 and __v1 into one register: if constexpr
 	    // (__z_to_x || __y_to_x) {
diff --git a/libstdc++-v3/include/ext/concurrence.h b/libstdc++-v3/include/ext/concurrence.h
index b840bd3a7d73..02ccff552ba8 100644
--- a/libstdc++-v3/include/ext/concurrence.h
+++ b/libstdc++-v3/include/ext/concurrence.h
@@ -53,7 +53,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // _S_atomic    multi-threaded code using atomic operations.
   enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
 
-  // Compile time constant that indicates prefered locking policy in
+  // Compile time constant that indicates preferred locking policy in
   // the current configuration.
   _GLIBCXX17_INLINE const _Lock_policy __default_lock_policy =
 #ifndef __GTHREADS
diff --git a/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp b/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
index 551b3b67766a..5c21d062ffa3 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
@@ -253,7 +253,7 @@ namespace detail
       typedef ov_tree_set<Key, null_type, at0t, at1t, _Alloc> type;
   };
 
-    /// Specialization colision-chaining hash map.
+    /// Specialization collision-chaining hash map.
   template<typename Key, typename Mapped, typename _Alloc, typename Policy_Tl>
     struct container_base_dispatch<Key, Mapped, _Alloc, cc_hash_tag, Policy_Tl>
     {
@@ -275,7 +275,7 @@ namespace detail
 			at3t::value, at4t, at2t> 	       	type;
   };
 
-    /// Specialization colision-chaining hash set.
+    /// Specialization collision-chaining hash set.
   template<typename Key, typename _Alloc, typename Policy_Tl>
     struct container_base_dispatch<Key, null_type, _Alloc, cc_hash_tag,
 				   Policy_Tl>
diff --git a/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
index 38afd944397a..db0e99a9c975 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
@@ -67,7 +67,7 @@ namespace __gnu_pbds
     /// Decides whether a metadata object should be moved to the front
     /// of the list. A list-update based containers object will call
     /// this method to decide whether to move a node to the front of
-    /// the list. The method shoule return true if the node should be
+    /// the list. The method should return true if the node should be
     /// moved to the front of the list.
     bool
     operator()(metadata_reference) const;
diff --git a/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
index 78b4bc9ae469..a59206f08fcc 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
@@ -35,7 +35,7 @@
 
 /**
  * @file tree_policy/sample_tree_node_update.hpp
- * Contains a samle node update functor.
+ * Contains a sample node update functor.
  */
 
 #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
diff --git a/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
index 582aa5846af2..fcf81122fd2e 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
@@ -35,7 +35,7 @@
 
 /**
  * @file trie_policy/sample_trie_node_update.hpp
- * Contains a samle node update functor.
+ * Contains a sample node update functor.
  */
 
 #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
diff --git a/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp b/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
index c324758552c3..3e399c73d433 100644
--- a/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
@@ -93,7 +93,7 @@ namespace __gnu_pbds
     inline iterator
     find_by_order(size_type);
 
-    /// Returns the order of a key within a sequence. For exapmle, if
+    /// Returns the order of a key within a sequence. For example, if
     /// r_key is the smallest key, this method will return 0; if r_key
     /// is a key between the smallest and next key, this method will
     /// return 1; if r_key is a key larger than the largest key, this
diff --git a/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp b/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
index 091fd764c7f0..a08d81251027 100644
--- a/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
@@ -283,7 +283,7 @@ namespace __gnu_pbds
     inline iterator
     find_by_order(size_type);
 
-    /// Returns the order of a key within a sequence. For exapmle, if
+    /// Returns the order of a key within a sequence. For example, if
     /// r_key is the smallest key, this method will return 0; if r_key
     /// is a key between the smallest and next key, this method will
     /// return 1; if r_key is a key larger than the largest key, this
@@ -291,7 +291,7 @@ namespace __gnu_pbds
     inline size_type
     order_of_key(key_const_reference) const;
 
-    /// Returns the order of a prefix within a sequence. For exapmle,
+    /// Returns the order of a prefix within a sequence. For example,
     /// if [b, e] is the smallest prefix, this method will return 0; if
     /// r_key is a key between the smallest and next key, this method
     /// will return 1; if r_key is a key larger than the largest key,
diff --git a/libstdc++-v3/include/parallel/multiway_merge.h b/libstdc++-v3/include/parallel/multiway_merge.h
index 5f32b32f4222..65ff6dbbbe13 100644
--- a/libstdc++-v3/include/parallel/multiway_merge.h
+++ b/libstdc++-v3/include/parallel/multiway_merge.h
@@ -1001,7 +1001,7 @@ namespace __gnu_parallel
   /**
    * @brief Stable sorting functor.
    *
-   * Used to reduce code instanciation in multiway_merge_sampling_splitting.
+   * Used to reduce code instantiation in multiway_merge_sampling_splitting.
    */
   template<bool __stable, class _RAIter, class _StrictWeakOrdering>
     struct _SamplingSorter
diff --git a/libstdc++-v3/include/pstl/parallel_backend_tbb.h b/libstdc++-v3/include/pstl/parallel_backend_tbb.h
index ff5236f39071..00a8b9fb635c 100644
--- a/libstdc++-v3/include/pstl/parallel_backend_tbb.h
+++ b/libstdc++-v3/include/pstl/parallel_backend_tbb.h
@@ -205,7 +205,7 @@ __parallel_transform_reduce(__pstl::__internal::__tbb_backend_tag, _ExecutionPol
                             _Up __u, _Tp __init, _Cp __combine, _Rp __brick_reduce)
 {
     __tbb_backend::__par_trans_red_body<_Index, _Up, _Tp, _Cp, _Rp> __body(__u, __init, __combine, __brick_reduce);
-    // The grain size of 3 is used in order to provide mininum 2 elements for each body
+    // The grain size of 3 is used in order to provide minimum 2 elements for each body
     tbb::this_task_arena::isolate(
         [__first, __last, &__body]() { tbb::parallel_reduce(tbb::blocked_range<_Index>(__first, __last, 3), __body); });
     return __body.sum();
@@ -740,7 +740,7 @@ class __merge_func
     _SizeType _M_zs;
     _Compare _M_comp;
     _LeafMerge _M_leaf_merge;
-    _SizeType _M_nsort; //number of elements to be sorted for partial_sort alforithm
+    _SizeType _M_nsort; //number of elements to be sorted for partial_sort algorithm
 
     static const _SizeType __merge_cut_off = _PSTL_MERGE_CUT_OFF;
 
@@ -1114,7 +1114,7 @@ class __stable_sort_func
     _Compare _M_comp;
     _LeafSort _M_leaf_sort;
     bool _M_root;
-    _SizeType _M_nsort; //zero or number of elements to be sorted for partial_sort alforithm
+    _SizeType _M_nsort; //zero or number of elements to be sorted for partial_sort algorithm
 
   public:
     __stable_sort_func(_RandomAccessIterator1 __xs, _RandomAccessIterator1 __xe, _RandomAccessIterator2 __zs,
@@ -1179,7 +1179,7 @@ __parallel_stable_sort(__pstl::__internal::__tbb_backend_tag, _ExecutionPolicy&&
         typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type _DifferenceType;
         const _DifferenceType __n = __xe - __xs;
         if (__nsort == __n)
-            __nsort = 0; // 'partial_sort' becames 'sort'
+            __nsort = 0; // 'partial_sort' becomes 'sort'
 
         const _DifferenceType __sort_cut_off = _PSTL_STABLE_SORT_CUT_OFF;
         if (__n > __sort_cut_off)
diff --git a/libstdc++-v3/include/tr1/shared_ptr.h b/libstdc++-v3/include/tr1/shared_ptr.h
index be04cdd0aa7d..906e258229a2 100644
--- a/libstdc++-v3/include/tr1/shared_ptr.h
+++ b/libstdc++-v3/include/tr1/shared_ptr.h
@@ -595,7 +595,7 @@ namespace tr1
         explicit
         __shared_ptr(std::auto_ptr<_Tp1>& __r)
 	: _M_ptr(__r.get()), _M_refcount()
-        { // TODO requries delete __r.release() well-formed
+        { // TODO requires delete __r.release() well-formed
 	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
 	  typedef int _IsComplete[sizeof(_Tp1)];
 	  _Tp1* __tmp = __r.get();
diff --git a/libstdc++-v3/libsupc++/hash_bytes.cc b/libstdc++-v3/libsupc++/hash_bytes.cc
index e789f661f787..7f3d92496973 100644
--- a/libstdc++-v3/libsupc++/hash_bytes.cc
+++ b/libstdc++-v3/libsupc++/hash_bytes.cc
@@ -29,7 +29,7 @@
 // This file also defines _Fnv_hash_bytes, another primitive with
 // exactly the same interface but using a different hash algorithm,
 // Fowler / Noll / Vo (FNV) Hash (type FNV-1a). The Murmur hash
-// function apears to be better in both speed and hash quality, and
+// function appears to be better in both speed and hash quality, and
 // FNV is provided primarily for backward compatibility.
 
 #include <bits/hash_bytes.h>
diff --git a/libstdc++-v3/libsupc++/vmi_class_type_info.cc b/libstdc++-v3/libsupc++/vmi_class_type_info.cc
index aabadfd50d28..5b880250991c 100644
--- a/libstdc++-v3/libsupc++/vmi_class_type_info.cc
+++ b/libstdc++-v3/libsupc++/vmi_class_type_info.cc
@@ -75,7 +75,7 @@ __do_find_public_src (ptrdiff_t src2dst,
 // to bias any optimizations. To that end we make no particular effort towards
 // early fail answers or early success answers. Instead we try to minimize
 // work by filling in things lazily (when we know we need the information),
-// and opportunisticly take early success or failure results.
+// and opportunistically take early success or failure results.
 bool __vmi_class_type_info::
 __do_dyncast (ptrdiff_t src2dst,
               __sub_kind access_path,
diff --git a/libstdc++-v3/src/c++17/fast_float/fast_float.h b/libstdc++-v3/src/c++17/fast_float/fast_float.h
index 3da58f2850ce..6a61defac93c 100644
--- a/libstdc++-v3/src/c++17/fast_float/fast_float.h
+++ b/libstdc++-v3/src/c++17/fast_float/fast_float.h
@@ -60,7 +60,7 @@ struct parse_options {
 
 /**
  * This function parses the character sequence [first,last) for a number. It parses floating-point numbers expecting
- * a locale-indepent format equivalent to what is used by std::strtod in the default ("C") locale.
+ * a locale-independent format equivalent to what is used by std::strtod in the default ("C") locale.
  * The resulting floating-point value is the closest floating-point values (using either float or double),
  * using the "round to even" convention for values that would otherwise fall right in-between two values.
  * That is, we provide exact parsing according to the IEEE standard.
@@ -2924,7 +2924,7 @@ fastfloat_really_inline bool rounds_to_nearest() noexcept {
   // However, it is expected to be much faster than the fegetround()
   // function call.
   //
-  // The volatile keywoard prevents the compiler from computing the function
+  // The volatile keyword prevents the compiler from computing the function
   // at compile-time.
   // There might be other ways to prevent compile-time optimizations (e.g., asm).
   // The value does not need to be std::numeric_limits<float>::min(), any small

From dhruvc@gcc.gnu.org  Sat May 30 14:26:23 2026
From: dhruvc@gcc.gnu.org (Dhruv Chawla)
Date: Sat, 30 May 2026 14:26:23 +0000 (GMT)
Subject: [gcc r17-1039] Re-flow lines made longer than 80 characters by typo
 fixes
Message-ID: <20260530142623.5344C4BA7989@sourceware.org>

https://gcc.gnu.org/g:fbf903e5b9f544810e3501fb56262ee393ff89a9

commit r17-1039-gfbf903e5b9f544810e3501fb56262ee393ff89a9
Author: Dhruv Chawla <dhruvc@nvidia.com>
Date:   Sun May 17 06:58:00 2026 +0000

    Re-flow lines made longer than 80 characters by typo fixes
    
    Signed-off-by: Dhruv Chawla <dhruvc@nvidia.com>
    
    gcc/ada/ChangeLog:
    
            * gnathtml.pl: Reflow long line.
    
    gcc/ChangeLog:
    
            * builtins.def: Reflow long line.
            * graphite-isl-ast-to-gimple.cc (graphite_copy_stmts_from_block): Likewise.
            * lto-streamer.h: Likewise.
            * prime-paths.cc (struct xpair): Likewise.
    
    gcc/fortran/ChangeLog:
    
            * gfortran.texi: Reflow long line.
    
    include/ChangeLog:
    
            * hsa.h: Reflow long line.
    
    libgcobol/ChangeLog:
    
            * README: Reflow long line.
    
    libiberty/ChangeLog:
    
            * simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow
            long line.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_algo.h: Reflow long line.

Diff:
---
 gcc/ada/gnathtml.pl                  |  8 ++++----
 gcc/builtins.def                     |  3 ++-
 gcc/fortran/gfortran.texi            |  8 ++++----
 gcc/graphite-isl-ast-to-gimple.cc    |  3 ++-
 gcc/lto-streamer.h                   |  3 ++-
 gcc/prime-paths.cc                   | 11 ++++++-----
 include/hsa.h                        |  6 +++---
 libgcobol/README                     |  4 ++--
 libiberty/simple-object-mach-o.c     |  4 ++--
 libstdc++-v3/include/bits/stl_algo.h |  6 +++---
 10 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/gcc/ada/gnathtml.pl b/gcc/ada/gnathtml.pl
index a6beadd29f8e..e552b6a14929 100644
--- a/gcc/ada/gnathtml.pl
+++ b/gcc/ada/gnathtml.pl
@@ -24,10 +24,10 @@
 #-----------------------------------------------------------------------------
 
 ## This script converts an Ada file (and its dependency files) to Html.
-## Keywords, comments and strings are color-highlighted. If the cross-referencing
-## information provided by Gnat (when not using the -gnatx switch) is found,
-## the html files will also have some cross-referencing features, i.e. if you
-## click on a type, its declaration will be displayed.
+## Keywords, comments and strings are color-highlighted. If the
+## cross-referencing information provided by Gnat (when not using the -gnatx
+## switch) is found, the html files will also have some cross-referencing
+## features, i.e. if you click on a type, its declaration will be displayed.
 ##
 ## To find more about the switches provided by this script, please use the
 ## following command :
diff --git a/gcc/builtins.def b/gcc/builtins.def
index ce9f29d419c9..e39c3427d77d 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -218,7 +218,8 @@ along with GCC; see the file COPYING3.  If not see
 	       false, true, true, ATTRS, false, \
 	       flag_openacc)
 /* Set NONANSI_P = false to enable the builtins also with -fno-nonansi-builtins,
-   esp. as -std=c++../c.. imply that flag and -fopenacc should be orthogonal.  */
+   esp. as -std=c++../c.. imply that flag and -fopenacc should be
+   orthogonal.  */
 #undef DEF_GOACC_BUILTIN_COMPILER
 #define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
   DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index d13f0bc06e66..12b95f4b19b7 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -4687,10 +4687,10 @@ then this needs to be set to the byte size of each character, i.e. @code{4} for
 a @code{CHARACTER (KIND=4)} string.  The length of the string is then returned
 in @code{opt_dst_charlen} (also for string arrays).
 @item @var{dst_data} @tab intent(inout) A pointer to the address the data is
-stored.  To prevent copying of data into an output buffer the address to the live
-data is returned here.  When a descriptor is provided also its data-member is
-set to that address.  When @var{may_realloc_dst} is set, then the memory may be
-reallocated by the remote function, which needs to be replicated by this
+stored.  To prevent copying of data into an output buffer the address to the
+live data is returned here.  When a descriptor is provided also its data-member
+is set to that address.  When @var{may_realloc_dst} is set, then the memory may
+be reallocated by the remote function, which needs to be replicated by this
 function.
 @item @var{opt_dst_charlen} @tab intent(inout)  When a char array is returned,
 this parameter is set to the length where applicable.  The value can also be
diff --git a/gcc/graphite-isl-ast-to-gimple.cc b/gcc/graphite-isl-ast-to-gimple.cc
index cfdde6ed0735..aa56771cad5e 100644
--- a/gcc/graphite-isl-ast-to-gimple.cc
+++ b/gcc/graphite-isl-ast-to-gimple.cc
@@ -1147,7 +1147,8 @@ void translate_isl_ast_to_gimple::
 graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
 				vec<tree> iv_map)
 {
-  /* Iterator pointing to the place where new statement (s) will be inserted.  */
+  /* Iterator pointing to the place where new statement (s) will be
+     inserted.  */
   gimple_stmt_iterator gsi_tgt = gsi_last_bb (new_bb);
 
   for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 8ed3b419ad58..b09869195fc8 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -268,7 +268,8 @@ public:
   /* Apply all changes in location cache.  Add locations into linemap and patch
      trees.  */
   bool apply_location_cache ();
-  /* Tree merging did not succeed; mark all changes in the cache as accepted.  */
+  /* Tree merging did not succeed; mark all changes in the cache as
+     accepted.  */
   void accept_location_cache ();
   /* Tree merging did succeed; throw away recent changes.  */
   void revert_location_cache ();
diff --git a/gcc/prime-paths.cc b/gcc/prime-paths.cc
index e1b02c2eb031..f111c72ca3a1 100644
--- a/gcc/prime-paths.cc
+++ b/gcc/prime-paths.cc
@@ -126,14 +126,15 @@ struct xpair
 
    The union of near/far is essentially a short-vector optimization, switching
    to a heap-allocated vector when necessary.  This happens relatively rarely
-   (usually maxes out at 1-2%), and the vertices that have more than 2 successors
-   also tend to have more than 4.  The root vertex tends to use the dynamic
-   vector because the subpaths are recorded as the successors of the root.
+   (usually maxes out at 1-2%), and the vertices that have more than 2
+   successors also tend to have more than 4.  The root vertex tends to use the
+   dynamic vector because the subpaths are recorded as the successors of the
+   root.
 
    Conceptually, this is a small map from vertex-id -> index and the API is
    modelled as such.  The insert and search functions are unrolled by hand when
-   using the small vector.  This has a noticeable performance impact on insert in
-   particular, and is not too complex since we know we are limited to 2
+   using the small vector.  This has a noticeable performance impact on insert
+   in particular, and is not too complex since we know we are limited to 2
    elements.
 
    Vertices are tagged with endofpath and inserted.  If endofpath is set, the
diff --git a/include/hsa.h b/include/hsa.h
index a0aa0eddbb94..b591103c7eb3 100644
--- a/include/hsa.h
+++ b/include/hsa.h
@@ -834,9 +834,9 @@ typedef enum {
   HSA_AGENT_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 5,
   /**
    * @deprecated Query ::HSA_ISA_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES
-   * for a given instruction set architecture supported by the agent instead.  If
-   * more than one ISA is supported by the agent, the returned value corresponds
-   * to the first ISA enumerated by ::hsa_agent_iterate_isas.
+   * for a given instruction set architecture supported by the agent instead.
+   * If more than one ISA is supported by the agent, the returned value
+   * corresponds to the first ISA enumerated by ::hsa_agent_iterate_isas.
    *
    * A bit-mask of ::hsa_default_float_rounding_mode_t values, representing the
    * default floating-point rounding modes supported by the agent in the Base
diff --git a/libgcobol/README b/libgcobol/README
index 7d78e313122b..63ee0d4cbc12 100644
--- a/libgcobol/README
+++ b/libgcobol/README
@@ -1,8 +1,8 @@
 The libgcobol is intended for use entirely and solely by executables created
 from COBOL source code by the GCOBOL "COBOL for GCC" front end.
 
-libgcobol.a can be statically linked in, but it makes for very large binaries. We
-tend to use that for debugging the GCOBOL compiler, and not much else
+libgcobol.a can be statically linked in, but it makes for very large binaries.
+We tend to use that for debugging the GCOBOL compiler, and not much else
 
 Many of the functions in the library are called by the executable code generated
 by the GCOBOL compiler through GIMPLE tags, and thus prototypes -- which are 
diff --git a/libiberty/simple-object-mach-o.c b/libiberty/simple-object-mach-o.c
index 6ab6655fa984..c6dfe697497d 100644
--- a/libiberty/simple-object-mach-o.c
+++ b/libiberty/simple-object-mach-o.c
@@ -1194,8 +1194,8 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
       unsigned int i;
 
       /* Write the section header for the wrapper.  */
-      /* Account for any initial alignment - which becomes the alignment for this
-	 created section.  */
+      /* Account for any initial alignment - which becomes the alignment for
+	 this created section.  */
 
       secsize = (offset - index[0]);
       if (!simple_object_mach_o_write_section_header (sobj, descriptor,
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index b1a6a10d589e..f15b3e4992f6 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -479,9 +479,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return  True if the range @p [__first,__last) is partitioned by @p __pred,
-   *  i.e. if all elements that satisfy @p __pred appear before those that
-   *  do not.
+   *  @return  True if the range @p [__first,__last) is partitioned by @p
+   *  __pred, i.e. if all elements that satisfy @p __pred appear before those
+   *  that do not.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR

From gccadmin@gcc.gnu.org  Sun May 31 00:17:05 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 31 May 2026 00:17:05 +0000 (GMT)
Subject: [gcc r17-1048] Daily bump.
Message-ID: <20260531001705.CCA784BA798D@sourceware.org>

https://gcc.gnu.org/g:315868489ef09a2bd5efca75a2e58bc5e4003e46

commit r17-1048-g315868489ef09a2bd5efca75a2e58bc5e4003e46
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun May 31 00:16:35 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   6 +
 fixincludes/ChangeLog   |   8 +
 gcc/ChangeLog           | 885 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |  51 +++
 gcc/algol68/ChangeLog   |  41 +++
 gcc/analyzer/ChangeLog  |  31 ++
 gcc/c-family/ChangeLog  |  26 ++
 gcc/c/ChangeLog         |  39 +++
 gcc/cobol/ChangeLog     |  25 ++
 gcc/cp/ChangeLog        |  95 ++++++
 gcc/d/ChangeLog         |  30 ++
 gcc/fortran/ChangeLog   |  52 +++
 gcc/jit/ChangeLog       |  22 ++
 gcc/lto/ChangeLog       |  15 +
 gcc/objc/ChangeLog      |   9 +
 gcc/testsuite/ChangeLog |  39 +++
 include/ChangeLog       |  24 ++
 libatomic/ChangeLog     |   6 +
 libbacktrace/ChangeLog  |   5 +
 libcody/ChangeLog       |   4 +
 libcpp/ChangeLog        |  22 ++
 libdecnumber/ChangeLog  |  16 +
 libga68/ChangeLog       |   7 +
 libgcc/ChangeLog        |  10 +
 libgcobol/ChangeLog     |  34 ++
 libgfortran/ChangeLog   |  32 ++
 libgm2/ChangeLog        |   4 +
 libgomp/ChangeLog       |  20 ++
 libiberty/ChangeLog     |  38 +++
 libitm/ChangeLog        |   9 +
 libquadmath/ChangeLog   |   7 +
 libstdc++-v3/ChangeLog  |  51 +++
 libvtv/ChangeLog        |   8 +
 lto-plugin/ChangeLog    |   6 +
 35 files changed, 1678 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index b64b9ee454ef..87fb1128df85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* Makefile.def: Fix typos.
+	* Makefile.in: Likewise.
+	* Makefile.tpl: Likewise.
+
 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
 
 	* MAINTAINERS (Contributing under the DCO): Secondary sort
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index cffe20394d34..b81f8b4981ab 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* README: Fix typos.
+	* fixinc.in: Likewise.
+	* fixincl.c (quoted_file_exists): Likewise.
+	* fixlib.c (fix_path_separators): Likewise.
+	* inclhack.def: Likewise.
+
 2026-02-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	PR libstdc++/113450
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 03089a4fea09..72d0b30cb4b9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,888 @@
+2026-05-30  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Avoid
+	constant-logical diagnostic.
+
+2026-05-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.md (insvsi_intermal):
+	Rename from 'insvsi'.
+	(insvsi): New expansion pattern that also addresses situations
+	where the DEPBITS machine instruction is unavailable.
+
+2026-05-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+
+	* config/xtensa/xtensa.md (*splice_bits):
+	Remove.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* builtins.def: Reflow long line.
+	* graphite-isl-ast-to-gimple.cc (graphite_copy_stmts_from_block): Likewise.
+	* lto-streamer.h: Likewise.
+	* prime-paths.cc (struct xpair): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Fix typos.
+	(vect_preserves_scalar_order_p): Likewise.
+	(vect_slp_analyze_instance_dependence): Likewise.
+	(vect_enhance_data_refs_alignment): Likewise.
+	(vect_check_gather_scatter): Likewise.
+	(vect_grouped_store_supported): Likewise.
+	* tree-vect-generic.cc (type_for_widest_vector_mode): Likewise.
+	* tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors_avx512): Likewise.
+	(get_live_virtual_operand_on_edge): Likewise.
+	(vect_can_peel_nonlinear_iv_p): Likewise.
+	(vect_do_peeling): Likewise.
+	* tree-vect-loop.cc (vec_init_loop_exit_info): Likewise.
+	(vect_verify_full_masking_avx512): Likewise.
+	(vect_verify_loop_lens): Likewise.
+	(vect_analyze_loop_costing): Likewise.
+	(vect_analyze_loop_2): Likewise.
+	(vect_analyze_loop): Likewise.
+	(vect_is_simple_reduction): Likewise.
+	(vect_create_epilog_for_reduction): Likewise.
+	(vectorizable_lane_reducing): Likewise.
+	(vectorizable_reduction): Likewise.
+	(vectorizable_live_operation): Likewise.
+	(vect_record_loop_len): Likewise.
+	(scale_profile_for_vect_loop): Likewise.
+	(vect_update_ivs_after_vectorizer_for_early_breaks): Likewise.
+	* tree-vect-patterns.cc (vect_recog_bit_insert_pattern): Likewise.
+	(vect_recog_build_binary_gimple_stmt): Likewise.
+	(vect_recog_sat_sub_pattern_transform): Likewise.
+	(vect_recog_sat_sub_pattern): Likewise.
+	(add_code_for_floorceilround_divmod): Likewise.
+	(vect_recog_bool_pattern): Likewise.
+	(struct vect_recog_func): Likewise.
+	* tree-vect-slp-patterns.cc (class complex_pattern): Likewise.
+	(compatible_complex_nodes_p): Likewise.
+	* tree-vect-slp.cc (vect_slp_tree_uniform_p): Likewise.
+	(vect_def_types_match): Likewise.
+	(vect_record_max_nunits): Likewise.
+	(vect_analyze_slp_instance): Likewise.
+	(vect_lower_load_permutations): Likewise.
+	(vect_optimize_slp_pass::is_compatible_layout): Likewise.
+	* tree-vect-stmts.cc (vect_get_strided_load_store_ops): Likewise.
+	(vectorizable_simd_clone_call): Likewise.
+	(vectorizable_store): Likewise.
+	(vectorizable_load): Likewise.
+	(vectorizable_condition): Likewise.
+	(vectorizable_early_exit): Likewise.
+	* tree-vectorizer.cc (vector_costs::compare_inside_loop_cost): Likewise.
+	* tree-vectorizer.h (enum vect_reduction_type): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* tree-ssa-alias-compare.h: Fix typos.
+	* tree-ssa-alias.cc (ptr_deref_may_alias_decl_p): Likewise.
+	(ao_ref_alignment): Likewise.
+	(component_ref_to_zero_sized_trailing_array_p): Likewise.
+	(access_path_may_continue_p): Likewise.
+	(nonoverlapping_component_refs_p_1): Likewise.
+	(nonoverlapping_array_refs_p): Likewise.
+	(refs_may_alias_p_2): Likewise.
+	(ref_maybe_used_by_call_p_1): Likewise.
+	(stmt_kills_ref_p): Likewise.
+	* tree-ssa-ccp.cc: Likewise.
+	* tree-ssa-dce.cc (mark_all_reaching_defs_necessary_1): Likewise.
+	(propagate_necessity): Likewise.
+	(propagate_counts): Likewise.
+	(eliminate_unnecessary_stmts): Likewise.
+	* tree-ssa-dom.cc (pass_dominator::execute): Likewise.
+	* tree-ssa-dse.cc: Likewise.
+	* tree-ssa-forwprop.cc (new_src_based_on_copy): Likewise.
+	(optimize_agr_copyprop_1): Likewise.
+	(pass_forwprop::execute): Likewise.
+	* tree-ssa-ifcombine.cc (tree_ssa_ifcombine_bb_1): Likewise.
+	(pass_tree_ifcombine::execute): Likewise.
+	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
+	* tree-ssa-loop-ch.cc (loop_combined_static_and_iv_p): Likewise.
+	(should_duplicate_loop_header_p): Likewise.
+	* tree-ssa-loop-im.cc (get_coldest_out_loop): Likewise.
+	(determine_max_movement): Likewise.
+	(execute_sm_exit): Likewise.
+	(hoist_memory_references): Likewise.
+	* tree-ssa-loop-ivcanon.cc (constant_after_peeling): Likewise.
+	(loop_edge_to_cancel): Likewise.
+	(unloop_loops): Likewise.
+	(try_unroll_loop_completely): Likewise.
+	(adjust_loop_info_after_peeling): Likewise.
+	(tree_unroll_loops_completely_1): Likewise.
+	* tree-ssa-loop-ivopts.cc (struct iv_inv_expr_ent): Likewise.
+	(dump_cand): Likewise.
+	(group_compare_offset): Likewise.
+	(split_address_groups): Likewise.
+	(get_computation_aff_1): Likewise.
+	(iv_ca_dump): Likewise.
+	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Likewise.
+	(number_of_iterations_popcount): Likewise.
+	(idx_infer_loop_bounds): Likewise.
+	(infer_loop_bounds_from_signedness): Likewise.
+	(discover_iteration_bound_by_body_walk): Likewise.
+	(loop_exits_before_overflow): Likewise.
+	* tree-ssa-loop-niter.h: Likewise.
+	* tree-ssa-loop-prefetch.cc (should_issue_prefetch_p): Likewise.
+	(schedule_prefetches): Likewise.
+	* tree-ssa-loop-split.cc (split_loop): Likewise.
+	(find_vdef_in_loop): Likewise.
+	(get_cond_branch_to_split_loop): Likewise.
+	* tree-ssa-math-opts.cc (powi_as_mults): Likewise.
+	(expand_pow_as_sqrts): Likewise.
+	(gimple_expand_builtin_pow): Likewise.
+	(convert_mult_to_widen): Likewise.
+	(convert_plusminus_to_widen): Likewise.
+	* tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Likewise.
+	(factor_out_conditional_operation): Likewise.
+	(cond_if_else_store_replacement_1): Likewise.
+	(execute_over_cond_phis): Likewise.
+	* tree-ssa-phiprop.cc (can_handle_load): Likewise.
+	(propagate_with_phi): Likewise.
+	* tree-ssa-pre.cc (get_or_alloc_expr_for_nary): Likewise.
+	(sorted_array_from_bitmap_set): Likewise.
+	(value_dies_in_block_x): Likewise.
+	(compute_antic_aux): Likewise.
+	* tree-ssa-propagate.cc (substitute_and_fold_engine::substitute_and_fold): Likewise.
+	* tree-ssa-reassoc.cc (get_rank): Likewise.
+	(remove_visited_stmt_chain): Likewise.
+	* tree-ssa-sccvn.cc (vn_reference_eq): Likewise.
+	(vn_reference_lookup_call): Likewise.
+	(vn_nary_op_eq): Likewise.
+	(vn_nary_op_insert_into): Likewise.
+	(visit_reference_op_call): Likewise.
+	(visit_phi): Likewise.
+	(eliminate_dom_walker::eliminate_stmt): Likewise.
+	(eliminate_dom_walker::eliminate_cleanup): Likewise.
+	(process_bb): Likewise.
+	* tree-ssa-scopedtables.cc (hashable_expr_equal_p): Likewise.
+	* tree-ssa-structalias.cc (determine_global_memory_access): Likewise.
+	(clear_dependence_clique): Likewise.
+	* tree-ssa-threadbackward.cc (back_threader_profitability::profitable_path_p): Likewise.
+	* tree-ssa-threadedge.cc (propagate_threaded_block_debug_into): Likewise.
+	* tree-ssa-uninit.cc (warn_uninit): Likewise.
+	(execute_late_warn_uninitialized): Likewise.
+	* tree-ssanames.cc (range_info_get_range): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* tree-assume.cc (assume_query::calculate_phi): Fix typos.
+	* tree-cfg.cc (assign_discriminators): Likewise.
+	(stmt_starts_bb_p): Likewise.
+	(move_stmt_op): Likewise.
+	(ifconvertable_edge): Likewise.
+	* tree-cfgcleanup.cc (maybe_remove_forwarder_block): Likewise.
+	(cleanup_tree_cfg_noloop): Likewise.
+	* tree-chrec.cc (scev_is_linear_expression): Likewise.
+	* tree-complex.cc (expand_complex_div_wide): Likewise.
+	* tree-core.h (enum built_in_class): Likewise.
+	* tree-data-ref.cc (dump_alias_pair): Likewise.
+	(create_ifn_alias_checks): Likewise.
+	* tree-data-ref.h (struct data_dependence_relation): Likewise.
+	* tree-eh.cc (lower_try_finally_fallthru_label): Likewise.
+	(lower_eh_dispatch): Likewise.
+	* tree-if-conv.cc (idx_within_array_bound): Likewise.
+	(base_object_writable): Likewise.
+	(ifcvt_memrefs_wont_trap): Likewise.
+	(get_loop_body_in_if_conv_order): Likewise.
+	(predicate_scalar_phi): Likewise.
+	* tree-inline.cc (remap_type_1): Likewise.
+	(declare_return_variable): Likewise.
+	(inline_forbidden_p): Likewise.
+	(estimate_num_insns): Likewise.
+	(copy_decl_for_dup_finish): Likewise.
+	* tree-into-ssa.cc (get_ssa_name_ann): Likewise.
+	(clear_ssa_name_info): Likewise.
+	(insert_updated_phi_nodes_compare_uids): Likewise.
+	(update_ssa): Likewise.
+	* tree-loop-distribution.cc (enum partition_kind): Likewise.
+	(struct partition): Likewise.
+	(class loop_distribution): Likewise.
+	(loop_distribution::classify_partition): Likewise.
+	(loop_distribution::pg_add_dependence_edges): Likewise.
+	(add_partition_graph_edge): Likewise.
+	(free_partition_graph_vdata): Likewise.
+	(pg_unmark_merged_alias_ddrs): Likewise.
+	(version_loop_by_alias_check): Likewise.
+	* tree-object-size.cc (gimplify_size_expressions): Likewise.
+	(object_sizes_execute): Likewise.
+	* tree-parloops.cc (parloops_is_simple_reduction): Likewise.
+	(transform_to_exit_first_loop_alt): Likewise.
+	* tree-predcom.cc (pcom_worker::suitable_component_p): Likewise.
+	(pcom_worker::determine_roots_comp): Likewise.
+	(prepare_initializers_chain_store_elim): Likewise.
+	(pcom_worker::tree_predictive_commoning_loop): Likewise.
+	* tree-profile.cc (condition_uid): Likewise.
+	(cov_length): Likewise.
+	(tree_profiling): Likewise.
+	* tree-scalar-evolution.cc (scev_dfs::add_to_evolution_1): Likewise.
+	(scev_reset): Likewise.
+	(expression_expensive_p): Likewise.
+	* tree-sra.cc (struct access): Likewise.
+	(build_access_from_call_arg): Likewise.
+	(path_comparable_for_same_access): Likewise.
+	(child_would_conflict_in_acc): Likewise.
+	(sra_modify_call_arg): Likewise.
+	* tree-switch-conversion.cc (can_log2): Likewise.
+	(switch_conversion::exp_index_transform): Likewise.
+	* tree-switch-conversion.h (enum cluster_type): Likewise.
+	* tree-vrp.cc (remove_unreachable::handle_early): Likewise.
+	* tree.cc (build5): Likewise.
+	(get_file_function_name): Likewise.
+	(build_opaque_vector_type): Likewise.
+	(array_ref_flexible_size_p): Likewise.
+	(verify_type_variant): Likewise.
+	(gimple_canonical_types_compatible_p): Likewise.
+	* tree.h (decl_debug_args_insert): Likewise.
+	(strip_pointer_types): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* rtl-ssa/access-utils.h (drop_memory_access): Fix typos.
+	* rtl-ssa/accesses.cc (clobber_info::recompute_group): Likewise.
+	* rtl-ssa/accesses.h: Likewise.
+	* rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Likewise.
+	* rtl-ssa/functions.h: Likewise.
+	* rtl-ssa/insns.cc (function_info::record_use): Likewise.
+	* rtl-ssa/insns.h: Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* lto-cgraph.cc (get_alias_symbol): Fix typos.
+	(input_node): Likewise.
+	(input_varpool_node): Likewise.
+	* lto-ltrans-cache.cc: Likewise.
+	* lto-streamer-in.cc (lto_location_cache::revert_location_cache): Likewise.
+	(lto_location_cache::input_location_and_block): Likewise.
+	(lto_location_cache::input_location): Likewise.
+	(lto_input_location): Likewise.
+	* lto-streamer-out.cc (lto_variably_modified_type_p): Likewise.
+	(lto_is_streamable): Likewise.
+	(DFS::DFS): Likewise.
+	(cmp_symbol_files): Likewise.
+	(lto_output): Likewise.
+	* lto-streamer.h (enum LTO_tags): Likewise.
+	* lto-wrapper.cc (merge_flto_options): Likewise.
+	(run_gcc): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* ipa-comdats.cc: Fix typos.
+	* ipa-cp.cc (good_cloning_opportunity_p): Likewise.
+	(dump_profile_updates): Likewise.
+	(update_counts_for_self_gen_clones): Likewise.
+	(update_profiling_info): Likewise.
+	(adjust_refs_in_act_callers): Likewise.
+	(struct cloning_opportunity_ranking): Likewise.
+	* ipa-fnsummary.cc (evaluate_conditions_for_known_args): Likewise.
+	(unmodified_parm_or_parm_agg_item): Likewise.
+	(guards_builtin_unreachable): Likewise.
+	(analyze_function_body): Likewise.
+	(estimate_edge_devirt_benefit): Likewise.
+	* ipa-fnsummary.h (cross_module_call_p): Likewise.
+	* ipa-free-lang-data.cc (fld_simplified_type_name): Likewise.
+	(free_lang_data_in_decl): Likewise.
+	* ipa-icf-gimple.cc (func_checker::compare_decl): Likewise.
+	(func_checker::compatible_types_p): Likewise.
+	(func_checker::compare_gimple_asm): Likewise.
+	* ipa-icf.cc (sem_function::hash_stmt): Likewise.
+	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
+	(sem_item_optimizer::traverse_congruence_split): Likewise.
+	(sem_item_optimizer::process_cong_reduction): Likewise.
+	* ipa-inline-transform.cc (mark_all_inlined_calls_cdtor): Likewise.
+	(preserve_function_body_p): Likewise.
+	* ipa-inline.cc (enum can_inline_edge_by_limits_flags): Likewise.
+	(can_early_inline_edge_p): Likewise.
+	(early_inliner): Likewise.
+	* ipa-locality-cloning.cc (edge_redirectable_p): Likewise.
+	(clone_node_as_needed): Likewise.
+	(partition_callchain): Likewise.
+	* ipa-modref.cc (modref_eaf_analysis::merge_with_ssa_name): Likewise.
+	* ipa-param-manipulation.cc (ipa_param_adjustments::get_surviving_params): Likewise.
+	(purge_all_uses): Likewise.
+	(ipa_param_body_adjustments::mark_dead_statements): Likewise.
+	(replace_with_mapped_expr): Likewise.
+	(ipa_param_body_adjustments::get_new_param_chain): Likewise.
+	(record_argument_state): Likewise.
+	(ipa_param_body_adjustments::perform_cfun_body_modifications): Likewise.
+	* ipa-param-manipulation.h (struct ipa_replace_map): Likewise.
+	* ipa-polymorphic-call.cc (ipa_polymorphic_call_context::combine_with): Likewise.
+	* ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Likewise.
+	(noted_fnptr_hasher::equal): Likewise.
+	(ipa_set_ancestor_jf): Likewise.
+	(check_stmt_for_type_change): Likewise.
+	(param_type_may_change_p): Likewise.
+	(find_dominating_aa_status): Likewise.
+	(parm_ref_data_pass_through_p): Likewise.
+	(build_agg_jump_func_from_list): Likewise.
+	(analyze_agg_content_value): Likewise.
+	(ipa_single_noted_fnptr_in_record): Likewise.
+	(ipa_make_edge_direct_to_target): Likewise.
+	(combine_controlled_uses_counters): Likewise.
+	(ipa_duplicate_jump_function): Likewise.
+	(ipa_write_jump_function): Likewise.
+	(useful_ipcp_transformation_info_p): Likewise.
+	* ipa-prop.h (struct GTY): Likewise.
+	* ipa-reference.cc (ipa_reference_var_uid): Likewise.
+	(ipa_reference_get_written_global): Likewise.
+	(union_static_var_sets): Likewise.
+	* ipa-split.cc (split_function): Likewise.
+	* ipa-sra.cc (isra_track_scalar_value_uses): Likewise.
+	(process_scan_results): Likewise.
+	(flip_all_hints_pessimistic): Likewise.
+	(flip_all_param_hints_pessimistic): Likewise.
+	* ipa-strub.cc (get_strub_mode_attr_parm): Likewise.
+	(compute_strub_mode): Likewise.
+	* ipa-utils.cc (ipa_merge_profiles): Likewise.
+	(recursive_call_p): Likewise.
+	(stmt_may_terminate_function_p): Likewise.
+	(find_always_executed_bbs): Likewise.
+	* ipa-utils.h (type_with_linkage_p): Likewise.
+	(lto_streaming_expected_p): Likewise.
+	* ipa-visibility.cc (varpool_node::externally_visible_p): Likewise.
+	* ipa.cc (update_inlined_to_pointer): Likewise.
+	(enqueue_node): Likewise.
+	(process_references): Likewise.
+	(set_readonly_bit): Likewise.
+	(clear_addressable_bit): Likewise.
+	(BOTTOM): Likewise.
+	(propagate_single_user): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* gimple-array-bounds.cc (trailing_array): Fix typos.
+	* gimple-crc-optimization.cc (crc_optimization::set_defs): Likewise.
+	* gimple-fold.cc (get_range_strlen): Likewise.
+	(can_refer_decl_in_current_unit_p): Likewise.
+	(gimple_fold_builtin_bcopy): Likewise.
+	(get_range_strlen_tree): Likewise.
+	(gimple_fold_builtin_stpcpy): Likewise.
+	(fold_stmt_1): Likewise.
+	(fold_truth_andor_for_ifcombine): Likewise.
+	(gimple_fold_stmt_to_constant): Likewise.
+	(fold_const_aggregate_ref): Likewise.
+	(gimple_get_virt_method_for_vtable): Likewise.
+	(rewrite_to_defined_unconditional): Likewise.
+	(gimple_build): Likewise.
+	(gimple_convert): Likewise.
+	* gimple-harden-control-flow.cc (pass_harden_control_flow_redundancy::execute): Likewise.
+	* gimple-loop-interchange.cc (loop_cand::can_interchange_p): Likewise.
+	(loop_cand::analyze_lcssa_phis): Likewise.
+	(should_interchange_loops): Likewise.
+	* gimple-loop-jam.cc (tree_loop_unroll_and_jam): Likewise.
+	* gimple-low.cc (find_assumption_locals_r): Likewise.
+	* gimple-match-exports.cc (try_conditional_simplification): Likewise.
+	* gimple-predicate-analysis.cc (find_matching_predicate_in_rest_chains): Likewise.
+	(uninit_analysis::func_t::phi_arg_set): Likewise.
+	(predicate::dump): Likewise.
+	* gimple-predicate-analysis.h (class uninit_analysis): Likewise.
+	* gimple-range-cache.cc (sbr_vector::bb_range_p): Likewise.
+	(block_range_cache::set_bb_range): Likewise.
+	* gimple-range-gori.cc (gori_compute::compute_operand_range): Likewise.
+	(gori_stmt_info::gori_stmt_info): Likewise.
+	(gori_calc_operands): Likewise.
+	(gori_on_edge): Likewise.
+	(gori_name_helper): Likewise.
+	* gimple-range-infer.h: Likewise.
+	* gimple-range-phi.cc (phi_group::phi_group): Likewise.
+	(phi_group::calculate_using_modifier): Likewise.
+	(phi_analyzer::operator[]): Likewise.
+	* gimple-range-phi.h: Likewise.
+	* gimple-range.cc (dom_ranger::range_of_stmt): Likewise.
+	* gimple-ssa-isolate-paths.cc (is_addr_local): Likewise.
+	(warn_return_addr_local): Likewise.
+	* gimple-ssa-pta-constraints.cc (get_constraint_for_ssa_var): Likewise.
+	(find_func_clobbers): Likewise.
+	(create_variable_info_for): Likewise.
+	(associate_varinfo_to_alias): Likewise.
+	* gimple-ssa-sccopy.cc: Likewise.
+	* gimple-ssa-split-paths.cc (count_stmts_in_block): Likewise.
+	(poor_ifcvt_pred): Likewise.
+	(is_feasible_trace): Likewise.
+	* gimple-ssa-sprintf.cc (get_int_range): Likewise.
+	(handle_printf_call): Likewise.
+	* gimple-ssa-store-merging.cc (get_location_for_stmts): Likewise.
+	* gimple-ssa-strength-reduction.cc: Likewise.
+	* gimple-ssa-warn-access.cc (call_arg): Likewise.
+	* gimple-ssa-warn-restrict.cc (builtin_memref::offset_out_of_bounds): Likewise.
+	(builtin_access::overlap_size): Likewise.
+	(maybe_diag_access_bounds): Likewise.
+	* gimple.def (GIMPLE_PHI): Likewise.
+	* gimple.h (gimple_goto_dest): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* genattrtab.cc (min_fn): Fix typos.
+	(get_attr_order): Likewise.
+	(optimize_attrs): Likewise.
+	* genautomata.cc (struct unit_usage): Likewise.
+	* gengtype-state.cc (s_expr_writer::write_any_indent): Likewise.
+	(write_state): Likewise.
+	* gengtype.cc (struct file_rule_st): Likewise.
+	(walk_type): Likewise.
+	(write_roots): Likewise.
+	* genmatch.cc (expr::gen_transform): Likewise.
+	(usage): Likewise.
+	* genopinit.cc (open_outfile): Likewise.
+	(handle_overloaded_code_for): Likewise.
+	(main): Likewise.
+	* genoutput.cc (operand_data_hasher::equal): Likewise.
+	* genpreds.cc (FOR_ALL_CONSTRAINTS): Likewise.
+	* genrecog.cc (prune_invalid_results): Likewise.
+	(split_out_patterns): Likewise.
+	* gensupport.cc (parse_section): Likewise.
+	(convert_syntax): Likewise.
+	(mark_operands_from_match_dup): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* sanopt.cc: Fix typos.
+	* sched-deps.cc (sched_analyze_2): Likewise.
+	* sel-sched-ir.cc (alloc_target_context): Likewise.
+	(av_set_union_and_live): Likewise.
+	(make_regions_from_loop_nest): Likewise.
+	* sel-sched-ir.h (struct _list_iterator): Likewise.
+	(struct succs_info): Likewise.
+	(SUCCS_ALL): Likewise.
+	* sel-sched.cc (moveup_expr): Likewise.
+	(moveup_expr_cached): Likewise.
+	(get_spec_check_type_for_insn): Likewise.
+	(get_expr_cost): Likewise.
+	(find_place_for_bookkeeping): Likewise.
+	(update_and_record_unavailable_insns): Likewise.
+	(move_op_at_first_insn): Likewise.
+	(calculate_new_fences): Likewise.
+	* shrink-wrap.cc (live_edge_for_reg): Likewise.
+	(try_shrink_wrapping): Likewise.
+	* simplify-rtx.cc
+	(simplify_context::simplify_logical_relational_operation): Likewise.
+	(simplify_const_vector_subreg): Likewise.
+	* spellcheck.cc (assert_not_suggested_for): Likewise.
+	* stringpool.h: Likewise.
+	* sym-exec/sym-exec-state.cc (state::do_shift_right): Likewise.
+	(state::get_parent_with_const_child): Likewise.
+	(state::add_numbers): Likewise.
+	(state::add_equal_cond): Likewise.
+	(state::add_not_equal_cond): Likewise.
+	* sym-exec/sym-exec-state.h (class state): Likewise.
+	* symbol-summary.h: Likewise.
+	* symtab.cc (symtab_node::noninterposable_alias): Likewise.
+	(symtab_node::equal_address_to): Likewise.
+	* system.h (gcc_stablesort_r): Likewise.
+	* target-hooks-macros.h: Likewise.
+	* target.def: Likewise.
+	* targhooks.cc (default_floatn_mode): Likewise.
+	(default_floatn_builtin_p): Likewise.
+	(default_builtin_vector_alignment_reachable): Likewise.
+	(default_addr_space_for_artificial_rodata): Likewise.
+	* text-art/ruler.cc (x_ruler::update_layout): Likewise.
+	* text-art/ruler.h (class x_ruler): Likewise.
+	* timevar.def (TV_ISOLATE_ERRONEOUS_PATHS): Likewise.
+	* trans-mem.cc (ipa_tm_scan_irr_block): Likewise.
+	(ipa_tm_execute): Likewise.
+	* typed-splay-tree.h (class typed_splay_tree): Likewise.
+	* ubsan.cc (instrument_bool_enum_load): Likewise.
+	* value-prof.cc: Likewise.
+	* value-range.cc (irange::union_append): Likewise.
+	(irange::snap): Likewise.
+	(irange::snap_subranges): Likewise.
+	(irange::get_bitmask): Likewise.
+	* value-range.h (irange_bitmask::get_precision): Likewise.
+	* value-relation.cc (dom_oracle::next_relation): Likewise.
+	(block_relation_iterator::block_relation_iterator): Likewise.
+	* var-tracking.cc (shared_hash_find): Likewise.
+	(emit_note_insn_var_location): Likewise.
+	* varasm.cc (mergeable_constant_section): Likewise.
+	(finish_tm_clone_pairs): Likewise.
+	(default_binds_local_p_3): Likewise.
+	* vr-values.cc (simplify_using_ranges::simplify): Likewise.
+	* vtable-verify.cc: Likewise.
+	* warning-control.cc (has_warning_spec): Likewise.
+	* wide-int.cc (wi::from_mpz): Likewise.
+	(wi::force_to_size): Likewise.
+	(wi::divmod_internal): Likewise.
+	* wide-int.h (wi::bitreverse): Likewise.
+	(wi::umin): Likewise.
+	(wi::mul_high): Likewise.
+	(wi::div_trunc): Likewise.
+	(wi::sdiv_trunc): Likewise.
+	(wi::udiv_trunc): Likewise.
+	(wi::div_floor): Likewise.
+	(wi::sdiv_floor): Likewise.
+	(wi::udiv_floor): Likewise.
+	(wi::div_ceil): Likewise.
+	(wi::udiv_ceil): Likewise.
+	(wi::div_round): Likewise.
+	(wi::gcd): Likewise.
+	(wi::mod_trunc): Likewise.
+	(wi::smod_trunc): Likewise.
+	(wi::umod_trunc): Likewise.
+	(wi::mod_floor): Likewise.
+	(wi::umod_floor): Likewise.
+	(wi::mod_ceil): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* omp-expand.cc (expand_oacc_collapse_vars): Likewise.
+	(expand_omp_for_init_vars): Likewise.
+	(expand_omp_for): Likewise.
+	(expand_omp_atomic_fetch_op): Likewise.
+	(build_omp_regions_1): Likewise.
+	* omp-general.cc (omp_is_allocatable_or_ptr): Likewise.
+	* omp-low.cc (lower_rec_input_clauses): Likewise.
+	(lower_omp): Likewise.
+	* omp-offload.cc (oacc_validate_dims): Likewise.
+	(oacc_loop_process): Likewise.
+	(oacc_loop_fixed_partitions): Likewise.
+	(oacc_loop_auto_partitions): Likewise.
+	(execute_oacc_device_lower): Likewise.
+	* omp-simd-clone.cc (simd_clone_clauses_extract): Likewise.
+	(ipa_simd_modify_stmt_ops): Likewise.
+	* optabs-query.cc (lshift_cheap_p): Likewise.
+	* optabs-query.h (trapv_binoptab_p): Likewise.
+	(get_vec_cmp_icode): Likewise.
+	* optabs.cc (expand_binop): Likewise.
+	(expand_vec_perm_var): Likewise.
+	(expand_compare_and_swap_loop): Likewise.
+	(expand_atomic_load): Likewise.
+	(maybe_optimize_fetch_op): Likewise.
+	(can_reuse_operands_p): Likewise.
+	* opts-global.cc (init_options_once): Likewise.
+	* opts.h (struct cl_option): Likewise.
+	* pair-fusion.cc (pair_fusion_bb_info::try_fuse_pair): Likewise.
+	* pair-fusion.h (enum class): Likewise.
+	* passes.cc (account_profile_1): Likewise.
+	* path-coverage.cc (instrument_prime_paths): Likewise.
+	* plugin.cc (get_event_last): Likewise.
+	* pointer-query.cc (handle_min_max_size): Likewise.
+	(handle_array_ref): Likewise.
+	(handle_ssa_name): Likewise.
+	* poly-int.h (struct if_lossless): Likewise.
+	(POLY_POLY_COEFF): Likewise.
+	* postreload-gcse.cc (gcse_after_reload_main): Likewise.
+	* predict.cc (expr_expected_value_1): Likewise.
+	(is_exit_with_zero_arg): Likewise.
+	(predict_paths_for_bb): Likewise.
+	(estimate_bb_frequencies): Likewise.
+	(rebuild_frequencies): Likewise.
+	(make_pass_rebuild_frequencies): Likewise.
+	* pretty-print-format-impl.h: Likewise.
+	* pretty-print.h: Likewise.
+	* prime-paths.cc (struct xpair): Likewise.
+	(edge_matrix): Likewise.
+	(test_build_ccfg): Likewise.
+	* print-rtl.cc (rtx_writer::print_rtx_operand_code_r): Likewise.
+	* profile-count.h (class profile_probability): Likewise.
+	* pta-andersen.cc (merge_node_constraints): Likewise.
+	(add_graph_edge): Likewise.
+	* range-op.cc (bool): Likewise.
+	(operator_cast::op1_range): Likewise.
+	(operator_bitwise_and::wi_fold): Likewise.
+	(operator_bitwise_and::op1_range): Likewise.
+	* range-op.h: Likewise.
+	* read-md.h (class md_reader): Likewise.
+	* read-rtl-function.cc (lookup_reg_by_dump_name): Likewise.
+	* real.cc: Likewise.
+	* recog.h: Likewise.
+	* ree.cc (find_and_remove_re): Likewise.
+	* reg-notes.def (REG_CFA_NOTE): Likewise.
+	* reginfo.cc (reg_allocno_class): Likewise.
+	* reload1.cc (will_delete_init_insn_p): Likewise.
+	(emit_reload_insns): Likewise.
+	* resource.cc (mark_referenced_resources): Likewise.
+	(mark_target_live_regs): Likewise.
+	* rtl.def (DEFINE_SPECIAL_PREDICATE): Likewise.
+	(COND): Likewise.
+	(DEFINE_SUBST): Likewise.
+	* rtl.h (const_vec_series_p_1): Likewise.
+	(const_vec_series_p): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* emit-rtl.h (struct rtl_data): Fix typos.
+	(struct address_reload_context): Likewise.
+	* explow.cc (anti_adjust_stack_and_probe): Likewise.
+	* explow.h (anti_adjust_stack_and_probe_stack_clash): Likewise.
+	* expmed.cc (store_bit_field_using_insv): Likewise.
+	(expand_mult): Likewise.
+	(emit_store_flag_force): Likewise.
+	(equivalent_cmp_code): Likewise.
+	* expr.cc (class op_by_pieces_d): Likewise.
+	(op_by_pieces_d::run): Likewise.
+	(use_group_regs): Likewise.
+	(get_def_for_expr): Likewise.
+	(emit_move_insn): Likewise.
+	(expand_expr_real): Likewise.
+	(expand_expr_real_gassign): Likewise.
+	* ext-dce.cc (ext_dce_process_uses): Likewise.
+	(ext_dce_process_bb): Likewise.
+	(ext_dce_rd_confluence_n): Likewise.
+	* fibonacci_heap.h (fibonacci_heap::cut): Likewise.
+	* fold-const.cc (combine_comparisons): Likewise.
+	(operand_compare::operand_equal_p): Likewise.
+	(fold_view_convert_vector_encoding): Likewise.
+	(fold_truth_andor): Likewise.
+	* fold-const.h: Likewise.
+	* function.cc (temp_address_hasher::equal): Likewise.
+	(gen_call_used_regs_seq): Likewise.
+	* gcc-diagnostic-spec.cc (GTY): Likewise.
+	(warning_suppressed_at): Likewise.
+	* gcc.cc (driver::maybe_run_linker): Likewise.
+	* gcov.cc (print_usage): Likewise.
+	(strip_extention): Likewise.
+	* gdbhooks.py: Likewise.
+	* gimplify.cc (gimplify_decl_expr): Likewise.
+	(gimplify_modify_expr): Likewise.
+	(oacc_default_clause): Likewise.
+	(omp_notice_variable): Likewise.
+	* graph.cc (draw_cfg_nodes): Likewise.
+	* graphite-dependences.cc (scop_get_reads_and_writes): Likewise.
+	* graphite-isl-ast-to-gimple.cc (graphite_copy_stmts_from_block): Likewise.
+	* haifa-sched.cc (model_set_excess_costs): Likewise.
+	(analyze_set_insn_for_autopref): Likewise.
+	(autopref_multipass_dfa_lookahead_guard): Likewise.
+	* hash-map-traits.h (HASH_MAP_TRAITS_H): Likewise.
+	* hosthooks.h (struct host_hooks): Likewise.
+	* ifcvt.cc (noce_try_sign_bit_splat): Likewise.
+	* input.cc (line_table_test::line_table_test): Likewise.
+	* internal-fn.def (PHI): Likewise.
+	* internal-fn.h (enum ifn_goacc_loop_kind): Likewise.
+	* ira-build.cc (create_insn_allocnos): Likewise.
+	* ira-color.cc (ira_mark_new_stack_slot): Likewise.
+	* ira-int.h: Likewise.
+	* ira.cc (struct sloc): Likewise.
+	* json-parsing.cc (parser::require_one_of): Likewise.
+	* langhooks.h (struct lang_hooks_for_decls): Likewise.
+	* libgdiagnostics.cc: Likewise.
+	* libgdiagnostics.h (diagnostic_manager_write_patch): Likewise.
+	* loop-invariant.cc (MAX_CANON_ADDR_PARTS): Likewise.
+	* lra-assigns.cc (reload_pseudo_compare_func): Likewise.
+	* lra-constraints.cc (match_reload): Likewise.
+	(process_alt_operands): Likewise.
+	(process_address_1): Likewise.
+	(lra_constraints): Likewise.
+	(inherit_in_ebb): Likewise.
+	* lra-eliminations.cc (init_elim_table): Likewise.
+	* lra-remat.cc: Likewise.
+	* machmode.h (struct int_n_data_t): Likewise.
+	* mem-stats.h (mem_alloc_description::register_descriptor): Likewise.
+	(mem_alloc_description::unregister_descriptor): Likewise.
+	* mode-switching.cc (optimize_mode_switching): Likewise.
+	* modulo-sched.cc (schedule_reg_moves): Likewise.
+	(optimize_sc): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* adjust-alignment.cc (pass_adjust_alignment::execute): Fix typos.
+	* alias.cc (alias_set_subset_of): Likewise.
+	(alias_ptr_types_compatible_p): Likewise.
+	(get_alias_set): Likewise.
+	(record_component_aliases): Likewise.
+	(base_alias_check): Likewise.
+	* alloc-pool.h: Likewise.
+	* asan.cc (insert_if_then_before_iter): Likewise.
+	(asan_expand_check_ifn): Likewise.
+	(hwasan_expand_check_ifn): Likewise.
+	* asan.h (sanitize_flags_p): Likewise.
+	* asm-toplevel.cc (analyze_toplevel_extended_asm): Likewise.
+	* attr-fnspec.h: Likewise.
+	* attribs.cc (decl_attributes): Likewise.
+	* auto-profile.cc (function_instance::match): Likewise.
+	(function_instance::remove_icall_target): Likewise.
+	(autofdo_source_profile::offline_external_functions): Likewise.
+	(afdo_set_bb_count): Likewise.
+	(scale_bbs): Likewise.
+	(afdo_adjust_guessed_profile): Likewise.
+	* basic-block.h (find_fallthru_edge): Likewise.
+	* bbitmap.h: Likewise.
+	* bitmap.cc (bitmap_list_find_element): Likewise.
+	* bitmap.h: Likewise.
+	* btfout.cc (BTF_INFO_SECTION_FLAGS): Likewise.
+	(btf_asm_type): Likewise.
+	(output_btf_vars): Likewise.
+	(btf_add_used_type_1): Likewise.
+	* builtins.cc (string_length): Likewise.
+	(expand_builtin_setjmp_setup): Likewise.
+	(inline_expand_builtin_bytecmp): Likewise.
+	* builtins.def: Likewise.
+	* ccmp.cc (get_compare_parts): Likewise.
+	(expand_ccmp_next): Likewise.
+	* ccmp.h: Likewise.
+	* cfg.cc (update_bb_profile_for_threading): Likewise.
+	* cfganal.cc (post_order_compute): Likewise.
+	* cfgbuild.cc (find_many_sub_basic_blocks): Likewise.
+	* cfgexpand.cc (vars_ssa_cache::dump): Likewise.
+	(add_scope_conflicts_1): Likewise.
+	(set_parm_rtl): Likewise.
+	(expand_one_ssa_partition): Likewise.
+	(expand_one_var): Likewise.
+	(discover_nonconstant_array_refs_r): Likewise.
+	(pass_expand::execute): Likewise.
+	* cfgloop.cc (get_estimated_loop_iterations): Likewise.
+	* cfgloopanal.cc (loop_count_in): Likewise.
+	* cfgloopmanip.cc (loop_exit_for_scaling): Likewise.
+	(update_loop_exit_probability_scale_dom_bbs): Likewise.
+	* cgraph.cc (add_detected_attribute_1): Likewise.
+	(cgraph_edge::maybe_hot_p): Likewise.
+	* cgraph.h (struct cgraph_node): Likewise.
+	* cif-code.def (ORIGINALLY_INDIRECT_CALL): Likewise.
+	* collect2.cc (main): Likewise.
+	* combine.cc (simplify_comparison): Likewise.
+	(distribute_notes): Likewise.
+	* configure.ac: Likewise.
+	* coretypes.h (enum pad_direction): Likewise.
+	* coroutine-passes.cc (make_pass_coroutine_lower_builtins): Likewise.
+	* coverage.cc (coverage_compute_profile_id): Likewise.
+	* cse.cc (struct set): Likewise.
+	(try_back_substitute_reg): Likewise.
+	(count_stores): Likewise.
+	* cselib.cc (struct cselib_hasher): Likewise.
+	* ctfc.cc (ctfc_get_num_ctf_vars): Likewise.
+	(ctf_add_string): Likewise.
+	(ctf_add_function_arg): Likewise.
+	* ctfc.h (GTY): Likewise.
+	(CTF_AUX_STRTAB): Likewise.
+	(ctfc_get_num_ctf_vars): Likewise.
+	* ctfout.cc (ctf_asm_sou_lmember): Likewise.
+	(output_ctf_header): Likewise.
+	* debug.h: Likewise.
+	* defaults.h: Likewise.
+	* df-problems.cc (df_simulate_fixup_sets): Likewise.
+	(df_simulate_finalize_backwards): Likewise.
+	* diagnostic-context-rich-location.cc
+	(lazy_diagnostic_context_path::make_inner_path): Likewise.
+	* diagnostics/color.cc (auto_enable_urls): Likewise.
+	* diagnostics/context.h: Likewise.
+	* diagnostics/sarif-sink.cc (get_message_from_result): Likewise.
+	* double-int.cc (double_int::lrotate): Likewise.
+	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
+	* dwarf2cfi.cc (dwarf2out_frame_debug_expr): Likewise.
+	* dwarf2ctf.cc (ctf_get_AT_data_member_location): Likewise.
+	(handle_ctf_type_tags): Likewise.
+	* dwarf2out.cc (cst_pool_loc_descr): Likewise.
+	(loc_list_for_address_of_addr_expr_of_indirect_ref): Likewise.
+	(resolve_args_picking_1): Likewise.
+	(typed_binop_from_tree): Likewise.
+	(gen_array_type_die): Likewise.
+	* dwarf2out.h (struct dw_val_node): Likewise.
+	(dw_loc_dtprel): Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* doc/analyzer.texi: Fix typos.
+	* doc/cpp.texi: Likewise.
+	* doc/extend.texi: Likewise.
+	* doc/gcov.texi: Likewise.
+	* doc/gm2.texi: Likewise.
+	* doc/gty.texi: Likewise.
+	* doc/install.texi: Likewise.
+	* doc/invoke.texi: Likewise.
+	* doc/libgdiagnostics/topics/compatibility.rst: Likewise.
+	* doc/libgdiagnostics/topics/physical-locations.rst: Likewise.
+	* doc/libgdiagnostics/tutorial/07-execution-paths.rst: Likewise.
+	* doc/libgdiagnostics/tutorial/08-message-buffers.rst: Likewise.
+	* doc/match-and-simplify.texi: Likewise.
+	* doc/md.texi: Likewise.
+	* doc/optinfo.texi: Likewise.
+	* doc/params.texi: Likewise.
+	* doc/poly-int.texi: Likewise.
+	* doc/riscv-ext.texi: Likewise.
+	* doc/rtl.texi: Likewise.
+	* doc/sourcebuild.texi: Likewise.
+	* doc/tm.texi: Likewise.
+	* doc/tm.texi.in: Likewise.
+	* doc/tree-ssa.texi: Likewise.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* Makefile.in: Fix typos.
+
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* tree.h (BITINT_TYPE_P): Return true also for ENUMERAL_TYPE with
+	BITINT_TYPE as underlying type.
+	* stor-layout.cc (finish_bitfield_representative): Use BITINT_TYPE_P
+	macro.
+	(layout_type): Likewise.  Lay out ENUMERAL_TYPEs with BITINT_TYPE as
+	underlying type the same as BITINT_TYPEs.
+	* gimple-lower-bitint.cc (maybe_cast_middle_bitint): Use BITINT_TYPE_P
+	macro.
+	(mergeable_op, optimizable_arith_overflow, comparison_op,
+	bitint_large_huge::handle_cast, bitint_large_huge::lower_shift_stmt,
+	bitint_large_huge::lower_muldiv_stmt,
+	bitint_large_huge::lower_mul_overflow,
+	bitint_large_huge::lower_bit_query,
+	bitint_large_huge::lower_call, bitint_large_huge::lower_asm,
+	bitint_large_huge::lower_stmt, build_bitint_stmt_ssa_conflicts,
+	arith_overflow_arg_kind, gimple_lower_bitint): Likewise.
+	* gimple-expr.cc (useless_type_conversion_p): Likewise.
+	* fold-const.cc (make_range_step): Likewise.
+	(range_check_type): For ENUMERAL_TYPEs with BITINT_TYPE as underlying
+	type use the underlying type.
+	(extract_muldiv_1): Use BITINT_TYPE_P macro.
+	(native_encode_wide_int): Likewise.
+	(native_interpret_int): Likewise.
+	* vr-values.cc
+	(simplify_using_ranges::simplify_float_conversion_using_ranges):
+	Likewise.
+	* cfgexpand.cc (expand_debug_expr): Likewise.
+	* convert.cc (convert_to_integer_1): Add special case for ENUMERAL_TYPE
+	with underlying BITINT_TYPE.
+	* tree-ssa-sccvn.cc (vn_walk_cb_data::push_partial_def): Use
+	BITINT_TYPE_P macro.
+	(vn_reference_lookup_3): Likewise.
+	(eliminate_dom_walker::eliminate_stmt): Likewise.
+	* match.pd (ctz(ext(X)) == ctz(X), popcount(zext(X)) == popcount(X),
+	parity(zext(X)) == parity(X), a != 0 ? CLZ(a) : CST -> .CLZ(a),
+	a != 0 ? CTZ(a) : CST -> .CTZ(a), ffs(ext(X)) == ffs(X)): Likewise.
+	* builtins.cc (fold_builtin_bit_query): Likewise.
+	* explow.cc (promote_function_mode): Handle ENUMERAL_TYPE with
+	BITINT_TYPE as underlying type like BITINT_TYPE.
+	(promote_mode): Likewise.
+	* expr.cc (EXTEND_BITINT): Use BITINT_TYPE_P macro.
+	(expand_expr_real_1): Likewise.
+	* fold-const-call.cc (fold_const_call_ss): Likewise.
+	* gimple-fold.cc (gimple_fold_builtin_memset): Likewise.
+	(clear_padding_type_may_have_padding_p): Handle ENUMERAL_TYPE
+	with BITINT_TYPE as underlying type like BITINT_TYPE.
+	(type_has_padding_at_level_p): Likewise.
+	(clear_padding_type): Likewise.
+	* gimple-match-exports.cc (build_call_internal): Use BITINT_TYPE_P
+	macro.
+	* internal-fn.cc (expand_ubsan_result_store): Likewise.
+	* tree-sra.cc (create_access): Likewise.
+	(analyze_access_subtree): Likewise.
+	* tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Likewise.
+	* tree-ssa.cc (maybe_optimize_var): Likewise.
+	* tree-switch-conversion.cc (switch_conversion::array_value_type):
+	Likewise.
+	(switch_conversion::build_arrays): Likewise.
+	(jump_table_cluster::emit): Likewise.
+	* ubsan.cc (ubsan_encode_value): Likewise.
+	(ubsan_type_descriptor): Handle ENUMERAL_TYPE with BITINT_TYPE as
+	underlying type like BITINT_TYPE.
+	(instrument_si_overflow): Use BITINT_TYPE_P macro.
+	* varasm.cc (output_constant): Handle ENUMERAL_TYPE with BITINT_TYPE
+	as underlying type like BITINT_TYPE.
+	* config/aarch64/aarch64.cc (aarch64_return_in_memory_1): Use
+	BITINT_TYPE_P macro.
+	(bitint_or_aggr_of_bitint_p): Likewise.
+	(aarch64_composite_type_p): Likewise.
+	* config/arm/arm.cc (arm_return_in_memory): Likewise.
+	(arm_needs_doubleword_align): Likewise.
+	* config/i386/i386.cc (classify_argument): Handle ENUMERAL_TYPE with
+	BITINT_TYPE as underlying type like BITINT_TYPE.
+	* config/loongarch/loongarch.h: Use BITINT_TYPE_P macro.
+
+2026-05-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-switch-conversion.cc (case_bit_test::cmp): Stability
+	based on the index of the target bb instead.
+	(bit_test_cluster::emit): Remove setting of the label field
+	of case_bit_test.
+	* tree-switch-conversion.h (case_bit_test): Remove the label
+	field.
+
 2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/125475
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dcf9716c9740..81323dd5b275 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260530
+20260531
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 79622b62f23f..9ca34f7d4569 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,54 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* gnathtml.pl: Reflow long line.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* adaint.c (__gnat_set_OWNER_ACL): Fix typos.
+	* aux-io.c: Likewise.
+	* cio.c: Likewise.
+	* cstreams.c: Likewise.
+	* doc/gnat_rm/gnat_language_extensions.rst: Likewise.
+	* doc/gnat_rm/implementation_defined_attributes.rst: Likewise.
+	* doc/gnat_rm/implementation_defined_characteristics.rst: Likewise.
+	* doc/gnat_rm/implementation_defined_pragmas.rst: Likewise.
+	* doc/gnat_rm/interfacing_to_other_languages.rst: Likewise.
+	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Likewise.
+	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: Likewise.
+	* doc/gnat_rm/the_gnat_library.rst: Likewise.
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Likewise.
+	* doc/gnat_ugn/gnat_and_program_execution.rst: Likewise.
+	* doc/gnat_ugn/gnat_utility_programs.rst: Likewise.
+	* doc/gnat_ugn/platform_specific_information.rst: Likewise.
+	* doc/gnat_ugn/the_gnat_compilation_model.rst: Likewise.
+	* doc/share/conf.py: Likewise.
+	* gcc-interface/decl.cc (components_to_record): Likewise.
+	* gcc-interface/misc.cc (gnat_get_array_descr_info): Likewise.
+	(get_array_bit_stride): Likewise.
+	* gcc-interface/trans.cc (Loop_Statement_to_gnu): Likewise.
+	(gnat_to_gnu): Likewise.
+	* gcc-interface/utils.cc (gnat_pushdecl): Likewise.
+	(maybe_pad_type): Likewise.
+	(finish_record_type): Likewise.
+	(process_deferred_decl_context): Likewise.
+	* gnat_rm.texi: Likewise.
+	* gnat_ugn.texi: Likewise.
+	* gnathtml.pl: Likewise.
+	* gsocket.h: Likewise.
+	* init.c (__gnat_handle_vms_condition): Likewise.
+	(GNAT$STOP): Likewise.
+	* raise-gcc.c (db_phases): Likewise.
+	* rtinit.c (__gnat_runtime_initialize): Likewise.
+	* sigtramp-arm-qnx.c: Likewise.
+	* sigtramp-vxworks-target.h (defined): Likewise.
+	* sigtramp-vxworks.c: Likewise.
+	* sysdep.c: Likewise.
+	* terminals.c (defined): Likewise.
+	(__gnat_new_tty): Likewise.
+	(__gnat_close_tty): Likewise.
+	(__gnat_tty_name): Likewise.
+	* tracebak.c (PC_ADJUST): Likewise.
+
 2026-05-29  Marc Poulhi?s  <poulhies@adacore.com>
 
 	* sysdep.c (getc_immediate_common): Read character as unsigned
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index 476f4765580d..ffbd4b1fd557 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,44 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* a68-imports-archive.cc (struct Archive_fl_header): Fix typos.
+	* a68-imports.cc (encoded_mode_free): Likewise.
+	* a68-low-chars.cc (a68_char_repr): Likewise.
+	* a68-low-clauses.cc (a68_lower_label): Likewise.
+	(a68_lower_labeled_unit): Likewise.
+	(a68_lower_completer): Likewise.
+	(a68_lower_initialiser_series): Likewise.
+	(a68_lower_case_clause): Likewise.
+	* a68-low-decls.cc (a68_lower_variable_declaration): Likewise.
+	(a68_lower_procedure_variable_declaration): Likewise.
+	* a68-low-ints.cc (a68_get_int_skip_tree): Likewise.
+	(a68_int_maxval): Likewise.
+	* a68-low-moids.cc (lower_struct_mode): Likewise.
+	* a68-low-multiples.cc (a68_multiple_single_bound_check): Likewise.
+	* a68-low-prelude.cc (a68_lower_divab3): Likewise.
+	(a68_lower_upb3): Likewise.
+	(a68_lower_lwb3): Likewise.
+	* a68-low-procs.cc (a68_get_proc_skip_tree): Likewise.
+	* a68-low-reals.cc (a68_real_maxval): Likewise.
+	(a68_real_minval): Likewise.
+	* a68-low-units.cc (a68_lower_identifier): Likewise.
+	* a68-low.cc (a68_low_assignation): Likewise.
+	* a68-moids-misc.cc (a68_is_firm): Likewise.
+	(a68_is_coercible_series): Likewise.
+	* a68-parser-bottom-up.cc (strange_separator): Likewise.
+	(a68_bottom_up_parser): Likewise.
+	* a68-parser-prelude.cc (stand_prelude): Likewise.
+	* a68-parser-scanner.cc (a68_lexical_analyser): Likewise.
+	* a68-parser-scope.cc (a68_scope_checker): Likewise.
+	* a68-parser-serial-dsa.cc (serial_dsa_check_serial_clause): Likewise.
+	* a68-parser-taxes.cc (test_firmly_related_ops_local): Likewise.
+	* a68-parser.cc: Likewise.
+	* a68-types.h (struct KEYWORD_T): Likewise.
+	(struct OPTIONS_T): Likewise.
+	(struct NODE_T): Likewise.
+	(struct MODE_CACHE_T): Likewise.
+	* ga68-coding-guidelines.texi: Likewise.
+	* ga68.texi: Likewise.
+
 2026-05-24  Peter Damianov  <peter0x44@disroot.org>
 
 	* a68-lang.cc (a68_handle_option): Open file in binary mode.
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 174ec5964a1e..8c921e97858e 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,34 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* access-diagram.cc: Fix typos.
+	* analyzer.cc (fixup_tree_for_diagnostic_1): Likewise.
+	(tree_to_json): Likewise.
+	* bounds-checking.cc: Likewise.
+	* constraint-manager.cc (constraint_manager::impossible_derived_conditions_p): Likewise.
+	* diagnostic-manager.cc (prune_frame): Likewise.
+	* engine.cc (get_eh_outedge): Likewise.
+	(maybe_process_run_of_enodes): Likewise.
+	* inlining-iterator.h: Likewise.
+	* ops.cc (call_and_return_op::execute): Likewise.
+	* pending-diagnostic.h (class pending_diagnostic): Likewise.
+	* region-model-asm.cc: Likewise.
+	* region-model.cc (check_one_function_attr_null_terminated_string_arg): Likewise.
+	(region_model::deref_rvalue): Likewise.
+	(region_model::scan_for_null_terminator): Likewise.
+	(region_model::check_for_null_terminated_string_arg): Likewise.
+	(model_merger::mergeable_svalue_p): Likewise.
+	(test_canonicalization_4): Likewise.
+	* region.cc (region::accept): Likewise.
+	* setjmp-longjmp.cc (region_model::on_longjmp): Likewise.
+	* sm-fd.cc: Likewise.
+	* sm-malloc.cc: Likewise.
+	* sm-taint.cc: Likewise.
+	* store.cc (binding_cluster::maybe_get_compound_binding): Likewise.
+	(binding_cluster::can_merge_p): Likewise.
+	(store::replay_call_summary): Likewise.
+	* svalue.cc (svalue::can_merge_p): Likewise.
+	(widening_svalue::eval_condition_without_cm): Likewise.
+
 2026-05-20  David Malcolm  <dmalcolm@redhat.com>
 
 	* region-model-manager.cc
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index a79b59af878b..f1334ac56b5f 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,29 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* c-attribs.cc (append_access_attr): Fix typos.
+	(append_access_attr_idxs): Likewise.
+	(has_attribute): Likewise.
+	* c-common.cc (get_cpp_ttype_from_string_type): Likewise.
+	(cb_get_suggestion): Likewise.
+	(maybe_add_include_fixit): Likewise.
+	* c-common.h (convert_vector_to_array_for_subscript): Likewise.
+	* c-cppbuiltin.cc (builtin_define_type_max): Likewise.
+	* c-format.cc (check_format_info_main): Likewise.
+	(check_format_types): Likewise.
+	* c-omp.cc (c_omp_categorize_directive): Likewise.
+	* c-opts.cc (c_common_post_options): Likewise.
+	* c-ubsan.cc (ubsan_instrument_bounds): Likewise.
+
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-attribs.cc (type_valid_for_vector_size): Use BITINT_TYPE_P macro.
+	* c-common.cc (c_common_get_narrower): For ENUMERAL_TYPE with
+	BITINT_TYPE as underlying type convert to the underlying type.
+	(c_common_signed_or_unsigned_type): Use BITINT_TYPE_P macro.
+	(sync_resolve_size): Likewise.
+	(atomic_bitint_fetch_using_cas_loop): Likewise.
+	(resolve_overloaded_builtin): Likewise.
+
 2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
 
 	* c-warn.cc (warn_for_sign_compare): Remove strict_overflow_p
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index aced229943e4..ca04e7324c59 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,42 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* c-decl.cc (pop_file_scope): Fix typos.
+	(diagnose_mismatched_decls): Likewise.
+	(parser_xref_tag): Likewise.
+	(verify_counted_by_attribute): Likewise.
+	* c-fold.cc (c_disable_warnings): Likewise.
+	* c-parser.cc (c_parser_do_statement): Likewise.
+	(c_parser_expression): Likewise.
+	(c_parser_objc_at_property_declaration): Likewise.
+	* c-tree.h (struct c_declspecs): Likewise.
+	* c-typeck.cc (build_access_with_size_for_counted_by): Likewise.
+	(build_modify_expr): Likewise.
+	(c_find_omp_var_r): Likewise.
+	* gimple-parser.cc (c_parser_gimple_compound_statement): Likewise.
+
+2026-05-30  Martin Uecker  <uecker@tugraz.at>
+
+	* c-decl.cc (diagnose_mismatched_decls): Adapt.
+	* c-tree.h (comptypes, comptypes_check_enum_int): Adapt.
+	(comptypes_check_different_types): Remove.
+	* c-typeck.cc (compatible_types_for_indirection_note_p): Fix.
+	(comptypes_internal): Remove outdated info from comment.
+	(comptypes, comptypes_check_enum_int): Adapt.
+	(comptypes_check_different_types,comp_parm_types): Remove.
+	(comp_target_types,build_function_call_vec,digest_init): Adapt.
+
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-parser.cc (c_parser_enum_specifier): Implement
+	C2Y N3705: bit-precise enum.  Allow for flag_isoc2y enumerated
+	types with BITINT_TYPE as underlying type.
+	* c-lang.cc (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Redefine.
+	* c-tree.h (c_enum_underlying_base_type): Declare.
+	* c-objc-common.cc (c_enum_underlying_base_type): New function.
+	* c-decl.cc (finish_struct): Use BITINT_TYPE_P macro.
+	* c-typeck.cc (perform_integral_promotions): Promote bit-fields with
+	enum type with underlying fixed _BitInt type to that _BitInt type.
+
 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
 
 	PR c/122892
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index c8dfbcb2fc61..970952006a21 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,28 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* compare.cc (alpha_compare): Fix typos.
+	* Make-lang.in: Fix typos.
+	* except.cc (cbl_enabled_exceptions_t::turn_on_off): Likewise.
+	* genapi.cc (MAX_AFTERS): Likewise.
+	(cobol_compare): Likewise.
+	(enter_program_common): Likewise.
+	(parser_bsearch_end): Likewise.
+	(parser_set_pointers): Likewise.
+	* gengen.cc (chain_parameter_to_function): Likewise.
+	* gengen.h (gg_return): Likewise.
+	* genutil.cc (refer_is_clean): Likewise.
+	* lexio.cc (right_margin): Likewise.
+	(maybe_add_space): Likewise.
+	* messages.cc: Likewise.
+	* parse_ante.h (procedure_division_ready): Likewise.
+	* structs.cc (create_cblc_field_t): Likewise.
+	* symbols.cc (special_pair_cmp): Likewise.
+	(symbol_table_init): Likewise.
+	(symbol_label_add): Likewise.
+	* symbols.h: Likewise.
+	* util.cc (date_time_fmt): Likewise.
+	(cobol_lineno): Likewise.
+
 2026-05-29  Robert Dubner  <rdubner@symas.com>
 	    James K. Lowden  <jklowden@cobolworx.com>
 	    Xavier Del Campo  <xdelcampo@symas.com>
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3305fe6ffa2f..7afcdaba3f06 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,98 @@
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125123
+	* parser.cc (cp_build_range_for_decls): If range_temp or begin
+	are static, set DECL_IGNORED_P on it.
+	* pt.cc (finish_expansion_stmt): Similarly for iter.
+	* decl.cc (cp_finish_decl): Call determine_local_discriminator
+	etc. also for DECL_ARTIFICIAL TREE_STATIC vars.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* call.cc (involves_qualification_conversion_p): Fix typos.
+	(build_user_type_conversion_1): Likewise.
+	(complain_about_access): Likewise.
+	(maybe_warn_class_memaccess): Likewise.
+	* class.cc (inherit_targ_abi_tags): Likewise.
+	(warn_hidden): Likewise.
+	(maybe_add_class_template_decl_list): Likewise.
+	(check_bases_and_members): Likewise.
+	(dfs_accumulate_vtbl_inits): Likewise.
+	* constexpr.cc (cx_check_missing_mem_inits): Likewise.
+	(cxx_eval_call_expression): Likewise.
+	(modifying_const_object_error): Likewise.
+	(cxx_replaceable_global_alloc_fn): Likewise.
+	* contracts.cc (copy_contracts_list): Likewise.
+	(check_redecl_contract): Likewise.
+	(update_late_contract): Likewise.
+	(get_precondition_function): Likewise.
+	* coroutines.cc (cp_coroutine_transform::build_ramp_function): Likewise.
+	* cp-tree.def (DISJ_CONSTR): Likewise.
+	* cp-tree.h (struct lang_decl_base): Likewise.
+	(SCOPE_DEPTH): Likewise.
+	(set_anon_aggr_type_field): Likewise.
+	(struct cp_decl_specifier_seq): Likewise.
+	* decl.cc (reshape_init_array_1): Likewise.
+	(omp_declare_variant_finalize): Likewise.
+	(grokdeclarator): Likewise.
+	(copy_type_enum): Likewise.
+	* decl2.cc (struct priority_map_traits): Likewise.
+	(determine_visibility): Likewise.
+	(constrain_class_visibility): Likewise.
+	(one_static_initialization_or_destruction): Likewise.
+	* g++spec.cc (lang_specific_driver): Likewise.
+	* init.cc (constant_value_1): Likewise.
+	(build_new): Likewise.
+	* mangle.cc (write_unqualified_name): Likewise.
+	* method.cc (inherited_ctor_binfo): Likewise.
+	(synthesized_method_walk): Likewise.
+	* module.cc (GTY): Likewise.
+	(trees_out::lang_decl_bools): Likewise.
+	(trees_out::core_vals): Likewise.
+	(trees_in::core_vals): Likewise.
+	(trees_in::install_implicit_member): Likewise.
+	(trees_in::odr_duplicate): Likewise.
+	(instantiating_tu_local_entity): Likewise.
+	(sort_cluster): Likewise.
+	(module_state::write_define): Likewise.
+	(module_state::write_begin): Likewise.
+	(declare_module): Likewise.
+	(init_modules): Likewise.
+	* name-lookup.cc (name_lookup::ambiguous): Likewise.
+	(pushdecl): Likewise.
+	(suggest_alternatives_for_1): Likewise.
+	(maybe_add_fuzzy_decl): Likewise.
+	* name-lookup.h (INHERITED_VALUE_BINDING_P): Likewise.
+	(HIDDEN_TYPE_BINDING_P): Likewise.
+	(BINDING_VECTOR_GLOBAL_DUPS_P): Likewise.
+	* operators.def: Likewise.
+	* parser.cc (cp_lexer_new_main): Likewise.
+	(get_cast_suggestion): Likewise.
+	(cp_parser_expression): Likewise.
+	(cp_parser_simple_type_specifier): Likewise.
+	(cp_parser_noexcept_specification_opt): Likewise.
+	(cp_parser_lookup_name): Likewise.
+	(class_decl_loc_t::diag_mismatched_tags): Likewise.
+	(cp_parser_cache_defarg): Likewise.
+	(cp_parser_objc_statement): Likewise.
+	(cp_parser_omp_loop_nest): Likewise.
+	(cp_parser_omp_taskloop): Likewise.
+	(cp_parser_objc_at_property_declaration): Likewise.
+	* parser.h (struct cp_unparsed_functions_entry): Likewise.
+	* pt.cc (tsubst_friend_class): Likewise.
+	(use_pack_expansion_extra_args_p): Likewise.
+	(tsubst_unary_left_fold): Likewise.
+	(tsubst_unary_right_fold): Likewise.
+	(filter_memfn_lookup): Likewise.
+	* semantics.cc (maybe_convert_cond): Likewise.
+	(finish_switch_cond): Likewise.
+	(cp_finish_omp_clause_doacross_sink): Likewise.
+	(finish_omp_target_clauses_r): Likewise.
+	* tree.cc (build_cplus_new): Likewise.
+	(apply_identity_attributes): Likewise.
+	* vtable-class-hierarchy.cc (vtv_compute_class_hierarchy_transitive_closure): Likewise.
+	(vtv_generate_init_routine): Likewise.
+
 2026-05-29  Jakub Jelinek  <jakub@redhat.com>
 
 	* init.cc (build_value_init_noctor): Zero initialize anonymous
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 83e7eefe3089..bd59ba38da16 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,33 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* d-attribs.cc (d_handle_alloc_size_attribute): Fix typos.
+	* d-codegen.cc (build_boolop): Likewise.
+	(get_frame_for_symbol): Likewise.
+	* d-gimplify.cc (empty_modify_p): Likewise.
+	* d-lang.cc (d_parse_file): Likewise.
+	* d-spec.cc (lang_specific_driver): Likewise.
+	* d-target.cc (Target::systemLinkage): Likewise.
+	* decl.cc (get_fndecl_arguments): Likewise.
+	(build_class_instance): Likewise.
+	* expr.cc: Likewise.
+	* implement-d.texi: Likewise.
+	* intrinsics.cc (call_builtin_fn): Likewise.
+	(expand_intrinsic_bsf): Likewise.
+	(expand_intrinsic_rotate): Likewise.
+	(expand_intrinsic_vastart): Likewise.
+	(expand_intrinsic_checkedint): Likewise.
+	(expand_volatile_load): Likewise.
+	(expand_volatile_store): Likewise.
+	(expand_intrinsic_vec_convert): Likewise.
+	(expand_intrinsic_vec_blend): Likewise.
+	(expand_intrinsic_vec_shuffle): Likewise.
+	(expand_intrinsic_vec_shufflevector): Likewise.
+	(expand_intrinsic_vec_load_unaligned): Likewise.
+	* modules.cc (get_dso_registry_fn): Likewise.
+	* toir.cc: Likewise.
+	* typeinfo.cc: Likewise.
+	* types.cc (finish_aggregate_type): Likewise.
+
 2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	PR d/125089
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 280bd5606754..d5fc15dc1427 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,55 @@
+2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/105582
+	* trans-decl.cc (get_proc_pointer_decl): Add FL_LABEL check to
+	route BLOCK-construct procedure pointers to gfc_add_decl_to_function
+	rather than gfc_add_decl_to_parent_function.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* gfortran.texi: Reflow long line.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* check.cc (oct2bin): Fix typos.
+	(gfc_check_move_alloc): Likewise.
+	* class.cc (gfc_intrinsic_hash_value): Likewise.
+	* decl.cc (copy_prefix): Likewise.
+	* dependency.cc (gfc_dep_compare_expr): Likewise.
+	* expr.cc (gfc_check_assign_symbol): Likewise.
+	* frontend-passes.cc (combine_array_constructor): Likewise.
+	(doloop_code): Likewise.
+	(doloop_warn): Likewise.
+	(matmul_lhs_realloc): Likewise.
+	* gfortran.h: Likewise.
+	* gfortran.texi: Likewise.
+	* interface.cc (compare_parameter): Likewise.
+	* intrinsic.cc (add_functions): Likewise.
+	(add_subroutines): Likewise.
+	* invoke.texi: Likewise.
+	* lang.opt: Likewise.
+	* module.cc (mio_full_f2k_derived): Likewise.
+	* openmp.cc (gfc_match_omp_variable_list): Likewise.
+	* resolve.cc (resolve_global_procedure): Likewise.
+	(gfc_fixup_inferred_type_refs): Likewise.
+	(gfc_verify_binding_labels): Likewise.
+	(resolve_fl_parameter): Likewise.
+	* trans-array.cc (gfc_set_loop_bounds_from_array_spec): Likewise.
+	(gfc_trans_array_constructor_value): Likewise.
+	(maybe_substitute_expr): Likewise.
+	(duplicate_allocatable_coarray): Likewise.
+	* trans-decl.cc (gfc_trans_deferred_vars): Likewise.
+	* trans-expr.cc (gfc_vptr_size_get): Likewise.
+	(gfc_trans_subcomponent_assign): Likewise.
+	(gfc_conv_expr): Likewise.
+	(fcncall_realloc_result): Likewise.
+	(alloc_scalar_allocatable_for_assignment): Likewise.
+	(gfc_trans_assignment_1): Likewise.
+	* trans-openmp.cc (gfc_omp_deep_mapping_cnt): Likewise.
+	* trans-stmt.cc (trans_associate_var): Likewise.
+	(gfc_trans_allocate): Likewise.
+	* trans.cc (gfc_finalize_tree_expr): Likewise.
+
 2026-05-29  Harald Anlauf  <anlauf@gmx.de>
 
 	PR fortran/125393
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index 0f4e21fdfa54..802955bc32b5 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,25 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* TODO.rst: Fix typos.
+	* docs/cp/intro/tutorial03.rst: Likewise.
+	* docs/cp/topics/functions.rst: Likewise.
+	* docs/cp/topics/types.rst: Likewise.
+	* docs/internals/index.rst: Likewise.
+	* docs/intro/tutorial02.rst: Likewise.
+	* docs/intro/tutorial03.rst: Likewise.
+	* docs/topics/compatibility.rst: Likewise.
+	* docs/topics/contexts.rst: Likewise.
+	* docs/topics/functions.rst: Likewise.
+	* docs/topics/performance.rst: Likewise.
+	* docs/topics/types.rst: Likewise.
+	* jit-builtins.cc (builtins_manager::make_type): Likewise.
+	* jit-playback.cc (make_fake_args): Likewise.
+	(get_source_file): Likewise.
+	(get_source_line): Likewise.
+	* jit-recording.h (types_kinda_same_internal): Likewise.
+	* libgccjit.cc (gcc_jit_context_new_struct_constructor): Likewise.
+	* libgccjit.h (gcc_jit_case_as_object): Likewise.
+
 2026-05-18  David Malcolm  <dmalcolm@redhat.com>
 
 	* docs/topics/contexts.rst
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index dfda18ffc5f8..a71695db1ea5 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,18 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* Make-lang.in: Fix typos.
+	* lto-common.cc (read_cgraph_and_symbols): Likewise.
+	* lto-lang.cc (lto_post_options): Likewise.
+	* lto-partition.cc (add_symbol_to_partition_1): Likewise.
+	(partition_over_target_split): Likewise.
+	(lto_balanced_map): Likewise.
+	(rename_statics): Likewise.
+	* lto-symtab.cc (lto_cgraph_replace_node): Likewise.
+	(lto_varpool_replace_node): Likewise.
+	(lto_symtab_merge_symbols): Likewise.
+	* lto.cc (stream_out_partitions): Likewise.
+	(do_whole_program_analysis): Likewise.
+
 2026-04-22  Sam James  <sam@gentoo.org>
 
 	* lto-symtab.cc (lto_varpool_replace_node): Fix spelling of 'warning'.
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 7e54d7f3eca0..51e8c3afc865 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* objc-act.cc (objc_compare_types): Fix typos.
+	(objc_decl_method_attributes): Likewise.
+	(build_fast_enumeration_state_template): Likewise.
+	(objc_finish_foreach_loop): Likewise.
+	* objc-act.h (objc_common_register_features): Likewise.
+	* objc-runtime-hooks.h (struct objc_runtime_hooks): Likewise.
+
 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
 
 	* objc-act.h (TYPE_OBJC_INFO): Define to info.objc_info
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 142900bed52e..a41d857851eb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,42 @@
+2026-05-30  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/general/firstp.c: Adjust testcases.
+	* gcc.target/aarch64/sve2/acle/general/lastp.c: Likewise.
+
+2026-05-30  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/loongarch/la64/mul-const-reduction.c: Adjust expected
+	output.
+
+2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/105582
+	* gfortran.dg/block_proc_ptr_1.f90: New test.
+
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125123
+	* g++.dg/cpp26/expansion-stmt42.C: New test.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* g++.dg/opt/pr104515.C: Fix typo in dejagnu check pattern.
+	* g++.dg/tree-ssa/pr88797.C: Likewise.
+	* gcc.dg/ipa/fnsummary-1.c: Likewise.
+	* gcc.dg/tree-ssa/copy-headers-7.c: Likewise.
+	* gcc.dg/tree-ssa/split-path-11.c: Likewise.
+	* gcc.dg/tree-ssa/split-path-13.c: Likewise.
+	* gcc.dg/tree-ssa/split-path-2.c: Likewise.
+	* gcc.dg/tree-ssa/split-path-5.c: Likewise.
+
+2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/bitint-133.c: New test.
+	* gcc.dg/bitint-134.c: New test.
+	* gcc.dg/bitint-135.c: New test.
+	* gcc.dg/bitint-136.c: New test.
+	* gcc.dg/torture/bitint-99.c: New test.
+
 2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	* gcc.dg/torture/pr125453-1.c: Add -w to the options.
diff --git a/include/ChangeLog b/include/ChangeLog
index cf30c2edbe5f..118bdee29cd6 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,27 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* hsa.h: Reflow long line.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* demangle.h (enum demangle_component_type): Fix typos.
+	* doubly-linked-list.h: Likewise.
+	* floatformat.h (struct floatformat): Likewise.
+	* gcc-cp-fe.def (GCC_METHOD1): Likewise.
+	(GCC_METHOD2): Likewise.
+	* gomp-constants.h (enum gomp_map_kind): Likewise.
+	(GOMP_TARGET_ARG_THREAD_LIMIT): Likewise.
+	* hsa.h: Likewise.
+	* hsa_ext_amd.h (hsa_amd_signal_value_pointer): Likewise.
+	(hsa_amd_memory_lock): Likewise.
+	(hsa_amd_pointer_info): Likewise.
+	(hsa_amd_ipc_memory_create): Likewise.
+	(hsa_amd_ipc_signal_create): Likewise.
+	* libiberty.h (PEX_STDOUT_APPEND): Likewise.
+	* longlong.h: Likewise.
+	* plugin-api.h (enum ld_plugin_status): Likewise.
+	* splay-tree.h (struct splay_tree_s): Likewise.
+
 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
 
 	PR c/122892
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index e34ce934e652..67b08f2335bc 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* acinclude.m4: Fix typos.
+	* libatomic_i.h (__attribute__): Likewise.
+	* configure: Regenerate.
+
 2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* Makefile.in: Regenerate.
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index ff0819c32c7b..f840ba14760d 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,8 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* allocfail.sh: Fix typos.
+	* elf.c (elf_fetch_bits): Likewise.
+
 2026-05-04  Ian Lance Taylor  <iant@golang.org>
 
 	* elf.c (elf_zstd_decompress_frame): New static function,
diff --git a/libcody/ChangeLog b/libcody/ChangeLog
index c9eaa219d8b0..04022ca5c71e 100644
--- a/libcody/ChangeLog
+++ b/libcody/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* README.md: Fix typos.
+
 2026-05-28  Jean-Christian C?RSTEA  <jean.christian.cirstea@gmail.com>
 
 	PR c++/120458
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 0fe3dbd09577..f2c5b0d7f43f 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,25 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* files.cc (_cpp_stack_translated_file): Fix typos.
+	(_cpp_get_file_path): Likewise.
+	* include/cpplib.h (PREV_FALLTHROUGH): Likewise.
+	(struct cpp_options): Likewise.
+	* include/line-map.h (enum lc_reason): Likewise.
+	* internal.h (struct cpp_buffer): Likewise.
+	* lex.cc (lex_raw_string): Likewise.
+	(cpp_directive_only_process): Likewise.
+	* line-map.cc (linemap_add): Likewise.
+	(linemap_module_restore): Likewise.
+	(rich_location::get_last_fixit_hint): Likewise.
+	* macro.cc (_cpp_builtin_macro_text): Likewise.
+	(arg_token_ptr_at): Likewise.
+	(replace_args): Likewise.
+	(reached_end_of_context): Likewise.
+	(cpp_get_token_1): Likewise.
+	(create_iso_definition): Likewise.
+	(get_deferred_or_lazy_macro): Likewise.
+	* traditional.cc (check_output_buffer): Likewise.
+
 2026-04-21  Marek Polacek  <polacek@redhat.com>
 
 	PR preprocessor/124930
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 2a04cafe602f..a1ad797b7178 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,19 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* decBasic.c (decCanonical): Fix typos.
+	(decDivide): Likewise.
+	(decFiniteMultiply): Likewise.
+	(decFloatMultiply): Likewise.
+	(decFloatQuantize): Likewise.
+	(decToInt32): Likewise.
+	* decCommon.c (decFinalize): Likewise.
+	(decFloatFromString): Likewise.
+	* decContext.c (decContextGetStatus): Likewise.
+	* decNumber.c (decToString): Likewise.
+	(decAddOp): Likewise.
+	(decMalloc): Likewise.
+	* decNumberLocal.h: Likewise.
+
 2026-01-09  Ben Boeckel  <ben.boeckel@kitware.com>
 
 	* configure: Regenerate.
diff --git a/libga68/ChangeLog b/libga68/ChangeLog
index 3e6d5793acce..20c40b54f7de 100644
--- a/libga68/ChangeLog
+++ b/libga68/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* ga68-error.c: Fix typos.
+	* ga68-unistr.c (_libga68_u32_cmp): Likewise.
+	(_libga68_u8_uctomb): Likewise.
+	(_libga68_u32_to_u8): Likewise.
+
 2026-05-08  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* Makefile.in: Regenerate.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 854972c18818..996ceb400214 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,13 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* fixed-bit.c: Fix typos.
+	* libgcov-interface.c (__gcov_reset_int): Likewise.
+	(__gcov_dump_int): Likewise.
+	* libgcov-util.c (FLAG_ONE_HOT): Likewise.
+	(calculate_overlap): Likewise.
+	* unwind-dw2.c: Likewise.
+	* unwind-seh.c (_Unwind_GetTextRelBase): Likewise.
+
 2026-05-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* config.host <i[34567]86-*-freebsd*> (tmake_file): Add
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 264bb3b55d23..26bfbc4b1f51 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,37 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* README: Reflow long line.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* README: Fix typos.
+	* charmaps.cc (__gg__iconverter): Likewise.
+	* common-defs.h (enum cbl_field_attr_t): Likewise.
+	* gcobolio.h: Likewise.
+	* gfileio.cc (__gg__file_stash): Likewise.
+	* gmath.cc (__gg__pow): Likewise.
+	* inspect.cc (inspect_backward_format_1): Likewise.
+	(__gg__inspect_format_1): Likewise.
+	(inspect_backward_format_2): Likewise.
+	(__gg__inspect_format_2): Likewise.
+	(__gg__inspect_format_1_sbc): Likewise.
+	* intrinsic.cc (gets_month): Likewise.
+	* libgcobol.cc (get_time_nanoseconds_local): Likewise.
+	(__gg__compare_2): Likewise.
+	(display_both): Likewise.
+	(accept_envar): Likewise.
+	(__gg__set_pointer): Likewise.
+	(struct cbl_exception_t): Likewise.
+	(default_exception_handler): Likewise.
+	(convert_for_convert): Likewise.
+	* valconv.cc: Likewise.
+	* xmlparse.cc (struct xml_ec_value_t): Likewise.
+
+2026-05-30  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125503
+	* m4/autoconf.m4: New file.
+
 2026-05-29  Robert Dubner  <rdubner@symas.com>
 	    James K. Lowden  <jklowden@cobolworx.com>
 	    Xavier Del Campo  <xdelcampo@symas.com>
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 23f4235159a6..3f82b0ae57ff 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,35 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* caf/caf_error.h (caf_runtime_error): Fix typos.
+	* caf/libcaf.h: Likewise.
+	* caf/mpi.c (caf_runtime_error): Likewise.
+	* caf/shmem.c (_gfortran_caf_deregister): Likewise.
+	* caf/shmem/alloc.h: Likewise.
+	* caf/shmem/shared_memory.c (shared_memory_get_env): Likewise.
+	* caf/shmem/supervisor.h (struct caf_shmem_token): Likewise.
+	* caf/shmem/teams_mgmt.h (struct caf_shmem_team): Likewise.
+	* caf/single.c (caf_runtime_error): Likewise.
+	(_gfortran_caf_deregister): Likewise.
+	* intrinsics/args.c (get_command_i4): Likewise.
+	* intrinsics/chmod.c: Likewise.
+	* intrinsics/env.c (PREFIX): Likewise.
+	* intrinsics/trigd.c: Likewise.
+	* io/async.c (init_adv_cond): Likewise.
+	* io/file_pos.c (st_rewind): Likewise.
+	* io/format.c (parse_format_list): Likewise.
+	* io/open.c (new_unit): Likewise.
+	(st_open): Likewise.
+	* io/transfer.c (write_block): Likewise.
+	(unformatted_read): Likewise.
+	(unformatted_write): Likewise.
+	(formatted_transfer_scalar_write): Likewise.
+	* io/transfer128.c (export_proto): Likewise.
+	* io/unix.c (buf_init): Likewise.
+	(mem_read): Likewise.
+	* io/write.c (btoa): Likewise.
+	(list_formatted_write): Likewise.
+	* runtime/select_inc.c (select_string): Likewise.
+
 2026-05-29  Peter Damianov  <peter0x44@disroot.org>
 
 	* caf/shmem/shared_memory.c (shared_memory_init): Use
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 87519a19d224..014bdda06c59 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,7 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* configure.ac: Fix typos.
+
 2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
 
 	PR modula2/120189
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 0743a251d5f6..60bb6c46521b 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,23 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* configure: Regenerate.
+	* acinclude.m4: Fix typos.
+	* env.c (parse_places_var): Likewise.
+	(parse_stacksize): Likewise.
+	(parse_wait_policy): Likewise.
+	(parse_affinity): Likewise.
+	(initialize_env): Likewise.
+	* libgomp.h (struct target_mem_desc): Likewise.
+	* plugin/build-target-indirect-htab.h: Likewise.
+	* plugin/plugin-gcn.c (struct hsa_runtime_fn_info): Likewise.
+	(struct hip_runtime_fn_info): Likewise.
+	(limit_worker_threads): Likewise.
+	(max_isa_vgprs): Likewise.
+	(GOMP_OFFLOAD_get_name): Likewise.
+	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_name): Likewise.
+	* target.c (gomp_map_vars_internal): Likewise.
+	(GOMP_target_ext): Likewise.
+
 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
 
 	PR c/122892
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 7de0bb4d2546..3e6250ecec88 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,41 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow
+	long line.
+
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* bcopy.c: Fix typos.
+	* bsearch.c: Likewise.
+	* bsearch_r.c: Likewise.
+	* configure.ac: Likewise.
+	* cp-demangle.c (d_print_comp_inner): Likewise.
+	(d_print_comp): Likewise.
+	* d-demangle.c (dlang_identifier): Likewise.
+	* dyn-string.c: Likewise.
+	* ldirname.c: Likewise.
+	* make-relative-prefix.c (make_relative_prefix_1): Likewise.
+	* obstacks.texi: Likewise.
+	* pex-win32.c (argv_to_cmdline): Likewise.
+	(spawn_script): Likewise.
+	* random.c (random): Likewise.
+	(setstate): Likewise.
+	* regex.c (WIDE_CHAR_SUPPORT): Likewise.
+	(convert_mbs_to_wcs): Likewise.
+	(PREFIX): Likewise.
+	(wcs_compile_range): Likewise.
+	(count_mbs_length): Likewise.
+	(wcs_re_match_2_internal): Likewise.
+	(byte_re_match_2_internal): Likewise.
+	* sigsetmask.c: Likewise.
+	* simple-object-elf.c (SHT_SYMTAB_SHNDX): Likewise.
+	(STV_HIDDEN): Likewise.
+	(simple_object_elf_copy_lto_debug_sections): Likewise.
+	* simple-object-mach-o.c (struct mach_o_header_32): Likewise.
+	(struct mach_o_header_64): Likewise.
+	(simple_object_mach_o_write_segment): Likewise.
+	* strsignal.c (defined): Likewise.
+
 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/124365
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index a98bc1bcda28..fd6271ecef4c 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,12 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* configure: Regenerate.
+	* acinclude.m4: Fix typos.
+	* dispatch.h (struct method_group): Likewise.
+	* method-gl.cc: Likewise.
+	* method-ml.cc: Likewise.
+	* method-serial.cc: Likewise.
+
 2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* Makefile.in: Regenerate.
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 06d93467f6c9..01262d0a6677 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,10 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* math/powq.c: Fix typos.
+	* math/rem_pio2q.c: Likewise.
+	* printf/printf_fp.c (__quadmath_printf_fp): Likewise.
+	* update-quadmath.py: Likewise
+
 2026-01-01  Jakub Jelinek  <jakub@redhat.com>
 
 	* libquadmath.texi: Bump @copying's copyright year.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 605d241a613c..bc4bbc66e4b1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,54 @@
+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
diff --git a/libvtv/ChangeLog b/libvtv/ChangeLog
index 871456c4b39b..09893f072339 100644
--- a/libvtv/ChangeLog
+++ b/libvtv/ChangeLog
@@ -1,3 +1,11 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* vtv_fail.cc: Fix typos.
+	* vtv_malloc.cc (__vtv_free): Likewise.
+	* vtv_map.h (class insert_only_hash_map): Likewise.
+	* vtv_rts.cc (init_set_symbol_debug): Likewise.
+	* vtv_utils.cc (vtv_log_write): Likewise.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index ab80bf987e7e..54f09705f9c5 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,9 @@
+2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* lto-plugin.c (startswith): Fix typos.
+	(exec_lto_wrapper): Likewise.
+	(symbol_strength): Likewise.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.

From tkaminsk@gcc.gnu.org  Mon Jun  1 08:16:48 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Mon,  1 Jun 2026 08:16:48 +0000 (GMT)
Subject: [gcc r17-1066] libstdc++: Fix typo in
 piecewise_constant_distribution::param_type constructor.
Message-ID: <20260601081648.B62D24BA2E3A@sourceware.org>

https://gcc.gnu.org/g:a36d966fdc72f46892a877ca7751ff884b2dfabc

commit r17-1066-ga36d966fdc72f46892a877ca7751ff884b2dfabc
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Mon Jun 1 10:02:15 2026 +0200

    libstdc++: Fix typo in piecewise_constant_distribution::param_type constructor.
    
    Fixed typo in r17-509-g7bed7d9276c11b: The __fw should be called with
    __xmin + 0.5 * __delta (as in existing loop), not __xmin * 0.5 * __delta.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/random.tcc
            (piecewise_constant_distribution:::param_type::param_type):
            Replace * with + in __fw argument.

Diff:
---
 libstdc++-v3/include/bits/random.tcc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index e581f9127648..a8fab79961d7 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -3084,7 +3084,7 @@ namespace __detail
 	if (__n == 1)
 	  {
 	    _RealType __ints[2] = { __xmin, __xmin + __delta };
-	    _RealType __den = __fw(__xmin * 0.5 * __delta);
+	    _RealType __den = __fw(__xmin + 0.5 * __delta);
 	    _M_initialize2(__ints, __den);
 	    return;
 	  }

From dhruvc@gcc.gnu.org  Mon Jun  1 16:05:06 2026
From: dhruvc@gcc.gnu.org (Dhruv Chawla)
Date: Mon,  1 Jun 2026 16:05:06 +0000 (GMT)
Subject: [gcc r17-1136] libstdc++: Fix typos in os/vxworks/os_defines.h
Message-ID: <20260601160506.554F94BA2E27@sourceware.org>

https://gcc.gnu.org/g:6d3c334bd9feb7ea0ba3b6c86ffd3dcf4f90e147

commit r17-1136-g6d3c334bd9feb7ea0ba3b6c86ffd3dcf4f90e147
Author: Dhruv Chawla <dhruvc@nvidia.com>
Date:   Thu May 21 12:29:54 2026 +0000

    libstdc++: Fix typos in os/vxworks/os_defines.h
    
    Signed-off-by: Dhruv Chawla <dhruvc@nvidia.com>
    
    libstdc++-v3/ChangeLog:
    
            * config/os/vxworks/os_defines.h: Fix typos.

Diff:
---
 libstdc++-v3/config/os/vxworks/os_defines.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/config/os/vxworks/os_defines.h b/libstdc++-v3/config/os/vxworks/os_defines.h
index 909bd96658d3..248ea242edc8 100644
--- a/libstdc++-v3/config/os/vxworks/os_defines.h
+++ b/libstdc++-v3/config/os/vxworks/os_defines.h
@@ -54,7 +54,7 @@
 // are going to include for libstdc++ have a few related intrinsic
 // assumptions.  We control our own configuration here to best integrate with
 // this environment: use C99 math headers, do not use the FP macros for
-// dynamic cast by default (overriden for RTPs below) and arrange to disable
+// dynamic cast by default (overridden for RTPs below) and arrange to disable
 // the system TR1 declarations as we'll provide ours.
 
 #if _VXWORKS_MAJOR_GE(7)
@@ -90,7 +90,7 @@
 
 #endif // _VXWORKS_MAJOR >= 7
 
-// The min/max "functions" may be refered to with a namespace prefix.
+// The min/max "functions" may be referred to with a namespace prefix.
 // Prevent possible redefinitions as macros from VxWorks headers.
 #undef NOMINMAX
 #define NOMINMAX 1

From jakub@gcc.gnu.org  Mon Jun  1 20:52:47 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Mon,  1 Jun 2026 20:52:47 +0000 (GMT)
Subject: [gcc r15-11209] libstdc++: Uglify another variable name
Message-ID: <20260601205247.646164BA2E25@sourceware.org>

https://gcc.gnu.org/g:36443fe6abce359aa15c62d86c1c290babf789aa

commit r15-11209-g36443fe6abce359aa15c62d86c1c290babf789aa
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Mar 18 15:40:51 2026 +0100

    libstdc++: Uglify another variable name
    
    This is needed to make the latest version of the uglification plugin
    I'm about to send PASS.
    
    2026-03-18  Jakub Jelinek  <jakub@redhat.com>
    
            * include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
            variable name.
    
    (cherry picked from commit 1c73a21caf2dc83ced30f10076a682ea26e1ba71)

Diff:
---
 libstdc++-v3/include/bits/regex_compiler.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h
index 21e7065e066b..d39ec63cea20 100644
--- a/libstdc++-v3/include/bits/regex_compiler.h
+++ b/libstdc++-v3/include/bits/regex_compiler.h
@@ -172,9 +172,9 @@ namespace __detail
       _StateSeqT
       _M_pop()
       {
-	auto ret = _M_stack.top();
+	auto __ret = _M_stack.top();
 	_M_stack.pop();
-	return ret;
+	return __ret;
       }
 
       static _FlagT

From gccadmin@gcc.gnu.org  Tue Jun  2 00:17:17 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  2 Jun 2026 00:17:17 +0000 (GMT)
Subject: [gcc r17-1149] Daily bump.
Message-ID: <20260602001717.8DC8E4BA2E0B@sourceware.org>

https://gcc.gnu.org/g:198c9262a2c3dcfc28af73f125ff4f0e179cb65a

commit r17-1149-g198c9262a2c3dcfc28af73f125ff4f0e179cb65a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 2 00:16:46 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog                     | 811 ++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP                     |   2 +-
 gcc/c-family/ChangeLog            |  10 +
 gcc/cp/ChangeLog                  |  17 +
 gcc/fortran/ChangeLog             |  27 ++
 gcc/rust/ChangeLog                | 132 +++++++
 gcc/testsuite/ChangeLog           | 162 ++++++++
 include/ChangeLog                 |   5 +
 libatomic/ChangeLog               |   5 +
 libgcc/ChangeLog                  |  40 ++
 libgcc/config/avr/libf7/ChangeLog |   6 +
 libgm2/ChangeLog                  |   4 +
 libgomp/ChangeLog                 | 146 +++++++
 libiberty/ChangeLog               |   4 +
 libitm/ChangeLog                  |   4 +
 libstdc++-v3/ChangeLog            |  10 +
 16 files changed, 1384 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 242ef68af5ea..e0da7046f84b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,814 @@
+2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/122827
+	* config/aarch64/aarch64.cc (aarch64_hard_regno_call_part_clobbered):
+	For SVE modes use BYTES_PER_SVE_VECTOR for the per-register size
+	rather than GET_MODE_SIZE.
+	* config/aarch64/aarch64-early-ra.cc (early_ra::get_allocno_subgroup):
+	Classify any SVE mode as FPR_Z.
+
+2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	* config/aarch64/tuning_models/olympus.h (olympus_scalar_issue_info,
+	olympus_advsimd_issue_info, olympus_sve_issue_info): Set
+	loads_stores_per_cycle to 6.
+
+2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	* config/aarch64/tuning_models/olympus.h (olympus_tunings):
+	Adjust loop_align, function_align, jump_align.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/arm/arm-mve-builtins-shapes.cc (struct viddup_def):
+	Re-flow comment.
+	(struct vidwdup_def): Likewise.
+	* config/arm/arm.cc (arm_mve_check_reg_origin_is_num_elems): Likewise.
+	* config/loongarch/sync.md: Likewise.
+	* config/microblaze/microblaze.cc (compute_frame_size): Likewise.
+	* config/rs6000/rs6000-call.cc (rs6000_gimplify_va_arg): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/darwin-c.cc (find_subframework_header): Fix typos.
+	* config/darwin-driver.cc (darwin_find_version_from_kernel): Likewise.
+	* config/darwin.cc (darwin_label_is_anonymous_local_objc_name): Likewise.
+	(fprintf): Likewise.
+	* config/sol2-stubs.cc: Likewise.
+	* config/sol2.cc (solaris_elf_asm_comdat_section): Likewise.
+	* config/sol2.h: Likewise.
+	* config/vx-common.h: Likewise.
+	* config/vxworks.h (vxworks_asm_out_destructor): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/xtensa/xtensa.cc (xtensa_legitimize_address): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/vms/vms-c.cc (enum extern_model_kind): Fix typos.
+	(vms_pragma_message): Likewise.
+	(vms_c_register_includes): Likewise.
+	* config/vms/vms.cc (vms_function_section): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/visium/visium.h (CASE_VECTOR_PC_RELATIVE): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/vax/vax.cc (vax_expand_addsub_di_operands): Fix typos.
+	* config/vax/vax.h (PRINT_OPERAND_ADDRESS): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/sparc/freebsd.h: Fix typos.
+	* config/sparc/sparc.cc (emit_scc_insn): Likewise.
+	(sparc_emit_membar_for_model): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/sh/sh-mem.cc (sh_expand_cmpstr): Fix typos.
+	* config/sh/sh.cc (sh_option_override): Likewise.
+	(sh_rtx_costs): Likewise.
+	(fixup_addr_diff_vecs): Likewise.
+	(sh_expand_epilogue): Likewise.
+	(sh_legitimize_address_displacement): Likewise.
+	(sh_can_use_simple_return_p): Likewise.
+	(sh_find_equiv_gbr_addr): Likewise.
+	(sh_check_add_incdec_notes): Likewise.
+	* config/sh/sh.md: Likewise.
+	* config/sh/sh4-300.md: Likewise.
+	* config/sh/sh_treg_combine.cc (sh_treg_combine::try_combine_comparisons): Likewise.
+	(sh_treg_combine::try_eliminate_cstores): Likewise.
+	* config/sh/sync.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/rx/rx.cc (rx_print_operand): Fix typos.
+	(rx_expand_epilogue): Likewise.
+	* config/rx/rx.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/s390/2817.md: Fix typos.
+	* config/s390/s390.cc (s390_contiguous_bitmask_nowrap_p): Likewise.
+	(s390_contiguous_bitmask_p): Likewise.
+	(s390_short_displacement): Likewise.
+	(s390_expand_cmpmem): Likewise.
+	(s390_expand_vec_movstr): Likewise.
+	(s390_expand_cstoreti4): Likewise.
+	(s390_expand_int_spaceship): Likewise.
+	(s390_z10_optimize_cmp): Likewise.
+	(s390_support_vector_misalignment): Likewise.
+	* config/s390/s390.h (NO_FUNCTION_CSE): Likewise.
+	* config/s390/s390.md: Likewise.
+	* config/s390/subst.md: Likewise.
+	* config/s390/vx-builtins.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/rs6000/aix.h: Fix typos.
+	* config/rs6000/cell.md: Likewise.
+	* config/rs6000/darwin.h: Likewise.
+	* config/rs6000/mmintrin.h: Likewise.
+	* config/rs6000/rs6000-call.cc (rs6000_gimplify_va_arg): Likewise.
+	* config/rs6000/rs6000-internal.h: Likewise.
+	* config/rs6000/rs6000-logue.cc (is_altivec_return_reg): Likewise.
+	(rs6000_output_function_prologue): Likewise.
+	* config/rs6000/rs6000-p8swap.cc (quad_aligned_store_p): Likewise.
+	(const_load_sequence_p): Likewise.
+	(replace_swapped_aligned_store): Likewise.
+	* config/rs6000/rs6000-passes.def: Likewise.
+	* config/rs6000/rs6000-string.cc (expand_cmp_vec_sequence): Likewise.
+	(expand_compare_loop): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_debug_addr_mask): Likewise.
+	(rs6000_setup_reg_addr_masks): Likewise.
+	(darwin_rs6000_override_options): Likewise.
+	(rs6000_option_override_internal): Likewise.
+	(rs6000_cost_data::determine_suggested_unroll_factor): Likewise.
+	(rs6000_cannot_force_const_mem): Likewise.
+	(rs6000_emit_le_vsx_move): Likewise.
+	(rs6000_secondary_reload_memory): Likewise.
+	(rs6000_reverse_condition): Likewise.
+	(rs6000_expand_float128_convert): Likewise.
+	(rs6000_adjust_atomic_subword): Likewise.
+	(rs6000_expand_atomic_op): Likewise.
+	(rs6000_xcoff_declare_object_name): Likewise.
+	(output_pcrel_opt_reloc): Likewise.
+	(rs6000_set_up_by_prologue): Likewise.
+	(rs6000_split_logical_inner): Likewise.
+	(rs6000_split_multireg_move): Likewise.
+	* config/rs6000/rs6000.h: Likewise.
+	* config/rs6000/rs6000.md: Likewise.
+	* config/rs6000/sync.md: Likewise.
+	* config/rs6000/vector.md: Likewise.
+	* config/rs6000/vsx.md: Likewise.
+	* config/rs6000/vxworks.h: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/rl78/rl78.cc (rl78_alloc_physical_registers): Fix typos.
+	(set_origin): Likewise.
+	(rl78_remove_unused_sets): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/pdp11/pdp11.cc (pdp11_insn_cost): Fix typo.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* common/config/riscv/riscv-common.cc (riscv_subset_list::add): Fix
+	typos.
+	(riscv_subset_list::parse_single_multiletter_ext): Likewise.
+	(riscv_subset_list::set_loc): Likewise.
+	(riscv_arch_str): Likewise.
+	* config/riscv/riscv-avlprop.cc: Likewise.
+	* config/riscv/riscv-bclr-lowest-set-bit.cc (find_later_ctz): Likewise.
+	* config/riscv/riscv-ext-andes.def: Likewise.
+	* config/riscv/riscv-ext.def: Likewise.
+	* config/riscv/riscv-profiles.def: Likewise.
+	* config/riscv/riscv-selftests.cc (run_const_vector_selftests): Likewise.
+	(run_broadcast_selftests): Likewise.
+	(riscv_run_selftests): Likewise.
+	* config/riscv/riscv-string.cc (riscv_expand_strcmp): Likewise.
+	* config/riscv/riscv-v.cc (shuffle_decompress_patterns): Likewise.
+	(vls_mode_valid_p): Likewise.
+	* config/riscv/riscv-vect-permconst.cc (vector_permconst::process_bb): Likewise.
+	* config/riscv/riscv-vector-builtins.cc (riscv_pragma_intrinsic_flags_pollute): Likewise.
+	* config/riscv/riscv-vsetvl.cc: Likewise.
+	* config/riscv/riscv-zicfilp.cc: Likewise.
+	* config/riscv/riscv.cc (riscv_expand_mult_with_const_int): Likewise.
+	(riscv_rtx_costs): Likewise.
+	(riscv_address_cost): Likewise.
+	(riscv_vls_cc_function_abi): Likewise.
+	(riscv_frm_mode_needed): Likewise.
+	(dispatch_function_versions): Likewise.
+	* config/riscv/riscv.h (DWARF_REG_TO_UNWIND_COLUMN): Likewise.
+	* config/riscv/riscv.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/pa/pa.cc (pa_assemble_integer): Fix typos.
+	(pa_can_change_mode_class): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/or1k/or1k.cc (or1k_strict_argument_naming): Fix typos.
+	(or1k_print_operand_address): Likewise.
+	* config/or1k/or1k.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/nvptx/nvptx.cc (nvptx_option_override): Fix typos.
+	(nvptx_assemble_undefined_decl): Likewise.
+	(nvptx_mem_maybe_shared_p): Likewise.
+	(nvptx_discover_pars): Likewise.
+	(verify_neutering_labels): Likewise.
+	(nvptx_condjump_label): Likewise.
+	(nvptx_lockfull_update): Likewise.
+	* config/nvptx/nvptx.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* common/config/nds32/nds32-common.cc (nds32_except_unwind_info): Fix
+	typos.
+	* config/nds32/constants.md: Likewise.
+	* config/nds32/constraints.md: Likewise.
+	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
+	* config/nds32/nds32-dspext.md: Likewise.
+	* config/nds32/nds32-e8.md: Likewise.
+	* config/nds32/nds32-fp-as-gp.cc (nds32_fp_as_gp_check_available): Likewise.
+	* config/nds32/nds32-intrinsic.cc (nds32_expand_priority_builtin): Likewise.
+	* config/nds32/nds32-isr.cc (nds32_emit_isr_vector_section): Likewise.
+	(nds32_asm_file_end_for_isr): Likewise.
+	* config/nds32/nds32-md-auxiliary.cc (output_cond_branch): Likewise.
+	(nds32_expand_cbranch): Likewise.
+	(nds32_expand_float_cstore): Likewise.
+	(nds32_expand_movcc): Likewise.
+	(nds32_output_stack_pop): Likewise.
+	(nds32_output_return): Likewise.
+	(nds32_split_sms): Likewise.
+	(nds32_legitimize_tls_address): Likewise.
+	* config/nds32/nds32-memory-manipulation.cc (nds32_expand_cpymemsi_unroll): Likewise.
+	(nds32_expand_load_multiple): Likewise.
+	* config/nds32/nds32-multiple.md: Likewise.
+	* config/nds32/nds32-n7.md: Likewise.
+	* config/nds32/nds32-n8.md: Likewise.
+	* config/nds32/nds32-n9-2r1w.md: Likewise.
+	* config/nds32/nds32-pipelines-auxiliary.cc (extract_nth_access_reg): Likewise.
+	(pbsada_insn_ra_rb_dep_reg_p): Likewise.
+	* config/nds32/nds32-predicates.cc (nds32_can_use_bset_p): Likewise.
+	(nds32_can_use_btgl_p): Likewise.
+	(nds32_symbol_load_store_p): Likewise.
+	* config/nds32/nds32-protos.h (nds32_cond_move_p): Likewise.
+	(nds32_mem_format): Likewise.
+	* config/nds32/nds32-relax-opt.cc (nds32_plus_reg_load_store_p): Likewise.
+	* config/nds32/nds32-utils.cc (extract_offset_rtx): Likewise.
+	* config/nds32/nds32.cc (nds32_compute_stack_frame): Likewise.
+	(nds32_emit_stack_pop_multiple): Likewise.
+	(nds32_emit_stack_v3pop): Likewise.
+	(nds32_can_change_mode_class): Likewise.
+	(nds32_arg_partial_bytes): Likewise.
+	(nds32_function_ok_for_sibcall): Likewise.
+	(nds32_register_move_cost): Likewise.
+	(nds32_print_operand): Likewise.
+	(nds32_merge_decl_attributes): Likewise.
+	(nds32_insert_attributes): Likewise.
+	(nds32_init_libfuncs): Likewise.
+	(nds32_expand_epilogue_v3pop): Likewise.
+	(nds32_can_use_return_insn): Likewise.
+	(nds32_target_alignment): Likewise.
+	(nds32_split_double_word_load_store_p): Likewise.
+	* config/nds32/nds32.h (enum nds32_builtins): Likewise.
+	(CASE_VECTOR_MODE): Likewise.
+	* config/nds32/nds32.md: Likewise.
+	* config/nds32/nds32_intrinsic.h (__attribute__): Likewise.
+	* config/nds32/nds32_isr.h: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/msp430/msp430-opts.h (enum msp430_cpu_types): Fix typos.
+	* config/msp430/msp430.cc (msp430_op_not_in_high_mem): Likewise.
+	* config/msp430/msp430.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/mingw/winnt-cxx.cc (i386_pe_adjust_class_at_definition): Fix
+	typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/microblaze/microblaze.cc (struct microblaze_frame_info): Fix
+	typos.
+	(compute_frame_size): Likewise.
+	* config/microblaze/microblaze.h: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/mcore/mcore.h: Fix typo.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/mips/driver-native.cc (host_detect_local_cpu): Fix typos.
+	* config/mips/mips-cpus.def (MIPS_CPU): Likewise.
+	* config/mips/mips.cc (mips_setup_incoming_varargs): Likewise.
+	(mips_function_ok_for_sibcall): Likewise.
+	(mips_expand_ext_as_unaligned_load): Likewise.
+	(mips_use_ins_ext_p): Likewise.
+	(mips_pop_asm_switch): Likewise.
+	(mips_cfun_has_inflexible_gp_ref_p): Likewise.
+	(mips_set_compression_mode): Likewise.
+	(mips_expand_vec_unpack): Likewise.
+	* config/mips/mips.h (while): Likewise.
+	* config/mips/mips.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/m68k/cf.md: Fix typos.
+	* config/m68k/m68k.cc (m68k_unwrap_symbol): Likewise.
+	(m68k_adjust_decorated_operand): Likewise.
+	(m68k_call_tls_get_addr): Likewise.
+	(m68k_call_m68k_read_tp): Likewise.
+	(m68k_sched_attr_size): Likewise.
+	(m68k_sched_dfa_post_advance_cycle): Likewise.
+	(sched_mem_operand_p): Likewise.
+	(m68k_sched_address_bypass_p): Likewise.
+	* config/m68k/m68kelf.h: Likewise.
+	* config/m68k/netbsd-elf.h (REGISTER_PREFIX): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/loongarch/lasx.md: Fix typos.
+	* config/loongarch/loongarch-builtins.cc: Likewise.
+	* config/loongarch/loongarch-c.cc (loongarch_pragma_target_parse): Likewise.
+	* config/loongarch/loongarch-opts.cc (loongarch_generate_mrecip_scheme): Likewise.
+	* config/loongarch/loongarch-opts.h (loongarch_config_target): Likewise.
+	* config/loongarch/loongarch.cc (loongarch_setup_incoming_varargs): Likewise.
+	(loongarch_build_integer): Likewise.
+	(loongarch_explicit_relocs_p): Likewise.
+	(loongarch_valid_lo_sum_p): Likewise.
+	(loongarch_addu16i_imm12_operand_p): Likewise.
+	(loongarch_rewrite_mem_for_simple_ldst): Likewise.
+	(loongarch_is_elem_duplicate): Likewise.
+	(loongarch_expand_vec_perm_const): Likewise.
+	(loongarch_sched_reassociation_width): Likewise.
+	(loongarch_expand_vec_unpack): Likewise.
+	(dispatch_function_versions): Likewise.
+	(loongarch_option_same_function_versions): Likewise.
+	* config/loongarch/loongarch.h: Likewise.
+	* config/loongarch/loongarch.md: Likewise.
+	* config/loongarch/lsx.md: Likewise.
+	* config/loongarch/predicates.md: Likewise.
+	* config/loongarch/simd.md: Likewise.
+	* config/loongarch/sync.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/lm32/lm32.cc (lm32_compute_frame_size): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/ia64/ia64.cc (ia64_add_bundle_selector_before): Fix typos.
+	* config/ia64/itanium2.md: Likewise.
+	* config/ia64/sync.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/i386/athlon.md: Fix typos.
+	* config/i386/avx512fintrin.h: Likewise.
+	* config/i386/btver2.md: Likewise.
+	* config/i386/c86-4g-m7.md: Likewise.
+	* config/i386/c86-4g.md: Likewise.
+	* config/i386/cygwin.h: Likewise.
+	* config/i386/i386-c.cc (ix86_target_macros_internal): Likewise.
+	* config/i386/i386-expand.cc (ix86_expand_branch): Likewise.
+	(ix86_expand_int_sse_cmp): Likewise.
+	(ix86_expand_vec_perm): Likewise.
+	(expand_small_cpymem_or_setmem): Likewise.
+	(ix86_copy_addr_to_reg): Likewise.
+	(ix86_expand_special_args_builtin): Likewise.
+	(ix86_expand_vector_init_interleave): Likewise.
+	(expand_vec_perm_shufps_shufps): Likewise.
+	(ix86_expand_sse2_mulvxdi3): Likewise.
+	(ix86_gen_ccmp_first): Likewise.
+	* config/i386/i386-features.cc (general_scalar_to_vector_candidate_p): Likewise.
+	(pass_x86_cse::x86_cse): Likewise.
+	(ix86_apx_nf_convert): Likewise.
+	(dispatch_function_versions): Likewise.
+	* config/i386/i386-features.h (class scalar_chain): Likewise.
+	* config/i386/i386-options.cc (ix86_function_specific_restore): Likewise.
+	(ix86_valid_target_attribute_tree): Likewise.
+	(ix86_override_options_after_change_1): Likewise.
+	(ix86_option_override_internal): Likewise.
+	* config/i386/i386.cc (ix86_can_inline_p): Likewise.
+	(ix86_function_regparm): Likewise.
+	(construct_container): Likewise.
+	(ix86_return_in_memory): Likewise.
+	(output_indirect_thunk): Likewise.
+	(ix86_compute_frame_layout): Likewise.
+	(choose_basereg): Likewise.
+	(ix86_emit_save_reg_using_mov): Likewise.
+	(pro_epilogue_adjust_stack): Likewise.
+	(ix86_expand_prologue): Likewise.
+	(ix86_emit_restore_sse_regs_using_mov): Likewise.
+	(ix86_memory_address_reg_class): Likewise.
+	(ix86_avx_u128_mode_after): Likewise.
+	(ix86_output_addr_diff_elt): Likewise.
+	(ix86_lea_outperforms): Likewise.
+	(ix86_avoid_lea_for_addr): Likewise.
+	(ix86_cc_modes_compatible): Likewise.
+	(add_parameter_dependencies): Likewise.
+	(ix86_data_alignment): Likewise.
+	(ix86_gimple_fold_builtin): Likewise.
+	(ix86_autovectorize_vector_modes): Likewise.
+	(ix86_max_noce_ifcvt_seq_cost): Likewise.
+	(ix86_vector_costs::add_stmt_cost): Likewise.
+	(ix86_vector_costs::finish_cost): Likewise.
+	(ix86_optab_supported_p): Likewise.
+	(ix86_push_rounding): Likewise.
+	* config/i386/i386.h (host_detect_local_cpu): Likewise.
+	(enum reg_class): Likewise.
+	* config/i386/i386.md: Likewise.
+	* config/i386/i386elf.h: Likewise.
+	* config/i386/predicates.md: Likewise.
+	* config/i386/sse.md: Likewise.
+	* config/i386/x86-tune-costs.h (struct processor_costs): Likewise.
+	* config/i386/x86-tune-sched-atom.cc (swap_top_of_ready_list): Likewise.
+	(ix86_atom_sched_reorder): Likewise.
+	* config/i386/x86-tune-sched-bd.cc (find_constant): Likewise.
+	* config/i386/x86-tune-sched.cc (exact_store_load_dependency): Likewise.
+	* config/i386/x86-tune.def (X86_TUNE_FUSE_MOV_AND_ALU): Likewise.
+	(X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Likewise.
+	(X86_TUNE_DOUBLE_WITH_ADD): Likewise.
+	(X86_TUNE_PROMOTE_QIMODE): Likewise.
+	* config/i386/zn4zn5.md: Likewise.
+	* config/i386/znver.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/gcn/constraints.md: Fix typos.
+	* config/gcn/gcn-opts.h (TARGET_ARCHITECTED_FLAT_SCRATCH): Likewise.
+	* config/gcn/gcn-valu.md: Likewise.
+	* config/gcn/gcn.cc (gcn_gen_undef): Likewise.
+	(gcn_addr_space_debug): Likewise.
+	(gcn_expand_prologue): Likewise.
+	(gcn_frame_pointer_rqd): Likewise.
+	* config/gcn/gcn.h (NUM_PARM_REGS): Likewise.
+	(enum gcn_builtin_codes): Likewise.
+	* config/gcn/gcn.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/ft32/ft32.cc (ft32_init_machine_status): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/frv/frv-opts.h: Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/fr30/fr30.cc (fr30_const_double_is_zero): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/epiphany/epiphany.cc (epiphany_expand_epilogue): Fix typos.
+	* config/epiphany/resolve-sw-modes.cc: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/csky/csky.cc (csky_output_inline_const): Fix typos.
+	(emit_csky_regs_pop): Likewise.
+	(csky_return_in_memory): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/c6x/c6x.cc (c6x_file_start): Fix typos.
+	(c6x_print_operand_address): Likewise.
+	(c6x_asm_emit_except_personality): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/bpf/bpf.cc (bpf_asm_named_section): Fix typos.
+	* config/bpf/core-builtins.cc (remove_parser_plugin): Likewise.
+	(make_core_relo): Likewise.
+	(bpf_handle_plugin_finish_type): Likewise.
+	(bpf_output_core_reloc): Likewise.
+	(core_make_builtins): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/bfin/bfin.cc (bfin_function_ok_for_sibcall): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* common/config/avr/avr-common.cc: Fix typos.
+	* config/avr/avr-passes.cc (size_to_mode): Likewise.
+	(struct absint_t): Likewise.
+	(plies_t::emit_sets): Likewise.
+	(avr_strict_unsigned_p): Likewise.
+	(avr_redundant_compare): Likewise.
+	(avr_optimize_casesi): Likewise.
+	(struct AVR_LdSt_Props): Likewise.
+	(avr_pass_split_nzb::split_nzb_insns): Likewise.
+	(make_avr_pass_fuse_move): Likewise.
+	* config/avr/avr.cc (avr_option_override): Likewise.
+	(avr_can_inline_p): Likewise.
+	(avr_expand_epilogue): Likewise.
+	(avr_init_cumulative_args): Likewise.
+	(reg_unused_after): Likewise.
+	(avr_out_lpm_no_lpmx): Likewise.
+	(avr_out_compare): Likewise.
+	(avr_out_plus_ext): Likewise.
+	(avr_out_fract): Likewise.
+	(avr_nonzero_bits_lsr_operands_p): Likewise.
+	* config/avr/avr.h (avr_no_devlib): Likewise.
+	(struct machine_function): Likewise.
+	* config/avr/avr.md: Likewise.
+	* config/avr/builtins.def (FLASH_SEGMENT): Likewise.
+	* config/avr/specs.h: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* common/config/arm/arm-common.cc (arm_config_default): Fix typos.
+	(arm_canon_arch_option_1): Likewise.
+	* config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Likewise.
+	* config/arm/arm-builtins.cc (MAC_LANE_PAIR_QUALIFIERS): Likewise.
+	(USMAC_LANE_QUADTUP_QUALIFIERS): Likewise.
+	* config/arm/arm-modes.def (ADJUST_FLOAT_FORMAT): Likewise.
+	* config/arm/arm-mve-builtins-base.cc: Likewise.
+	* config/arm/arm-mve-builtins-shapes.cc (struct binary_lshift_unsigned_def): Likewise.
+	(struct binary_maxamina_def): Likewise.
+	(struct viddup_def): Likewise.
+	(struct vidwdup_def): Likewise.
+	* config/arm/arm-protos.h (struct tune_params): Likewise.
+	* config/arm/arm.cc (arm_option_override_internal): Likewise.
+	(arm_option_override): Likewise.
+	(optimal_immediate_sequence_1): Likewise.
+	(arm_pcs_from_attribute): Likewise.
+	(aapcs_vfp_advance): Likewise.
+	(aapcs_layout_arg): Likewise.
+	(arm_init_cumulative_args): Likewise.
+	(arm_rtx_costs_internal): Likewise.
+	(mve_bool_vec_to_const): Likewise.
+	(operands_ok_ldrd_strd): Likewise.
+	(emit_multi_reg_push): Likewise.
+	(arm_emit_vfp_multi_reg_pop): Likewise.
+	(thumb2_emit_ldrd_pop): Likewise.
+	(arm_print_condition): Likewise.
+	(get_arm_condition_code): Likewise.
+	(thumb_pop): Likewise.
+	(arm_print_asm_arch_directives): Likewise.
+	(arm_debugger_regno): Likewise.
+	(arm_target_bb_ok_for_lob): Likewise.
+	(arm_mve_load_store_insn_p): Likewise.
+	(arm_mve_check_reg_origin_is_num_elems): Likewise.
+	(arm_mve_dlstp_check_dec_counter): Likewise.
+	(arm_mve_loop_valid_for_dlstp): Likewise.
+	(arm_loop_unroll_adjust): Likewise.
+	* config/arm/arm.h (ROUND_UP_WORD): Likewise.
+	* config/arm/arm.md: Likewise.
+	* config/arm/constraints.md: Likewise.
+	* config/arm/cortex-a17-neon.md: Likewise.
+	* config/arm/cortex-r4f.md: Likewise.
+	* config/arm/crypto.md: Likewise.
+	* config/arm/elf.h: Likewise.
+	* config/arm/fa726te.md: Likewise.
+	* config/arm/iterators.md: Likewise.
+	* config/arm/neon.md: Likewise.
+	* config/arm/thumb1.md: Likewise.
+	* config/arm/uclinuxfdpiceabi.h: Likewise.
+	* config/arm/unspecs.md: Likewise.
+	* config/arm/vec-common.md: Likewise.
+	* config/arm/vxworks.h (STACK_CHECK_PROTECT): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/arc/arc-arch.h (enum base_architecture): Fix typos.
+	* config/arc/arc-cpus.def: Likewise.
+	* config/arc/arc.cc (legitimate_small_data_address_p): Likewise.
+	(legitimate_scaled_address_p): Likewise.
+	(get_arc_condition_code): Likewise.
+	(arc_setup_incoming_varargs): Likewise.
+	(pop_reg): Likewise.
+	(arc_restore_callee_leave): Likewise.
+	(arc_asm_trampoline_template): Likewise.
+	(arc_add_jli_section): Likewise.
+	(arc_invalid_within_doloop): Likewise.
+	(arc_reorg): Likewise.
+	(conditionalize_nonjump): Likewise.
+	(arc_eh_uses): Likewise.
+	(arc_memory_move_cost): Likewise.
+	* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Likewise.
+	(TARGET_PAD_RETURN): Likewise.
+	(arc_select_cc_mode): Likewise.
+	* config/arc/arc.md: Likewise.
+	* config/arc/arc.opt: Likewise.
+	* config/arc/arc700.md: Likewise.
+	* config/arc/elf.h (TARGET_ASM_FILE_END): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/alpha/alpha.cc (alpha_pass_by_reference): Fix typos.
+	(alpha_reorg): Likewise.
+	* config/alpha/predicates.md: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* common/config/aarch64/aarch64-common.cc (aarch64_parse_cpu): Fix
+	typos.
+	* common/config/aarch64/cpuinfo.h: Likewise.
+	* config/aarch64/aarch64-builtins.cc: Likewise.
+	* config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): Likewise.
+	* config/aarch64/aarch64-modes.def (FLOAT_MODE): Likewise.
+	* config/aarch64/aarch64-simd.md: Likewise.
+	* config/aarch64/aarch64-speculation.cc: Likewise.
+	* config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+	* config/aarch64/aarch64-sve-builtins-shapes.cc (struct binary_za_m_def): Likewise.
+	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
+	* config/aarch64/aarch64-sve.md: Likewise.
+	* config/aarch64/aarch64-sve2.md: Likewise.
+	* config/aarch64/aarch64.cc (aarch64_init_sysregs): Likewise.
+	(aarch64_load_symref_appropriately): Likewise.
+	(aarch64_output_sve_cnt_immediate): Likewise.
+	(aarch64_replace_reg_mode): Likewise.
+	(aarch64_pass_by_reference_1): Likewise.
+	(aarch64_layout_arg): Likewise.
+	(aarch64_allocate_and_probe_stack_space): Likewise.
+	(aarch64_legitimize_address_displacement): Likewise.
+	(aarch64_output_casesi): Likewise.
+	(aarch64_stp_sequence_cost): Likewise.
+	(aarch64_vector_costs::add_stmt_cost): Likewise.
+	(aarch64_override_options): Likewise.
+	(aarch64_functions_b_resolvable_from_a): Likewise.
+	(dispatch_function_versions): Likewise.
+	(aarch64_can_inline_p): Likewise.
+	(aarch64_classify_symbol): Likewise.
+	(aarch64_build_builtin_va_list): Likewise.
+	(aarch64_sve_pred_valid_immediate): Likewise.
+	(aarch64_simd_lane_bounds): Likewise.
+	(aarch64_expand_vector_init_fallback): Likewise.
+	(aarch64_modes_compatible_p): Likewise.
+	(aarch64_ldrstr_offset_compare): Likewise.
+	(aarch64_speculation_safe_value): Likewise.
+	* config/aarch64/aarch64.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
+	(struct GTY): Likewise.
+	* config/aarch64/aarch64.md: Likewise.
+	* config/aarch64/aarch64.opt: Likewise.
+	* config/aarch64/arm_bf16.h: Likewise.
+	* config/aarch64/arm_neon.h (vbslq_u64): Likewise.
+	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
+	* config/aarch64/driver-aarch64.cc (get_cpu_from_id): Likewise.
+	(host_detect_local_cpu): Likewise.
+	* config/aarch64/iterators.md: Likewise.
+	* config/aarch64/thunderx.md: Likewise.
+	* config/aarch64/thunderx3t110.md: Likewise.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure: Regenerate.
+
+2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+
+	* config/i386/i386.h (TARGET_ENABLE_NDD_MEM): New.
+	* config/i386/x86-tune.def (X86_TUNE_ENABLE_NDD_MEM): New.
+	* config/i386/i386.md (*add<dwi>3_doubleword): Split NDD rm
+	to r,m and add preferred_for_speed for NDD memory alternatives.
+	(*add<dwi>3_doubleword_zext): Likewise.
+	(*add<mode>_1<nf_name>): Likewise.
+	(addsi_1_zext): Likewise.
+	(*addhi_1<nf_name>): Likewise.
+	(*addqi_1<nf_name>): Likewise.
+	(*add<mode>_2): Likewise.
+	(*addsi_2_zext): Likewise.
+	(*add<mode>_3): Likewise.
+	(*addsi_3_zext): Likewise.
+	(*add<mode>_5): Likewise.
+	(*addv<mode>4): Likewise.
+	(addv<mode>4_1): Likewise.
+	(*addv<dwi>4_doubleword_1): Likewise.
+	(*addv<mode>4_overflow_1): Likewise.
+	(*addv<mode>4_overflow_2): Likewise.
+	(*sub<dwi>3_doubleword): Likewise.
+	(*sub<dwi>3_doubleword_zext): Likewise.
+	(*sub<mode>_1<nf_name>): Likewise.
+	(*subsi_1_zext): Likewise.
+	(*sub<mode>_2): Likewise.
+	(*subsi_2_zext): Likewise.
+	(*subv<mode>4): Likewise.
+	(subv<mode>4_1): Likewise.
+	(*subv<dwi>4_doubleword_1): Likewise.
+	(*subv<mode>4_overflow_1): Likewise.
+	(*subv<mode>4_overflow_2): Likewise.
+	(*sub<mode>_3): Likewise.
+	(*subsi_3_zext): Likewise.
+	(@add<mode>3_carry): Likewise.
+	(*add<mode>3_carry_2): Likewise.
+	(*addsi3_carry_zext): Likewise.
+	(*addsi3_carry_zext_0): Likewise.
+	(*addsi3_carry_zext_0r): Likewise.
+	(addcarry<mode>): Likewise.
+	(*addcarry<mode>_1): Likewise.
+	(@sub<mode>3_carry): Likewise.
+	(*sub<mode>3_carry_2): Likewise.
+	(*subsi3_carry_zext): Likewise.
+	(*subsi3_carry_zext_0): Likewise.
+	(*subsi3_carry_zext_0r): Likewise.
+	(subborrow<mode>): Likewise.
+	(*subborrow<mode>_1): Likewise.
+	(*add<mode>3_cconly_overflow_1): Likewise.
+	(@add<mode>3_cc_overflow_1): Likewise.
+	(*addsi3_zext_cc_overflow_1): Likewise.
+	(*add<mode>3_cconly_overflow_2): Likewise.
+	(*add<mode>3_cc_overflow_2): Likewise.
+	(*addsi3_zext_cc_overflow_2): Likewise.
+	(*mul<mode>3_1<nf_name>): Likewise.
+	(*mulsi3_1_zext<nf_name>): Likewise.
+	(*mulv<mode>4): Likewise.
+	(*mulvhi4): Likewise.
+	(*and<dwi>3_doubleword): Likewise.
+	(*anddi_1<nf_name>): Likewise.
+	(*andsi_1_zext): Likewise.
+	(*andqi_1<nf_name>): Likewise.
+	(*anddi_2): Likewise.
+	(*andsi_2_zext): Likewise.
+	(*andqi_2_maybe_si): Likewise.
+	(*and<mode>_2): Likewise.
+	(*<code><dwi>3_doubleword): Likewise.
+	(*<code><mode>_1<nf_name>): Likewise.
+	(*notxor<mode>_1): Likewise.
+	(*<code>si_1_zext): Likewise.
+	(*<code>si_1_zext_imm): Likewise.
+	(*<code>qi_1<nf_name>): Likewise.
+	(*notxorqi_1): Likewise.
+	(*<code><mode>_2): Likewise.
+	(*<code>si_2_zext): Likewise.
+	(*<code>si_2_zext_imm): Likewise.
+	(*neg<dwi>2_doubleword): Likewise.
+	(*neg<mode>_1<nf_name>): Likewise.
+	(*negsi_1_zext): Likewise.
+	(*neg<mode>_2): Likewise.
+	(*negsi_2_zext): Likewise.
+	(*neg<mode>_ccc_1): Likewise.
+	(*neg<mode>_ccc_2): Likewise.
+	(*one_cmpl<dwi>2_doubleword): Likewise.
+	(*one_cmpl<mode>2_1): Likewise.
+	(*one_cmplsi2_1_zext): Likewise.
+	(*one_cmplqi2_1): Likewise.
+	(*one_cmpl<mode>2_2): Likewise.
+	(*one_cmplsi2_2_zext): Likewise.
+	(*ashl<dwi>3_doubleword_highpart): Likewise.
+	(*ashl<mode>3_1<nf_name>): Likewise.
+	(*ashlsi3_1_zext): Likewise.
+	(*ashlhi3_1<nf_name>): Likewise.
+	(*ashlqi3_1<nf_name>): Likewise.
+	(*ashl<mode>3_cmp): Likewise.
+	(*ashlsi3_cmp_zext): Likewise.
+	(*ashl<mode>3_cconly): Likewise.
+	(ashr<mode>3_cvt<nf_name>): Likewise.
+	(*ashrsi3_cvt_zext): Likewise.
+	(*ashr<mode>3_1<nf_name>): Likewise.
+	(*highpartdisi2): Likewise.
+	(*lshr<mode>3_1<nf_name>): Likewise.
+	(*<insn>si3_1_zext): Likewise.
+	(*lshrqi3_1<nf_name>): Likewise.
+	(*lshrhi3_1<nf_name>): Likewise.
+	(*<insn><mode>3_cmp): Likewise.
+	(*<insn>si3_cmp_zext): Likewise.
+	(*<insn><mode>3_cconly): Likewise.
+	(*<insn><mode>3_1<nf_name>): Likewise.
+	(*<insn>si3_1_zext): Likewise.
+	(rcrsi2): Likewise.
+	(rcrdi2): Likewise.
+	(<insn><mode>3_carry): Likewise.
+	(*mov<mode>cc_noc): Likewise.
+	(*movsicc_noc_zext): Likewise.
+	(*movsicc_noc_zext_1): Likewise.
+	(*addqi3_carry_zext<mode>_0): Likewise.
+	(*addhi3_carry_zext<mode>_0): Likewise.
+	(*addqi3_carry_zext<mode>_0r): Likewise.
+	(*addhi3_carry_zext<mode>_0r): Likewise.
+	(*subqi3_carry_zext<mode>_0): Likewise.
+	(*subhi3_carry_zext<mode>_0): Likewise.
+	(*subqi3_carry_zext<mode>_0r): Likewise.
+	(*subhi3_carry_zext<mode>_0r): Likewise.
+	(*negqi_1_zext<mode><nf_name>): Likewise.
+	(*neghi_1_zext<mode><nf_name>): Likewise.
+	(*one_cmplqi2_1_zext<mode>): Likewise.
+	(*one_cmplhi2_1_zext<mode>): Likewise.
+	(x86_64_shld_ndd<nf_name>): Likewise.
+	(x86_64_shld_ndd_1<nf_name>): Likewise.
+	(x86_shld_ndd<nf_name>): Likewise.
+	(x86_shld_ndd_1<nf_name>): Likewise.
+	(*ashlqi3_1_zext<mode><nf_name>): Likewise.
+	(*ashlhi3_1_zext<mode><nf_name>): Likewise.
+	(x86_64_shrd_ndd<nf_name>): Likewise.
+	(x86_64_shrd_ndd_1<nf_name>): Likewise.
+	(x86_shrd_ndd<nf_name>): Likewise.
+	(x86_shrd_ndd_1<nf_name>): Likewise.
+	(*<insn>qi3_1_zext<mode><nf_name>): Likewise.
+	(*<insn>hi3_1_zext<mode><nf_name>): Likewise.
+	* config/i386/sse.md
+	(*kortest_cmp<mode>_mov<mode>cc): Add
+	preferred_for_speed for NDD memory alternatives.
+
+2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+
+	* config/i386/x86-tune.def (X86_TUNE_DISABLE_SETZUCC): New.
+	Enable for m_DIAMONDRAPIDS | m_NOVALAKE.
+	* config/i386/i386.h (TARGET_DISABLE_SETZUCC): New define.
+	* config/i386/i386.md (*setcc_<mode>_zu): Guard with
+	TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC.
+	(*setcc_di_1, *setcc_<mode>_1_movzbl): Guard with
+	(!TARGET_APX_ZU || TARGET_DISABLE_SETZUCC).
+	(*setcc_qi, *setcc_qi_slp): Emit setzucc only when
+	TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC.
+
+2026-06-01  Martin Liska  <martin.liska@hey.com>
+
+	* configure.ac: Declare Wild as capable of LTO bootstrap.
+	* configure: Regenerate.
+
 2026-05-31  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/23471
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index b135605ac4dc..98ddba91d55c 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260601
+20260602
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index a9432bc92dc8..107f8416b6a6 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/98539
+	* c-warn.cc (warn_parm_array_mismatch): Check number of size
+	expressions.
+
+2026-06-01  Mark Wielaard  <mark@klomp.org>
+
+	* c.opt.urls: Regenerate.
+
 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
 
 	* c.opt: Removed Wstrict-overflow entry.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7afcdaba3f06..5614f161175c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,20 @@
+2026-06-01  Joe Natter  <johannes.natter@outlook.at>
+
+	PR c++/125422
+	* init.cc (build_new_1): Avoid building a null-check
+	COND_EXPR when rval == data_addr.
+
+2026-06-01  yxj-github-437  <2457369732@qq.com>
+
+	* module.cc (module_state_config::get_dialect): Add reflection
+	dialect.
+
+2026-06-01  Eczbek  <eczbek.void@gmail.com>
+
+	PR c++/125317
+	* parser.cc (cp_parser_requirement_body): Set
+	parser->greater_than_is_operator_p.
+
 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/125123
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d5fc15dc1427..6eb5e12a5e8f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,30 @@
+2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125527
+	* class.cc (gfc_find_derived_vtab): Stop the top-level namespace
+	walk at module/submodule boundaries to avoid escaping a submodule
+	into its ancestor module namespace.
+	* openmp.cc (gfc_omp_requires_add_clause): Likewise; treat the
+	submodule as its own program unit for OMP REQUIRES.
+	(gfc_match_omp_requires): Likewise; allow OMP REQUIRES in a submodule
+	spec part even when gfc_current_ns->parent is now non-NULL.
+	(gfc_match_omp_atomic): Likewise.
+	* parse.cc (parse_module): After processing USE statements and
+	host-association traversal, link the submodule namespace to its
+	ancestor module namespace so internal subprograms are visible via
+	host association (Fortran 2018, 14.6.1.3).
+	(clean_up_modules): Reset gfc_current_ns->parent before gfc_done_2
+	to prevent double-free of the ancestor module namespace.
+
+2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125481
+	* interface.cc (gfc_compare_actual_formal): Add missing check that
+	rejects a procedure-pointer actual argument corresponding to a
+	data-object dummy argument (F23:15.5.2.5, para 2).  Restrict to
+	EXPR_VARIABLE to avoid false positives on calls through procedure
+	pointer components.
+
 2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/105582
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 14949029f8bc..444ec4398b3b 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,135 @@
+2026-06-01  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* parse/rust-parse-impl.hxx(parse_expr_stmt): Return error early when
+	parse_path_in_expression() returns an error node.
+
+2026-06-01  lishin  <lishin1008@gmail.com>
+
+	* util/rust-lang-item.h (Rust::LangItem::Kind): Add DROP.
+	* util/rust-lang-item.cc (Rust::LangItem::lang_items): Add drop lang item.
+
+2026-06-01  Jean-Christian C?RSTEA  <jean-christian.cirstea@tuta.com>
+
+	* backend/rust-intrinsic-handlers.cc
+	(check_for_basic_integer_type): Fixed typo.
+	(build_atomic_builtin_name): Update message.
+	(unchecked_op, atomic_store, ctlz_handler)
+	(cttz_handler, bswap_handler): Use call location.
+
+2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+
+	* backend/rust-compile-expr.cc (CompileExpr::visit): Lower labeled block.
+	(CompileExpr::construct_block_label): Utility function to construct block label.
+	(CompileExpr::lookup_label): Utility function to lookup label.
+	(CompileExpr::lookup_temp_var): Utility function to lookup block temp variables.
+	(CompileExpr::resolve_util): Utility to resolve NodeId to HirId.
+	* backend/rust-compile-expr.h: Header functions.
+	* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Fix label resolution.
+
+2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* hir/tree/rust-hir-visibility.h: Switch Visibility::VisType to an enum class, adapt
+	variants' case.
+	* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Use the new enum API.
+	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.
+	* checks/errors/privacy/rust-visibility-resolver.cc
+	(VisibilityResolver::resolve_visibility): Likewise.
+	* hir/rust-ast-lower.cc (translate_visibility): Likewise.
+	* hir/tree/rust-hir.cc (Visibility::to_string): Likewise.
+	* metadata/rust-export-metadata.cc (PublicInterface::is_crate_public): Likewise.
+	* util/rust-hir-map.cc (Mappings::Mappings): Likewise.
+
+2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit): Add
+	a feature gate around rustc_const_stable attributes.
+
+2026-06-01  Enes Cevik  <nsvke@proton.me>
+
+	* lex/rust-lex.cc (Lexer::parse_non_decimal_int_literal): Emit E0768.
+
+2026-06-01  Enes Cevik  <nsvke@proton.me>
+
+	* ast/rust-ast-collector.cc (TokenCollector::visit): Update Token::make_int and
+	Token::make_float calls to include suffix_start and IntegerLiteralBase::Decimal.
+	* expand/rust-macro-builtins-location.cc (MacroBuiltin::column_handler): Pass string
+	length and base to Token::make_int.
+	(MacroBuiltin::line_handler): Likewise.
+	* lex/rust-lex.cc (Lexer::parse_in_type_suffix): Rename to parse_in_suffix and return
+	string instead of PrimitiveCoreType.
+	(Lexer::parse_in_suffix): Remove underscore stripping to preserve source fidelity for
+	macros.
+	(Lexer::parse_in_exponent_part): Preserve '+' and '-' characters in the raw string.
+	(Lexer::parse_in_decimal): Remove underscore stripping.
+	(Lexer::parse_non_decimal_int_literal): Track suffix start index and pass literal base.
+	(Lexer::parse_non_decimal_int_literals): Use IntegerLiteralBase enum values instead of
+	raw integers.
+	(Lexer::parse_decimal_int_or_float): Track suffix string length and pass base parameters
+	to token creation.
+	* lex/rust-lex.h: Update method signatures for suffix parsing.
+	* lex/rust-token.h (enum class IntegerLiteralBase): New enum to represent numeric bases.
+	* parse/rust-parse-impl-expr.hxx: use LiteralResolve functions to evaluate raw token
+	strings.
+	* parse/rust-parse-impl-pattern.hxx: Use evaluated literal strings for INT and FLOAT
+	tokens.
+	* parse/rust-parse.cc (resolve_literal_suffix): Move suffix validation logic from lexer
+	to parser.
+	(evaluate_integer_literal): New function to strip underscores and convert to decimal via
+	GMP.
+	(evaluate_float_literal): New function to strip underscores from floats.
+	* parse/rust-parse.h (evaluate_integer_literal): Declare in LiteralResolve namespace.
+	(evaluate_float_literal): Likewise.
+	(resolve_literal_suffix): Likewise.
+	* util/rust-token-converter.cc (from_literal): Safely reconstruct raw text and suffix to
+	dynamically determine base and suffix_start for ProcMacros.
+
+2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-name-resolution-context.hxx: Do segment resolution in types NS for more
+	correctness and correct behavior when later resolving paths that use imports and/or
+	modules.
+
+2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-forever-stack.h: Move declarations from ForeverStack to NRCtx, make most
+	of the ForeverStack members public as it helps the Ctx a lot.
+	* resolve/rust-forever-stack.hxx: Move implementation of resolve_path methods to NRCtx.
+	* resolve/rust-name-resolution-context.h: Declare resolve_path methods.
+	* resolve/rust-name-resolution-context.hxx: New file with resolve_path impls.
+
+2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* expand/rust-macro-builtins-log-debug.cc (MacroBuiltin::assert_handler):
+	Add basic assert builtin macro handler.
+
+2026-06-01  lishin  <lishin1008@gmail.com>
+
+	* hir/tree/rust-hir-item.cc (TraitFunctionDecl::TraitFunctionDecl):
+	Handle null return types in copy constructor.
+	(TraitFunctionDecl::operator=): Likewise.
+
+2026-06-01  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* util/rust-attributes.cc (__definitions): Add entries for warn
+	and deny attributes.
+
+2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+
+	* expand/rust-cfg-strip.cc (CfgStrip::visit): mark CallExpr for
+	strip when function expression fails stripping.
+	(CfgStrip::visit): mark ArrayIndexExpr for strip when array or
+	index expression fails stripping.
+
+2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+
+	* backend/rust-compile-expr.cc (CompileExpr::visit): Emit the
+	missing assignment for CompoundAssignmentExpr.
+
+2026-06-01  fisnikhasani  <242628373+fisnikhasani@users.noreply.github.com>
+
+	* lang.opt (flag_name_resolution_2_0): Remove.
+	* resolve/rust-name-resolver.cc: Remove include.
+
 2026-05-29  Marc Poulhi?s  <dkm@kataplop.net>
 	    Andreas Schwab  <schwab@linux-m68k.org>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9f454f69a50e..a9f109382ad4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,165 @@
+2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125527
+	* gfortran.dg/submodule_host_assoc_1.f90: New test.
+	* gfortran.dg/submodule_host_assoc_1_aux.f90: New test.
+
+2026-06-01  Joe Natter  <johannes.natter@outlook.at>
+
+	PR c++/125422
+	* g++.dg/warn/Wduplicated-branches10.C: New test.
+
+2026-06-01  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/98539
+	* gcc.dg/pr98539.c: New test.
+
+2026-06-01  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* g++.dg/opt/shrink-wrapping-vector-1.C: xfail for C++17down.
+
+2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125481
+	* gfortran.dg/generic_37.f90: New test.
+	* gfortran.dg/generic_38.f90: New test.
+
+2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/122827
+	* gcc.target/aarch64/sve/pr122827.c: New test.
+
+2026-06-01  Eczbek  <eczbek.void@gmail.com>
+
+	PR c++/125317
+	* g++.dg/cpp2a/concepts-requires42.C: New test.
+
+2026-06-01  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* gcc.dg/lto/toplevel-simple-asm-1_0.c: Adjust inline assembler
+	for arm-none-eabi.
+
+2026-06-01  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* rust/compile/empty_path.rs: New file.
+
+2026-06-01  lishin  <lishin1008@gmail.com>
+
+	* rust/compile/drop-lang-item.rs: New test.
+
+2026-06-01  Jean-Christian C?RSTEA  <jean-christian.cirstea@tuta.com>
+
+	* rust/compile/bswap.rs: Update error location.
+	* rust/compile/ctlz.rs: Likewise.
+	* rust/compile/ctlz_nonzero.rs: Likewise.
+	* rust/compile/cttz.rs: Likewise.
+	* rust/compile/cttz_nonzero.rs: Likewise.
+	* rust/compile/torture/intrinsics-5.rs: Likewise.
+	* rust/compile/torture/intrinsics-7.rs: Likewise.
+
+2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+
+	* rust/execute/cf-labeled-block.rs: New test.
+
+2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+
+	* rust/compile/issue-4159.rs: New test
+
+2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+
+	* rust/compile/issue-4158.rs: New test.
+
+2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+
+	* rust/compile/issue-3537.rs: New test.
+
+2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/const-issue1440.rs: Enable staged_api feature.
+	* rust/compile/for-loop1.rs: Likewise.
+	* rust/compile/for-loop2.rs: Likewise.
+	* rust/compile/issue-1031.rs: Likewise.
+	* rust/compile/issue-1289.rs: Likewise.
+	* rust/compile/iterators1.rs: Likewise.
+	* rust/compile/rustc_const_stable.rs: Likewise.
+	* rust/compile/torture/issue-1075.rs: Likewise.
+	* rust/compile/torture/issue-1432.rs: Likewise.
+	* rust/execute/torture/const-generics-7.rs: Likewise.
+	* rust/execute/torture/for-loop1.rs: Likewise.
+	* rust/execute/torture/for-loop2.rs: Likewise.
+	* rust/execute/torture/issue-1120.rs: Likewise.
+	* rust/execute/torture/issue-1133.rs: Likewise.
+	* rust/execute/torture/issue-1232.rs: Likewise.
+	* rust/execute/torture/issue-1436.rs: Likewise.
+	* rust/execute/torture/iter1.rs: Likewise.
+	* rust/execute/torture/slice-magic.rs: Likewise.
+	* rust/execute/torture/slice-magic2.rs: Likewise.
+	* rust/execute/torture/str-layout1.rs: Likewise.
+	* rust/compile/missing_staged_api.rs: New test.
+
+2026-06-01  Enes Cevik  <nsvke@proton.me>
+
+	* rust/compile/empty-non-decimal.rs: New test.
+
+2026-06-01  Enes Cevik  <nsvke@proton.me>
+
+	* rust/compile/deferred-suffix-validation.rs: New test.
+	* rust/compile/evaluate-integer-or-float.rs: New test.
+	* rust/compile/tuple-index.rs: New test.
+
+2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/assert_missing_panic.rs: New test.
+
+2026-06-01  lishin  <lishin1008@gmail.com>
+
+	* rust/compile/issue-3972.rs: New test.
+
+2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+
+	* rust/compile/issue-4167.rs: New test.
+
+2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+
+	* rust/compile/const-compound-assignment.rs: New test.
+	* rust/execute/const-compound-assignment.rs: New test.
+
+2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+
+	* gcc.target/i386/apx-ndd-2.c: Add -mtune-ctrl=enable_ndd_mem.
+	* gcc.target/i386/apx-ndd-adc.c: Likewise.
+	* gcc.target/i386/apx-ndd-base-index-1.c: Likewise.
+	* gcc.target/i386/apx-ndd-cmov.c: Likewise.
+	* gcc.target/i386/apx-ndd-no-seg-global-1.c: Likewise.
+	* gcc.target/i386/apx-ndd-sbb.c: Likewise.
+	* gcc.target/i386/apx-ndd-seg-1.c: Likewise.
+	* gcc.target/i386/apx-ndd-seg-2.c: Likewise.
+	* gcc.target/i386/apx-ndd-seg-3.c: Likewise.
+	* gcc.target/i386/apx-ndd-seg-4.c: Likewise.
+	* gcc.target/i386/apx-ndd-seg-5.c: Likewise.
+	* gcc.target/i386/apx-ndd-shld-shrd.c: Likewise.
+	* gcc.target/i386/apx-ndd-tls-1a.c: Likewise.
+	* gcc.target/i386/apx-ndd-tls-1b.c: Likewise.
+	* gcc.target/i386/apx-ndd-tls-2.c: Likewise.
+	* gcc.target/i386/apx-ndd-tls-3.c: Likewise.
+	* gcc.target/i386/apx-ndd-tls-4.c: Likewise.
+	* gcc.target/i386/apx-ndd-x32-1.c: Likewise.
+	* gcc.target/i386/apx-ndd-x32-2a.c: Likewise.
+	* gcc.target/i386/apx-ndd-x32-2b.c: Likewise.
+	* gcc.target/i386/apx-ndd-x32-2c.c: Likewise.
+	* gcc.target/i386/apx-ndd-x32-2d.c: Likewise.
+	* gcc.target/i386/apx-ndd.c: Likewise.
+	* gcc.target/i386/pr113729.c: Likewise.
+	* gcc.target/i386/pr113729-adc-sbb.c: Likewise.
+	* gcc.target/i386/pr79173-13.c: Likewise.
+	* gcc.target/i386/pr79173-14.c: Likewise.
+	* gcc.target/i386/pr79173-15.c: Likewise.
+	* gcc.target/i386/pr79173-16.c: Likewise.
+
+2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+
+	* gcc.target/i386/apx-zu-4.c: New test.
+
 2026-05-31  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	PR tree-optimization/23471
diff --git a/include/ChangeLog b/include/ChangeLog
index 118bdee29cd6..d14b8a036ef9 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
+
+	* gomp-constants.h (GOMP_VERSION): Bump.  Signature of
+	GOMP_OFFLOAD_run et al changed.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* hsa.h: Reflow long line.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 67b08f2335bc..07b435e63dcb 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/mingw/lock.c: Fix typos.
+	* config/posix/lock.c: Likewise.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* acinclude.m4: Fix typos.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 996ceb400214..73830ec34faa 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,43 @@
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/s390/tpf-unwind.h (s390_fallback_frame_state): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/pa/linux-atomic.c: Fix typos.
+	* config/pa/sync-libfuncs.c: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/nvptx/atomic.c: Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/nds32/initfini.c: Fix typos.
+	* config/nds32/linux-atomic.c: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/arm/fp16.c (__gnu_float2h_internal): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/arc/ieee-754/divtab-arc-df.c: Fix typos.
+	* config/arc/ieee-754/divtab-arc-sf.c: Likewise.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/alpha/vms-unwind.h (alpha_vms_fallback_frame_state): Fix typos.
+
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr): Fix
+	typos.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* fixed-bit.c: Fix typos.
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index 325b18d392d2..2012fb2a48e8 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* libf7.c (f7_addsub): Likewise.
+	(f7_madd_msub): Likewise.
+	* libf7.h (f7_Ildexp): Likewise.
+
 2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
 
 	* libf7.h: Add "[len=...]]" notes to all non-empty inline asm's.
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 014bdda06c59..020c11660138 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure: Regenerate.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* configure.ac: Fix typos.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 60bb6c46521b..e887c14b3af8 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,149 @@
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/gcn/simple-bar.h: Fix typos.
+	* config/linux/futex.h: Likewise.
+	* config/nvptx/bar.c (gomp_team_barrier_cancel): Likewise.
+	* config/nvptx/bar.h (gomp_team_barrier_wake): Likewise.
+	* config/nvptx/simple-bar.h: Likewise.
+	* config/posix/sem.c: Likewise.
+	* config/posix/sem.h: Likewise.
+	* config/posix/simple-bar.h: Likewise.
+
+2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
+
+	* oacc-mem.c (goacc_enter_datum): Assert that tgt_offset of the
+	newly-mapped variable is zero.
+
+2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
+
+	* plugin/plugin-gcn.c (struct kernel_dispatch): Store
+	hsa_signal_t, rather than a uint64_t, so that we don't rely on
+	knowledge of the contents of hsa_signal_t.
+	(create_kernel_dispatch): Rename...
+	(prepare_kernel_dispatch): ... to this, as it no longer creates
+	a kernel dispatch.  The allocation that would've created it is
+	hoisted...
+	(run_kernel): ... here, as an automatic variable.  Move logic
+	that copies the fields of kernel_dispatch...
+	(populate_packet_from_dispatch): ... into this standalone
+	function, to make it clearer.
+	(release_kernel_dispatch): Rename....
+	(cleanup_kernel_dispatch): ... to this, don't free 'shadow'.
+
+2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
+
+	* libgomp-plugin.h (GOMP_OFFLOAD_run, GOMP_OFFLOAD_exec)
+	(GOMP_OFFLOAD_async_run, GOMP_OFFLOAD_openacc_async_exec): Pass
+	session in place of target variable table and devices.
+	(struct gomp_offload_session): New.
+	(GOMP_OFFLOAD_session_size): New
+	(GOMP_OFFLOAD_check_session_struct): New.
+	(GOMP_OFFLOAD_session_boilerplate): New.
+	(GOMP_OFFLOAD_session_start): New.
+	(GOMP_OFFLOAD_session_allocate_target_var_table): New.
+	(GOMP_OFFLOAD_session_set_target_var_table): New.
+	* libgomp.h (struct gomp_target_task): Add offload_session
+	field.
+	(struct gomp_device_descr): Add offload session management
+	functions.
+	(gomp_offload_session_new): New.
+	(goacc_map_vars): Add SESSION to signature
+	* oacc-host.c (struct gomp_offload_session): Define, for host
+	offload fallback case.
+	(host_session_size): New.  Implements GOMP_OFFLOAD_session_size.
+	(host_session_start): New.  Implements
+	GOMP_OFFLOAD_session_start.
+	(host_session_set_target_var_table): New.  Implements
+	GOMP_OFFLOAD_session_set_target_var_table.
+	(host_run): Adjust to match GOMP_OFFLOAD_run.
+	(host_openacc_exec): Adjust to match GOMP_OFFLOAD_openacc_exec.
+	(host_openacc_async_exec): Adjust to match
+	GOMP_OFFLOAD_openacc_async_exec.
+	* oacc-mem.c (acc_map_data): Adjust call to goacc_map_vars.
+	(goacc_enter_datum): Ditto.
+	(goacc_enter_data_internal): Ditto.
+	* oacc-parallel.c (GOACC_parallel_keyed): Allocate and pass
+	offload session.
+	(GOACC_data_start): Adjust call to goacc_map_vars.
+	* plugin/plugin-gcn.c (struct kernel_dispatch): Remove
+	kernarg_cache_node.
+	(struct kernargs): Add a flexible array member for the target
+	variable table.
+	(struct kernel_launch): Store an offload session rather than
+	target var. table pointer.
+	(print_kernel_dispatch): Receive kernargs as parameter.
+	(struct gomp_offload_session): Define.
+	(init_session): New.
+	(GOMP_OFFLOAD_session_start): Implement, using init_session.
+	(release_session): New.
+	(alloc_kernargs_on_agent): Rename to...
+	(allocate_session_kernargs): ... this, store result in
+	passed-in SESSION, and allocate extra room for target variable
+	table (rounding it up to nearest multiple of 64 pointers).
+	(GOMP_OFFLOAD_session_allocate_target_var_table): Implement
+	using the previous function.
+	(GOMP_OFFLOAD_session_set_target_var_table): Ditto.
+	(create_kernel_dispatch): Remove kernarg allocation, instead
+	receiving it as an argument.
+	(release_kernel_dispatch): Receive kernargs as an argument,
+	don't release them.
+	(run_kernel): Adjust to use sessions.
+	(destroy_module): Ditto.
+	(GOMP_OFFLOAD_load_image): Ditto.
+	(execute_queue_entry): Adjust to match changed struct
+	kernel_launch.
+	(queue_push_launch): Ditto.
+	(gcn_exec): Receive and pass along session.
+	(GOMP_OFFLOAD_run): Ditto.
+	(GOMP_OFFLOAD_async_run): Ditto.
+	(GOMP_OFFLOAD_openacc_exec): Ditto.
+	(GOMP_OFFLOAD_openacc_async_exec): Ditto.
+	* plugin/plugin-nvptx.c (struct gomp_offload_session): Define.
+	(GOMP_OFFLOAD_session_start): Implement.
+	(GOMP_OFFLOAD_session_set_target_var_table): Implement.
+	(GOMP_OFFLOAD_openacc_exec): Adjust to receive session.
+	(GOMP_OFFLOAD_openacc_async_exec): Ditto.
+	(GOMP_OFFLOAD_run): Ditto.
+	* target.c (gomp_get_tvt_size): Extract helper from...
+	(gomp_map_vars_internal): ... here.  Receive SESSION, iff doing
+	target offload.  Use a target variable table on the host
+	allocated by GOMP_OFFLOAD_session_allocate_target_var_table if
+	possible, or call GOMP_OFFLOAD_session_set_target_var_table with
+	an allocated device pointer otherwise.
+	(gomp_map_vars): Update to pass along session.
+	(goacc_map_vars): Ditto.
+	(GOMP_target): Allocate and pass along session.
+	(GOMP_target_ext): Ditto.
+	(gomp_target_data_fallback): Adjust call to gomp_map_vars.
+	(GOMP_target_data): Ditto.
+	(GOMP_target_data_ext): Ditto.
+	(GOMP_target_enter_exit_data): Ditto.
+	(gomp_target_task_fn): Start and pass along session, the storage
+	for which is allocated by gomp_create_target_task.
+	(DLSYM2): Rename from DLSYM, adding a new parameter for the
+	variable to populate, akin to DLSYM_OPT.
+	(DLSYM): Delegate to DLSYM2.
+	(gomp_load_plugin_for_device): Populate session-related fields.
+	* task.c (gomp_create_target_task): Allocate enough storage for
+	an offload session.
+	* testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c: New test.
+	* testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c: New test.
+
+2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
+
+	* libgomp.h (struct gomp_thread_start_data): New struct.  Holds
+	thread-independent parameters needed to initialize current
+	thread.
+	(struct gomp_team): On GCN, add thr_start_data field, that holds
+	a gomp_thread_start_data to be used in each thread.
+	(struct gomp_thread): Add start_data field, that points to
+	thread initialization parameters.
+	* config/gcn/team.c (gomp_team_start): Move thread
+	initialization steps into ...
+	(gomp_prep_our_thread): this new function, such that it reads
+	from a gomp_thread_start_data object.
+	(gomp_thread_start): Call the above to initialize our thread.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* configure: Regenerate.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 3e6250ecec88..3147d8b93fb9 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	* configure: Regenerate.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index fd6271ecef4c..532fbfac17f0 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	* config/linux/futex_bits.h: Fix typo.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index bc4bbc66e4b1..d1953b6a282e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+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.

From gccadmin@gcc.gnu.org  Tue Jun  2 00:20:16 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  2 Jun 2026 00:20:16 +0000 (GMT)
Subject: [gcc r15-11229] Daily bump.
Message-ID: <20260602002016.1539F4BA2E0B@sourceware.org>

https://gcc.gnu.org/g:1131a23224f420108753f3917d6da2594b83f7cd

commit r15-11229-g1131a23224f420108753f3917d6da2594b83f7cd
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 2 00:19:46 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 116 ++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  74 +++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 154 ++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |   8 +++
 5 files changed, 353 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 853c87b0cd5a..bf7d0f161c07 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,119 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125373
+	* config/i386/i386.md
+	(Convert imul by three, five and nine into lea define_peephole2s): Use
+	index_reg_operand instead of register_operand.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* tree-ssa-strlen.cc (get_string_length): Transform
+	__strcat_chk (x, y, z) when we need strlen (x) afterwards into
+	l1 = strlen (x); l = __stpcpy_chk (x + l1, y, z - l1) - x;
+	where l is the strlen (x), instead of using z as last __stpcpy_chk
+	argument.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* range-op-float.cc (operator_not_equal::fold_range): Call
+	empty_range_varying when not calling frelop_early_resolve.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* config/rs6000/rs6000-c.cc (c_fold_convert): New function.
+	(c_fold_build2_loc): Likewise.
+	(fully_fold_convert): Use c_fold_convert instead of fold_convert.
+	(altivec_build_resolved_builtin): Likewise.  Use c_fold_build2_loc
+	instead of fold_build2.
+	(resolve_vec_mul, resolve_vec_adde_sube, resolve_vec_addec_subec):
+	Use c_fold_build2_loc instead of fold_build2_loc.
+	(resolve_vec_splats, resolve_vec_extract): Use c_fold_convert instead
+	of fold_convert.
+	(resolve_vec_insert): Use c_fold_build2_loc instead of fold_build2.
+	(altivec_resolve_overloaded_builtin): Use c_fold_convert instead
+	of fold_convert.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124892
+	* config/i386/i386.md (clz<mode>2_lzcnt_nf,
+	<lt_zcnt>_<mode>_nf, popcount<mode>2_nf): Emit explicit
+	set of (match_dup 0) to (const_int 0) without flags clobber instead of
+	using ix86_expand_clear.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124891
+	* tree-ssa-propagate.cc
+	(substitute_and_fold_dom_walker::before_dom_children): Call update_stmt
+	in the did_replace case before calling fold_stmt.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gimple-lower-bitint.cc (bitint_large_huge::handle_load): Look through
+	BIT_FIELD_REF with zero bit offset.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124754
+	* tree-ssa-strlen.cc (strlen_pass::handle_builtin_strcpy): Make
+	sure both get_stridx calls are done before first get_strinfo call.
+	(strlen_pass::handle_builtin_memcpy): Likewise.
+	(strlen_pass::handle_builtin_strcat): Likewise.
+
+2026-06-01  John David Anglin  <danglin@gcc.gnu.org>
+
+	* config/pa/pa.cc (pa_trampoline_init): Rework to use
+	clear_cache pattern.
+	* config/pa/pa.md (dcacheflush): Use "<<" condition instead
+	of "<<=".
+	(icacheflush): Remove.
+	(icacheflush1, icacheflush2, icacheflush3): New flush patterns
+	for PA 1.x targets, PA 2.0 targets, and PA 1.x no space
+	register targets.
+	(clear_cache): Rework to flush data and instruction caches.
+	Skip flush if the start address is greater than or equal to
+	the end address.  Don't align the end address to a cacheline
+	boundary.  Handle instruction flushes for PA 1.x targets,
+	PA 2.0 targets, and PA 1.x no space register targets.
+
+2026-06-01  Christophe Lyon  <christophe.lyon@arm.com>
+
+	Backported from master:
+	2026-05-19  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124870
+	* config/arm/arm-mve-builtins-base.cc (vstrq_scatter_base_impl)
+	(vldrq_gather_base_impl): Fix call_properties.
+
 2026-05-27  liuhongt  <hongtao.liu@intel.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index b135605ac4dc..98ddba91d55c 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260601
+20260602
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c98972963497..2f125dda4ee4 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,77 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* coroutines.cc (register_local_var_uses): Ignore DECL_NAME for
+	name independent decls.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* typeck.cc (cxx_mark_addressable): For DECL_ANON_UNION_VAR_P vars
+	also mark their DECL_VALUE_EXPR.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* parser.cc (cp_parser_omp_loop_nest): Write orig_declv, not incrv.
+
+2026-06-01  Yang Kun  <yangkun@disroot.org>
+
+	Backported from master:
+	2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* parser.cc (cp_parser_omp_clause_proc_bind): Fix error message
+	(cp_parser_omp_clause_device_type): Likewise.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle even
+	the case of partially substituted pack.
+	(write_expression): Similarly for PACK_INDEX_EXPR.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: Handle pack index
+	mangling unless (for now) PACK_INDEX_PACK is a TREE_VEC.
+	(write_expression): Handle PACK_INDEX_EXPR.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124198
+	* parser.cc (cp_parser_pack_index): If index is not type dependent,
+	call build_converted_constant_expr on it.  Return error_mark_node
+	if index is error_operand_p.
+	* pt.cc (tsubst_pack_index): Likewise.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124531
+	* init.cc (build_vec_init): Call braced_lists_to_strings for
+	array CONSTRUCTORs.  Handle RAW_DATA_CST and handle RANGE_EXPR
+	correctly.
+
 2026-05-15  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e9ea67ea81d4..429b93724191 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,157 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* g++.dg/coroutines/pr125376.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-20  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125373
+	* gcc.c-torture/compile/pr125373.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* gcc.dg/strlenopt-97.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* gcc.c-torture/compile/pr125039.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* g++.target/powerpc/pr124133-1.C: New test.
+	* g++.target/powerpc/pr124133-2.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR testsuite/124682
+	* gcc.dg/torture/builtin-math-6.c (TESTIT_COMPLEX_R2_ISZ): Define.
+	(TESTIT_COMPLEX_R2_ALLNEG): Use TESTIT_COMPLEX_R2_ISZ instead of
+	TESTIT_COMPLEX_R2.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124892
+	* gcc.target/i386/apx-pr124892.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-16  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124891
+	* gcc.dg/torture/pr124891.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* go.test/go-test.exp (errchk): Use -translation binary instead of
+	-encoding binary for TCL 9 compatibility.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* g++.dg/other/anon-union8.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gcc.dg/bitint-128.c: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* g++.dg/cpp26/pack-indexing9.C: Remove dg-sorry/dg-bogus, add
+	tests for mangled names and further test coverage.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124487
+	* g++.dg/cpp26/pack-indexing7.C: Don't xfail dg-bogus.
+	* g++.dg/cpp26/pack-indexing22.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124198
+	* g++.dg/cpp26/pack-indexing2.C (getT2, badtype4): Expect different
+	diagnostics.
+	* g++.dg/cpp26/pack-indexing20.C: New test.
+	* g++.dg/cpp26/pack-indexing21.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124754
+	* g++.dg/tree-ssa/strlenopt-3.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124531
+	* g++.dg/cpp/embed-29.C: New test.
+	* g++.dg/cpp0x/pr124531.C: New test.
+
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-03-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* lib/mike-gcc.exp (postbase): Use switch instead of case for
+	TCL 9 compatibility.
+	* lib/mike-g++.exp (postbase): Likewise.
+
+2026-06-01  Christophe Lyon  <christophe.lyon@arm.com>
+
+	Backported from master:
+	2026-05-19  Christophe Lyon  <christophe.lyon@arm.com>
+
+	PR target/124870
+	* gcc.target/arm/mve/intrinsics/pr124870.c: New test.
+
 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 75a6b65a4ec6..c1020391881b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
+	variable name.
+
 2026-05-21  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:

From tkaminsk@gcc.gnu.org  Tue Jun  2 06:43:43 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  2 Jun 2026 06:43:43 +0000 (GMT)
Subject: [gcc r17-1160] libstdc++: mark integer std::to_(w)string constexpr
Message-ID: <20260602064343.C261B4BA2E05@sourceware.org>

https://gcc.gnu.org/g:5ce76a8adbc008fa11281ae996eb8fd40353f601

commit r17-1160-g5ce76a8adbc008fa11281ae996eb8fd40353f601
Author: Ivan Lazaric <ivan.lazaric1@gmail.com>
Date:   Fri May 15 11:06:46 2026 +0200

    libstdc++: mark integer std::to_(w)string constexpr
    
    In C++26 paper P3391, "constexpr formatting", has been adopted,
    part of which marks std::to_string & std::to_wstring for integers
    as constexpr. The __cpp_lib_constexpr_string FTM value is updated
    per resolution of LWG4531, "Should there be a feature-test macro
    update for constexpr std::to_(w)string?".
    
    Since pre-cxx11 copy-on-write string is not constexpr-enabled,
    restricting this constexpr-ification to cxx11 ABI strings.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Co-authored-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Reviewed-by: Nathan Myers <ncm@cantrip.org>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/basic_string.h           | 31 +++++++----
 libstdc++-v3/include/bits/version.def              |  8 +++
 libstdc++-v3/include/bits/version.h                |  7 ++-
 .../21_strings/basic_string/cons/char/constexpr.cc |  4 +-
 .../basic_string/cons/wchar_t/constexpr.cc         |  4 +-
 .../char/to_string_constexpr.cc                    | 64 ++++++++++++++++++++++
 .../wchar_t/to_wstring_constexpr.cc                | 64 ++++++++++++++++++++++
 .../testsuite/21_strings/basic_string/version.cc   | 12 ++++
 8 files changed, 177 insertions(+), 17 deletions(-)

diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 23e6979f03d7..65d92ebfbcf8 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -4607,11 +4607,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   { return std::stod(__str, __idx); }
 #endif
 
+#if __glibcxx_constexpr_string >= 202511L
+# define _GLIBCXX_TO_STRING_CONSTEXPR constexpr
+#else
+# define _GLIBCXX_TO_STRING_CONSTEXPR inline
+#endif
+
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
   // DR 1261. Insufficient overloads for to_string / to_wstring
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(int __val)
 #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
   noexcept // any 32-bit value fits in the SSO buffer
@@ -4630,7 +4636,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   }
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(unsigned __val)
 #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
   noexcept // any 32-bit value fits in the SSO buffer
@@ -4646,7 +4652,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   }
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(long __val)
 #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
   noexcept // any 32-bit value fits in the SSO buffer
@@ -4665,7 +4671,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   }
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(unsigned long __val)
 #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
   noexcept // any 32-bit value fits in the SSO buffer
@@ -4681,7 +4687,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   }
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(long long __val)
   {
     const bool __neg = __val < 0;
@@ -4698,7 +4704,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   }
 
   _GLIBCXX_NODISCARD
-  inline string
+  _GLIBCXX_TO_STRING_CONSTEXPR string
   to_string(unsigned long long __val)
   {
     const auto __len = __detail::__to_chars_len(__val);
@@ -4922,32 +4928,32 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #pragma GCC diagnostic pop
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(int __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(unsigned __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(long __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(unsigned long __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(long long __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
   _GLIBCXX_NODISCARD
-  inline wstring
+  _GLIBCXX_TO_STRING_CONSTEXPR wstring
   to_wstring(unsigned long long __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
@@ -4968,6 +4974,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 #endif
 #endif // _GLIBCXX_USE_WCHAR_T
+#undef _GLIBCXX_TO_STRING_CONSTEXPR
 
 _GLIBCXX_END_NAMESPACE_CXX11
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 97f7d6865190..ea8560778e5c 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1398,6 +1398,14 @@ ftms = {
 
 ftms = {
   name = constexpr_string;
+  // 202511 LWG4531 Should there be a feature-test macro update for constexpr std::to_(w)string?
+  //        P3391R2 constexpr std::format
+  values = {
+    v = 202511;
+    cxxmin = 26;
+    hosted = yes;
+    cxx11abi = yes;
+  };
   values = {
     v = 201907;
     cxxmin = 20;
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 33eecbfb83b0..59d5d9217d77 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1542,7 +1542,12 @@
 #undef __glibcxx_want_constexpr_flat_set
 
 #if !defined(__cpp_lib_constexpr_string)
-# if (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
+# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED
+#  define __glibcxx_constexpr_string 202511L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
+#   define __cpp_lib_constexpr_string 202511L
+#  endif
+# elif (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
 #  define __glibcxx_constexpr_string 201907L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
 #   define __cpp_lib_constexpr_string 201907L
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
index 7822c89497b1..34abfe60bc55 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
@@ -6,8 +6,8 @@
 
 #ifndef __cpp_lib_constexpr_string
 # error "Feature-test macro for constexpr std::string missing in <string>"
-#elif __cpp_lib_constexpr_string != 201907L
-# error "Feature-test macro for constexpr std::string has wrong value in <string>"
+#elif __cpp_lib_constexpr_string < 201907L
+# error "Feature-test macro for constexpr std::string has too small value in <string>"
 #endif
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
index 44c8391ebc2a..59d5ee270cc3 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
@@ -6,8 +6,8 @@
 
 #ifndef __cpp_lib_constexpr_string
 # error "Feature-test macro for constexpr std::string missing in <string>"
-#elif __cpp_lib_constexpr_string != 201907L
-# error "Feature-test macro for constexpr std::string has wrong value in <string>"
+#elif __cpp_lib_constexpr_string < 201907L
+# error "Feature-test macro for constexpr std::string too small value in <string>"
 #endif
 
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc
new file mode 100644
index 000000000000..1b5a616df543
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc
@@ -0,0 +1,64 @@
+// { dg-do compile { target c++26 } }
+// { dg-require-effective-target cxx11_abi }
+
+#include <string>
+#include <type_traits>
+#include <testsuite_hooks.h>
+
+template<typename T>
+constexpr void
+test()
+{
+  using namespace std;
+  string res;
+  T value;
+
+  value = 0;
+  res = to_string(value);
+  VERIFY( res == "0" );
+
+  value = 1;
+  res = to_string(value);
+  VERIFY( res == "1" );
+
+  value = 10;
+  res = to_string(value);
+  VERIFY( res == "10" );
+  
+  value = 3000;
+  res = to_string(value);
+  VERIFY( res == "3000" );
+
+  value = 32767;
+  res = to_string(value);
+  VERIFY( res == "32767" );
+
+  if (is_unsigned_v<T>)
+    return;
+
+  value = -1;
+  res = to_string(value);
+  VERIFY( res == "-1" );
+  
+  value = -40;
+  res = to_string(value);
+  VERIFY( res == "-40" );
+  
+  value = -32768;
+  res = to_string(value);
+  VERIFY( res == "-32768" );
+}
+
+constexpr bool
+test_all()
+{
+  test<int>();
+  test<unsigned int>();
+  test<long>();
+  test<unsigned long>();
+  test<long long>();
+  test<unsigned long long>();
+  return true;
+}
+
+static_assert(test_all());
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc
new file mode 100644
index 000000000000..f884fc61ff5d
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc
@@ -0,0 +1,64 @@
+// { dg-do compile { target c++26 } }
+// { dg-require-effective-target cxx11_abi }
+
+#include <string>
+#include <type_traits>
+#include <testsuite_hooks.h>
+
+template<typename T>
+constexpr void
+test()
+{
+  using namespace std;
+  wstring res;
+  T value;
+
+  value = 0;
+  res = to_wstring(value);
+  VERIFY( res == L"0" );
+
+  value = 1;
+  res = to_wstring(value);
+  VERIFY( res == L"1" );
+
+  value = 10;
+  res = to_wstring(value);
+  VERIFY( res == L"10" );
+  
+  value = 3000;
+  res = to_wstring(value);
+  VERIFY( res == L"3000" );
+
+  value = 32767;
+  res = to_wstring(value);
+  VERIFY( res == L"32767" );
+
+  if (is_unsigned_v<T>)
+    return;
+
+  value = -1;
+  res = to_wstring(value);
+  VERIFY( res == L"-1" );
+  
+  value = -40;
+  res = to_wstring(value);
+  VERIFY( res == L"-40" );
+  
+  value = -32768;
+  res = to_wstring(value);
+  VERIFY( res == L"-32768" );
+}
+
+constexpr bool
+test_all()
+{
+  test<int>();
+  test<unsigned int>();
+  test<long>();
+  test<unsigned long>();
+  test<long long>();
+  test<unsigned long long>();
+  return true;
+}
+
+static_assert(test_all());
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
index 71dd4dfb67f6..b0cdf04274e3 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
@@ -25,3 +25,15 @@
 #  endif
 # endif
 #endif
+
+#if __cplusplus > 202302L
+# if _GLIBCXX_USE_CXX11_ABI
+#  if __cpp_lib_constexpr_string != 202511L
+#   error "Feature-test macro for constexpr std::string has wrong value for C++20 in <version>"
+#  endif
+# else // COW strings
+#  if __cpp_lib_constexpr_string != 201811L
+#   error "Feature-test macro for constexpr std::string has wrong value for C++20 in <version>"
+#  endif
+# endif
+#endif

From tkaminsk@gcc.gnu.org  Tue Jun  2 07:22:22 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  2 Jun 2026 07:22:22 +0000 (GMT)
Subject: [gcc r17-1162] libstdc++: implement constexpr std::format
Message-ID: <20260602072222.218BD4BA5435@sourceware.org>

https://gcc.gnu.org/g:42f9bf2e3c56ae67166b19499d3de74e42a60b73

commit r17-1162-g42f9bf2e3c56ae67166b19499d3de74e42a60b73
Author: Ivan Lazaric <ivan.lazaric1@gmail.com>
Date:   Fri May 15 11:06:54 2026 +0200

    libstdc++: implement constexpr std::format
    
    This patch implements constexpr formatting from P3391R2,
    and introduces the constexpr_format feature-test macro.
    Since pre-cxx11 cow_string is not constexpr-enabled,
    only exposing the feature-test macro under cxx11 ABI.
    
    Add `__format::__toupper_numeric` function that work in constexpr.
    It is not fully general, but `<format>` doesn't need all uppercasing.
    
    The `__write_escaped_ascii` is not marked constexpr, to enable
    futhure improvement for non-unicode literal encodings (for example
    using `iconv`).
    
    Update `__check_dynamic_spec` to check if `__args` is run, to
    accomodate for dynamic_format or vformat invoked at compile time.
    
    Mark `basic_format_string` consteval constructor noexcept,
    since exceptions are now constexpr, and the standard mandates
    failure to parse to be non-catchable ill-formed.
    https://eel.is/c++draft/format#fmt.string-3
    > Remarks: A call to this function is not a core constant expression
    > ([expr.const]) unless there exist args of types Args such that
    > str is a format string for args.
    
    Update some formatting tests to test constexpr as well,
    and introduce a dedicated smoke test for constexpr formatting.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Co-authored-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Ivan Lazaric <ivan.lazaric1@gmail.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              |  32 +-
 libstdc++-v3/include/bits/version.h                |  30 +-
 libstdc++-v3/include/std/format                    | 394 ++++++++++++---------
 .../testsuite/std/format/arguments/args_neg.cc     |   4 +-
 libstdc++-v3/testsuite/std/format/constexpr.cc     | 166 +++++++++
 libstdc++-v3/testsuite/std/format/debug.cc         |  83 +++--
 .../testsuite/std/format/dynamic_format.cc         |  25 +-
 .../testsuite/std/format/functions/format.cc       | 281 +++++++++------
 .../testsuite/std/format/functions/format_to.cc    |  58 ++-
 .../testsuite/std/format/functions/size.cc         |  23 +-
 .../testsuite/std/format/ranges/format_kind.cc     |  15 +-
 .../testsuite/std/format/ranges/formatter.cc       |  37 +-
 .../testsuite/std/format/ranges/sequence.cc        |  64 +++-
 libstdc++-v3/testsuite/std/format/string.cc        |  59 ++-
 libstdc++-v3/testsuite/std/format/tuple.cc         |  72 ++--
 .../std/time/format/data_not_present_neg.cc        |   3 +-
 16 files changed, 932 insertions(+), 414 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index ea8560778e5c..a94a25bc0e6c 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1328,6 +1328,16 @@ ftms = {
   };
 };
 
+ftms = {
+  name = constexpr_exceptions;
+  values = {
+    v = 202502;
+    cxxmin = 26;
+    extra_cond = "__cpp_constexpr_exceptions >= 202411L";
+    cxx11abi = yes;
+  };
+};
+
 ftms = {
   name = format;
   // 202305 P2757R3 Type checking format args
@@ -1351,6 +1361,18 @@ ftms = {
   };
 };
 
+ftms = {
+  name = constexpr_format;
+  // 202511 P3391R2 constexpr std::format
+  values = {
+    v = 202511;
+    cxxmin = 26;
+    hosted = yes;
+    extra_cond = "__cpp_lib_constexpr_exceptions >= 202502L";
+    cxx11abi = yes;
+  };
+};
+
 ftms = {
   name = format_uchar;
   values = {
@@ -2330,16 +2352,6 @@ ftms = {
   };
 };
 
-ftms = {
-  name = constexpr_exceptions;
-  values = {
-    v = 202502;
-    cxxmin = 26;
-    extra_cond = "__cpp_constexpr_exceptions >= 202411L";
-    cxx11abi = yes;
-  };
-};
-
 ftms = {
   name = philox_engine;
   values = {
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 59d5d9217d77..13093fdbfb71 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1476,6 +1476,16 @@
 #endif /* !defined(__cpp_lib_barrier) */
 #undef __glibcxx_want_barrier
 
+#if !defined(__cpp_lib_constexpr_exceptions)
+# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_constexpr_exceptions >= 202411L)
+#  define __glibcxx_constexpr_exceptions 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_exceptions)
+#   define __cpp_lib_constexpr_exceptions 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_constexpr_exceptions) */
+#undef __glibcxx_want_constexpr_exceptions
+
 #if !defined(__cpp_lib_format)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
 #  define __glibcxx_format 202603L
@@ -1491,6 +1501,16 @@
 #endif /* !defined(__cpp_lib_format) */
 #undef __glibcxx_want_format
 
+#if !defined(__cpp_lib_constexpr_format)
+# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (__cpp_lib_constexpr_exceptions >= 202502L)
+#  define __glibcxx_constexpr_format 202511L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_format)
+#   define __cpp_lib_constexpr_format 202511L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_constexpr_format) */
+#undef __glibcxx_want_constexpr_format
+
 #if !defined(__cpp_lib_format_uchar)
 # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_format_uchar 202311L
@@ -2586,16 +2606,6 @@
 #endif /* !defined(__cpp_lib_bitset) */
 #undef __glibcxx_want_bitset
 
-#if !defined(__cpp_lib_constexpr_exceptions)
-# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_constexpr_exceptions >= 202411L)
-#  define __glibcxx_constexpr_exceptions 202502L
-#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_exceptions)
-#   define __cpp_lib_constexpr_exceptions 202502L
-#  endif
-# endif
-#endif /* !defined(__cpp_lib_constexpr_exceptions) */
-#undef __glibcxx_want_constexpr_exceptions
-
 #if !defined(__cpp_lib_philox_engine)
 # if (__cplusplus >  202302L)
 #  define __glibcxx_philox_engine 202406L
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 0f20fcc8d883..fe0f611b8339 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -39,6 +39,7 @@
 #define __glibcxx_want_format_ranges
 #define __glibcxx_want_format_uchar
 #define __glibcxx_want_constexpr_exceptions
+#define __glibcxx_want_constexpr_format
 #include <bits/version.h>
 
 #ifdef __cpp_lib_format // C++ >= 20 && HOSTED
@@ -63,8 +64,10 @@
 #include <bits/utility.h>      // tuple_size_v
 #include <ext/numeric_traits.h> // __int_traits
 
-#if !__has_builtin(__builtin_toupper)
-# include <cctype>
+#ifdef __glibcxx_constexpr_format // C++ >= 26 && HOSTED && CXX11 strings
+# define _GLIBCXX_CONSTEXPR_FORMAT constexpr
+#else
+# define _GLIBCXX_CONSTEXPR_FORMAT
 #endif
 
 #pragma GCC diagnostic push
@@ -128,6 +131,7 @@ namespace __format
     struct _Dynamic_format_string
     {
       [[__gnu__::__always_inline__]]
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Dynamic_format_string(basic_string_view<_CharT> __s) noexcept
       : _M_str(__s) { }
 
@@ -170,9 +174,10 @@ namespace __format
       template<typename _Tp>
 	requires convertible_to<const _Tp&, basic_string_view<_CharT>>
 	consteval
-	basic_format_string(const _Tp& __s);
+	basic_format_string(const _Tp& __s) noexcept;
 
       [[__gnu__::__always_inline__]]
+      _GLIBCXX_CONSTEXPR_FORMAT
       basic_format_string(__format::_Dynamic_format_string<_CharT> __s) noexcept
       : _M_str(__s._M_str)
       { }
@@ -197,13 +202,13 @@ namespace __format
 
 #if __cpp_lib_format >= 202603L // >= C++26
   [[__gnu__::__always_inline__]]
-  inline __format::_Dynamic_format_string<char>
+  inline _GLIBCXX_CONSTEXPR_FORMAT __format::_Dynamic_format_string<char>
   dynamic_format(string_view __fmt) noexcept
   { return __fmt; }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   [[__gnu__::__always_inline__]]
-  inline __format::_Dynamic_format_string<wchar_t>
+  inline _GLIBCXX_CONSTEXPR_FORMAT __format::_Dynamic_format_string<wchar_t>
   dynamic_format(wstring_view __fmt) noexcept
   { return __fmt; }
 #endif
@@ -220,56 +225,51 @@ namespace __format
       formatter& operator=(const formatter&) = delete;
     };
 
-#if __cpp_lib_constexpr_exceptions >= 202502L
-#define _GLIBCXX_CONSTEXPR_FORMAT_ERROR constexpr
-#else
-#define _GLIBCXX_CONSTEXPR_FORMAT_ERROR
-#endif
-
   // [format.error], class format_error
   class format_error : public runtime_error
   {
   public:
-    _GLIBCXX_CONSTEXPR_FORMAT_ERROR explicit format_error(const string& __what)
+    _GLIBCXX_CONSTEXPR_FORMAT
+    explicit format_error(const string& __what)
     : runtime_error(__what) { }
-    _GLIBCXX_CONSTEXPR_FORMAT_ERROR explicit format_error(const char* __what)
+
+    _GLIBCXX_CONSTEXPR_FORMAT explicit
+    format_error(const char* __what)
     : runtime_error(__what) { }
   };
 
   /// @cond undocumented
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __throw_format_error(const char* __what)
   { _GLIBCXX_THROW_OR_ABORT(format_error(__what)); }
 
-#undef _GLIBCXX_CONSTEXPR_FORMAT_ERROR
-
 namespace __format
 {
   // XXX use named functions for each constexpr error?
 
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __unmatched_left_brace_in_format_string()
   { __throw_format_error("format error: unmatched '{' in format string"); }
 
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __unmatched_right_brace_in_format_string()
   { __throw_format_error("format error: unmatched '}' in format string"); }
 
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __conflicting_indexing_in_format_string()
   { __throw_format_error("format error: conflicting indexing style in format string"); }
 
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __invalid_arg_id_in_format_string()
   { __throw_format_error("format error: invalid arg-id in format string"); }
 
   [[noreturn]]
-  inline void
+  inline _GLIBCXX_CONSTEXPR_FORMAT void
   __failed_to_parse_format_spec()
   { __throw_format_error("format error: failed to parse format-spec"); }
 
@@ -517,7 +517,7 @@ namespace __format
   using enum _WidthPrec;
 
   template<typename _Context>
-    size_t
+    _GLIBCXX_CONSTEXPR_FORMAT size_t
     __int_from_arg(const basic_format_arg<_Context>& __arg);
 
   constexpr bool __is_digit(char __c)
@@ -750,7 +750,7 @@ namespace __format
       }
 
       template<typename _Context>
-	size_t
+	_GLIBCXX_CONSTEXPR_FORMAT size_t
 	_M_get_width(_Context& __ctx) const
 	{
 	  size_t __width = 0;
@@ -762,7 +762,7 @@ namespace __format
 	}
 
       template<typename _Context>
-	size_t
+	_GLIBCXX_CONSTEXPR_FORMAT size_t
 	_M_get_precision(_Context& __ctx) const
 	{
 	  size_t __prec = -1;
@@ -775,7 +775,7 @@ namespace __format
     };
 
   template<typename _Int>
-    inline char*
+    inline _GLIBCXX_CONSTEXPR_FORMAT char*
     __put_sign(_Int __i, _Sign __sign, char* __dest) noexcept
     {
       if (__i < 0)
@@ -792,7 +792,7 @@ namespace __format
   // Write STR to OUT (and do so efficiently if OUT is a _Sink_iter).
   template<typename _Out, typename _CharT>
     requires output_iterator<_Out, const _CharT&>
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write(_Out __out, basic_string_view<_CharT> __str)
     {
       if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
@@ -809,7 +809,7 @@ namespace __format
   // Write STR to OUT with NFILL copies of FILL_CHAR specified by ALIGN.
   // pre: __align != _Align_default
   template<typename _Out, typename _CharT>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_padded(_Out __out, basic_string_view<_CharT> __str,
 		   _Align __align, size_t __nfill, char32_t __fill_char)
     {
@@ -883,7 +883,7 @@ namespace __format
   // Write STR to OUT, with alignment and padding as determined by SPEC.
   // pre: __spec._M_align != _Align_default || __align != _Align_default
   template<typename _CharT, typename _Out>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_padded_as_spec(basic_string_view<type_identity_t<_CharT>> __str,
 			   size_t __estimated_width,
 			   basic_format_context<_Out, _CharT>& __fc,
@@ -905,7 +905,7 @@ namespace __format
     }
 
    template<typename _CharT>
-     size_t
+     _GLIBCXX_CONSTEXPR_FORMAT size_t
      __truncate(basic_string_view<_CharT>& __s, size_t __prec)
      {
        if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
@@ -1049,7 +1049,7 @@ namespace __format
 
   using uint_least32_t = __UINT_LEAST32_TYPE__;
   template<typename _Out, typename _CharT>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escape_seq(_Out __out, uint_least32_t __val,
 		       basic_string_view<_CharT> __prefix)
     {
@@ -1079,7 +1079,7 @@ namespace __format
     }
 
   template<typename _Out, typename _CharT>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escape_seqs(_Out __out, basic_string_view<_CharT> __units)
     {
       using _UChar = make_unsigned_t<_CharT>;
@@ -1090,7 +1090,7 @@ namespace __format
     }
 
   template<typename _Out, typename _CharT>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escaped_char(_Out __out, _CharT __c)
     {
       using _UChar = make_unsigned_t<_CharT>;
@@ -1146,7 +1146,7 @@ namespace __format
     }
 
   template<typename _CharT, typename _Out>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escaped_unicode_part(_Out __out, basic_string_view<_CharT>& __str,
 				 bool& __prev_esc, _Term_char __term)
     {
@@ -1224,7 +1224,7 @@ namespace __format
     }
 
   template<typename _CharT, typename _Out>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escaped_unicode(_Out __out, basic_string_view<_CharT> __str,
 			    _Term_char __term)
     {
@@ -1236,7 +1236,7 @@ namespace __format
     }
 
   template<typename _CharT, typename _Out>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escaped(_Out __out,  basic_string_view<_CharT> __str, _Term_char __term)
     {
       __out = __format::__write(__out, _Escapes<_CharT>::_S_term(__term));
@@ -1257,12 +1257,14 @@ namespace __format
   struct _Optional_locale
   {
     [[__gnu__::__always_inline__]]
+    _GLIBCXX_CONSTEXPR_FORMAT
     _Optional_locale() : _M_dummy(), _M_hasval(false) { }
 
     _Optional_locale(const locale& __loc) noexcept
     : _M_loc(__loc), _M_hasval(true)
     { }
 
+    _GLIBCXX_CONSTEXPR_FORMAT
     _Optional_locale(const _Optional_locale& __l) noexcept
     : _M_dummy(), _M_hasval(__l._M_hasval)
     {
@@ -1270,6 +1272,7 @@ namespace __format
 	std::construct_at(&_M_loc, __l._M_loc);
     }
 
+    _GLIBCXX_CONSTEXPR_FORMAT
     _Optional_locale&
     operator=(const _Optional_locale& __l) noexcept
     {
@@ -1291,6 +1294,7 @@ namespace __format
       return *this;
     }
 
+    _GLIBCXX_CONSTEXPR_FORMAT
     ~_Optional_locale() { if (_M_hasval) _M_loc.~locale(); }
 
     _Optional_locale&
@@ -1317,7 +1321,8 @@ namespace __format
       return _M_loc;
     }
 
-    bool has_value() const noexcept { return _M_hasval; }
+    _GLIBCXX_CONSTEXPR_FORMAT bool
+    has_value() const noexcept { return _M_hasval; }
 
     union {
       char _M_dummy = '\0';
@@ -1391,7 +1396,7 @@ namespace __format
       }
 
       template<typename _Out>
-	_Out
+	_GLIBCXX_CONSTEXPR_FORMAT _Out
 	format(basic_string_view<_CharT> __s,
 	       basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -1408,7 +1413,7 @@ namespace __format
 	}
 
       template<typename _Out>
-	_Out
+	_GLIBCXX_CONSTEXPR_FORMAT _Out
 	_M_format_escaped(basic_string_view<_CharT> __s,
 			  basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -1433,7 +1438,7 @@ namespace __format
 #if __glibcxx_format_ranges // C++ >= 23 && HOSTED
       template<ranges::input_range _Rg, typename _Out>
 	requires same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>, _CharT>
-	_Out
+	_GLIBCXX_CONSTEXPR_FORMAT _Out
 	_M_format_range(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
 	{
 	  using _Range = remove_reference_t<_Rg>;
@@ -1482,6 +1487,28 @@ namespace __format
       _Spec<_CharT> _M_spec{};
     };
 
+  // A partial implementation of std::toupper that is constexpr-enabled,
+  // sufficient for formatting purposes.
+  [[__gnu__::__always_inline__]]
+  constexpr char
+  __toupper_numeric(char __c)
+  {
+    switch (__c)
+    {
+      case 'a': return 'A';
+      case 'b': return 'B';
+      case 'c': return 'C';
+      case 'd': return 'D';
+      case 'e': return 'E';
+      case 'f': return 'F';
+      case 'i': return 'I';
+      case 'n': return 'N';
+      case 'p': return 'P';
+      case 'x': return 'X';
+      default: return __c;
+    }
+  }
+
   template<__char _CharT>
     struct __formatter_int
     {
@@ -1641,6 +1668,7 @@ namespace __format
 	}
 
       template<typename _Int, typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(_Int __i, basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -1690,11 +1718,7 @@ namespace __format
 	      __res = to_chars(__start, __end, __u, 16);
 	      if (_M_spec._M_type == _Pres_X)
 		for (auto __p = __start; __p != __res.ptr; ++__p)
-#if __has_builtin(__builtin_toupper)
-		  *__p = __builtin_toupper(*__p);
-#else
-		  *__p = std::toupper(*__p);
-#endif
+		  *__p = __format::__toupper_numeric(*__p);
 	      break;
 	    default:
 	      __builtin_unreachable();
@@ -1703,8 +1727,7 @@ namespace __format
 	  if (_M_spec._M_alt && __base_prefix.size())
 	    {
 	      __start -= __base_prefix.size();
-	      __builtin_memcpy(__start, __base_prefix.data(),
-			       __base_prefix.size());
+	      ranges::copy(__base_prefix, __start);
 	    }
 	  __start = __format::__put_sign(__i, _M_spec._M_sign, __start - 1);
 
@@ -1728,6 +1751,7 @@ namespace __format
 	}
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(bool __i, basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -1758,6 +1782,7 @@ namespace __format
 	}
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format_character(_CharT __c,
 			    basic_format_context<_Out, _CharT>& __fc) const
@@ -1789,7 +1814,7 @@ namespace __format
 	}
 
       template<typename _Int>
-	static _CharT
+	static _GLIBCXX_CONSTEXPR_FORMAT _CharT
 	_S_to_character(_Int __i)
 	{
 	  using _Traits = __gnu_cxx::__int_traits<_CharT>;
@@ -1810,6 +1835,7 @@ namespace __format
 	}
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format_int(basic_string_view<_CharT> __str, size_t __prefix_len,
 		      basic_format_context<_Out, _CharT>& __fc) const
@@ -2199,7 +2225,7 @@ namespace __format
 	  if (__upper)
 	    {
 	      for (char* __p = __start; __p != __res.ptr; ++__p)
-		*__p = std::toupper(*__p);
+		*__p = __format::__toupper_numeric(*__p);
 	    }
 
 	  bool __have_sign = true;
@@ -2512,10 +2538,13 @@ namespace __format
       }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(const void* __v, basic_format_context<_Out, _CharT>& __fc) const
 	{
-	  auto __u = reinterpret_cast<__UINTPTR_TYPE__>(__v);
+	  auto __u = __v
+	    ? reinterpret_cast<__UINTPTR_TYPE__>(__v)
+	    : static_cast<__UINTPTR_TYPE__>(0);
 	  return __formatter_int<_CharT>(_M_spec).format(__u, __fc);
 	}
 
@@ -2550,6 +2579,7 @@ namespace __format
       }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(_CharT __u, basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -2588,6 +2618,7 @@ namespace __format
       }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, wchar_t>::iterator
 	format(char __u, basic_format_context<_Out, wchar_t>& __fc) const
 	{
@@ -2623,6 +2654,7 @@ namespace __format
 
       template<typename _Out>
 	[[__gnu__::__nonnull__]]
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(_CharT* __u, basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_f.format(__u, __fc); }
@@ -2652,6 +2684,7 @@ namespace __format
 
       template<typename _Out>
 	[[__gnu__::__nonnull__]]
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(const _CharT* __u,
 	       basic_format_context<_Out, _CharT>& __fc) const
@@ -2682,6 +2715,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(const _CharT (&__u)[_Nm],
 	       basic_format_context<_Out, _CharT>& __fc) const
@@ -2711,6 +2745,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, char>::iterator
 	format(const basic_string<char, _Traits, _Alloc>& __u,
 	       basic_format_context<_Out, char>& __fc) const
@@ -2743,6 +2778,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, wchar_t>::iterator
 	format(const basic_string<wchar_t, _Traits, _Alloc>& __u,
 	       basic_format_context<_Out, wchar_t>& __fc) const
@@ -2776,6 +2812,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, char>::iterator
 	format(basic_string_view<char, _Traits> __u,
 	       basic_format_context<_Out, char>& __fc) const
@@ -2808,6 +2845,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, wchar_t>::iterator
 	format(basic_string_view<wchar_t, _Traits> __u,
 	       basic_format_context<_Out, wchar_t>& __fc) const
@@ -2871,6 +2909,7 @@ namespace __format
       }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(_Tp __u, basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_f.format(__u, __fc); }
@@ -3082,6 +3121,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(const void* __v, basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_f.format(__v, __fc); }
@@ -3107,6 +3147,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(void* __v, basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_f.format(__v, __fc); }
@@ -3132,6 +3173,7 @@ namespace __format
       { return _M_f.parse(__pc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(nullptr_t, basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_f.format(nullptr, __fc); }
@@ -3276,11 +3318,11 @@ namespace __format
       constexpr _Sink_iter
       operator++(int) { return *this; }
 
-      auto
+      _GLIBCXX_CONSTEXPR_FORMAT auto
       _M_reserve(size_t __n) const
       { return _M_sink->_M_reserve(__n); }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_discarding() const
       { return _M_sink->_M_discarding(); }
     };
@@ -3312,7 +3354,7 @@ namespace __format
 
       // The portion of the span that has been written to.
       [[__gnu__::__always_inline__]]
-      span<_CharT>
+      _GLIBCXX_CONSTEXPR_FORMAT span<_CharT>
       _M_used() const noexcept
       { return _M_span.first(_M_next - _M_span.begin()); }
 
@@ -3329,7 +3371,7 @@ namespace __format
       { _M_next = _M_span.begin(); }
 
       // Replace the current output range.
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_reset(span<_CharT> __s, size_t __pos = 0) noexcept
       {
 	_M_span = __s;
@@ -3369,11 +3411,14 @@ namespace __format
       struct _Reservation
       {
 	// True if the reservation was successful, false otherwise.
+	_GLIBCXX_CONSTEXPR_FORMAT
 	explicit operator bool() const noexcept { return _M_sink; }
 	// A pointer to write directly to the sink.
-	_CharT* get() const noexcept { return _M_sink->_M_next.operator->(); }
+	_GLIBCXX_CONSTEXPR_FORMAT _CharT*
+	get() const noexcept { return _M_sink->_M_next.operator->(); }
 	// Add n to the _M_next iterator for the sink.
-	void _M_bump(size_t __n) { _M_sink->_M_bump(__n); }
+	_GLIBCXX_CONSTEXPR_FORMAT void
+	_M_bump(size_t __n) { _M_sink->_M_bump(__n); }
 	_Sink* _M_sink;
       };
 
@@ -3381,7 +3426,7 @@ namespace __format
       // If anything is written to the reservation then there must be a call
       // to _M_bump(N2) before any call to another member function of *this,
       // where N2 is the number of characters written.
-      virtual _Reservation
+      _GLIBCXX_CONSTEXPR_FORMAT virtual _Reservation
       _M_reserve(size_t __n)
       {
 	if (__n <= _M_unused().size())
@@ -3398,12 +3443,12 @@ namespace __format
 
       // Update the next output position after writing directly to the sink.
       // pre: no calls to _M_write or _M_overflow since _M_reserve.
-      virtual void
+      _GLIBCXX_CONSTEXPR_FORMAT virtual void
       _M_bump(size_t __n)
       { _M_next += __n; }
 
       // Returns true if the _Sink is discarding incoming characters.
-      virtual bool
+      _GLIBCXX_CONSTEXPR_FORMAT virtual bool
       _M_discarding() const
       { return false; }
 
@@ -3421,7 +3466,7 @@ namespace __format
   template<typename _CharT>
     class _Fixedbuf_sink final : public _Sink<_CharT>
     {
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	__glibcxx_assert(false);
@@ -3469,7 +3514,7 @@ namespace __format
       _Seq _M_seq;
     protected:
       // Transfer buffer contents to the sequence, so buffer can be refilled.
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	auto __s = this->_M_used();
@@ -3488,7 +3533,7 @@ namespace __format
 	this->_M_rewind();
       }
 
-      typename _Sink<_CharT>::_Reservation
+      _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
       _M_reserve(size_t __n) override
       {
 	// We might already have n characters available in this->_M_unused(),
@@ -3524,7 +3569,7 @@ namespace __format
 	  return _Sink<_CharT>::_M_reserve(__n);
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_bump(size_t __n) override
       {
 	if constexpr (__is_specialization_of<_Seq, basic_string>
@@ -3539,7 +3584,8 @@ namespace __format
 	  }
       }
 
-      void _M_trim(span<const _CharT> __s)
+      _GLIBCXX_CONSTEXPR_FORMAT void
+      _M_trim(span<const _CharT> __s)
 	requires __is_specialization_of<_Seq, basic_string>
       {
 	_GLIBCXX_DEBUG_ASSERT(__s.data() == this->_M_buf
@@ -3555,16 +3601,18 @@ namespace __format
       // to _M_buf if it overflows? Or even do that for all unused capacity?
 
       [[__gnu__::__always_inline__]]
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Seq_sink() noexcept(is_nothrow_default_constructible_v<_Seq>)
       { }
 
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Seq_sink(_Seq&& __s) noexcept(is_nothrow_move_constructible_v<_Seq>)
       : _M_seq(std::move(__s))
       { }
 
       using _Sink<_CharT>::out;
 
-      _Seq
+      _GLIBCXX_CONSTEXPR_FORMAT _Seq
       get() &&
       {
 	if (this->_M_used().size() != 0)
@@ -3574,7 +3622,7 @@ namespace __format
 
       // A writable span that views everything written to the sink.
       // Will be either a view over _M_seq or the used part of _M_buf.
-      span<_CharT>
+      _GLIBCXX_CONSTEXPR_FORMAT span<_CharT>
       _M_span()
       {
 	auto __s = this->_M_used();
@@ -3587,7 +3635,7 @@ namespace __format
 	return __s;
       }
 
-      basic_string_view<_CharT>
+      _GLIBCXX_CONSTEXPR_FORMAT basic_string_view<_CharT>
       view()
       {
 	auto __span = _M_span();
@@ -3612,7 +3660,7 @@ namespace __format
     protected:
       size_t _M_count = 0;
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	auto __s = this->_M_used();
@@ -3632,7 +3680,7 @@ namespace __format
 	_M_count += __s.size();
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_discarding() const override
       {
 	// format_to_n return total number of characters, that would be written,
@@ -3642,14 +3690,14 @@ namespace __format
 
     public:
       [[__gnu__::__always_inline__]]
-      explicit
+      _GLIBCXX_CONSTEXPR_FORMAT explicit
       _Iter_sink(_OutIter __out, iter_difference_t<_OutIter> __max = -1)
       : _M_out(std::move(__out)), _M_max(__max)
       { }
 
       using _Sink<_CharT>::out;
 
-      format_to_n_result<_OutIter>
+      _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_OutIter>
       _M_finish() &&
       {
 	if (this->_M_used().size() != 0)
@@ -3678,7 +3726,7 @@ namespace __format
       _CharT _M_buf[64]; // Write here after outputting _M_max characters.
 
     protected:
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	if (this->_M_unused().size() != 0)
@@ -3702,7 +3750,7 @@ namespace __format
 	  }
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_discarding() const override
       {
 	// format_to_n return total number of characters, that would be written,
@@ -3710,7 +3758,7 @@ namespace __format
 	return false;
       }
 
-      typename _Sink<_CharT>::_Reservation
+      _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
       _M_reserve(size_t __n) final
       {
 	auto __avail = this->_M_unused();
@@ -3727,7 +3775,7 @@ namespace __format
 
     private:
       template<typename _IterDifference>
-	static size_t
+	static _GLIBCXX_CONSTEXPR_FORMAT size_t
 	_S_trim_max(_IterDifference __max)
 	{
 	  if (__max < 0)
@@ -3740,7 +3788,7 @@ namespace __format
 	}
 
       [[__gnu__::__always_inline__]]
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_rebuf(_CharT* __ptr, size_t __total, size_t __inuse = 0)
       {
 	std::span<_CharT> __span(__ptr, __total);
@@ -3748,7 +3796,7 @@ namespace __format
       }
 
     public:
-      explicit
+      _GLIBCXX_CONSTEXPR_FORMAT explicit
       _Ptr_sink(_CharT* __ptr, size_t __n = _S_no_limit) noexcept
       : _Sink<_CharT>(_M_buf), _M_max(__n)
       {
@@ -3773,13 +3821,13 @@ namespace __format
       }
 
       template<contiguous_iterator _OutIter>
-	explicit
+	_GLIBCXX_CONSTEXPR_FORMAT explicit
 	_Ptr_sink(_OutIter __out, iter_difference_t<_OutIter> __n = -1)
 	: _Ptr_sink(std::to_address(__out), _S_trim_max(__n))
 	{ }
 
       template<contiguous_iterator _OutIter>
-	format_to_n_result<_OutIter>
+	_GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_OutIter>
 	_M_finish(_OutIter __first) const
 	{
 	  auto __s = this->_M_used();
@@ -3821,12 +3869,12 @@ namespace __format
       size_t _M_printwidth;
 
       [[__gnu__::__always_inline__]]
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_ignoring() const
       { return _M_printwidth >= _M_maxwidth; }
 
       [[__gnu__::__always_inline__]]
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_buffering() const
       {
 	if (_M_printwidth < _M_padwidth)
@@ -3836,7 +3884,7 @@ namespace __format
 	return false;
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_sync_discarding()
       {
 	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
@@ -3844,7 +3892,7 @@ namespace __format
 	    _M_maxwidth = _M_printwidth;
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_flush()
       {
 	span<_CharT> __new = this->_M_used();
@@ -3854,7 +3902,7 @@ namespace __format
 	this->_M_rewind();
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_force_update()
       {
 	auto __str = this->view();
@@ -3882,7 +3930,7 @@ namespace __format
 	return false;
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_update(size_t __new)
       {
 	_M_printwidth += __new;
@@ -3892,7 +3940,7 @@ namespace __format
 	return true;
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	// Ignore characters in buffer, and override it.
@@ -3907,11 +3955,11 @@ namespace __format
 	  _Str_sink<_CharT>::_M_overflow();
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_discarding() const override
       { return _M_ignoring(); }
 
-      typename _Sink<_CharT>::_Reservation
+      _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
       _M_reserve(size_t __n) override
       {
 	// Ignore characters in buffer, if any.
@@ -3930,7 +3978,7 @@ namespace __format
 	return _Sink<_CharT>::_M_reserve(__n);
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_bump(size_t __n) override
       {
 	// Ignore the written characters.
@@ -3945,19 +3993,19 @@ namespace __format
 
     public:
       [[__gnu__::__always_inline__]]
-      explicit
+      _GLIBCXX_CONSTEXPR_FORMAT explicit
       _Padding_sink(_Out __out, size_t __padwidth, size_t __maxwidth)
       : _M_padwidth(__padwidth), _M_maxwidth(__maxwidth),
 	_M_out(std::move(__out)), _M_printwidth(0)
       { _M_sync_discarding(); }
 
       [[__gnu__::__always_inline__]]
-      explicit
+      _GLIBCXX_CONSTEXPR_FORMAT explicit
       _Padding_sink(_Out __out, size_t __padwidth)
       : _Padding_sink(std::move(__out), __padwidth, (size_t)-1)
       { }
 
-      _Out
+      _GLIBCXX_CONSTEXPR_FORMAT _Out
       _M_finish(_Align __align, char32_t __fill_char)
       {
 	// Handle any characters in the buffer.
@@ -3996,14 +4044,14 @@ namespace __format
       unsigned _M_prev_escape : 1;
       unsigned _M_out_discards : 1;
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_sync_discarding()
       {
 	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
 	  _M_out_discards = _M_out._M_discarding();
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_write()
       {
 	span<_CharT> __bytes = this->_M_used();
@@ -4029,7 +4077,7 @@ namespace __format
 	_M_sync_discarding();
       }
 
-      void
+      _GLIBCXX_CONSTEXPR_FORMAT void
       _M_overflow() override
       {
 	if (_M_out_discards)
@@ -4038,13 +4086,13 @@ namespace __format
 	  _M_write();
       }
 
-      bool
+      _GLIBCXX_CONSTEXPR_FORMAT bool
       _M_discarding() const override
       { return _M_out_discards; }
 
     public:
       [[__gnu__::__always_inline__]]
-      explicit
+      _GLIBCXX_CONSTEXPR_FORMAT explicit
       _Escaping_sink(_Out __out, _Term_char __term)
       : _M_out(std::move(__out)), _M_term(__term),
 	_M_prev_escape(true), _M_out_discards(false)
@@ -4053,7 +4101,7 @@ namespace __format
 	_M_sync_discarding();
       }
 
-      _Out
+      _GLIBCXX_CONSTEXPR_FORMAT _Out
       _M_finish()
       {
 	if (_M_out_discards)
@@ -4105,7 +4153,7 @@ namespace __format
 			      const _Tp, _Tp>;
 
 	template<typename _Tq>
-	  static void
+	  static _GLIBCXX_CONSTEXPR_FORMAT void
 	  _S_format(basic_format_parse_context<_CharT>& __parse_ctx,
 		    _Context& __format_ctx, const void* __ptr)
 	  {
@@ -4118,7 +4166,7 @@ namespace __format
 
 	template<typename _Tp>
 	  requires (!is_same_v<remove_cv_t<_Tp>, handle>)
-	  explicit
+	  explicit _GLIBCXX_CONSTEXPR_FORMAT
 	  handle(_Tp& __val) noexcept
 	  : _M_ptr(__builtin_addressof(__val))
 	  , _M_func(&_S_format<__maybe_const_t<_Tp>>)
@@ -4131,7 +4179,7 @@ namespace __format
 	handle& operator=(const handle&) = default;
 
 	[[__gnu__::__always_inline__]]
-	void
+	void _GLIBCXX_CONSTEXPR_FORMAT
 	format(basic_format_parse_context<_CharT>& __pc, _Context& __fc) const
 	{ _M_func(__pc, __fc, this->_M_ptr); }
 
@@ -4183,10 +4231,12 @@ namespace __format
       };
 
       [[__gnu__::__always_inline__]]
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Arg_value() : _M_none() { }
 
 #if 0
       template<typename _Tp>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	_Arg_value(in_place_type_t<_Tp>, _Tp __val)
 	{ _S_get<_Tp>() = __val; }
 #endif
@@ -4195,7 +4245,7 @@ namespace __format
       // Value of second argument (if provided), is assigned to that member.
       template<typename _Tp, typename _Self, typename... _Value>
 	[[__gnu__::__always_inline__]]
-	static auto&
+	static _GLIBCXX_CONSTEXPR_FORMAT auto&
 	_S_access(_Self& __u, _Value... __value) noexcept
 	{
 	  static_assert(sizeof...(_Value) <= 1);
@@ -4259,23 +4309,24 @@ namespace __format
 	  else if constexpr (is_same_v<_Tp, handle>)
 	    return __u._M_handle;
 	  // Otherwise, ill-formed.
+	  __builtin_unreachable();
 	}
 
       template<typename _Tp>
 	[[__gnu__::__always_inline__]]
-	auto&
+	_GLIBCXX_CONSTEXPR_FORMAT auto&
 	_M_get() noexcept
 	{ return _S_access<_Tp>(*this); }
 
       template<typename _Tp>
 	[[__gnu__::__always_inline__]]
-	const auto&
+	_GLIBCXX_CONSTEXPR_FORMAT const auto&
 	_M_get() const noexcept
 	{ return _S_access<_Tp>(*this); }
 
       template<typename _Tp>
 	[[__gnu__::__always_inline__]]
-	void
+	_GLIBCXX_CONSTEXPR_FORMAT void
 	_M_set(_Tp __v) noexcept
 	{
 	  // Explicitly construct types without trivial default constructor.
@@ -4295,7 +4346,8 @@ namespace __format
     class _Arg_store;
 
   template<typename _Visitor, typename _Ctx>
-    decltype(auto) __visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
+    _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
+    __visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
 
   template<typename _Ch, typename _Tp>
     consteval _Arg_t
@@ -4312,20 +4364,21 @@ namespace __format
       using handle = __format::_Arg_value<_Context>::handle;
 
       [[__gnu__::__always_inline__]]
+      _GLIBCXX_CONSTEXPR_FORMAT
       basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
 
       [[nodiscard,__gnu__::__always_inline__]]
-      explicit operator bool() const noexcept
+      explicit _GLIBCXX_CONSTEXPR_FORMAT operator bool() const noexcept
       { return _M_type != __format::_Arg_none; }
 
 #if __cpp_lib_format >= 202306L // >= C++26
       template<typename _Visitor>
-	decltype(auto)
+	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
 	visit(this basic_format_arg __arg, _Visitor&& __vis)
 	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
 
       template<typename _Res, typename _Visitor>
-	_Res
+	_GLIBCXX_CONSTEXPR_FORMAT _Res
 	visit(this basic_format_arg __arg, _Visitor&& __vis)
 	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
 #endif
@@ -4502,7 +4555,7 @@ namespace __format
 	}
 
       template<typename _Tp>
-	void
+	_GLIBCXX_CONSTEXPR_FORMAT void
 	_M_set(_Tp __v) noexcept
 	{
 	  _M_type = _S_to_enum<_Tp>();
@@ -4511,7 +4564,7 @@ namespace __format
 
       template<typename _Tp>
 	requires __format::__formattable_with<_Tp, _Context>
-	explicit
+	_GLIBCXX_CONSTEXPR_FORMAT explicit
 	basic_format_arg(_Tp& __v) noexcept
 	{
 	  using _Td = _Normalize<_Tp>;
@@ -4525,15 +4578,15 @@ namespace __format
 	}
 
       template<typename _Ctx, typename... _Argz>
-	friend auto
+	friend _GLIBCXX_CONSTEXPR_FORMAT auto
 	make_format_args(_Argz&...) noexcept;
 
       template<typename _Visitor, typename _Ctx>
-	friend decltype(auto)
+	friend _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
 	visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx>);
 
       template<typename _Visitor, typename _Ctx>
-	friend decltype(auto)
+	friend _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
 	__format::__visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
 
       template<typename _Ch, typename _Tp>
@@ -4541,7 +4594,7 @@ namespace __format
 	__format::__to_arg_t_enum() noexcept;
 
       template<typename _Visitor>
-	decltype(auto)
+	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
 	_M_visit(_Visitor&& __vis, __format::_Arg_t __type)
 	{
 	  using namespace __format;
@@ -4616,7 +4669,7 @@ namespace __format
 	}
 
       template<typename _Visitor>
-	decltype(auto)
+	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
 	_M_visit_user(_Visitor&& __vis, __format::_Arg_t __type)
 	{
 	  return _M_visit([&__vis]<typename _Tp>(_Tp& __val) -> decltype(auto)
@@ -4640,7 +4693,7 @@ namespace __format
 
   template<typename _Visitor, typename _Context>
     _GLIBCXX26_DEPRECATED_SUGGEST("std::basic_format_arg::visit")
-    inline decltype(auto)
+    inline _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
     visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg)
     {
       return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type);
@@ -4650,7 +4703,7 @@ namespace __format
 namespace __format
 {
   template<typename _Visitor, typename _Ctx>
-    inline decltype(auto)
+    inline _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
     __visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx> __arg)
     {
       return __arg._M_visit(std::forward<_Visitor>(__vis), __arg._M_type);
@@ -4659,7 +4712,7 @@ namespace __format
   struct _WidthPrecVisitor
   {
     template<typename _Tp>
-      size_t
+      _GLIBCXX_CONSTEXPR_FORMAT size_t
       operator()(_Tp& __arg) const
       {
 	if constexpr (is_same_v<_Tp, monostate>)
@@ -4685,7 +4738,7 @@ namespace __format
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
   template<typename _Context>
-    inline size_t
+    inline _GLIBCXX_CONSTEXPR_FORMAT size_t
     __int_from_arg(const basic_format_arg<_Context>& __arg)
     { return __format::__visit_format_arg(_WidthPrecVisitor(), __arg); }
 
@@ -4733,11 +4786,11 @@ namespace __format
 	const _Format_arg* _M_args;       // Active when _M_packed_size == 0
       };
 
-      size_t
+      _GLIBCXX_CONSTEXPR_FORMAT size_t
       _M_size() const noexcept
       { return _M_packed_size ? _M_packed_size : _M_unpacked_size; }
 
-      typename __format::_Arg_t
+      _GLIBCXX_CONSTEXPR_FORMAT typename __format::_Arg_t
       _M_type(size_t __i) const noexcept
       {
 	uint64_t __t = _M_unpacked_size >> (__i * _S_packed_type_bits);
@@ -4745,7 +4798,7 @@ namespace __format
       }
 
       template<typename _Ctx, typename... _Args>
-	friend auto
+	friend _GLIBCXX_CONSTEXPR_FORMAT auto
 	make_format_args(_Args&...) noexcept;
 
       // An array of _Arg_t enums corresponding to _Args...
@@ -4756,10 +4809,11 @@ namespace __format
 
     public:
       template<typename... _Args>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	basic_format_args(const _Store<_Args...>& __store) noexcept;
 
       [[nodiscard,__gnu__::__always_inline__]]
-      basic_format_arg<_Context>
+      _GLIBCXX_CONSTEXPR_FORMAT basic_format_arg<_Context>
       get(size_t __i) const noexcept
       {
 	basic_format_arg<_Context> __arg;
@@ -4781,7 +4835,7 @@ namespace __format
       -> basic_format_args<_Context>;
 
   template<typename _Context, typename... _Args>
-    auto
+    _GLIBCXX_CONSTEXPR_FORMAT auto
     make_format_args(_Args&... __fmt_args) noexcept;
 
   // An array of type-erased formatting arguments.
@@ -4791,7 +4845,7 @@ namespace __format
       friend std::basic_format_args<_Context>;
 
       template<typename _Ctx, typename... _Argz>
-	friend auto std::
+	friend _GLIBCXX_CONSTEXPR_FORMAT auto std::
 #if _GLIBCXX_INLINE_VERSION
 	__8:: // Needed for PR c++/59256
 #endif
@@ -4810,7 +4864,7 @@ namespace __format
       _Element_t _M_args[sizeof...(_Args)];
 
       template<typename _Tp>
-	static _Element_t
+	static _GLIBCXX_CONSTEXPR_FORMAT _Element_t
 	_S_make_elt(_Tp& __v)
 	{
 	  using _Tq = remove_const_t<_Tp>;
@@ -4836,6 +4890,7 @@ namespace __format
       template<typename... _Tp>
 	requires (sizeof...(_Tp) == sizeof...(_Args))
 	[[__gnu__::__always_inline__]]
+	_GLIBCXX_CONSTEXPR_FORMAT
 	_Arg_store(_Tp&... __a) noexcept
 	: _M_args{_S_make_elt(__a)...}
 	{ }
@@ -4847,7 +4902,7 @@ namespace __format
 
   template<typename _Context>
     template<typename... _Args>
-      inline
+      inline _GLIBCXX_CONSTEXPR_FORMAT
       basic_format_args<_Context>::
       basic_format_args(const _Store<_Args...>& __store) noexcept
       {
@@ -4881,7 +4936,7 @@ namespace __format
   /// Capture formatting arguments for use by `std::vformat`.
   template<typename _Context = format_context, typename... _Args>
     [[nodiscard,__gnu__::__always_inline__]]
-    inline auto
+    inline _GLIBCXX_CONSTEXPR_FORMAT auto
     make_format_args(_Args&... __fmt_args) noexcept
     {
       using _Fmt_arg = basic_format_arg<_Context>;
@@ -4894,7 +4949,7 @@ namespace __format
   /// Capture formatting arguments for use by `std::vformat` (for wide output).
   template<typename... _Args>
     [[nodiscard,__gnu__::__always_inline__]]
-    inline auto
+    inline _GLIBCXX_CONSTEXPR_FORMAT auto
     make_wformat_args(_Args&... __args) noexcept
     { return std::make_format_args<wformat_context>(__args...); }
 #endif
@@ -4903,7 +4958,7 @@ namespace __format
 namespace __format
 {
   template<typename _Out, typename _CharT, typename _Context>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __do_vformat_to(_Out, basic_string_view<_CharT>,
 		    const basic_format_args<_Context>&,
 		    const locale* = nullptr);
@@ -4935,11 +4990,13 @@ namespace __format
       _Out _M_out;
       __format::_Optional_locale _M_loc;
 
+      _GLIBCXX_CONSTEXPR_FORMAT
       basic_format_context(basic_format_args<basic_format_context> __args,
 			   _Out __out)
       : _M_args(__args), _M_out(std::move(__out))
       { }
 
+      _GLIBCXX_CONSTEXPR_FORMAT
       basic_format_context(basic_format_args<basic_format_context> __args,
 			   _Out __out, const std::locale& __loc)
       : _M_args(__args), _M_out(std::move(__out)), _M_loc(__loc)
@@ -4952,7 +5009,7 @@ namespace __format
       basic_format_context& operator=(const basic_format_context&) = delete;
 
       template<typename _Out2, typename _CharT2, typename _Context2>
-	friend _Out2
+	friend _GLIBCXX_CONSTEXPR_FORMAT _Out2
 	__format::__do_vformat_to(_Out2, basic_string_view<_CharT2>,
 				  const basic_format_args<_Context2>&,
 				  const locale*);
@@ -4968,7 +5025,7 @@ namespace __format
 	using formatter_type = formatter<_Tp, _CharT>;
 
       [[nodiscard]]
-      basic_format_arg<basic_format_context>
+      _GLIBCXX_CONSTEXPR_FORMAT basic_format_arg<basic_format_context>
       arg(size_t __id) const noexcept
       { return _M_args.get(__id); }
 
@@ -4976,9 +5033,11 @@ namespace __format
       std::locale locale() { return _M_loc.value(); }
 
       [[nodiscard]]
-      iterator out() { return std::move(_M_out); }
+      _GLIBCXX_CONSTEXPR_FORMAT iterator
+      out() { return std::move(_M_out); }
 
-      void advance_to(iterator __it) { _M_out = std::move(__it); }
+      _GLIBCXX_CONSTEXPR_FORMAT void
+      advance_to(iterator __it) { _M_out = std::move(__it); }
     };
 
 
@@ -5117,6 +5176,7 @@ namespace __format
     class _Formatting_scanner : public _Scanner<_CharT>
     {
     public:
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Formatting_scanner(basic_format_context<_Out, _CharT>& __fc,
 			  basic_string_view<_CharT> __str)
       : _Scanner<_CharT>(__str), _M_fc(__fc)
@@ -5224,7 +5284,7 @@ namespace __format
     };
 
   template<typename _CharT, unsigned = __unicode::__literal_encoding_is_unicode<_CharT>()>
-    _Sink_iter<_CharT>
+    _GLIBCXX_CONSTEXPR_FORMAT _Sink_iter<_CharT>
     __do_vformat_to(_Sink_iter<_CharT> __out, basic_string_view<_CharT> __fmt,
 		    __format_context<_CharT>& __ctx)
     {
@@ -5241,7 +5301,7 @@ namespace __format
 		  const char* __chars[] = { "false", "true" };
 		  if (auto __res = __out._M_reserve(__len))
 		    {
-		      __builtin_memcpy(__res.get(), __chars[__arg], __len);
+		      ranges::copy_n(__chars[__arg], __len, __res.get());
 		      __res._M_bump(__len);
 		      __done = true;
 		    }
@@ -5279,7 +5339,7 @@ namespace __format
 		  string_view __sv = __arg;
 		  if (auto __res = __out._M_reserve(__sv.size()))
 		    {
-		      __builtin_memcpy(__res.get(), __sv.data(), __sv.size());
+		      ranges::copy(__sv, __res.get());
 		      __res._M_bump(__sv.size());
 		      __done = true;
 		    }
@@ -5312,7 +5372,7 @@ namespace __format
 #endif
 
   template<typename _Out, typename _CharT, typename _Context>
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     __do_vformat_to(_Out __out, basic_string_view<_CharT> __fmt,
 		    const basic_format_args<_Context>& __args,
 		    const locale* __loc)
@@ -5339,7 +5399,7 @@ namespace __format
     }
 
   template<typename _Out, typename _CharT>
-    inline format_to_n_result<_Out>
+    inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
     __do_vformat_to_n(_Out __out, iter_difference_t<_Out> __n,
 		      basic_string_view<_CharT> __fmt,
 		      const type_identity_t<
@@ -5379,7 +5439,12 @@ namespace __format
 	if constexpr (sizeof...(_Ts) != 0)
 	  {
 	    using _Parse_ctx = __format::_Scanner<_CharT>::_Parse_context;
-	    auto __arg = static_cast<_Parse_ctx*>(this)->_M_types[__id];
+	    auto* __args = static_cast<_Parse_ctx*>(this)->_M_types;
+	    // Formatting scanner, no type check.
+	    if (!__args)
+	      return;
+
+	    auto __arg = __args[__id];
 	    __format::_Arg_t __types[] = {
 	      __format::__to_arg_t_enum<_CharT, _Ts>()...
 	    };
@@ -5397,7 +5462,7 @@ namespace __format
       requires convertible_to<const _Tp&, basic_string_view<_CharT>>
       consteval
       basic_format_string<_CharT, _Args...>::
-      basic_format_string(const _Tp& __s)
+      basic_format_string(const _Tp& __s) noexcept
       : _M_str(__s)
       {
 	__format::_Checking_scanner<_CharT, remove_cvref_t<_Args>...>
@@ -5409,14 +5474,14 @@ namespace __format
 
   template<typename _Out> requires output_iterator<_Out, const char&>
     [[__gnu__::__always_inline__]]
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     vformat_to(_Out __out, string_view __fmt, format_args __args)
     { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<typename _Out> requires output_iterator<_Out, const wchar_t&>
     [[__gnu__::__always_inline__]]
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     vformat_to(_Out __out, wstring_view __fmt, wformat_args __args)
     { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
 #endif
@@ -5442,7 +5507,7 @@ namespace __format
 #endif
 
   [[nodiscard]]
-  inline string
+  inline _GLIBCXX_CONSTEXPR_FORMAT string
   vformat(string_view __fmt, format_args __args)
   {
     __format::_Str_sink<char> __buf;
@@ -5452,7 +5517,7 @@ namespace __format
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   [[nodiscard]]
-  inline wstring
+  inline _GLIBCXX_CONSTEXPR_FORMAT wstring
   vformat(wstring_view __fmt, wformat_args __args)
   {
     __format::_Str_sink<wchar_t> __buf;
@@ -5483,14 +5548,14 @@ namespace __format
 
   template<typename... _Args>
     [[nodiscard]]
-    inline string
+    inline _GLIBCXX_CONSTEXPR_FORMAT string
     format(format_string<_Args...> __fmt, _Args&&... __args)
     { return std::vformat(__fmt.get(), std::make_format_args(__args...)); }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<typename... _Args>
     [[nodiscard]]
-    inline wstring
+    inline _GLIBCXX_CONSTEXPR_FORMAT wstring
     format(wformat_string<_Args...> __fmt, _Args&&... __args)
     { return std::vformat(__fmt.get(), std::make_wformat_args(__args...)); }
 #endif
@@ -5519,7 +5584,7 @@ namespace __format
 
   template<typename _Out, typename... _Args>
     requires output_iterator<_Out, const char&>
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
     {
       return std::vformat_to(std::move(__out), __fmt.get(),
@@ -5529,7 +5594,7 @@ namespace __format
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<typename _Out, typename... _Args>
     requires output_iterator<_Out, const wchar_t&>
-    inline _Out
+    inline _GLIBCXX_CONSTEXPR_FORMAT _Out
     format_to(_Out __out, wformat_string<_Args...> __fmt, _Args&&... __args)
     {
       return std::vformat_to(std::move(__out), __fmt.get(),
@@ -5561,7 +5626,7 @@ namespace __format
 
   template<typename _Out, typename... _Args>
     requires output_iterator<_Out, const char&>
-    inline format_to_n_result<_Out>
+    inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
     format_to_n(_Out __out, iter_difference_t<_Out> __n,
 		format_string<_Args...> __fmt, _Args&&... __args)
     {
@@ -5573,7 +5638,7 @@ namespace __format
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<typename _Out, typename... _Args>
     requires output_iterator<_Out, const wchar_t&>
-    inline format_to_n_result<_Out>
+    inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
     format_to_n(_Out __out, iter_difference_t<_Out> __n,
 		wformat_string<_Args...> __fmt, _Args&&... __args)
     {
@@ -5615,10 +5680,11 @@ namespace __format
     class _Counting_sink final : public _Ptr_sink<_CharT>
     {
     public:
+      _GLIBCXX_CONSTEXPR_FORMAT
       _Counting_sink() : _Ptr_sink<_CharT>(nullptr, 0) { }
 
       [[__gnu__::__always_inline__]]
-      size_t
+      _GLIBCXX_CONSTEXPR_FORMAT size_t
       count() const
       { return this->_M_count + this->_M_used().size(); }
     };
@@ -5653,7 +5719,7 @@ namespace __format
 
   template<typename... _Args>
     [[nodiscard]]
-    inline size_t
+    inline _GLIBCXX_CONSTEXPR_FORMAT size_t
     formatted_size(format_string<_Args...> __fmt, _Args&&... __args)
     {
       __format::_Counting_sink<char> __buf;
@@ -5665,7 +5731,7 @@ namespace __format
 #ifdef _GLIBCXX_USE_WCHAR_T
   template<typename... _Args>
     [[nodiscard]]
-    inline size_t
+    inline _GLIBCXX_CONSTEXPR_FORMAT size_t
     formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args)
     {
       __format::_Counting_sink<wchar_t> __buf;
@@ -5736,6 +5802,7 @@ namespace __format
 namespace __format
 {
   template<typename _CharT, typename _Out, typename _Callback>
+    _GLIBCXX_CONSTEXPR_FORMAT
     typename basic_format_context<_Out, _CharT>::iterator
     __format_padded(basic_format_context<_Out, _CharT>& __fc,
 		    const _Spec<_CharT>& __spec,
@@ -5755,14 +5822,16 @@ namespace __format
 
 	 struct _Restore_out
 	 {
+	   _GLIBCXX_CONSTEXPR_FORMAT
 	   _Restore_out(basic_format_context<_Sink_iter<_CharT>, _CharT>& __fc)
 	   : _M_ctx(std::addressof(__fc)), _M_out(__fc.out())
 	  { }
 
-	  void
+	  _GLIBCXX_CONSTEXPR_FORMAT void
 	  _M_disarm()
 	  { _M_ctx = nullptr; }
 
+	  _GLIBCXX_CONSTEXPR_FORMAT
 	  ~_Restore_out()
 	  {
 	    if (_M_ctx)
@@ -5796,7 +5865,7 @@ namespace __format
       }
 
       template<typename _Out>
-	void
+	_GLIBCXX_CONSTEXPR_FORMAT void
 	_M_format(__maybe_const<_Tp, _CharT>& __elem,
 		  basic_format_context<_Out, _CharT>& __fc,
 		  basic_string_view<_CharT> __sep) const
@@ -5894,12 +5963,14 @@ namespace __format
 
     protected:
       template<typename _Tuple, typename _Out, size_t... _Ids>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format(_Tuple& __tuple, index_sequence<_Ids...>,
 		  basic_format_context<_Out, _CharT>& __fc) const
 	{ return _M_format_elems(std::get<_Ids>(__tuple)..., __fc); }
 
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format_elems(__maybe_const<_Tps, _CharT>&... __elems,
 			basic_format_context<_Out, _CharT>& __fc) const
@@ -5929,7 +6000,7 @@ namespace __format
 	  }
 
 	  template<typename _Out>
-	    void
+	    _GLIBCXX_CONSTEXPR_FORMAT void
 	    _M_format(__maybe_const<_Tps, _CharT>&... __elems,
 		      basic_format_context<_Out, _CharT>& __fc,
 		      _String_view __sep) const
@@ -5945,7 +6016,7 @@ namespace __format
 	};
 
       template<size_t... _Ids>
-	static auto
+	static _GLIBCXX_CONSTEXPR_FORMAT auto
 	_S_create_storage(index_sequence<_Ids...>)
 	  -> __formatters_storage<_Ids...>;
       using _Formatters
@@ -5981,6 +6052,7 @@ namespace __format
       // We deviate from standard, that declares this as template accepting
       // unconstrained FormatContext type, which seems unimplementable.
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(__maybe_const_pair& __p,
 	       basic_format_context<_Out, _CharT>& __fc) const
@@ -6008,6 +6080,7 @@ namespace __format
       // We deviate from standard, that declares this as template accepting
       // unconstrained FormatContext type, which seems unimplementable.
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(__maybe_const_tuple& __t,
 	       basic_format_context<_Out, _CharT>& __fc) const
@@ -6171,6 +6244,7 @@ namespace __format
       template<ranges::input_range _Rg, typename _Out>
 	requires formattable<ranges::range_reference_t<_Rg>, _CharT> &&
 		 same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>, _Tp>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -6189,6 +6263,7 @@ namespace __format
 
     private:
       template<ranges::input_range _Rg, typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format(_Rg& __rg, basic_format_context<_Out, _CharT>& __fc) const
 	{
@@ -6206,6 +6281,7 @@ namespace __format
 
 
       template<ranges::input_range _Rg, typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	_M_format_elems(_Rg& __rg,
 			basic_format_context<_Out, _CharT>& __fc) const
@@ -6305,6 +6381,7 @@ namespace __format
       // We deviate from standard, that declares this as template accepting
       // unconstrained FormatContext type, which seems unimplementable.
       template<typename _Out>
+	_GLIBCXX_CONSTEXPR_FORMAT
 	typename basic_format_context<_Out, _CharT>::iterator
 	format(__format::__maybe_const_range<_Rg, _CharT>& __rg,
 	       basic_format_context<_Out, _CharT>& __fc) const
@@ -6331,6 +6408,7 @@ namespace __format
 
 #endif // C++23 formatting ranges
 #undef _GLIBCXX_WIDEN
+#undef _GLIBCXX_CONSTEXPR_FORMAT
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc b/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
index 83c7b22d0810..6894d6c4fc3f 100644
--- a/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
+++ b/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
@@ -15,7 +15,7 @@ void test_missing_specialization()
 {
   struct X { };
   X x;
-  (void)std::make_format_args(x); // { dg-error "here" }
+  (void)std::make_format_args(x); // { dg-error "(here|in 'constexpr' expansion of)" }
 // { dg-error "std::formatter must be specialized" "" { target *-*-* } 0 }
 }
 
@@ -37,7 +37,7 @@ void test(std::formatter<Y>& f, std::format_parse_context& pc) {
 void test_const_arg()
 {
   const Y y;
-  (void)std::make_format_args(y); // { dg-error "here" }
+  (void)std::make_format_args(y); // { dg-error "(here|in 'constexpr' expansion of)" }
 // { dg-error "format arg must be non-const" "" { target *-*-* } 0 }
 }
 
diff --git a/libstdc++-v3/testsuite/std/format/constexpr.cc b/libstdc++-v3/testsuite/std/format/constexpr.cc
new file mode 100644
index 000000000000..7f806081f4ef
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/format/constexpr.cc
@@ -0,0 +1,166 @@
+// { dg-do compile { target c++26 } }
+
+#include <format>
+#include <string>
+#include <string_view>
+#include <tuple>
+#include <vector>
+#include <testsuite_hooks.h>
+
+#if _GLIBCXX_USE_CXX11_ABI
+
+#ifndef __glibcxx_constexpr_format
+# error "Feature test macro for constexpr std::format is missing in <format>"
+#elif __glibcxx_constexpr_format < 202511L
+# error "Feature test macro for constexpr std::format has wrong value in <format>"
+#endif
+
+// Slightly more general from __format::_Widen, works with character literals.
+template<typename CharT>
+consteval auto widen(auto narrow, auto wide)
+{
+  if constexpr (std::is_same_v<CharT, wchar_t>)
+    return wide;
+  else
+    return narrow;
+}
+
+#define WIDEN_(C, S) widen<C>(S, L##S)
+#define WIDEN(S) WIDEN_(CharT, S)
+
+template<typename CharT>
+constexpr void
+test_format()
+{
+  using namespace std;
+
+  basic_string<CharT> res;
+
+  res = format(WIDEN("{}"), WIDEN('c'));
+  VERIFY( res == WIDEN("c") );
+  res = format(WIDEN("{1} {0} {0}"), WIDEN('a'), WIDEN('b'));
+  VERIFY( res == WIDEN("b a a") );
+  res = format(WIDEN("{:?}"), WIDEN('\n'));
+  VERIFY( res == WIDEN("'\\n'") );
+  res = format(WIDEN("{:.^10}"), WIDEN("hello"));
+  VERIFY( res == WIDEN("..hello...") );
+  res = format(WIDEN("{:.>{}}"), WIDEN("world"), 8);
+  VERIFY( res == WIDEN("...world") );
+  res = format(WIDEN("{:+#06X}"), 0xa);
+  VERIFY( res == WIDEN("+0X00A") );
+  res = format(WIDEN("{:p}"), nullptr);
+  VERIFY( res == WIDEN("0x0") );
+  res = format(WIDEN("{:07P}"), nullptr);
+  VERIFY( res == WIDEN("0X00000") );
+  res = format(WIDEN("{} {}"), true, false);
+  VERIFY( res == WIDEN("true false") );
+  res = format(WIDEN("{:+#06b}"), true);
+  VERIFY( res == WIDEN("+0b001") );
+  res = format(WIDEN("{} {} {}"), WIDEN("abc"), basic_string_view<CharT>(WIDEN("def")), basic_string<CharT>(WIDEN("ghi")));
+  VERIFY( res == WIDEN("abc def ghi") );
+  res = format(WIDEN("{:?}"), WIDEN("hello\nworld"));
+  VERIFY( res == WIDEN("\"hello\\nworld\"") );
+  res = format(WIDEN("{}"), tuple(1, true));
+  VERIFY( res == WIDEN("(1, true)") );
+  res = format(WIDEN("{:t<12m}"), tuple(WIDEN('a'), WIDEN("bc")));
+  VERIFY( res == WIDEN("'a': \"bc\"ttt") );
+  res = format(WIDEN("{:n}"), tuple(nullptr, -1, 1));
+  VERIFY( res == WIDEN("0x0, -1, 1") );
+  res = format(WIDEN("{}"), vector{1, 2, 3, 4});
+  VERIFY( res == WIDEN("[1, 2, 3, 4]") );
+  res = format(WIDEN("{:?s}"), vector{WIDEN('a'), WIDEN('\n'), WIDEN('b')});
+  VERIFY( res == WIDEN("\"a\\nb\"") );
+  res = format(WIDEN("{:n:+}"), vector{1, 2, 3});
+  VERIFY( res == WIDEN("+1, +2, +3") );
+}
+
+template<typename CharT>
+constexpr void
+test_format_to()
+{
+  using namespace std;
+
+  CharT buf[100];
+  CharT* out;
+
+  out = format_to(buf, WIDEN("{:.^5}"), WIDEN("foo"));
+  VERIFY( basic_string_view<CharT>(buf, out) == WIDEN(".foo.") );
+  out = format_to(buf, WIDEN("{} {}"), nullptr, true);
+  VERIFY( basic_string_view<CharT>(buf, out) == WIDEN("0x0 true") );
+}
+
+template<typename CharT>
+constexpr void
+test_vformat()
+{
+  using namespace std;
+  using context = __format::__format_context<CharT>;
+
+  basic_string<CharT> res;
+
+  int arg1 = 1;
+  CharT arg2 = WIDEN('a');
+  bool arg3 = true;
+  res = vformat(WIDEN("{} {:?} {}"), make_format_args<context>(arg1, arg2, arg3));
+  VERIFY( res == WIDEN("1 'a' true") );
+}
+
+template<typename CharT>
+constexpr void
+test_vformat_to()
+{
+  using namespace std;
+  using context = __format::__format_context<CharT>;
+
+  CharT buf[100];
+  CharT* out;
+
+  nullptr_t arg1 = nullptr;
+  basic_string<CharT> arg2 = WIDEN("foo");
+  tuple<int, int> arg3{-3, 5};
+  out = vformat_to(buf, WIDEN("{} {:?} {}"), make_format_args<context>(arg1, arg2, arg3));
+  VERIFY( basic_string_view<CharT>(buf, out) == WIDEN("0x0 \"foo\" (-3, 5)") );
+}
+
+template<typename CharT>
+constexpr void
+test_format_to_n()
+{
+  using namespace std;
+
+  CharT buf[100];
+  format_to_n_result<CharT*> out;
+  int n;
+
+  n = 100;
+  out = format_to_n(buf, n, WIDEN("{:+} {:?} {}"), 1, WIDEN("\n\n"), vector{1, 2, 3});
+  VERIFY( out.size <= n );
+  VERIFY( out.out - buf == out.size );
+  VERIFY( basic_string_view<CharT>(buf, out.size) == WIDEN("+1 \"\\n\\n\" [1, 2, 3]") );
+  n = 12;
+  out = format_to_n(buf, n, WIDEN("{} {} {}"), true, nullptr, WIDEN("long string"));
+  VERIFY( out.size > n );
+  VERIFY( out.out - buf == n );
+  VERIFY( basic_string_view<CharT>(buf, out.out) == WIDEN("true 0x0 lon") );
+}
+
+constexpr bool
+all_tests()
+{
+  test_format<char>();
+  test_format<wchar_t>();
+  test_format_to<char>();
+  test_format_to<wchar_t>();
+  test_vformat<char>();
+  test_vformat<wchar_t>();
+  test_vformat_to<char>();
+  test_vformat_to<wchar_t>();
+  test_format_to_n<char>();
+  test_format_to_n<wchar_t>();
+
+  return true;
+}
+
+static_assert(all_tests());
+
+#endif // _GLIBCXX_USE_CXX11_ABI
diff --git a/libstdc++-v3/testsuite/std/format/debug.cc b/libstdc++-v3/testsuite/std/format/debug.cc
index 43e930c579e2..01bb9074ba7a 100644
--- a/libstdc++-v3/testsuite/std/format/debug.cc
+++ b/libstdc++-v3/testsuite/std/format/debug.cc
@@ -1,5 +1,5 @@
-// { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE -DUNICODE_ENC" { target le } }
-// { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32BE -DUNICODE_ENC" { target be } }
+// { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE -DUNICODE_ENC -fconstexpr-ops-limit=500000000" { target le } }
+// { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32BE -DUNICODE_ENC -fconstexpr-ops-limit=500000000" { target be } }
 // { dg-do run { target c++23 } }
 // { dg-require-effective-target 4byte_wchar_t }
 // { dg-add-options no_pch }
@@ -8,19 +8,25 @@
 #include <format>
 #include <testsuite_hooks.h>
 
-std::string
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
+CONSTEXPR std::string
 fdebug(char t)
 { return std::format("{:?}", t); }
 
-std::wstring
+CONSTEXPR std::wstring
 fdebug(wchar_t t)
 { return std::format(L"{:?}", t); }
 
-std::string
+CONSTEXPR std::string
 fdebug(std::string_view t)
 { return std::format("{:?}", t); }
 
-std::wstring
+CONSTEXPR std::wstring
 fdebug(std::wstring_view t)
 { return std::format(L"{:?}", t); }
 
@@ -29,7 +35,7 @@ fdebug(std::wstring_view t)
 #define WIDEN(S) WIDEN_(CharT, S)
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_basic_escapes()
 {
   std::basic_string<CharT> res;
@@ -72,7 +78,7 @@ test_basic_escapes()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_ascii_escapes()
 {
   std::basic_string<CharT> res;
@@ -89,7 +95,7 @@ test_ascii_escapes()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_extended_ascii()
 {
   std::basic_string<CharT> res;
@@ -117,7 +123,7 @@ test_extended_ascii()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_unicode_escapes()
 {
 #if UNICODE_ENC
@@ -166,7 +172,7 @@ test_unicode_escapes()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_grapheme_extend()
 {
 #if UNICODE_ENC
@@ -192,7 +198,7 @@ test_grapheme_extend()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_replacement_char()
 {
 #if UNICODE_ENC
@@ -206,7 +212,7 @@ test_replacement_char()
 #endif // UNICODE_ENC
 }
 
-void
+CONSTEXPR void
 test_ill_formed_utf8_seq()
 {
 #if UNICODE_ENC
@@ -244,7 +250,7 @@ test_ill_formed_utf8_seq()
 #endif // UNICODE_ENC
 }
 
-void
+CONSTEXPR void
 test_ill_formed_utf32()
 {
 #if UNICODE_ENC
@@ -269,7 +275,7 @@ test_ill_formed_utf32()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_fill()
 {
   std::basic_string<CharT> res;
@@ -315,7 +321,7 @@ test_fill()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_prec()
 {
   std::basic_string<CharT> res;
@@ -341,7 +347,8 @@ test_prec()
 #endif // UNICODE_ENC
 }
 
-bool strip_quote(std::string_view& v)
+CONSTEXPR bool
+strip_quote(std::string_view& v)
 {
   if (!v.starts_with('"'))
     return false;
@@ -349,7 +356,8 @@ bool strip_quote(std::string_view& v)
   return true;
 }
 
-bool strip_quotes(std::string_view& v)
+CONSTEXPR bool
+strip_quotes(std::string_view& v)
 {
   if (!v.starts_with('"') || !v.ends_with('"'))
     return false;
@@ -358,7 +366,8 @@ bool strip_quotes(std::string_view& v)
   return true;
 }
 
-bool strip_prefix(std::string_view& v, size_t n, char c)
+CONSTEXPR bool
+strip_prefix(std::string_view& v, size_t n, char c)
 {
   size_t pos = v.find_first_not_of(c);
   if (pos == std::string_view::npos)
@@ -369,7 +378,8 @@ bool strip_prefix(std::string_view& v, size_t n, char c)
   return true;
 }
 
-void test_padding()
+CONSTEXPR void
+test_padding()
 {
   std::string res;
   std::string_view resv;
@@ -719,7 +729,8 @@ void test_padding()
 #endif // UNICODE_ENC
 }
 
-void test_char_as_wchar()
+CONSTEXPR void
+test_char_as_wchar()
 {
   std::wstring res;
 
@@ -751,8 +762,9 @@ struct std::formatter<DebugWrapper<T>, CharT>
   }
 
   template<typename Out>
-  Out format(DebugWrapper<T> const& t,
-	     std::basic_format_context<Out, CharT>& fc) const
+  CONSTEXPR Out
+  format(DebugWrapper<T> const& t,
+	 std::basic_format_context<Out, CharT>& fc) const
   { return under.format(t.val, fc); }
 
 private:
@@ -760,7 +772,7 @@ private:
 };
 
 template<typename CharT, typename StrT>
-void
+CONSTEXPR void
 test_formatter_str()
 {
   CharT buf[]{ 'a', 'b', 'c', 0 };
@@ -770,7 +782,7 @@ test_formatter_str()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_formatter_arr()
 {
   std::basic_string<CharT> res;
@@ -786,7 +798,7 @@ test_formatter_arr()
 }
 
 template<typename CharT, typename SrcT>
-void
+CONSTEXPR void
 test_formatter_char()
 {
   DebugWrapper<SrcT> in{ 'a' };
@@ -795,7 +807,7 @@ test_formatter_char()
 }
 
 template<typename CharT>
-void
+CONSTEXPR void
 test_formatters()
 {
   test_formatter_char<CharT, CharT>();
@@ -806,7 +818,7 @@ test_formatters()
   test_formatter_arr<CharT>();
 }
 
-void
+CONSTEXPR void
 test_formatters_c()
 {
   test_formatters<char>();
@@ -814,7 +826,8 @@ test_formatters_c()
   test_formatter_char<wchar_t, char>();
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_basic_escapes<char>();
   test_basic_escapes<wchar_t>();
@@ -840,4 +853,16 @@ int main()
   test_padding();
 
   test_formatters_c();
+
+  return true;
+}
+
+#if defined(__glibcxx_constexpr_format) && defined(UNICODE_ENC)
+// Deboug ouput is supported only for unicode literal encoding
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/dynamic_format.cc b/libstdc++-v3/testsuite/std/format/dynamic_format.cc
index fde2555ccb2f..aa3109cca4ea 100644
--- a/libstdc++-v3/testsuite/std/format/dynamic_format.cc
+++ b/libstdc++-v3/testsuite/std/format/dynamic_format.cc
@@ -3,7 +3,13 @@
 #include <format>
 #include <testsuite_hooks.h>
 
-void
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
+CONSTEXPR void
 test_char()
 {
   std::string fmt = "{}";
@@ -11,7 +17,7 @@ test_char()
   VERIFY( s == "123" );
 }
 
-void
+CONSTEXPR void
 test_wchar()
 {
   std::wstring fmt = L"{:#o}";
@@ -19,7 +25,7 @@ test_wchar()
   VERIFY( s == L"0710" );
 }
 
-void
+CONSTEXPR void
 test_internal_api()
 {
   // Using _Dynamic_format_string directly works even in C++20 mode.
@@ -40,9 +46,20 @@ static_assert( !std::is_constructible_v<std::format_string<>,
 static_assert( !std::is_constructible_v<std::wformat_string<>,
 					decltype(std::dynamic_format(L""))&&> );
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_char();
   test_wchar();
   test_internal_api();
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/functions/format.cc b/libstdc++-v3/testsuite/std/format/functions/format.cc
index d342114083e3..88e95a788b51 100644
--- a/libstdc++-v3/testsuite/std/format/functions/format.cc
+++ b/libstdc++-v3/testsuite/std/format/functions/format.cc
@@ -5,6 +5,12 @@
 
 #include <format>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 #ifndef __cpp_lib_format
 # error "Feature test macro for std::format is missing in <format>"
 #elif __cpp_lib_format < 202110L
@@ -41,7 +47,7 @@
 #include <cstdio>
 #include <testsuite_hooks.h>
 
-void
+CONSTEXPR void
 test_no_args()
 {
   std::string s;
@@ -55,7 +61,7 @@ test_no_args()
   VERIFY( s == "128bpm }" );
 }
 
-void
+CONSTEXPR void
 test_unescaped()
 {
 #ifdef __cpp_exceptions
@@ -78,7 +84,7 @@ struct brit_punc : std::numpunct<char>
   std::string do_falsename() const override { return "nah bruv"; }
 };
 
-void
+CONSTEXPR void
 test_std_examples()
 {
   using namespace std;
@@ -125,10 +131,13 @@ test_std_examples()
     VERIFY(s0 == "1,+1,1, 1");
     string s1 = format("{0:},{0:+},{0:-},{0: }", -1);
     VERIFY(s1 == "-1,-1,-1,-1");
-    string s2 = format("{0:},{0:+},{0:-},{0: }", inf);
-    VERIFY(s2 == "inf,+inf,inf, inf");
-    string s3 = format("{0:},{0:+},{0:-},{0: }", nan);
-    VERIFY(s3 == "nan,+nan,nan, nan");
+    if (!std::is_constant_evaluated())
+      {
+	string s2 = format("{0:},{0:+},{0:-},{0: }", inf);
+	VERIFY(s2 == "inf,+inf,inf, inf");
+	string s3 = format("{0:},{0:+},{0:-},{0: }", nan);
+	VERIFY(s3 == "nan,+nan,nan, nan");
+      }
   }
 
   // alternate form and zero fill
@@ -143,34 +152,35 @@ test_std_examples()
   }
 
   // integer presentation types
-  {
-    // Change global locale so "{:L}" adds digit separators.
-    std::locale::global(std::locale({}, new brit_punc));
-
-    string s0 = format("{}", 42);
-    VERIFY(s0 == "42");
-    string s1 = format("{0:b} {0:d} {0:o} {0:x}", 42);
-    VERIFY(s1 == "101010 42 52 2a");
-    string s2 = format("{0:#x} {0:#X}", 42);
-    VERIFY(s2 == "0x2a 0X2A");
-    string s3 = format("{:L}", 1234);
-    VERIFY(s3 == "1,234");
-
-    // Test locale's "byte-and-a-half" grouping (Imperial word? tribble?).
-    string s4 = format("{:#Lx}", 0xfffff);
-    VERIFY(s4 == "0xff,fff");
-
-    // Restore
-    std::locale::global(std::locale::classic());
-
-    string s5 = format("{}", -100); // PR libstdc++/114325
-    VERIFY(s5 == "-100");
-    string s6 = format("{:d} {:d}", -123, 999);
-    VERIFY(s6 == "-123 999");
-  }
+  if (!std::is_constant_evaluated())
+    {
+      // Change global locale so "{:L}" adds digit separators.
+      std::locale::global(std::locale({}, new brit_punc));
+
+      string s0 = format("{}", 42);
+      VERIFY(s0 == "42");
+      string s1 = format("{0:b} {0:d} {0:o} {0:x}", 42);
+      VERIFY(s1 == "101010 42 52 2a");
+      string s2 = format("{0:#x} {0:#X}", 42);
+      VERIFY(s2 == "0x2a 0X2A");
+      string s3 = format("{:L}", 1234);
+      VERIFY(s3 == "1,234");
+
+      // Test locale's "byte-and-a-half" grouping (Imperial word? tribble?).
+      string s4 = format("{:#Lx}", 0xfffff);
+      VERIFY(s4 == "0xff,fff");
+
+      // Restore
+      std::locale::global(std::locale::classic());
+
+      string s5 = format("{}", -100); // PR libstdc++/114325
+      VERIFY(s5 == "-100");
+      string s6 = format("{:d} {:d}", -123, 999);
+      VERIFY(s6 == "-123 999");
+    }
 }
 
-void
+CONSTEXPR void
 test_alternate_forms()
 {
   std::string s;
@@ -180,23 +190,26 @@ test_alternate_forms()
   s = std::format("{0:#b} {0:+#B} {0:#o} {0:#x} {0:+#X} {0: #d}", 0);
   VERIFY( s == "0b0 +0B0 0 0x0 +0X0  0" );
 
-  s = std::format("{0:+#012g} {0:+#014g} {0:+#014g}", 1234.0);
-  VERIFY( s == "+00001234.00 +0000001234.00 +0000001234.00" );
-  s = std::format("{0:+#0{1}g} {0:+#0{2}g} {0:+#0{2}g}", 1234.5, 12, 14);
-  VERIFY( s == "+00001234.50 +0000001234.50 +0000001234.50" );
-
-  s = std::format("{:#.2g}", -0.0);
-  VERIFY( s == "-0.0" );
-
-  // PR libstdc++/108046
-  s = std::format("{0:#.0} {0:#.1} {0:#.0g}", 10.0);
-  VERIFY( s == "1.e+01 1.e+01 1.e+01" );
-
-  // PR libstdc++/113512
-  s = std::format("{:#.3g}", 0.025);
-  VERIFY( s == "0.0250" );
-  s = std::format("{:#07.3g}", 0.02);
-  VERIFY( s == "00.0200" );
+  if (!std::is_constant_evaluated())
+    {
+      s = std::format("{0:+#012g} {0:+#014g} {0:+#014g}", 1234.0);
+      VERIFY( s == "+00001234.00 +0000001234.00 +0000001234.00" );
+      s = std::format("{0:+#0{1}g} {0:+#0{2}g} {0:+#0{2}g}", 1234.5, 12, 14);
+      VERIFY( s == "+00001234.50 +0000001234.50 +0000001234.50" );
+
+      s = std::format("{:#.2g}", -0.0);
+      VERIFY( s == "-0.0" );
+
+      // PR libstdc++/108046
+      s = std::format("{0:#.0} {0:#.1} {0:#.0g}", 10.0);
+      VERIFY( s == "1.e+01 1.e+01 1.e+01" );
+
+      // PR libstdc++/113512
+      s = std::format("{:#.3g}", 0.025);
+      VERIFY( s == "0.0250" );
+      s = std::format("{:#07.3g}", 0.02);
+      VERIFY( s == "00.0200" );
+    }
 }
 
 void
@@ -275,7 +288,7 @@ test_locale()
   std::locale::global(cloc);
 }
 
-void
+CONSTEXPR void
 test_width()
 {
   std::string s;
@@ -317,7 +330,7 @@ test_width()
   }
 }
 
-void
+CONSTEXPR void
 test_char()
 {
   std::string s;
@@ -347,7 +360,7 @@ test_char()
   VERIFY( s == "11110000 11110000 240 360 f0 F0" );
 }
 
-void
+CONSTEXPR void
 test_wchar()
 {
   using namespace std::literals;
@@ -356,24 +369,27 @@ test_wchar()
   s = std::format(L"{}", L'a');
   VERIFY( s == L"a" );
 
-  s = std::format(L"{} {} {} {} {} {}", L'0', 1, 2LL, 3.4, L"five", L"six"s);
-  VERIFY( s == L"0 1 2 3.4 five six" );
-
-  std::locale loc;
-  s = std::format(loc, L"{:L} {:.3s}{:Lc}", true, L"data"sv, '.');
-  VERIFY( s == L"true dat." );
-
-  s = std::format(L"{}", 0.0625);
-  VERIFY( s == L"0.0625" );
-  s = std::format(L"{}", 0.25);
-  VERIFY( s == L"0.25" );
-  s = std::format(L"{:+a} {:A}", 0x1.23p45, -0x1.abcdefp-15);
-  VERIFY( s == L"+1.23p+45 -1.ABCDEFP-15" );
-
-  double inf = std::numeric_limits<double>::infinity();
-  double nan = std::numeric_limits<double>::quiet_NaN();
-  s = std::format(L"{0} {0:F} {1} {1:E}", -inf, -nan);
-  VERIFY( s == L"-inf -INF -nan -NAN" );
+  if (!std::is_constant_evaluated())
+    {
+      s = std::format(L"{} {} {} {} {} {}", L'0', 1, 2LL, 3.4, L"five", L"six"s);
+      VERIFY( s == L"0 1 2 3.4 five six" );
+
+      std::locale loc;
+      s = std::format(loc, L"{:L} {:.3s}{:Lc}", true, L"data"sv, '.');
+      VERIFY( s == L"true dat." );
+
+      s = std::format(L"{}", 0.0625);
+      VERIFY( s == L"0.0625" );
+      s = std::format(L"{}", 0.25);
+      VERIFY( s == L"0.25" );
+      s = std::format(L"{:+a} {:A}", 0x1.23p45, -0x1.abcdefp-15);
+      VERIFY( s == L"+1.23p+45 -1.ABCDEFP-15" );
+
+      double inf = std::numeric_limits<double>::infinity();
+      double nan = std::numeric_limits<double>::quiet_NaN();
+      s = std::format(L"{0} {0:F} {1} {1:E}", -inf, -nan);
+      VERIFY( s == L"-inf -INF -nan -NAN" );
+    }
 
   s = std::format(L"{0:#b} {0:#B} {0:#x} {0:#X}", 99);
   VERIFY( s == L"0b1100011 0B1100011 0x63 0X63" );
@@ -382,20 +398,23 @@ test_wchar()
   s = std::format(L"{:d} {:d}", wchar_t(-1), char(-1));
   VERIFY( s.find('-') == std::wstring::npos );
 
-  auto ws = std::format(L"{:L}", 0.5);
-  VERIFY( ws == L"0.5" );
-  // The default C locale.
-  std::locale cloc = std::locale::classic();
-  // PR libstdc++/119671 use-after-free formatting floating-point to wstring
-  ws = std::format(cloc, L"{:L}", 0.5);
-  VERIFY( ws == L"0.5" );
-  // A locale with no name, but with the same facets as the C locale.
-  std::locale locx(cloc, &std::use_facet<std::ctype<char>>(cloc));
-  ws = std::format(locx, L"{:L}", 0.5);
-  VERIFY( ws == L"0.5" );
+  if (!std::is_constant_evaluated())
+    {
+      auto ws = std::format(L"{:L}", 0.5);
+      VERIFY( ws == L"0.5" );
+      // The default C locale.
+      std::locale cloc = std::locale::classic();
+      // PR libstdc++/119671 use-after-free formatting floating-point to wstring
+      ws = std::format(cloc, L"{:L}", 0.5);
+      VERIFY( ws == L"0.5" );
+      // A locale with no name, but with the same facets as the C locale.
+      std::locale locx(cloc, &std::use_facet<std::ctype<char>>(cloc));
+      ws = std::format(locx, L"{:L}", 0.5);
+      VERIFY( ws == L"0.5" );
+    }
 }
 
-void
+CONSTEXPR void
 test_minmax()
 {
   auto check = []<typename T, typename U = std::make_unsigned_t<T>>(T, U = 0) {
@@ -422,7 +441,7 @@ test_minmax()
 #endif
 }
 
-void
+CONSTEXPR void
 test_p1652r1() // printf corner cases in std::format
 {
   std::string s;
@@ -436,27 +455,33 @@ test_p1652r1() // printf corner cases in std::format
   s = std::format("{:c}", c);
   VERIFY( s == "A" );
 
-  // Problem 3: "-000nan" is not a floating point value
-  double nan = std::numeric_limits<double>::quiet_NaN();
-  try {
-    s = std::vformat("{:0=6}", std::make_format_args(nan));
-    VERIFY( false );
-  } catch (const std::format_error&) {
-  }
-
-  s = std::format("{:06}", nan);
-  VERIFY( s == "   nan" );
+  if (!std::is_constant_evaluated())
+    {
+      // Problem 3: "-000nan" is not a floating point value
+      double nan = std::numeric_limits<double>::quiet_NaN();
+      try {
+	s = std::vformat("{:0=6}", std::make_format_args(nan));
+	VERIFY( false );
+      } catch (const std::format_error&) {
+      }
+  
+      s = std::format("{:06}", nan);
+      VERIFY( s == "   nan" );
+    }
 
   // Problem 4: bool needs a type format specifier
   s = std::format("{:s}", true);
   VERIFY( s == "true" );
 
-  // Problem 5: double does not roundtrip float
-  s = std::format("{}", 3.31f);
-  VERIFY( s == "3.31" );
+  if (!std::is_constant_evaluated())
+    {
+      // Problem 5: double does not roundtrip float
+      s = std::format("{}", 3.31f);
+      VERIFY( s == "3.31" );
+    }
 }
 
-void
+CONSTEXPR void
 test_pointer()
 {
   void* p = nullptr;
@@ -477,28 +502,31 @@ test_pointer()
   s = std::format("{:o<4},{:o>5},{:o^7}", p, pc, nullptr); // fill+align+width
   VERIFY( s == "0x0o,oo0x0,oo0x0oo" );
 
-  pc = p = &s;
-  str_int = std::format("{:#x}", reinterpret_cast<std::uintptr_t>(p));
-  s = std::format("{} {} {}", p, pc, nullptr);
-  VERIFY( s == (str_int + ' ' + str_int + " 0x0") );
-  str_int = std::format("{:#20x}", reinterpret_cast<std::uintptr_t>(p));
-  s = std::format("{:20} {:20p}", p, pc);
-  VERIFY( s == (str_int + ' ' + str_int) );
+  if (!std::is_constant_evaluated())
+    {
+      pc = p = &s;
+      str_int = std::format("{:#x}", reinterpret_cast<std::uintptr_t>(p));
+      s = std::format("{} {} {}", p, pc, nullptr);
+      VERIFY( s == (str_int + ' ' + str_int + " 0x0") );
+      str_int = std::format("{:#20x}", reinterpret_cast<std::uintptr_t>(p));
+      s = std::format("{:20} {:20p}", p, pc);
+      VERIFY( s == (str_int + ' ' + str_int) );
 
 #if __cpp_lib_format >= 202304L
-  // P2510R3 Formatting pointers
-  s = std::format("{:06} {:07P} {:08p}", (void*)0, (const void*)0, nullptr);
-  VERIFY( s == "0x0000 0X00000 0x000000" );
-  str_int = std::format("{:#016x}", reinterpret_cast<std::uintptr_t>(p));
-  s = std::format("{:016} {:016}", p, pc);
-  VERIFY( s == (str_int + ' ' + str_int) );
-  str_int = std::format("{:#016X}", reinterpret_cast<std::uintptr_t>(p));
-  s = std::format("{:016P} {:016P}", p, pc);
-  VERIFY( s == (str_int + ' ' + str_int) );
+      // P2510R3 Formatting pointers
+      s = std::format("{:06} {:07P} {:08p}", (void*)0, (const void*)0, nullptr);
+      VERIFY( s == "0x0000 0X00000 0x000000" );
+      str_int = std::format("{:#016x}", reinterpret_cast<std::uintptr_t>(p));
+      s = std::format("{:016} {:016}", p, pc);
+      VERIFY( s == (str_int + ' ' + str_int) );
+      str_int = std::format("{:#016X}", reinterpret_cast<std::uintptr_t>(p));
+      s = std::format("{:016P} {:016P}", p, pc);
+      VERIFY( s == (str_int + ' ' + str_int) );
 #endif
+    }
 }
 
-void
+CONSTEXPR void
 test_bool()
 {
   std::string s;
@@ -519,7 +547,7 @@ test_bool()
   VERIFY( s == "0 0x1 0X0" );
 }
 
-void
+CONSTEXPR void
 test_unicode()
 {
 #ifdef UNICODE
@@ -579,13 +607,13 @@ test_unicode()
 #endif
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_no_args();
   test_unescaped();
   test_std_examples();
   test_alternate_forms();
-  test_locale();
   test_width();
   test_char();
   test_wchar();
@@ -594,4 +622,21 @@ int main()
   test_pointer();
   test_bool();
   test_unicode();
+
+  if (!std::is_constant_evaluated())
+    {
+      test_infnan();
+      test_locale();
+    }
+
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/functions/format_to.cc b/libstdc++-v3/testsuite/std/format/functions/format_to.cc
index 94e6262bc663..ec6816ddba90 100644
--- a/libstdc++-v3/testsuite/std/format/functions/format_to.cc
+++ b/libstdc++-v3/testsuite/std/format/functions/format_to.cc
@@ -6,22 +6,31 @@
 #include <cstring>
 #include <testsuite_hooks.h>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 struct punct : std::numpunct<char>
 {
   std::string do_grouping() const override { return "\2"; }
 };
 
-void
+CONSTEXPR void
 test()
 {
   char buf[32] = { };
   auto out = std::format_to(buf, "test");
   VERIFY( out == buf+4 );
 
-  std::locale loc({}, new punct);
-  auto out2 = std::format_to(buf, loc, "{:Ld}", 12345);
-  VERIFY( out2 == buf+7 );
-  VERIFY( std::string_view(buf, out2 - buf) == "1,23,45" );
+  if (!std::is_constant_evaluated())
+    {
+      std::locale loc({}, new punct);
+      auto out2 = std::format_to(buf, loc, "{:Ld}", 12345);
+      VERIFY( out2 == buf+7 );
+      VERIFY( std::string_view(buf, out2 - buf) == "1,23,45" );
+    }
 }
 
 struct wpunct : std::numpunct<wchar_t>
@@ -29,17 +38,20 @@ struct wpunct : std::numpunct<wchar_t>
   std::string do_grouping() const override { return "\2"; }
 };
 
-void
+CONSTEXPR void
 test_wchar()
 {
   wchar_t buf[32] = { };
   auto out = std::format_to(buf, L"123 + 456 = {}", 579);
   VERIFY( out == buf+15 );
 
-  std::locale loc({}, new wpunct);
-  auto out2 = std::format_to(buf, loc, L"{:Ld}", 12345);
-  VERIFY( out2 == buf+7 );
-  VERIFY( std::wstring_view(buf, out2 - buf) == L"1,23,45" );
+  if (!std::is_constant_evaluated())
+    {
+      std::locale loc({}, new wpunct);
+      auto out2 = std::format_to(buf, loc, L"{:Ld}", 12345);
+      VERIFY( out2 == buf+7 );
+      VERIFY( std::wstring_view(buf, out2 - buf) == L"1,23,45" );
+    }
 }
 
 template<typename I>
@@ -50,20 +62,20 @@ struct move_only_iterator
   using difference_type = iterator::difference_type;
   using iterator_category = std::output_iterator_tag;
 
-  move_only_iterator(iterator b) : base_(b) { }
+  constexpr move_only_iterator(iterator b) : base_(b) { }
   move_only_iterator(move_only_iterator&&) = default;
   move_only_iterator& operator=(move_only_iterator&&) = default;
 
-  move_only_iterator& operator++() { ++base_; return *this; }
-  move_only_iterator operator++(int) { auto tmp = *this; ++base_; return tmp; }
+  constexpr move_only_iterator& operator++() { ++base_; return *this; }
+  constexpr move_only_iterator operator++(int) { auto tmp = *this; ++base_; return tmp; }
 
-  decltype(auto) operator*() { return *base_; }
+  constexpr decltype(auto) operator*() { return *base_; }
 
 private:
   iterator base_;
 };
 
-void
+CONSTEXPR void
 test_move_only()
 {
   std::string str;
@@ -79,7 +91,7 @@ test_move_only()
   VERIFY( std::wstring_view(vec.data(), vec.size()) == L"format hat!" );
 }
 
-void
+CONSTEXPR void
 test_pr110917()
 {
   // PR libstdc++/110917
@@ -90,10 +102,22 @@ test_pr110917()
   VERIFY( ! std::memcmp(buf, "abc 123", 7) );
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test();
   test_wchar();
   test_move_only();
   test_pr110917();
+
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/functions/size.cc b/libstdc++-v3/testsuite/std/format/functions/size.cc
index 1ece4108d852..16029bd5949e 100644
--- a/libstdc++-v3/testsuite/std/format/functions/size.cc
+++ b/libstdc++-v3/testsuite/std/format/functions/size.cc
@@ -4,7 +4,13 @@
 #include <string>
 #include <testsuite_hooks.h>
 
-void
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
+CONSTEXPR void
 test()
 {
   auto n = std::formatted_size("");
@@ -24,7 +30,7 @@ test()
   VERIFY( n == 5 );
 }
 
-void
+CONSTEXPR void
 test_wchar()
 {
   auto n = std::formatted_size(L"");
@@ -44,8 +50,19 @@ test_wchar()
   VERIFY( n == 5 );
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test();
   test_wchar();
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc b/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
index 1450fbaebc59..49c8246fee2d 100644
--- a/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
+++ b/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
@@ -12,6 +12,12 @@
 #include <unordered_set>
 #include <vector>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 static_assert( std::format_kind<std::vector<int>> == std::range_format::sequence );
 static_assert( std::format_kind<std::deque<int>> == std::range_format::sequence );
 static_assert( std::format_kind<std::list<int>> == std::range_format::sequence );
@@ -64,7 +70,8 @@ struct CustFormat : std::vector<T>
 template<typename T, std::range_format rf>
 constexpr auto std::format_kind<CustFormat<T, rf>> = rf;
 
-void test_override()
+CONSTEXPR bool
+test_override()
 {
   CustFormat<int, std::range_format::disabled> disabledf;
   static_assert( !std::formattable<decltype(disabledf), char> );
@@ -88,8 +95,14 @@ void test_override()
   VERIFY( std::format("{}", debugf) == R"("abcd")" );
   // Support precision as string do
   VERIFY( std::format("{:.3}", debugf) == R"("ab)" );
+
+  return true;
 }
 
+#ifdef __glibcxx_constexpr_format
+static_assert(test_override());
+#endif
+
 int main()
 {
   test_override();
diff --git a/libstdc++-v3/testsuite/std/format/ranges/formatter.cc b/libstdc++-v3/testsuite/std/format/ranges/formatter.cc
index a50c5b1033fb..947e6c3bc609 100644
--- a/libstdc++-v3/testsuite/std/format/ranges/formatter.cc
+++ b/libstdc++-v3/testsuite/std/format/ranges/formatter.cc
@@ -6,6 +6,12 @@
 #include <vector>
 #include <span>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
 #define WIDEN(S) WIDEN_(CharT, S)
 
@@ -32,7 +38,7 @@ struct std::formatter<MyVector<T, Formatter>, CharT>
   { return _formatter.parse(pc);  }
 
   template<typename Out>
-  typename std::basic_format_context<Out, CharT>::iterator
+  CONSTEXPR std::basic_format_context<Out, CharT>::iterator
   format(const MyVector<T, Formatter>& mv,
 	 std::basic_format_context<Out, CharT>& fc) const
   { return _formatter.format(mv, fc); }
@@ -42,7 +48,7 @@ private:
 };
 
 template<typename CharT, template<typename, typename> class Formatter>
-void
+CONSTEXPR void
 test_default()
 {
   MyVector<int, Formatter> vec{1, 2, 3};
@@ -94,7 +100,7 @@ test_default()
 }
 
 template<typename CharT, template<typename, typename> class Formatter>
-void
+CONSTEXPR void
 test_override()
 {
   MyVector<CharT, Formatter> vc{'a', 'b', 'c', 'd'};
@@ -115,7 +121,8 @@ test_override()
 }
 
 template<template<typename, typename> class Formatter>
-void test_outputs()
+CONSTEXPR void
+test_outputs()
 {
   test_default<char, Formatter>();
   test_default<wchar_t, Formatter>();
@@ -123,7 +130,7 @@ void test_outputs()
   test_override<wchar_t, Formatter>();
 }
 
-void
+CONSTEXPR void
 test_nested()
 {
   MyVector<MyVector<int>> v
@@ -152,7 +159,8 @@ struct std::formatter<MyFlatMap, CharT>
   : std::range_formatter<MyFlatMap::reference>
 {};
 
-void test_const_ref_type_mismatch()
+CONSTEXPR void
+test_const_ref_type_mismatch()
 {
   MyFlatMap m{{1, 11}, {2, 22}};
   std::string res = std::format("{:m}", m);
@@ -163,13 +171,15 @@ template<typename T, typename CharT>
 using VectorFormatter = std::formatter<std::vector<T>, CharT>;
 
 template<template<typename> typename Range>
-void test_nonblocking()
+CONSTEXPR void
+test_nonblocking()
 {
   static_assert(!std::enable_nonlocking_formatter_optimization<
 		  Range<int>>);
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_outputs<std::range_formatter>();
   test_outputs<VectorFormatter>();
@@ -179,4 +189,15 @@ int main()
   test_nonblocking<std::span>();
   test_nonblocking<std::vector>();
   test_nonblocking<MyVector>();
+
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/ranges/sequence.cc b/libstdc++-v3/testsuite/std/format/ranges/sequence.cc
index 7fb65f9c551e..cba53b462709 100644
--- a/libstdc++-v3/testsuite/std/format/ranges/sequence.cc
+++ b/libstdc++-v3/testsuite/std/format/ranges/sequence.cc
@@ -1,5 +1,5 @@
 // { dg-do run { target c++23 } }
-// { dg-options "-fexec-charset=UTF-8" }
+// { dg-options "-fexec-charset=UTF-8 -fconstexpr-ops-limit=5000000000" }
 // { dg-timeout-factor 2 }
 
 #include <array>
@@ -12,6 +12,12 @@
 #include <testsuite_iterators.h>
 #include <vector>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 struct NotFormattable
 {};
 
@@ -19,7 +25,7 @@ static_assert(!std::formattable<std::vector<NotFormattable>, char>);
 static_assert(!std::formattable<std::span<NotFormattable>, wchar_t>);
 
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const char* str, Args&&... args)
 {
   try {
@@ -31,7 +37,7 @@ is_format_string_for(const char* str, Args&&... args)
 }
 
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const wchar_t* str, Args&&... args)
 {
   try {
@@ -43,7 +49,8 @@ is_format_string_for(const wchar_t* str, Args&&... args)
 }
 
 template<typename Rg, typename CharT>
-bool is_range_formatter_spec_for(CharT const* spec, Rg&& rg)
+CONSTEXPR bool
+is_range_formatter_spec_for(CharT const* spec, Rg&& rg)
 {
   using V = std::remove_cvref_t<std::ranges::range_reference_t<Rg>>;
   std::range_formatter<V, CharT> fmt;
@@ -56,7 +63,7 @@ bool is_range_formatter_spec_for(CharT const* spec, Rg&& rg)
   }
 }
 
-void
+CONSTEXPR void
 test_format_string()
 {
   // invalid format spec 'p'
@@ -79,7 +86,8 @@ test_format_string()
 #define WIDEN(S) WIDEN_(CharT, S)
 
 template<typename CharT, typename Range, typename Storage>
-void test_output()
+CONSTEXPR void
+test_output()
 {
   using Sv = std::basic_string_view<CharT>;
   using T = std::ranges::range_value_t<Range>;
@@ -153,25 +161,30 @@ void test_output()
 }
 
 template<typename Cont>
-void test_output_cont()
+CONSTEXPR void
+test_output_cont()
 {
   test_output<char, Cont&, Cont>();
   test_output<wchar_t, Cont const&, Cont>();
 }
 
 template<typename View>
-void test_output_view()
+CONSTEXPR void
+test_output_view()
 {
   test_output<char, View, int[3]>();
   test_output<wchar_t, View, int[3]>();
 }
 
-void
+CONSTEXPR void
 test_outputs()
 {
   using namespace __gnu_test;
   test_output_cont<std::vector<int>>();
-  test_output_cont<std::list<int>>();
+
+  if (!std::is_constant_evaluated())
+    test_output_cont<std::list<int>>();
+
   test_output_cont<std::array<int, 3>>();
 
   test_output_view<std::span<int>>();
@@ -185,7 +198,7 @@ test_outputs()
   test_output_view<test_forward_range<const int>>();
 }
 
-void
+CONSTEXPR void
 test_nested()
 {
   std::vector<std::vector<int>> v
@@ -201,7 +214,8 @@ test_nested()
   VERIFY( res == "+[01, 02, 11, 12]+" );
 }
 
-bool strip_quote(std::string_view& v)
+CONSTEXPR bool
+strip_quote(std::string_view& v)
 {
   if (!v.starts_with('"'))
     return false;
@@ -209,7 +223,8 @@ bool strip_quote(std::string_view& v)
   return true;
 }
 
-bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
+CONSTEXPR bool
+strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
 {
   if (quoted && !strip_quote(v))
     return false;
@@ -221,7 +236,8 @@ bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted =
   return true;
 }
 
-bool strip_squares(std::string_view& v)
+CONSTEXPR bool
+strip_squares(std::string_view& v)
 {
   if (!v.starts_with('[') || !v.ends_with(']'))
     return false;
@@ -230,7 +246,8 @@ bool strip_squares(std::string_view& v)
   return true;
 }
 
-bool strip_prefix(std::string_view& v, size_t n, char c)
+CONSTEXPR bool
+strip_prefix(std::string_view& v, size_t n, char c)
 {
   size_t pos = v.find_first_not_of(c);
   if (pos == std::string_view::npos)
@@ -241,7 +258,8 @@ bool strip_prefix(std::string_view& v, size_t n, char c)
   return true;
 }
 
-void test_padding()
+CONSTEXPR void
+test_padding()
 {
   std::string res;
   std::string_view resv;
@@ -323,10 +341,22 @@ void test_padding()
   VERIFY( check_elems(resv, false) );
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_format_string();
   test_outputs();
   test_nested();
   test_padding();
+  
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/string.cc b/libstdc++-v3/testsuite/std/format/string.cc
index ee987a15ec3a..004690ad8dad 100644
--- a/libstdc++-v3/testsuite/std/format/string.cc
+++ b/libstdc++-v3/testsuite/std/format/string.cc
@@ -1,10 +1,17 @@
 // { dg-do run { target c++20 } }
+// { dg-options "-fconstexpr-ops-limit=100000000" }
 
 #include <format>
 #include <testsuite_hooks.h>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const char* str, Args&&... args)
 {
   try {
@@ -16,7 +23,7 @@ is_format_string_for(const char* str, Args&&... args)
 }
 
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const wchar_t* str, Args&&... args)
 {
   try {
@@ -27,7 +34,7 @@ is_format_string_for(const wchar_t* str, Args&&... args)
   }
 }
 
-void
+CONSTEXPR void
 test_no_args()
 {
   VERIFY( is_format_string_for("") );
@@ -42,7 +49,7 @@ test_no_args()
   VERIFY( ! is_format_string_for("{{{{{") );
 }
 
-void
+CONSTEXPR void
 test_indexing()
 {
   VERIFY( is_format_string_for("{} to {}", "a", "b") );   // automatic indexing
@@ -68,7 +75,7 @@ constexpr bool escaped_strings_supported = true;
 constexpr bool escaped_strings_supported = false;
 #endif
 
-void
+CONSTEXPR void
 test_format_spec()
 {
   VERIFY( is_format_string_for("{:}", 1) );
@@ -78,9 +85,14 @@ test_format_spec()
   VERIFY( is_format_string_for("{0:} {0:c}", 'c') );
   VERIFY( is_format_string_for("{0:p} {0:}", nullptr) );
   VERIFY( is_format_string_for("{:d} {:+d}", true, true) );
-  VERIFY( is_format_string_for("{:0<-#03Ld}", 1) );
-  VERIFY( is_format_string_for("{1:0<-#03.4Lf}", 1, 2.3) );
-  VERIFY( is_format_string_for("{1:3.3f}", 1, 2.3) );
+
+  if (!std::is_constant_evaluated())
+    {
+      VERIFY( is_format_string_for("{:0<-#03Ld}", 1) );
+      VERIFY( is_format_string_for("{1:0<-#03.4Lf}", 1, 2.3) );
+      VERIFY( is_format_string_for("{1:3.3f}", 1, 2.3) );
+    }
+  
   VERIFY( is_format_string_for("{:#d}", 'c') );
   VERIFY( is_format_string_for("{:#d}", true) );
   VERIFY( is_format_string_for("{0:s} {0:?}", "str") == escaped_strings_supported );
@@ -130,13 +142,16 @@ test_format_spec()
   VERIFY( ! is_format_string_for("{:3.3p}", nullptr) );
 
   // Dynamic precision arg must be a standard integer type.
-  VERIFY( ! is_format_string_for("{:.{}f}", 1.0, 1.5) );
-  VERIFY( ! is_format_string_for("{:.{}f}", 1.0, true) );
-  VERIFY( ! is_format_string_for("{:.{}f}", 1.0, "str") );
-  VERIFY( ! is_format_string_for("{:.{}f}", 1.0, nullptr) );
+  if (!std::is_constant_evaluated())
+    {
+      VERIFY( ! is_format_string_for("{:.{}f}", 1.0, 1.5) );
+      VERIFY( ! is_format_string_for("{:.{}f}", 1.0, true) );
+      VERIFY( ! is_format_string_for("{:.{}f}", 1.0, "str") );
+      VERIFY( ! is_format_string_for("{:.{}f}", 1.0, nullptr) );
 #ifdef __SIZEOF_INT128__
-  VERIFY( ! is_format_string_for("{:{}f}", 1.0, static_cast<unsigned __int128>(1)) );
+      VERIFY( ! is_format_string_for("{:{}f}", 1.0, static_cast<unsigned __int128>(1)) );
 #endif
+    }
 
   // Invalid presentation types for integers.
   VERIFY( ! is_format_string_for("{:f}", 1) );
@@ -164,7 +179,7 @@ test_format_spec()
   VERIFY( ! is_format_string_for(L"{:9999999}", 1) );
 }
 
-void
+CONSTEXPR void
 test_pr110862()
 {
   try {
@@ -178,7 +193,7 @@ test_pr110862()
   }
 }
 
-void
+CONSTEXPR void
 test_pr110974()
 {
   try {
@@ -197,11 +212,23 @@ test_pr110974()
   }
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_no_args();
   test_indexing();
   test_format_spec();
   test_pr110862();
   test_pr110974();
+
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/format/tuple.cc b/libstdc++-v3/testsuite/std/format/tuple.cc
index eace82730f0a..dc7b860a9021 100644
--- a/libstdc++-v3/testsuite/std/format/tuple.cc
+++ b/libstdc++-v3/testsuite/std/format/tuple.cc
@@ -1,5 +1,5 @@
 // { dg-do run { target c++23 } }
-// { dg-options "-fexec-charset=UTF-8" }
+// { dg-options "-fexec-charset=UTF-8 -fconstexpr-ops-limit=500000000" }
 // { dg-timeout-factor 2 }
 
 #include <format>
@@ -8,6 +8,12 @@
 #include <tuple>
 #include <utility>
 
+#ifdef __glibcxx_constexpr_format
+# define CONSTEXPR constexpr
+#else
+# define CONSTEXPR
+#endif
+
 struct NotFormattable
 {};
 
@@ -15,7 +21,7 @@ static_assert( !std::formattable<std::pair<int, NotFormattable>, char> );
 static_assert( !std::formattable<std::tuple<int, NotFormattable, int>, wchar_t> );
 
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const char* str, Args&&... args)
 {
   try {
@@ -27,7 +33,7 @@ is_format_string_for(const char* str, Args&&... args)
 }
 
 template<typename... Args>
-bool
+CONSTEXPR bool
 is_format_string_for(const wchar_t* str, Args&&... args)
 {
   try {
@@ -41,7 +47,7 @@ is_format_string_for(const wchar_t* str, Args&&... args)
 #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
 #define WIDEN(S) WIDEN_(CharT, S)
 
-void
+CONSTEXPR void
 test_format_string()
 {
   // invalid format stringss
@@ -123,7 +129,8 @@ void test_multi()
 }
 
 template<typename CharT, typename Tuple>
-void test_empty()
+CONSTEXPR void
+test_empty()
 {
   std::basic_string<CharT> res;
 
@@ -142,7 +149,8 @@ void test_empty()
 }
 
 template<typename CharT, typename Pair>
-void test_pair()
+CONSTEXPR void
+test_pair()
 {
   using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pair>>;
   using St = std::remove_cvref_t<std::tuple_element_t<1, Pair>>;
@@ -167,7 +175,8 @@ void test_pair()
 }
 
 template<typename CharT, template<typename, typename> class PairT>
-void test_pair_e()
+CONSTEXPR void
+test_pair_e()
 {
   test_pair<CharT, PairT<int, std::basic_string<CharT>>>();
   test_pair<CharT, PairT<int, const CharT*>>();
@@ -196,7 +205,7 @@ struct std::formatter<MyPair<Pair>, CharT>
   { return _formatter.parse(pc);  }
 
   template<typename Out>
-  typename std::basic_format_context<Out, CharT>::iterator
+  CONSTEXPR typename std::basic_format_context<Out, CharT>::iterator
   format(const MyPair<Pair>& mp,
 	 std::basic_format_context<Out, CharT>& fc) const
   { return _formatter.format(mp, fc); }
@@ -206,7 +215,8 @@ private:
 };
 
 template<typename CharT, template<typename, typename> class PairT>
-void test_custom()
+CONSTEXPR void
+test_custom()
 {
   std::basic_string<CharT> res;
   MyPair<PairT<int, const CharT*>> c1(1, WIDEN("abc"));
@@ -228,9 +238,12 @@ void test_custom()
 }
 
 template<typename CharT>
-void test_outputs()
+CONSTEXPR void
+test_outputs()
 {
-  test_multi<CharT>();
+  if (!std::is_constant_evaluated())
+    test_multi<CharT>();
+
   test_empty<CharT, std::tuple<>>();
   test_pair_e<CharT, std::pair>();
   test_pair_e<CharT, std::tuple>();
@@ -238,7 +251,8 @@ void test_outputs()
   test_custom<CharT, std::tuple>();
 }
 
-void test_nested()
+CONSTEXPR void
+test_nested()
 {
   std::string res;
   std::tuple<std::tuple<>, std::pair<int, std::string>> tt{{}, {1, "abc"}};
@@ -251,7 +265,8 @@ void test_nested()
   VERIFY( res == R"((): (1, "abc"))" );
 }
 
-bool strip_quote(std::string_view& v)
+CONSTEXPR bool
+strip_quote(std::string_view& v)
 {
   if (!v.starts_with('"'))
     return false;
@@ -259,7 +274,8 @@ bool strip_quote(std::string_view& v)
   return true;
 }
 
-bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
+CONSTEXPR bool
+strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
 {
   if (quoted && !strip_quote(v))
     return false;
@@ -271,7 +287,8 @@ bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted =
   return true;
 }
 
-bool strip_parens(std::string_view& v)
+CONSTEXPR bool
+strip_parens(std::string_view& v)
 {
   if (!v.starts_with('(') || !v.ends_with(')'))
     return false;
@@ -280,7 +297,8 @@ bool strip_parens(std::string_view& v)
   return true;
 }
 
-bool strip_prefix(std::string_view& v, size_t n, char c)
+CONSTEXPR bool
+strip_prefix(std::string_view& v, size_t n, char c)
 {
   size_t pos = v.find_first_not_of(c);
   if (pos == std::string_view::npos)
@@ -291,7 +309,8 @@ bool strip_prefix(std::string_view& v, size_t n, char c)
   return true;
 }
 
-void test_padding()
+CONSTEXPR void
+test_padding()
 {
   std::string res;
   std::string_view resv;
@@ -351,13 +370,14 @@ struct std::formatter<Custom, CharT>
   { return pc.begin();  }
 
   template<typename Out>
-  typename std::basic_format_context<Out, CharT>::iterator
+  CONSTEXPR typename std::basic_format_context<Out, CharT>::iterator
   format(Custom, const std::basic_format_context<Out, CharT>& fc) const
   { return fc.out(); }
 };
 
 template<template<typename...> typename Tuple>
-void test_nonblocking()
+CONSTEXPR void
+test_nonblocking()
 {
   static_assert(std::enable_nonlocking_formatter_optimization<
 		  Tuple<int, float>>);
@@ -374,7 +394,8 @@ void test_nonblocking()
 		  Tuple<Custom&, float&>>);
 }
 
-int main()
+CONSTEXPR bool
+test_all()
 {
   test_format_string();
   test_outputs<char>();
@@ -384,4 +405,15 @@ int main()
 
   test_nonblocking<std::pair>();
   test_nonblocking<std::tuple>();
+
+  return true;
+}
+
+#ifdef __glibcxx_constexpr_format
+static_assert(test_all());
+#endif
+
+int main()
+{
+  test_all();
 }
diff --git a/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc b/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
index cb8f916f2166..183dca8310fd 100644
--- a/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
+++ b/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
@@ -161,4 +161,5 @@ auto si7 = std::format("{:%Q}", sys_info()); // { dg-error "call to consteval fu
 auto si8 = std::format("{:%Z}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } }
 #endif
 
-// { dg-error "call to non-'constexpr' function" "" { target *-*-* } 0 }
+// { dg-error "call to non-'constexpr' function" "" { target { c++23_down || { ! cxx11_abi } } } 0 }
+// { dg-error "'std::terminate' called after throwing an exception" "" { target { { ! c++23_down } && cxx11_abi } } 0 }

From tkaminsk@gcc.gnu.org  Tue Jun  2 07:40:15 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  2 Jun 2026 07:40:15 +0000 (GMT)
Subject: [gcc r17-1163] libstdc++: Support limited escaped formatting for
 non-Unicode literals.
Message-ID: <20260602074015.C7FDB4BA2E2D@sourceware.org>

https://gcc.gnu.org/g:73cac4e628d408a267fed38521e8323309bdccb4

commit r17-1163-g73cac4e628d408a267fed38521e8323309bdccb4
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri May 15 11:07:03 2026 +0200

    libstdc++: Support limited escaped formatting for non-Unicode literals.
    
    This restores limited support debug (escaped) output for string when literal
    encoding is non-Unicode, by allowing strings that contains only printable
    ASCII characters and standard defined escapes (expanded with nul (\0)).
    This covers common use-cases, while still preserving flexibility to provide
    proper handling for escaping of encoding-specific characters.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/format                    | 23 +++++++++++++++++++++-
 libstdc++-v3/testsuite/std/format/debug.cc         | 18 +++++++++++++++--
 .../testsuite/std/format/debug_nonunicode_neg.cc   | 19 ++++++++++++++++++
 3 files changed, 57 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index fe0f611b8339..4a517b70889c 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -1116,12 +1116,33 @@ namespace __format
     }
 
   template<typename _CharT, typename _Out>
-    _Out
+    _GLIBCXX_CONSTEXPR_FORMAT _Out
     __write_escaped_ascii(_Out __out,
 			  basic_string_view<_CharT> __str,
 			  _Term_char __term)
     {
       using _Str_view = basic_string_view<_CharT>;
+      if consteval {
+	// As set of the escaped characters depends on the encoding, for
+	// compile time allow only printable ASCII and standard escapes.
+	constexpr _Str_view __supported(_GLIBCXX_WIDEN(
+	    "ABCDEFGHIJKLMNOPQRSTUWXYZ"
+	    "abdeefghijklmnopqrstuwzyz"
+	    " !#$%&'()*+-./:;<=>?[]^_{|}~"
+	    "0123456789" "\t\n\r\\\"\'\0"
+	  ), 95);
+	if (__str.find_first_not_of(__supported) != _Str_view::npos)
+#if __has_builtin(__builtin_constexpr_diag)
+	  __builtin_constexpr_diag (2, "",
+				    "for non-Unicode literal encodings, only"
+				    " printable ASCII characters and standard"
+				    " escape sequencess can be escaped in constant"
+				    " expressions");
+#else
+	  __asm__("");
+#endif
+      }
+
       auto __first = __str.begin();
       auto const __last = __str.end();
       while (__first != __last)
diff --git a/libstdc++-v3/testsuite/std/format/debug.cc b/libstdc++-v3/testsuite/std/format/debug.cc
index 01bb9074ba7a..959822b21828 100644
--- a/libstdc++-v3/testsuite/std/format/debug.cc
+++ b/libstdc++-v3/testsuite/std/format/debug.cc
@@ -75,6 +75,13 @@ test_basic_escapes()
   VERIFY( res == WIDEN(R"("'")") );
   res = fdebug(apos[0]);
   VERIFY( res == WIDEN(R"('\'')") );
+
+  // This is not standard escape, but still supported at compile time.
+  const std::basic_string<CharT> null(WIDEN("\0"), 1);
+  res = fdebug(null);
+  VERIFY( res == WIDEN(R"("\u{0}")") );
+  res = fdebug(null[0]);
+  VERIFY( res == WIDEN(R"('\u{0}')") );
 }
 
 template<typename CharT>
@@ -831,6 +838,14 @@ test_all()
 {
   test_basic_escapes<char>();
   test_basic_escapes<wchar_t>();
+
+#ifndef UNICODE_ENC
+  // For non-unicode literal encoding debug output only supports
+  // printable ASCII and standard escapes at compile time
+  if (std::is_constant_evaluated())
+    return true;
+#endif
+
   test_ascii_escapes<char>();
   test_ascii_escapes<wchar_t>();
   test_extended_ascii<char>();
@@ -857,8 +872,7 @@ test_all()
   return true;
 }
 
-#if defined(__glibcxx_constexpr_format) && defined(UNICODE_ENC)
-// Deboug ouput is supported only for unicode literal encoding
+#ifdef __glibcxx_constexpr_format
 static_assert(test_all());
 #endif
 
diff --git a/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc b/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc
new file mode 100644
index 000000000000..cc2b11ecfd1e
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc
@@ -0,0 +1,19 @@
+// { dg-options "-fexec-charset=ISO-8859-1" }
+// { dg-do compile { target c++26 } }
+// { dg-require-effective-target cxx11_abi }
+// { dg-require-iconv "ISO-8859-1" }
+
+#include <format>
+
+constexpr bool
+test_format(std::string_view str)
+{
+  (void)std::format("{:?}", str);
+  return true;
+}
+
+static_assert(test_format("\x10")); // { dg-error "in 'constexpr' expansion of" }
+static_assert(test_format("???")); // { dg-error "in 'constexpr' expansion of" }
+
+// { dg-prune-output "for non-Unicode literal encodings, only printable ASCII characters and standard" }
+

From redi@gcc.gnu.org  Tue Jun  2 14:45:48 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue,  2 Jun 2026 14:45:48 +0000 (GMT)
Subject: [gcc r17-1229] libstdc++: Fix comment typo in version.tpl
Message-ID: <20260602144548.52D3E4BA2E2D@sourceware.org>

https://gcc.gnu.org/g:7b1f4645ea9418e4e98f15224e4c94045c5412b9

commit r17-1229-g7b1f4645ea9418e4e98f15224e4c94045c5412b9
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 2 15:38:05 2026 +0100

    libstdc++: Fix comment typo in version.tpl
    
    This typo was fixed by r17-1036-gb1263bca56ea82 but only in the
    generated version.h header. This fixes the template that it's generated
    from.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/version.tpl: Fix typo.

Diff:
---
 libstdc++-v3/include/bits/version.tpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/version.tpl b/libstdc++-v3/include/bits/version.tpl
index f65eb0908404..75a46a71d000 100644
--- a/libstdc++-v3/include/bits/version.tpl
+++ b/libstdc++-v3/include/bits/version.tpl
@@ -41,7 +41,7 @@ h
 //
 // This will generate the FTMs you named, and let you use them in your code as
 // if it was user code.  All macros are also exposed under __glibcxx_NAME even
-// if unwanted, to permit bits and other FTMs to depend on them for condtional
+// if unwanted, to permit bits and other FTMs to depend on them for conditional
 // computation without exposing extra FTMs to user code.
 
 #ifdef _GLIBCXX_SYSHDR

From tkaminsk@gcc.gnu.org  Tue Jun  2 14:59:18 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue,  2 Jun 2026 14:59:18 +0000 (GMT)
Subject: [gcc r17-1230] libstdc++: Expand supported operations for
 __rand_uint128.
Message-ID: <20260602145918.7D4DF4BA2E06@sourceware.org>

https://gcc.gnu.org/g:80fa93f2b4d46619c9410314915ef964b0690a1e

commit r17-1230-g80fa93f2b4d46619c9410314915ef964b0690a1e
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Jan 15 14:45:53 2026 +0100

    libstdc++: Expand supported operations for __rand_uint128.
    
    This patch adds following operations to __rand_uint128:
    * explicit operator bool
    * operator- with __rand_uint128
    * operator* with uint64_t for _M_hi != 0
    * operator/ with uint64_t
    The division is currently stubbed by converting to __rand_uint128.
    
    When __rand_uint128 is used, the platform does not provide native 128bit
    integer types, thus random number generators will return at most 64bit
    integer. In consequence, __generate_cannonical_any will use these
    overloads when multiplying by result of generator invocation.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/random.h | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h
index a0592a007634..fd7b8b4fb202 100644
--- a/libstdc++-v3/include/bits/random.h
+++ b/libstdc++-v3/include/bits/random.h
@@ -90,6 +90,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       __rand_uint128(const __rand_uint128&) = default;
       __rand_uint128& operator=(const __rand_uint128&) = default;
 
+      constexpr explicit
+      operator bool() const noexcept
+      { return _M_lo || _M_hi; }
+
       _GLIBCXX14_CONSTEXPR type&
       operator=(uint64_t __x) noexcept
       { return *this = type(__x); }
@@ -134,6 +138,13 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       operator+(type __l, uint64_t __r) noexcept
       { return __l += type(__r); }
 
+      _GLIBCXX14_CONSTEXPR type&
+      operator-=(const type& __r) noexcept
+      {
+	_M_hi -= __r._M_hi + __builtin_sub_overflow(_M_lo, __r._M_lo, &_M_lo);
+	return *this;
+      }
+
       // Subtraction with 64-bit operand
       _GLIBCXX14_CONSTEXPR type&
       operator-=(uint64_t __r) noexcept
@@ -142,6 +153,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	return *this;
       }
 
+      friend _GLIBCXX14_CONSTEXPR type
+      operator-(type __l, const type& __r) noexcept
+      { return __l -= __r; }
+
       friend _GLIBCXX14_CONSTEXPR type
       operator-(type __l, uint64_t __r) noexcept
       { return __l -= __r; }
@@ -172,7 +187,6 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       }
 
       // Multiplication with a 64-bit operand is simpler.
-      // pre: _M_hi == 0
       _GLIBCXX14_CONSTEXPR type&
       operator*=(uint64_t __x) noexcept
       {
@@ -190,7 +204,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	// These bits are the low half of _M_hi and the high half of _M_lo.
 	uint64_t __mid
 	  = (__l0x1 & __mask) + (__l1x0 & __mask) + (__l1x1 >> 32);
-	_M_hi = __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32);
+
+	_M_hi *= __x;
+	_M_hi += __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32);
 	_M_lo = (__mid << 32) + (__l1x1 & __mask);
 	return *this;
       }
@@ -296,6 +312,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	return *this;
       }
 
+      _GLIBCXX14_CONSTEXPR type&
+      operator/=(uint64_t __r) noexcept
+      { return *this /= type(__r); }
+
       // Currently only supported for 64-bit operands.
       _GLIBCXX14_CONSTEXPR type&
       operator%=(uint64_t __m) noexcept
@@ -345,6 +365,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       operator/(type __l, const type& __r) noexcept
       { return __l /= __r; }
 
+      friend _GLIBCXX14_CONSTEXPR type
+      operator/(type __l, uint64_t __r) noexcept
+      { return __l /= __r; }
+
       friend _GLIBCXX14_CONSTEXPR type
       operator%(type __l, uint64_t __m) noexcept
       { return __l %= __m; }

From yuao@gcc.gnu.org  Tue Jun  2 16:35:52 2026
From: yuao@gcc.gnu.org (Yuao Ma)
Date: Tue,  2 Jun 2026 16:35:52 +0000 (GMT)
Subject: [gcc r17-1233] libstdc++: constexpr priority_queue
Message-ID: <20260602163552.156064BA2E2A@sourceware.org>

https://gcc.gnu.org/g:5a6ae2b286a73048bcd28e7a2d9e8ca4bee00a98

commit r17-1233-g5a6ae2b286a73048bcd28e7a2d9e8ca4bee00a98
Author: Yuao Ma <c8ef@outlook.com>
Date:   Tue Jun 2 23:18:26 2026 +0800

    libstdc++: constexpr priority_queue
    
    This patch makes priority_queue constexpr as part of P3372R3.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_queue.h: Add constexpr.
            * testsuite/23_containers/priority_queue/constexpr.cc: New test.

Diff:
---
 libstdc++-v3/include/bits/stl_queue.h              | 35 ++++++++++++++++--
 .../23_containers/priority_queue/constexpr.cc      | 43 ++++++++++++++++++++++
 2 files changed, 75 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index 5dc846e13e16..d9edc4c838de 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -607,14 +607,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Seq = _Sequence, typename _Requires = typename
 	       enable_if<__and_<is_default_constructible<_Compare>,
 				is_default_constructible<_Seq>>::value>::type>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue()
 	: c(), comp() { }
 
+      _GLIBCXX26_CONSTEXPR
       explicit
       priority_queue(const _Compare& __x, const _Sequence& __s)
       : c(__s), comp(__x)
       { std::make_heap(c.begin(), c.end(), comp); }
 
+      _GLIBCXX26_CONSTEXPR
       explicit
       priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
       : c(std::move(__s)), comp(__x)
@@ -623,12 +626,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       priority_queue(const priority_queue&) = default;
       priority_queue& operator=(const priority_queue&) = default;
 
+      _GLIBCXX26_CONSTEXPR
       priority_queue(priority_queue&& __q)
       noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
 		      is_nothrow_move_constructible<_Compare>>::value)
       : c(std::move(__q.c)), comp(std::move(__q.comp))
       { __q.c.clear(); }
 
+      _GLIBCXX26_CONSTEXPR
       priority_queue&
       operator=(priority_queue&& __q)
       noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
@@ -641,32 +646,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	explicit
 	priority_queue(const _Alloc& __a)
 	: c(__a), comp() { }
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(const _Compare& __x, const _Alloc& __a)
 	: c(__a), comp(__x) { }
 
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 2537. Constructors [...] taking allocators should call make_heap
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(const _Compare& __x, const _Sequence& __c,
 		       const _Alloc& __a)
 	: c(__c, __a), comp(__x)
 	{ std::make_heap(c.begin(), c.end(), comp); }
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
 	: c(std::move(__c), __a), comp(__x)
 	{ std::make_heap(c.begin(), c.end(), comp); }
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(const priority_queue& __q, const _Alloc& __a)
 	: c(__q.c, __a), comp(__q.comp) { }
 
       template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(priority_queue&& __q, const _Alloc& __a)
 	: c(std::move(__q.c), __a), comp(std::move(__q.comp))
 	{ __q.c.clear(); }
@@ -704,6 +715,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // 3529. priority_queue(first, last) should construct c with (first, last)
       template<typename _InputIterator,
 	       typename = std::_RequireInputIter<_InputIterator>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x = _Compare())
 	: c(__first, __last), comp(__x)
@@ -713,6 +725,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // 3522. Missing requirement on InputIterator template parameter
       template<typename _InputIterator,
 	       typename = std::_RequireInputIter<_InputIterator>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x, const _Sequence& __s)
 	: c(__s), comp(__x)
@@ -724,6 +737,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       template<typename _InputIterator,
 	       typename = std::_RequireInputIter<_InputIterator>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x, _Sequence&& __s)
 	: c(std::move(__s)), comp(__x)
@@ -741,6 +755,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _InputIterator, typename _Alloc,
 	       typename = std::_RequireInputIter<_InputIterator>,
 	       typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Alloc& __alloc)
 	: c(__first, __last, __alloc), comp()
@@ -749,6 +764,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _InputIterator, typename _Alloc,
 	       typename = std::_RequireInputIter<_InputIterator>,
 	       typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x, const _Alloc& __alloc)
 	: c(__first, __last, __alloc), comp(__x)
@@ -757,6 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _InputIterator, typename _Alloc,
 	       typename = std::_RequireInputIter<_InputIterator>,
 	       typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x, const _Sequence& __s,
 		       const _Alloc& __alloc)
@@ -769,6 +786,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       template<typename _InputIterator, typename _Alloc,
 	       typename _Requires = _Uses<_Alloc>>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(_InputIterator __first, _InputIterator __last,
 		       const _Compare& __x, _Sequence&& __s,
 		       const _Alloc& __alloc)
@@ -788,18 +806,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        * @{
        */
       template<__detail::__container_compatible_range<_Tp> _Rg>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(from_range_t, _Rg&& __rg,
 		       const _Compare& __x = _Compare())
 	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg))), comp(__x)
 	{ std::make_heap(c.begin(), c.end(), comp); }
 
       template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(from_range_t, _Rg&& __rg, const _Compare& __x,
 		       const _Alloc& __a)
 	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp(__x)
 	{ std::make_heap(c.begin(), c.end(), comp); }
 
       template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+	_GLIBCXX26_CONSTEXPR
 	priority_queue(from_range_t, _Rg&& __rg, const _Alloc& __a)
 	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp()
 	{ std::make_heap(c.begin(), c.end(), comp); }
@@ -809,12 +830,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /**
        *  Returns true if the %queue is empty.
        */
-      _GLIBCXX_NODISCARD bool
+      _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
+      bool
       empty() const
       { return c.empty(); }
 
       /**  Returns the number of elements in the %queue.  */
-      _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
       size_type
       size() const
       { return c.size(); }
@@ -823,7 +845,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  Returns a read-only (constant) reference to the data at the first
        *  element of the %queue.
        */
-      _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
       const_reference
       top() const
       {
@@ -839,6 +861,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  The time complexity of the operation depends on the underlying
        *  sequence.
        */
+      _GLIBCXX26_CONSTEXPR
       void
       push(const value_type& __x)
       {
@@ -847,6 +870,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
 #if __cplusplus >= 201103L
+      _GLIBCXX26_CONSTEXPR
       void
       push(value_type&& __x)
       {
@@ -855,6 +879,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
       template<typename... _Args>
+	_GLIBCXX26_CONSTEXPR
 	void
 	emplace(_Args&&... __args)
 	{
@@ -865,6 +890,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __glibcxx_containers_ranges // C++ >= 23
       template<__detail::__container_compatible_range<_Tp> _Rg>
+	_GLIBCXX26_CONSTEXPR
 	void
 	push_range(_Rg&& __rg)
 	{
@@ -887,6 +913,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  data is needed, it should be retrieved before pop() is
        *  called.
        */
+      _GLIBCXX26_CONSTEXPR
       void
       pop()
       {
@@ -896,6 +923,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       }
 
 #if __cplusplus >= 201103L
+      _GLIBCXX26_CONSTEXPR
       void
       swap(priority_queue& __pq)
       noexcept(__and_<
@@ -964,6 +992,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __cplusplus >= 201103L
   template<typename _Tp, typename _Sequence, typename _Compare>
+    _GLIBCXX26_CONSTEXPR
     inline
 #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
     // Constrained free swap overload, see p0185r1
diff --git a/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc b/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
new file mode 100644
index 000000000000..fe85617416d0
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
@@ -0,0 +1,43 @@
+// { dg-do compile { target c++26 } }
+#include <queue>
+
+constexpr bool test_constexpr_priority_queue() {
+  std::priority_queue<int> pq;
+  if (!pq.empty()) return false;
+  if (pq.size() != 0) return false;
+
+  pq.push(10);
+  if (pq.empty()) return false;
+  if (pq.size() != 1) return false;
+  if (pq.top() != 10) return false;
+
+  pq.emplace(30);
+  pq.emplace(20);
+  if (pq.size() != 3) return false;
+  if (pq.top() != 30) return false;
+
+  pq.pop();
+  if (pq.size() != 2) return false;
+  if (pq.top() != 20) return false;
+
+  std::priority_queue<int> pq2;
+  pq2 = pq;
+  if (pq2.size() != 2) return false;
+  if (pq2.top() != 20) return false;
+
+  std::priority_queue<int> pq3;
+  pq3.push(100);
+  pq.swap(pq3);
+  if (pq.size() != 1 || pq.top() != 100) return false;
+  if (pq3.size() != 2 || pq3.top() != 20) return false;
+
+  int arr[] = {50, 200, 10};
+  pq.push_range(arr);
+  if (pq.size() != 4) return false;
+  if (pq.top() != 200) return false;
+
+  return true;
+}
+
+static_assert(test_constexpr_priority_queue(),
+              "constexpr priority_queue test failed!");

From tkaminsk@gcc.gnu.org  Wed Jun  3 07:36:39 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  3 Jun 2026 07:36:39 +0000 (GMT)
Subject: [gcc r17-1246] libstdc++: Add (generic_)display_string and
 (generic_)native_encoded_string to filesystem::path
Message-ID: <20260603073639.F1A1E4BA2E06@sourceware.org>

https://gcc.gnu.org/g:341ad729c2c93b9f01854913b0404e4fc8958512

commit r17-1246-g341ad729c2c93b9f01854913b0404e4fc8958512
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu May 28 08:37:33 2026 +0200

    libstdc++: Add (generic_)display_string and (generic_)native_encoded_string to filesystem::path
    
    Furthermore string and generic_string method as marked as deprecated
    in C++26 mode.
    
    This implements the P2319R5 "Prevent path presentation problem" paper,
    with the rename of system_encoded_string from LWG4512,
    "The system_encoded_string() and generic_system_encoded_string() member
    functions of std::filesystem::path are misnamed".
    
    The wording defines the display_string and generic_display_string
    in terms of call of std::format with format string "{}" and "{:g}"
    respectively. This patch inlines the effects of above, by either
    returning native() or generic_string<value_type>() directly
    (if value_type is char), or string constructed __unicode::_Utf_view
    of above (when value_type is wchar_t).
    
    As we currently assume that char encoding is always UTF-8, the outputs
    of (generic_)native_encoded string and (generic_)display_string
    are equivalent. However, the former may be adjusted in future.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/fs_path.h                | 45 +++++++++++++++
 libstdc++-v3/include/bits/version.def              |  3 +-
 libstdc++-v3/include/bits/version.h                |  4 +-
 .../27_io/filesystem/filesystem_error/cons.cc      |  2 +
 .../27_io/filesystem/operations/canonical.cc       |  2 +
 .../27_io/filesystem/operations/copy_file.cc       |  2 +
 .../filesystem/operations/temp_directory_path.cc   |  2 +
 .../27_io/filesystem/path/append/source.cc         |  2 +-
 .../27_io/filesystem/path/concat/strings.cc        |  2 +
 .../filesystem/path/decompose/root_directory.cc    |  2 +
 .../27_io/filesystem/path/decompose/stem.cc        |  2 +-
 .../path/generic/display_native_string.cc          | 66 ++++++++++++++++++++++
 .../filesystem/path/generic/generic_string.cc      |  2 +
 .../27_io/filesystem/path/itr/traversal.cc         |  2 +
 .../path/native/display_native_string.cc           | 66 ++++++++++++++++++++++
 .../27_io/filesystem/path/native/string-char8_t.cc |  2 +-
 libstdc++-v3/testsuite/27_io/print/1.cc            |  4 +-
 libstdc++-v3/testsuite/27_io/print/2.cc            |  2 +
 libstdc++-v3/testsuite/27_io/print/3.cc            |  2 +
 libstdc++-v3/testsuite/util/testsuite_fs.h         |  4 +-
 20 files changed, 210 insertions(+), 8 deletions(-)

diff --git a/libstdc++-v3/include/bits/fs_path.h b/libstdc++-v3/include/bits/fs_path.h
index 8d0078000294..2f59f87fe6ed 100644
--- a/libstdc++-v3/include/bits/fs_path.h
+++ b/libstdc++-v3/include/bits/fs_path.h
@@ -462,7 +462,12 @@ namespace __detail
       std::basic_string<_CharT, _Traits, _Allocator>
       string(const _Allocator& __a = _Allocator()) const;
 
+    _GLIBCXX26_DEPRECATED_SUGGEST("display_string' or 'native_encoded_string")
     std::string    string() const;
+#if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+    std::string    display_string() const;
+    std::string    native_encoded_string() const;
+#endif
 #if _GLIBCXX_USE_WCHAR_T
     std::wstring   wstring() const;
 #endif
@@ -481,7 +486,12 @@ namespace __detail
       std::basic_string<_CharT, _Traits, _Allocator>
       generic_string(const _Allocator& __a = _Allocator()) const;
 
+    _GLIBCXX26_DEPRECATED_SUGGEST("generic_display_string' or 'generic_native_encoded_string")
     std::string    generic_string() const;
+#if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+    std::string    generic_display_string() const;
+    std::string    generic_native_encoded_string() const;
+#endif
 #if _GLIBCXX_USE_WCHAR_T
     std::wstring   generic_wstring() const;
 #endif
@@ -1173,6 +1183,23 @@ namespace __detail
   inline std::string
   path::string() const { return string<char>(); }
 
+#if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+  inline std::string
+  path::display_string() const
+  {
+#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+    return std::string(from_range,
+	     __unicode::_Utf_view<char, wstring_view>(native()));
+#else
+    return native();
+#endif
+  }
+
+  inline std::string
+  path::native_encoded_string() const
+  { return string<char>(); }
+#endif
+
 #if _GLIBCXX_USE_WCHAR_T
   inline std::wstring
   path::wstring() const { return string<wchar_t>(); }
@@ -1251,6 +1278,24 @@ namespace __detail
   path::generic_string() const
   { return generic_string<char>(); }
 
+#if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+  inline std::string
+  path::generic_display_string() const
+  {
+#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+    string_type __str = generic_string<wchar_t>();
+    return std::string(from_range,
+	     __unicode::_Utf_view<char, wstring_view>(__str));
+#else
+    return generic_string<char>();
+#endif
+  }
+
+  inline std::string
+  path::generic_native_encoded_string() const
+  { return generic_string<char>(); }
+#endif
+
 #if _GLIBCXX_USE_WCHAR_T
   inline std::wstring
   path::generic_wstring() const
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index a94a25bc0e6c..1104e7c3c907 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1615,8 +1615,9 @@ ftms = {
 ftms = {
   name = format_path;
   // 202403 P2845R8 Formatting of std::filesystem::path
+  // 202506 P2319R5 Prevent path presentation problems
   values = {
-    v = 202403;
+    v = 202506;
     cxxmin = 26;
     hosted = yes;
   };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 13093fdbfb71..4eff2c99e8f0 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -1763,9 +1763,9 @@
 
 #if !defined(__cpp_lib_format_path)
 # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
-#  define __glibcxx_format_path 202403L
+#  define __glibcxx_format_path 202506L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_path)
-#   define __cpp_lib_format_path 202403L
+#   define __cpp_lib_format_path 202506L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_format_path) */
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc b/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
index 3a4be9fbd3ab..a064bc679be7 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
@@ -21,6 +21,8 @@
 #include <filesystem>
 #include <testsuite_hooks.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using std::filesystem::filesystem_error;
 
 bool contains(std::string_view what_str, std::string_view expected)
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
index a915b291c375..884b6da438a3 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
@@ -22,6 +22,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 namespace fs = std::filesystem;
 using __gnu_test::compare_paths;
 
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
index 41cd8243502c..7d54243c922b 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
@@ -25,6 +25,8 @@
 #include <testsuite_fs.h>
 #include <testsuite_hooks.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
index aa4ce752701f..341138549490 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
@@ -24,6 +24,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 void
 clean_env()
 {
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
index d579c9bb840b..ba7adf6ffdc3 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
@@ -96,7 +96,7 @@ test03()
     {
       test(p, q.c_str());
       if constexpr (!std::is_same_v<path::value_type, char>)
-	test(p, q.string().c_str());
+	test(p, q.string().c_str()); // { dg-warning "deprecated" "" { target c++26 } }
     }
 }
 
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
index 3e1e20b48004..7501454e1551 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
@@ -24,6 +24,8 @@
 #include <testsuite_iterators.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using std::filesystem::path;
 using __gnu_test::compare_paths;
 
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
index 4a1bdb091fc5..49433701c428 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
@@ -23,6 +23,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using std::filesystem::path;
 
 void
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
index 0ce9dd7d6d62..2139fde734b1 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
@@ -33,7 +33,7 @@ test01()
   path p = "foo.bar.baz.tar";
   std::vector<std::string> v;
   for (; !p.extension().empty(); p = p.stem())
-    v.push_back(p.extension().string());
+    v.push_back(p.extension().string()); // { dg-warning "deprecated" "" { target c++26 } }
   VERIFY( v.at(0) == ".tar" );
   VERIFY( v.at(1) == ".baz" );
   VERIFY( v.at(2) == ".bar" );
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc
new file mode 100644
index 000000000000..6652713d5804
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc
@@ -0,0 +1,66 @@
+// { dg-do run { target c++26 } }
+
+#include <filesystem>
+#include <testsuite_fs.h>
+#include <testsuite_hooks.h>
+
+using std::filesystem::path;
+
+#define WIDEN(S) ::std::__format::_Widen<CharT>(S, L##S) 
+
+template<typename CharT>
+void
+test_display_and_native()
+{
+  std::string res;
+  path p;
+  auto verify_both = [&res](const path& p, std::string_view expected)
+  {
+    res = p.generic_display_string();
+    VERIFY( res == expected );
+    res = p.generic_native_encoded_string();
+    VERIFY( res == expected );
+  };
+
+  verify_both(WIDEN("/usr/include"), "/usr/include");
+  verify_both(WIDEN("foo///bar"), "foo/bar");
+  for (path p : __gnu_test::test_paths)
+    verify_both(p, p.generic_string()); // { dg-warning "deprecated" }
+
+  verify_both(
+    WIDEN("\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430"),
+    "\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430" );
+
+  if constexpr (path::preferred_separator == L'\\')
+    verify_both(WIDEN("C:\\foo\\bar"), "C:/foo/bar");
+}
+
+void
+test_display_invalid()
+{
+  std::string res;
+  auto verify_native_error = [&res](const path& p, std::string_view expected)
+  {
+    res = p.generic_display_string();
+    VERIFY( res == expected );
+    try { p.generic_native_encoded_string(); }
+    catch (const std::filesystem::filesystem_error&) {}
+  };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  if constexpr (std::is_same_v<path::value_type, wchar_t>)
+  {
+    verify_native_error(L"\xd800", "\uFFFD");
+    verify_native_error(L"///\xd800", "/\uFFFD");
+  }
+#endif
+}
+
+int main()
+{
+  test_display_and_native<char>();
+#ifdef _GLIBCXX_USE_WCHAR_T
+  test_display_and_native<wchar_t>();
+  test_display_invalid();
+#endif
+}
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
index 77d5766089ed..3dfa866a028f 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
@@ -23,6 +23,8 @@
 #include <testsuite_fs.h>
 #include <testsuite_hooks.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using std::filesystem::path;
 
 void
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
index 9eeb829944b5..2e829eb8f822 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
@@ -25,6 +25,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 using std::filesystem::path;
 
 void
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc
new file mode 100644
index 000000000000..149b52b05300
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc
@@ -0,0 +1,66 @@
+// { dg-do run { target c++26 } }
+
+#include <filesystem>
+#include <testsuite_fs.h>
+#include <testsuite_hooks.h>
+
+using std::filesystem::path;
+
+#define WIDEN(S) ::std::__format::_Widen<CharT>(S, L##S) 
+
+template<typename CharT>
+void
+test_display_and_native()
+{
+  std::string res;
+  path p;
+  auto verify_both = [&res](const path& p, std::string_view expected)
+  {
+    res = p.display_string();
+    VERIFY( res == expected );
+    res = p.native_encoded_string();
+    VERIFY( res == expected );
+  };
+
+  verify_both(WIDEN("/usr/include"), "/usr/include");
+  verify_both(WIDEN("foo///bar"), "foo///bar");
+  for (path p : __gnu_test::test_paths)
+    verify_both(p, p.string()); // { dg-warning "deprecated" }
+
+  verify_both(
+    WIDEN("\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430"),
+    "\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430" );
+
+  if constexpr (path::preferred_separator == L'\\')
+    verify_both(WIDEN("C:\\foo\\bar"), "C:\\foo\\bar");
+}
+
+void
+test_display_invalid()
+{
+  std::string res;
+  auto verify_native_error = [&res](const path& p, std::string_view expected)
+  {
+    res = p.display_string();
+    VERIFY( res == expected );
+    try { p.native_encoded_string(); }
+    catch (const std::filesystem::filesystem_error&) {}
+  };
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+  if constexpr (std::is_same_v<path::value_type, wchar_t>)
+  {
+    verify_native_error(L"\xd800", "\uFFFD");
+    verify_native_error(L"///\xd800", "///\uFFFD");
+  }
+#endif
+}
+
+int main()
+{
+  test_display_and_native<char>();
+#ifdef _GLIBCXX_USE_WCHAR_T
+  test_display_and_native<wchar_t>();
+  test_display_invalid();
+#endif
+}
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
index c8f2b3d2c628..996d58e7e592 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
@@ -48,7 +48,7 @@ test02()
 
   auto str = p.string<char>();
   VERIFY( str == "abc" );
-  VERIFY( str == p.string() );
+  VERIFY( str == p.string() ); // { dg-warning "deprecated" "" { target c++26 } }
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   auto strw = p.string<wchar_t>();
diff --git a/libstdc++-v3/testsuite/27_io/print/1.cc b/libstdc++-v3/testsuite/27_io/print/1.cc
index 58f1eb163dfa..4fd7f5dc925a 100644
--- a/libstdc++-v3/testsuite/27_io/print/1.cc
+++ b/libstdc++-v3/testsuite/27_io/print/1.cc
@@ -7,6 +7,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 void
 test_print_default()
 {
@@ -25,7 +27,7 @@ void
 test_print_file()
 {
   __gnu_test::scoped_file f;
-  FILE* strm = std::fopen(f.path.string().c_str(), "w");
+  FILE* strm = std::fopen(f.path.string().c_str(), "w"); 
   VERIFY( strm );
   std::print(strm, "File under '{}' for {}", 'O', "OUT OF FILE");
   std::fclose(strm);
diff --git a/libstdc++-v3/testsuite/27_io/print/2.cc b/libstdc++-v3/testsuite/27_io/print/2.cc
index 8aa7888e7bd4..bf7bcb1d6ee0 100644
--- a/libstdc++-v3/testsuite/27_io/print/2.cc
+++ b/libstdc++-v3/testsuite/27_io/print/2.cc
@@ -14,6 +14,8 @@
 #include <io.h>
 #endif
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 namespace std
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/testsuite/27_io/print/3.cc b/libstdc++-v3/testsuite/27_io/print/3.cc
index 90c4cfb0d48d..c23d2f10e4ff 100644
--- a/libstdc++-v3/testsuite/27_io/print/3.cc
+++ b/libstdc++-v3/testsuite/27_io/print/3.cc
@@ -7,6 +7,8 @@
 #include <testsuite_hooks.h>
 #include <testsuite_fs.h>
 
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 void
 test_println_blank()
 {
diff --git a/libstdc++-v3/testsuite/util/testsuite_fs.h b/libstdc++-v3/testsuite/util/testsuite_fs.h
index 6940ae51aa66..fa099b0986bc 100644
--- a/libstdc++-v3/testsuite/util/testsuite_fs.h
+++ b/libstdc++-v3/testsuite/util/testsuite_fs.h
@@ -67,6 +67,8 @@ namespace __gnu_test
   compare_paths(const test_fs::path& p1,
 		const test_fs::path& p2)
   {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
     PATH_CHK( p1, p2, native );
     PATH_CHK( p1, p2, string );
     PATH_CHK( p1, p2, empty );
@@ -90,7 +92,7 @@ namespace __gnu_test
       throw test_fs::filesystem_error(
 	  "!equal(begin1, end1, begin2)", p1, p2,
 	  std::make_error_code(std::errc::invalid_argument) );
-
+#pragma GCC diagnostic pop
   }
 
   const std::string test_paths[] = {

From tkaminsk@gcc.gnu.org  Wed Jun  3 12:15:54 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed,  3 Jun 2026 12:15:54 +0000 (GMT)
Subject: [gcc r17-1258] libstdc++: Define hardening FTM and update operator[]
 for mdspan
Message-ID: <20260603121554.9F6A64BA2E09@sourceware.org>

https://gcc.gnu.org/g:19def756dec1fe2df351214d36f8b951d46f1a76

commit r17-1258-g19def756dec1fe2df351214d36f8b951d46f1a76
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Wed Jun 3 12:04:51 2026 +0200

    libstdc++: Define hardening FTM and update operator[] for mdspan
    
    Defines __cpp_lib_hardened_mdspan.
    
    The hardened precondition on the mdspan converting constructor,
    is validated by the assert(_S_is_compatible_extents()) in the
    _ExtentsStorge. This also covers user-defined mappings, as all
    mappings are required to store, and thus construct extents
    objects.
    
    The operator[] implemented all required bounds checks, by:
    * checking for negative values in __index_type_cast
    * checking if value is representable in index_type in
      __index_type_cast
    * checking against the bound by calling __is_multi_index lambda
      in operator[]
    However, the last check subsumes the representability check
    (static extent values are validated at compile time).
    To reduce duplicated checks, this patch uses __index_int_t
    (introduced in r16-7644-g43f7452026fc05 for mdspan::at), that
    preserve negative values of arguments of integral type.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def |  8 ++++++++
 libstdc++-v3/include/bits/version.h   | 10 ++++++++++
 libstdc++-v3/include/std/mdspan       | 22 +++++++++++++++-------
 3 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 1104e7c3c907..df7190bec487 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2452,6 +2452,14 @@ ftms = {
   };
 };
 
+ftms = {
+  name = hardened_mdspan;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_mdspan) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
 // Standard test specifications.
 stds[97] = ">= 199711L";
 stds[03] = ">= 199711L";
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 4eff2c99e8f0..1a07f1153582 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2710,4 +2710,14 @@
 #endif /* !defined(__cpp_lib_valarray) */
 #undef __glibcxx_want_valarray
 
+#if !defined(__cpp_lib_hardened_mdspan)
+# if (defined(__glibcxx_mdspan) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_mdspan 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_mdspan)
+#   define __cpp_lib_hardened_mdspan 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_mdspan) */
+#undef __glibcxx_want_hardened_mdspan
+
 #undef __glibcxx_want_all
diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index adc1c0c64219..f5556f35fa14 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -40,6 +40,7 @@
 
 #define __glibcxx_want_mdspan
 #define __glibcxx_want_aligned_accessor
+#define __glibcxx_want_hardened_mdspan
 #define __glibcxx_want_submdspan
 #include <bits/version.h>
 
@@ -3062,17 +3063,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{
 	  if constexpr (rank() == 0)
 	    return _M_accessor.access(_M_handle, _M_mapping());
-	  else if constexpr (!(is_same_v<_OIndexTypes, index_type> && ...))
-	    return operator[](
-	      __mdspan::__index_type_cast<index_type>(std::move(__indices))...);
+	  else if constexpr (!(is_integral_v<_OIndexTypes> && ...))
+	    return operator[](__index_int_t<_OIndexTypes>(std::move(__indices))...);
 	  else
 	   {
+	     auto __is_valid_index = [&]<typename _OIntType>(size_t __dim, _OIntType __index)
+	     {
+	       if constexpr (is_signed_v<_OIntType>)
+		 if (__index < 0)
+		   return false;
+	       return std::cmp_less(__index, extents().extent(__dim));
+	     };
 	     auto __is_multi_index = [&]<size_t... _Counts>(index_sequence<_Counts...>)
-	     { return ((__indices < extents().extent(_Counts)) && ...); };
+	     { return (__is_valid_index(_Counts, __indices) && ...); };
 
 	     __glibcxx_assert(__is_multi_index(make_index_sequence<rank()>()));
-	     return _M_accessor.access(_M_handle, _M_mapping(__indices...));
-	   }
+	     auto __index = _M_mapping(static_cast<index_type>(__indices)...);
+	     return _M_accessor.access(_M_handle, __index);
+    	   }
 	}
 
       template<typename _OIndexType>
@@ -3084,7 +3092,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    -> reference
 	    {
 	       return operator[](
-		 __mdspan::__index_type_cast<index_type>(as_const(__indices[_Counts]))...);
+		 __index_int_t<_OIndexType>(as_const(__indices[_Counts]))...);
 	    };
 	  return __call(make_index_sequence<rank()>());
 	}

From redi@gcc.gnu.org  Wed Jun  3 15:06:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  3 Jun 2026 15:06:07 +0000 (GMT)
Subject: [gcc r17-1264] libstdc++: Define feature test macros for hardened
 implementation
Message-ID: <20260603150607.427CA4BA2E17@sourceware.org>

https://gcc.gnu.org/g:b7e4c5254212aceedf69725f8816ef3efce39178

commit r17-1264-gb7e4c5254212aceedf69725f8816ef3efce39178
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu May 21 16:38:58 2026 +0100

    libstdc++: Define feature test macros for hardened implementation
    
    The P3471R4 and P3697R1 proposals adding hardened preconditions also
    defined feature test macros that indicate whether the hardened
    preconditions are checked. For our implementation, those checks are
    enabled by defining _GLIBCXX_ASSERTIONS.
    
    To implement this, I've added all the __cpp_lib_hardened_xxx macros at
    the end of bits/version.def, because the simplest way to define many of
    them seems to be to make the depend on the macro for the main feature
    and additionally depend on defined(_GLIBCXX_ASSERTIONS).
    
    The hardening checks were added to each component as follows:
    
    std::array                  r11-4854-g6db082477ad839
    std::bitset                 r16-7919-g1b404c574450a4
    std::deque                  r7-1526-gbd2ee798d5a5a3
    std::expected               since first commit
    std::forward_list           r15-5721-ge7aa614d7372b5
    std::inplace_vector         since first commit
    std::common_iterator        since first commit
    std::counted_iterator       since first commit
    std::list                   r15-5721-ge7aa614d7372b5
    std::shared_ptr<T[]>        since first commit
    std::optional               r8-711-g2c27a627a31034
    std::ranges::view_interface since first commit
    std::span                   r10-2983-gb5c433ce11a140
    std::basic_stacktrace       since first commit
    std::basic_string           r6-3197-g2f1e8e7c4730bb
    std::basic_string_view      r11-2881-g3eefb302d2bd85
    std::valarray               r6-3197-g2f1e8e7c4730bb
    std::vector                 r6-3197-g2f1e8e7c4730bb
    
    This commit does not define __cpp_lib_hardened_mdspan, that was added in
    r17-1258-g19def756dec1fe earlier today.
    
    This commit does not include the LWG 4577 changes to harden
    view_interface::operator[] which will be added later (with a new value
    for the __cpp_lib_hardened_view_interface macro).
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Nathan Myers <nmyers@redhat.com>
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def              | 150 ++++++++++++++++-
 libstdc++-v3/include/bits/version.h                | 180 +++++++++++++++++++++
 libstdc++-v3/include/std/array                     |   1 +
 libstdc++-v3/include/std/bitset                    |   1 +
 libstdc++-v3/include/std/deque                     |   1 +
 libstdc++-v3/include/std/expected                  |   1 +
 libstdc++-v3/include/std/forward_list              |   1 +
 libstdc++-v3/include/std/inplace_vector            |   1 +
 libstdc++-v3/include/std/iterator                  |   2 +
 libstdc++-v3/include/std/list                      |   1 +
 libstdc++-v3/include/std/memory                    |   1 +
 libstdc++-v3/include/std/optional                  |   1 +
 libstdc++-v3/include/std/ranges                    |   1 +
 libstdc++-v3/include/std/span                      |   1 +
 libstdc++-v3/include/std/stacktrace                |   1 +
 libstdc++-v3/include/std/string                    |   1 +
 libstdc++-v3/include/std/string_view               |   1 +
 libstdc++-v3/include/std/valarray                  |   1 +
 libstdc++-v3/include/std/vector                    |   1 +
 .../23_containers/array/tuple_interface/get_neg.cc |   6 +-
 20 files changed, 350 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index df7190bec487..5dddf4cf3452 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2448,7 +2448,107 @@ ftms = {
   name = valarray;
   values = {
     v = 202511;
-    cxxmin = 26; 
+    cxxmin = 26;
+  };
+};
+
+ftms = {
+  name = hardened_array;
+  values = {
+    v = 202502;
+    cxxmin = 11;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_basic_stacktrace;
+  values = {
+    v = 202502;
+    cxxmin = 23;
+    hosted = yes;
+    extra_cond = "defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_basic_string;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_basic_string_view;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_string_view) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_bitset;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_common_iterator;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_counted_iterator;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_deque;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_expected;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_expected) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_forward_list;
+  values = {
+    v = 202502;
+    cxxmin = 11;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_inplace_vector;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_inplace_vector) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_list;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
   };
 };
 
@@ -2460,6 +2560,54 @@ ftms = {
   };
 };
 
+ftms = {
+  name = hardened_optional;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_optional) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_shared_ptr_array;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_shared_ptr_arrays) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_span;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_span) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_valarray;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_vector;
+  values = {
+    v = 202502;
+    extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
+ftms = {
+  name = hardened_view_interface;
+  values = {
+    v = 202502;
+    extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
+  };
+};
+
 // Standard test specifications.
 stds[97] = ">= 199711L";
 stds[03] = ">= 199711L";
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 1a07f1153582..787315033bb8 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2710,6 +2710,126 @@
 #endif /* !defined(__cpp_lib_valarray) */
 #undef __glibcxx_want_valarray
 
+#if !defined(__cpp_lib_hardened_array)
+# if (__cplusplus >= 201103L) && (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_array 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_array)
+#   define __cpp_lib_hardened_array 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_array) */
+#undef __glibcxx_want_hardened_array
+
+#if !defined(__cpp_lib_hardened_basic_stacktrace)
+# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_basic_stacktrace 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_stacktrace)
+#   define __cpp_lib_hardened_basic_stacktrace 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_basic_stacktrace) */
+#undef __glibcxx_want_hardened_basic_stacktrace
+
+#if !defined(__cpp_lib_hardened_basic_string)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_basic_string 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_string)
+#   define __cpp_lib_hardened_basic_string 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_basic_string) */
+#undef __glibcxx_want_hardened_basic_string
+
+#if !defined(__cpp_lib_hardened_basic_string_view)
+# if (defined(__glibcxx_string_view) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_basic_string_view 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_string_view)
+#   define __cpp_lib_hardened_basic_string_view 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_basic_string_view) */
+#undef __glibcxx_want_hardened_basic_string_view
+
+#if !defined(__cpp_lib_hardened_bitset)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_bitset 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_bitset)
+#   define __cpp_lib_hardened_bitset 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_bitset) */
+#undef __glibcxx_want_hardened_bitset
+
+#if !defined(__cpp_lib_hardened_common_iterator)
+# if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_common_iterator 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_common_iterator)
+#   define __cpp_lib_hardened_common_iterator 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_common_iterator) */
+#undef __glibcxx_want_hardened_common_iterator
+
+#if !defined(__cpp_lib_hardened_counted_iterator)
+# if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_counted_iterator 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_counted_iterator)
+#   define __cpp_lib_hardened_counted_iterator 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_counted_iterator) */
+#undef __glibcxx_want_hardened_counted_iterator
+
+#if !defined(__cpp_lib_hardened_deque)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_deque 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_deque)
+#   define __cpp_lib_hardened_deque 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_deque) */
+#undef __glibcxx_want_hardened_deque
+
+#if !defined(__cpp_lib_hardened_expected)
+# if (defined(__glibcxx_expected) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_expected 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_expected)
+#   define __cpp_lib_hardened_expected 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_expected) */
+#undef __glibcxx_want_hardened_expected
+
+#if !defined(__cpp_lib_hardened_forward_list)
+# if (__cplusplus >= 201103L) && (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_forward_list 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_forward_list)
+#   define __cpp_lib_hardened_forward_list 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_forward_list) */
+#undef __glibcxx_want_hardened_forward_list
+
+#if !defined(__cpp_lib_hardened_inplace_vector)
+# if (defined(__glibcxx_inplace_vector) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_inplace_vector 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_inplace_vector)
+#   define __cpp_lib_hardened_inplace_vector 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_inplace_vector) */
+#undef __glibcxx_want_hardened_inplace_vector
+
+#if !defined(__cpp_lib_hardened_list)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_list 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_list)
+#   define __cpp_lib_hardened_list 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_list) */
+#undef __glibcxx_want_hardened_list
+
 #if !defined(__cpp_lib_hardened_mdspan)
 # if (defined(__glibcxx_mdspan) && defined(_GLIBCXX_ASSERTIONS))
 #  define __glibcxx_hardened_mdspan 202502L
@@ -2720,4 +2840,64 @@
 #endif /* !defined(__cpp_lib_hardened_mdspan) */
 #undef __glibcxx_want_hardened_mdspan
 
+#if !defined(__cpp_lib_hardened_optional)
+# if (defined(__glibcxx_optional) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_optional 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_optional)
+#   define __cpp_lib_hardened_optional 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_optional) */
+#undef __glibcxx_want_hardened_optional
+
+#if !defined(__cpp_lib_hardened_shared_ptr_array)
+# if (defined(__glibcxx_shared_ptr_arrays) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_shared_ptr_array 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_shared_ptr_array)
+#   define __cpp_lib_hardened_shared_ptr_array 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_shared_ptr_array) */
+#undef __glibcxx_want_hardened_shared_ptr_array
+
+#if !defined(__cpp_lib_hardened_span)
+# if (defined(__glibcxx_span) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_span 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_span)
+#   define __cpp_lib_hardened_span 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_span) */
+#undef __glibcxx_want_hardened_span
+
+#if !defined(__cpp_lib_hardened_valarray)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_valarray 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_valarray)
+#   define __cpp_lib_hardened_valarray 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_valarray) */
+#undef __glibcxx_want_hardened_valarray
+
+#if !defined(__cpp_lib_hardened_vector)
+# if (defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_vector 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_vector)
+#   define __cpp_lib_hardened_vector 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_vector) */
+#undef __glibcxx_want_hardened_vector
+
+#if !defined(__cpp_lib_hardened_view_interface)
+# if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+#  define __glibcxx_hardened_view_interface 202502L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_view_interface)
+#   define __cpp_lib_hardened_view_interface 202502L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_hardened_view_interface) */
+#undef __glibcxx_want_hardened_view_interface
+
 #undef __glibcxx_want_all
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index 22f6251d4fe3..5d3edbea6495 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -49,6 +49,7 @@
 
 #define __glibcxx_want_array_constexpr
 #define __glibcxx_want_freestanding_array
+#define __glibcxx_want_hardened_array
 #define __glibcxx_want_nonmember_container_access
 #define __glibcxx_want_to_array
 #include <bits/version.h>
diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset
index 64dae5be8bf9..a8cb337f4b15 100644
--- a/libstdc++-v3/include/std/bitset
+++ b/libstdc++-v3/include/std/bitset
@@ -62,6 +62,7 @@
 
 #define __glibcxx_want_constexpr_bitset
 #define __glibcxx_want_bitset  // ...construct from string_view
+#define __glibcxx_want_hardened_bitset
 #include <bits/version.h>
 
 #ifdef __cpp_lib_bitset // ...construct from string_view
diff --git a/libstdc++-v3/include/std/deque b/libstdc++-v3/include/std/deque
index 3899b68e7367..3b2f34fc7075 100644
--- a/libstdc++-v3/include/std/deque
+++ b/libstdc++-v3/include/std/deque
@@ -75,6 +75,7 @@
 #define __glibcxx_want_allocator_traits_is_always_equal
 #define __glibcxx_want_containers_ranges
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_hardened_deque
 #define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
 
diff --git a/libstdc++-v3/include/std/expected b/libstdc++-v3/include/std/expected
index 21522850d7ae..fe4e1ecbf0ec 100644
--- a/libstdc++-v3/include/std/expected
+++ b/libstdc++-v3/include/std/expected
@@ -37,6 +37,7 @@
 #define __glibcxx_want_freestanding_expected
 #define __glibcxx_want_constrained_equality
 #define __glibcxx_want_constexpr_exceptions
+#define __glibcxx_want_hardened_expected
 #include <bits/version.h>
 
 #ifdef __cpp_lib_expected // C++ >= 23 && __cpp_concepts >= 202002L
diff --git a/libstdc++-v3/include/std/forward_list b/libstdc++-v3/include/std/forward_list
index ff0c58455cf5..e24c1573e0ad 100644
--- a/libstdc++-v3/include/std/forward_list
+++ b/libstdc++-v3/include/std/forward_list
@@ -51,6 +51,7 @@
 #define __glibcxx_want_allocator_traits_is_always_equal
 #define __glibcxx_want_containers_ranges
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_hardened_forward_list
 #define __glibcxx_want_incomplete_container_elements
 #define __glibcxx_want_list_remove_return_type
 #define __glibcxx_want_nonmember_container_access
diff --git a/libstdc++-v3/include/std/inplace_vector b/libstdc++-v3/include/std/inplace_vector
index caf9c2032452..8bd890042969 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -32,6 +32,7 @@
 
 #pragma GCC system_header
 
+#define __glibcxx_want_hardened_inplace_vector
 #define __glibcxx_want_inplace_vector
 #include <bits/version.h>
 
diff --git a/libstdc++-v3/include/std/iterator b/libstdc++-v3/include/std/iterator
index 96696cc53593..3d2dc8bbe9e4 100644
--- a/libstdc++-v3/include/std/iterator
+++ b/libstdc++-v3/include/std/iterator
@@ -71,6 +71,8 @@
 
 #define __glibcxx_want_array_constexpr
 #define __glibcxx_want_constexpr_iterator
+#define __glibcxx_want_hardened_common_iterator
+#define __glibcxx_want_hardened_counted_iterator
 #define __glibcxx_want_make_reverse_iterator
 #define __glibcxx_want_move_iterator_concept
 #define __glibcxx_want_nonmember_container_access
diff --git a/libstdc++-v3/include/std/list b/libstdc++-v3/include/std/list
index a3e7c81680a9..29d8fce698bc 100644
--- a/libstdc++-v3/include/std/list
+++ b/libstdc++-v3/include/std/list
@@ -75,6 +75,7 @@
 #define __glibcxx_want_allocator_traits_is_always_equal
 #define __glibcxx_want_containers_ranges
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_hardened_list
 #define __glibcxx_want_incomplete_container_elements
 #define __glibcxx_want_list_remove_return_type
 #define __glibcxx_want_nonmember_container_access
diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory
index cbe9f5ad2007..9343b3497315 100644
--- a/libstdc++-v3/include/std/memory
+++ b/libstdc++-v3/include/std/memory
@@ -110,6 +110,7 @@
 #define __glibcxx_want_constexpr_dynamic_alloc
 #define __glibcxx_want_constexpr_memory
 #define __glibcxx_want_enable_shared_from_this
+#define __glibcxx_want_hardened_shared_ptr_array
 #define __glibcxx_want_indirect
 #define __glibcxx_want_is_sufficiently_aligned
 #define __glibcxx_want_make_unique
diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index dec1a50413ab..221beb2446d6 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -39,6 +39,7 @@
 #define __glibcxx_want_optional_range_support
 #define __glibcxx_want_constrained_equality
 #define __glibcxx_want_constexpr_exceptions
+#define __glibcxx_want_hardened_optional
 #include <bits/version.h>
 
 #ifdef __cpp_lib_optional // C++ >= 17
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 7d8b37f8c5cf..39a50b03e457 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -56,6 +56,7 @@
 #include <bits/refwrap.h>
 
 #define __glibcxx_want_algorithm_default_value_type
+#define __glibcxx_want_hardened_view_interface
 #define __glibcxx_want_ranges
 #define __glibcxx_want_ranges_as_const
 #define __glibcxx_want_ranges_as_rvalue
diff --git a/libstdc++-v3/include/std/span b/libstdc++-v3/include/std/span
index aaa7a485be8c..2b978dad8a4d 100644
--- a/libstdc++-v3/include/std/span
+++ b/libstdc++-v3/include/std/span
@@ -40,6 +40,7 @@
 
 #define __glibcxx_want_span
 #define __glibcxx_want_span_initializer_list
+#define __glibcxx_want_hardened_span
 #include <bits/version.h>
 
 #ifdef __cpp_lib_span // C++ >= 20 && concepts
diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace
index 79941d93b88f..22d8b804a5e9 100644
--- a/libstdc++-v3/include/std/stacktrace
+++ b/libstdc++-v3/include/std/stacktrace
@@ -34,6 +34,7 @@
 
 #define __glibcxx_want_stacktrace
 #define __glibcxx_want_formatters
+#define __glibcxx_want_hardened_basic_stacktrace
 #include <bits/version.h>
 
 #ifdef __cpp_lib_stacktrace // C++ >= 23 && hosted && HAVE_STACKTRACE
diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string
index c2b37391fc7a..1a622b7aebd6 100644
--- a/libstdc++-v3/include/std/string
+++ b/libstdc++-v3/include/std/string
@@ -72,6 +72,7 @@
 #define __glibcxx_want_constexpr_string
 #define __glibcxx_want_containers_ranges
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_hardened_basic_string
 #define __glibcxx_want_nonmember_container_access
 #define __glibcxx_want_string_resize_and_overwrite
 #define __glibcxx_want_string_subview
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index 81b0011245b5..ce6aee290524 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -40,6 +40,7 @@
 #define __glibcxx_want_constexpr_char_traits
 #define __glibcxx_want_constexpr_string_view
 #define __glibcxx_want_freestanding_string_view
+#define __glibcxx_want_hardened_basic_string_view
 #define __glibcxx_want_starts_ends_with
 #define __glibcxx_want_string_contains
 #define __glibcxx_want_string_subview
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 5a1f5c0ac5e8..1e2254d5c72d 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -46,6 +46,7 @@
 #include <bits/range_access.h>
 #endif
 
+#define __glibcxx_want_hardened_valarray
 #define __glibcxx_want_valarray
 #include <bits/version.h>
 
diff --git a/libstdc++-v3/include/std/vector b/libstdc++-v3/include/std/vector
index 343483e95191..86e42b22ea5b 100644
--- a/libstdc++-v3/include/std/vector
+++ b/libstdc++-v3/include/std/vector
@@ -83,6 +83,7 @@
 #define __glibcxx_want_constexpr_vector
 #define __glibcxx_want_containers_ranges
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_hardened_vector
 #define __glibcxx_want_incomplete_container_elements
 #define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
index c71ddf91f645..0772581226de 100644
--- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
@@ -26,6 +26,6 @@ int n1 = std::get<1>(a);
 int n2 = std::get<1>(std::move(a));
 int n3 = std::get<1>(ca);
 
-// { dg-error "static assertion failed" "" { target *-*-* } 396 }
-// { dg-error "static assertion failed" "" { target *-*-* } 405 }
-// { dg-error "static assertion failed" "" { target *-*-* } 414 }
+// { dg-error "static assertion failed" "" { target *-*-* } 397 }
+// { dg-error "static assertion failed" "" { target *-*-* } 406 }
+// { dg-error "static assertion failed" "" { target *-*-* } 415 }

From redi@gcc.gnu.org  Wed Jun  3 19:50:14 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  3 Jun 2026 19:50:14 +0000 (GMT)
Subject: [gcc r15-11249] libstdc++: Fix concept checks for std::unique_copy
 [PR120384]
Message-ID: <20260603195014.151794BA2E0A@sourceware.org>

https://gcc.gnu.org/g:af7c492712edab3bb46d3ad48bdd9ad719b000d7

commit r15-11249-gaf7c492712edab3bb46d3ad48bdd9ad719b000d7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 21 16:57:59 2025 +0100

    libstdc++: Fix concept checks for std::unique_copy [PR120384]
    
    This looks to have been wrong since r0-125454-gea89b2482f97aa which
    introduced the predefined_ops.h. Since that change, the binary predicate
    passed to std::__unique_copy is _Iter_comp_iter, which takes arguments
    of the iterator type, not the iterator's value type.
    
    This removes the checks from the __unique_copy overloads and moves them
    into the second overload of std::unique_copy, where we have the original
    binary predicate, not the adapted one from predefined_ops.h.
    
    The third __unique_copy overload currently checks that the predicate is
    callable with the input range value type and the output range value
    type. This change alters that, so that we only ever check that the
    predicate can be called with two arguments of the same type. That is
    intentional, because calling the predicate with different types is a bug
    that will be fixed in a later commit (see PR libstdc++/120386).
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120384
            * include/bits/stl_algo.h (__unique_copy): Remove all
            _BinaryPredicateConcept concept checks.
            (unique_copy): Check _BinaryPredicateConcept in overload that
            takes a predicate.
            * testsuite/25_algorithms/unique_copy/120384.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 1bb7a195e7cf95537534a42e7aa8705cc78eba4e)

Diff:
---
 libstdc++-v3/include/bits/stl_algo.h                    | 17 +++--------------
 .../testsuite/25_algorithms/unique_copy/120384.cc       | 12 ++++++++++++
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index 71ead103d2bf..f5361aeab7e2 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -932,11 +932,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		  _OutputIterator __result, _BinaryPredicate __binary_pred,
 		  forward_iterator_tag, output_iterator_tag)
     {
-      // concept requirements -- iterators already checked
-      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
-	  typename iterator_traits<_ForwardIterator>::value_type,
-	  typename iterator_traits<_ForwardIterator>::value_type>)
-
       _ForwardIterator __next = __first;
       *__result = *__first;
       while (++__next != __last)
@@ -962,11 +957,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		  _OutputIterator __result, _BinaryPredicate __binary_pred,
 		  input_iterator_tag, output_iterator_tag)
     {
-      // concept requirements -- iterators already checked
-      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
-	  typename iterator_traits<_InputIterator>::value_type,
-	  typename iterator_traits<_InputIterator>::value_type>)
-
       typename iterator_traits<_InputIterator>::value_type __value = *__first;
       __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred))
 	__rebound_pred
@@ -995,10 +985,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		  _ForwardIterator __result, _BinaryPredicate __binary_pred,
 		  input_iterator_tag, forward_iterator_tag)
     {
-      // concept requirements -- iterators already checked
-      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
-	  typename iterator_traits<_ForwardIterator>::value_type,
-	  typename iterator_traits<_InputIterator>::value_type>)
       *__result = *__first;
       while (++__first != __last)
 	if (!__binary_pred(__result, __first))
@@ -4505,6 +4491,9 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
 	    typename iterator_traits<_InputIterator>::value_type>)
       __glibcxx_requires_valid_range(__first, __last);
+      __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
+	  typename iterator_traits<_InputIterator>::value_type,
+	  typename iterator_traits<_InputIterator>::value_type>)
 
       if (__first == __last)
 	return __result;
diff --git a/libstdc++-v3/testsuite/25_algorithms/unique_copy/120384.cc b/libstdc++-v3/testsuite/25_algorithms/unique_copy/120384.cc
new file mode 100644
index 000000000000..27cd3375acae
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/unique_copy/120384.cc
@@ -0,0 +1,12 @@
+// { dg-options "-D_GLIBCXX_CONCEPT_CHECKS" }
+// { dg-do compile }
+
+// PR 120384 _BinaryPredicateConcept checks in std::unique_copy are wrong
+
+#include <algorithm>
+
+void
+test_pr120384(const int* first, const int* last, int* out)
+{
+  std::unique_copy(first, last, out);
+}

From redi@gcc.gnu.org  Wed Jun  3 19:50:24 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed,  3 Jun 2026 19:50:24 +0000 (GMT)
Subject: [gcc r15-11250] libstdc++: Implement LWG 2439 for std::unique_copy
 [PR120386]
Message-ID: <20260603195024.73D2B4BA2E1F@sourceware.org>

https://gcc.gnu.org/g:d4ad07ec9a54b1ad24a2802aaf7e735ef4bca87c

commit r15-11250-gd4ad07ec9a54b1ad24a2802aaf7e735ef4bca87c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 21 20:12:50 2025 +0100

    libstdc++: Implement LWG 2439 for std::unique_copy [PR120386]
    
    The current overload set for __unique_copy handles three cases:
    
    - The input range uses forward iterators, the output range does not.
      This is the simplest case, and can just compare adjacent elements of
      the input range.
    
    - Neither the input range nor output range use forward iterators.
      This requires a local variable copied from the input range and updated
      by assigning each element to the local variable.
    
    - The output range uses forward iterators.
      For this case we compare the current element from the input range with
      the element just written to the output range.
    
    There are two problems with this implementation. Firstly, the third case
    assumes that the value type of the output range can be compared to the
    value type of the input range, which might not be possible at all, or
    might be possible but give different results to comparing elements of
    the input range. This is the problem identified in LWG 2439.
    
    Secondly, the third case is used when both ranges use forward iterators,
    even though the first case could (and should) be used. This means that
    we compare elements from the output range instead of the input range,
    with the problems described above (either not well-formed, or might give
    the wrong results).
    
    The cause of the second problem is that the overload for the first case
    looks like:
    
    OutputIterator
    __unique_copy(ForwardIter, ForwardIter, OutputIterator, BinaryPred,
                  forward_iterator_tag, output_iterator_tag);
    
    When the output range uses forward iterators this overload cannot be
    used, because forward_iterator_tag does not inherit from
    output_iterator_tag, so is not convertible to it.
    
    To fix these problems we need to implement the resolution of LWG 2439 so
    that the third case is only used when the value types of the two ranges
    are the same. This ensures that the comparisons are well behaved. We
    also need to ensure that the first case is used when both ranges use
    forward iterators.
    
    This change replaces a single step of tag dispatching to choose between
    three overloads with two step of tag dispatching, choosing between two
    overloads at each step. The first step dispatches based on the iterator
    category of the input range, ignoring the category of the output range.
    The second step only happens when the input range uses non-forward
    iterators, and dispatches based on the category of the output range and
    whether the value type of the two ranges is the same. So now the cases
    that are handled are:
    
    - The input range uses forward iterators.
    - The output range uses non-forward iterators or a different value type.
    - The output range uses forward iterators and has the same value type.
    
    For the second case, the old code used __gnu_cxx::__ops::__iter_comp_val
    to wrap the predicate in another level of indirection. That seems
    unnecessary, as we can just use a pointer to the local variable instead
    of an iterator referring to it.
    
    During review of this patch, it was discovered that all known
    implementations of std::unique_copy and ranges::unique_copy (except
    cmcstl2) disagree with the specification. The standard (and the SGI STL
    documentation) say that it uses pred(*i, *(i-1)) but everybody uses
    pred(*(i-1), *i) instead, and apparently always has done. This patch
    adjusts ranges::unique_copy to be consistent.
    
    In the first __unique_copy overload, the local copy of the iterator is
    changed to be the previous position not the next one, so that we use
    ++first as the "next" iterator, consistent with the logic used in the
    other overloads. This makes it easier to compare them, because we aren't
    using pred(*first, *next) in one and pred(something, *first) in the
    others. Instead it's always pred(something, *first).
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/120386
            * include/bits/ranges_algo.h (__unique_copy_fn): Reorder
            arguments for third case to match the first two cases.
            * include/bits/stl_algo.h (__unique_copy): Replace three
            overloads with two, depending only on the iterator category of
            the input range.  Dispatch to __unique_copy_1 for the
            non-forward case.
            (__unique_copy_1): New overloads for the case where the input
            range uses non-forward iterators.
            (unique_copy): Only pass the input range category to
            __unique_copy.
            * testsuite/25_algorithms/unique_copy/lwg2439.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit ff2e49f444e851b005ba8abcf610a85bc1d7ae3a)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |   7 +-
 libstdc++-v3/include/bits/stl_algo.h               |  89 ++++++++-------
 .../testsuite/25_algorithms/unique_copy/lwg2439.cc | 127 +++++++++++++++++++++
 3 files changed, 182 insertions(+), 41 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index f36e7dd59911..7b1408452128 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1218,6 +1218,9 @@ namespace ranges
 	if (__first == __last)
 	  return {std::move(__first), std::move(__result)};
 
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4269. unique_copy passes arguments to its predicate backwards
+
 	// TODO: perform a closer comparison with reference implementations
 	if constexpr (forward_iterator<_Iter>)
 	  {
@@ -1250,8 +1253,8 @@ namespace ranges
 	    while (++__first != __last)
 	      {
 		if (!(bool)std::__invoke(__comp,
-					 std::__invoke(__proj, *__first),
-					 std::__invoke(__proj, __value)))
+					 std::__invoke(__proj, __value),
+					 std::__invoke(__proj, *__first)))
 		  {
 		    __value = *__first;
 		    *++__result = __value;
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index f5361aeab7e2..98c2249039d1 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -918,52 +918,45 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 			   __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
     }
 
-  /**
-   *  This is an uglified
-   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
-   *              _BinaryPredicate)
-   *  overloaded for forward iterators and output iterator as result.
-  */
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 4269. unique_copy passes arguments to its predicate backwards
+
+  // Implementation of std::unique_copy for forward iterators.
+  // This case is easy, just compare *i with *(i-1).
   template<typename _ForwardIterator, typename _OutputIterator,
 	   typename _BinaryPredicate>
     _GLIBCXX20_CONSTEXPR
     _OutputIterator
     __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
 		  _OutputIterator __result, _BinaryPredicate __binary_pred,
-		  forward_iterator_tag, output_iterator_tag)
+		  forward_iterator_tag)
     {
-      _ForwardIterator __next = __first;
+      _ForwardIterator __prev = __first;
       *__result = *__first;
-      while (++__next != __last)
-	if (!__binary_pred(__first, __next))
+      while (++__first != __last)
+	if (!__binary_pred(__prev, __first))
 	  {
-	    __first = __next;
 	    *++__result = *__first;
+	    __prev = __first;
 	  }
       return ++__result;
     }
 
-  /**
-   *  This is an uglified
-   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
-   *              _BinaryPredicate)
-   *  overloaded for input iterators and output iterator as result.
-  */
+  // Implementation of std::unique_copy for non-forward iterators,
+  // where we cannot compare with elements written to the output.
   template<typename _InputIterator, typename _OutputIterator,
 	   typename _BinaryPredicate>
     _GLIBCXX20_CONSTEXPR
     _OutputIterator
-    __unique_copy(_InputIterator __first, _InputIterator __last,
-		  _OutputIterator __result, _BinaryPredicate __binary_pred,
-		  input_iterator_tag, output_iterator_tag)
+    __unique_copy_1(_InputIterator __first, _InputIterator __last,
+		    _OutputIterator __result, _BinaryPredicate __binary_pred,
+		    __false_type)
     {
-      typename iterator_traits<_InputIterator>::value_type __value = *__first;
-      __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred))
-	__rebound_pred
-	= __gnu_cxx::__ops::__iter_comp_val(__binary_pred);
+      typedef typename iterator_traits<_InputIterator>::value_type _Val;
+      _Val __value = *__first;
       *__result = __value;
       while (++__first != __last)
-	if (!__rebound_pred(__first, __value))
+	if (!__binary_pred(std::__addressof(__value), __first))
 	  {
 	    __value = *__first;
 	    *++__result = __value;
@@ -971,19 +964,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return ++__result;
     }
 
-  /**
-   *  This is an uglified
-   *  unique_copy(_InputIterator, _InputIterator, _OutputIterator,
-   *              _BinaryPredicate)
-   *  overloaded for input iterators and forward iterator as result.
-  */
+  // Implementation of std::unique_copy for non-forward iterators,
+  // where we can compare with the last element written to the output.
   template<typename _InputIterator, typename _ForwardIterator,
 	   typename _BinaryPredicate>
-    _GLIBCXX20_CONSTEXPR
     _ForwardIterator
-    __unique_copy(_InputIterator __first, _InputIterator __last,
-		  _ForwardIterator __result, _BinaryPredicate __binary_pred,
-		  input_iterator_tag, forward_iterator_tag)
+    __unique_copy_1(_InputIterator __first, _InputIterator __last,
+		    _ForwardIterator __result, _BinaryPredicate __binary_pred,
+		    __true_type)
     {
       *__result = *__first;
       while (++__first != __last)
@@ -992,6 +980,31 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return ++__result;
     }
 
+  // Implementation of std::unique_copy for non-forward iterators.
+  // We cannot compare *i to *(i-1) so we need to either make a copy
+  // or compare with the last element written to the output range.
+  template<typename _InputIterator, typename _OutputIterator,
+	   typename _BinaryPredicate>
+    _GLIBCXX20_CONSTEXPR
+    _OutputIterator
+    __unique_copy(_InputIterator __first, _InputIterator __last,
+		  _OutputIterator __result, _BinaryPredicate __binary_pred,
+		  input_iterator_tag)
+    {
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 2439. unique_copy() sometimes can't fall back to reading its output
+      typedef iterator_traits<_InputIterator> _InItTraits;
+      typedef iterator_traits<_OutputIterator> _OutItTraits;
+      typedef typename _OutItTraits::iterator_category _Cat;
+      const bool __output_is_fwd = __is_base_of(forward_iterator_tag, _Cat);
+      const bool __same_type = __is_same(typename _OutItTraits::value_type,
+					 typename _InItTraits::value_type);
+      typedef __truth_type<__output_is_fwd && __same_type> __cmp_with_output;
+      return std::__unique_copy_1(__first, __last, __result, __binary_pred,
+				  typename __cmp_with_output::__type());
+    }
+
+
   /**
    *  This is an uglified reverse(_BidirectionalIterator,
    *                              _BidirectionalIterator)
@@ -4456,8 +4469,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	return __result;
       return std::__unique_copy(__first, __last, __result,
 				__gnu_cxx::__ops::__iter_equal_to_iter(),
-				std::__iterator_category(__first),
-				std::__iterator_category(__result));
+				std::__iterator_category(__first));
     }
 
   /**
@@ -4499,8 +4511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	return __result;
       return std::__unique_copy(__first, __last, __result,
 			__gnu_cxx::__ops::__iter_comp_iter(__binary_pred),
-				std::__iterator_category(__first),
-				std::__iterator_category(__result));
+				std::__iterator_category(__first));
     }
 
 #if __cplusplus <= 201103L || _GLIBCXX_USE_DEPRECATED
diff --git a/libstdc++-v3/testsuite/25_algorithms/unique_copy/lwg2439.cc b/libstdc++-v3/testsuite/25_algorithms/unique_copy/lwg2439.cc
new file mode 100644
index 000000000000..f2ec3e368099
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/unique_copy/lwg2439.cc
@@ -0,0 +1,127 @@
+// { dg-do run }
+
+#include <algorithm>
+#include <testsuite_iterators.h>
+
+using namespace __gnu_test;
+
+int out[4];
+short out_shrt[4];
+short in[7] = { 1, 2, 2, 2, 3, 4, 4 };
+
+template<typename T>
+void
+check_and_reset(T* p)
+{
+  VERIFY( p[0] == 1 );
+  VERIFY( p[1] == 2 );
+  VERIFY( p[2] == 3 );
+  VERIFY( p[3] == 4 );
+  std::fill_n(p, 4, 0);
+}
+
+struct Eq
+{
+  bool operator()(short i, short j) const { return i == j; }
+  bool operator()(short, int) const { VERIFY(false); }
+  bool operator()(int, short) const { VERIFY(false); }
+};
+
+struct Eq2
+{
+  bool operator()(const short& i, const short& j) const
+  {
+    // Both arguments should be elements of the 'in' array.
+    VERIFY( in+0 <= &i && &i < in+7 );
+    VERIFY( in+0 <= &j && &j < in+7 );
+    VERIFY( &i < &j );
+    return i == j;
+  }
+  bool operator()(short, int) const { VERIFY(false); }
+  bool operator()(int, short) const { VERIFY(false); }
+};
+
+struct Eq3
+{
+  bool operator()(const short& i, const short& j) const
+  {
+    // First argument should be element of the 'out' array.
+    // Second argument should be element of the 'in' array.
+    VERIFY( out_shrt+0 <= &i && &i < out_shrt+4 );
+    VERIFY( in+0 <= &j && &j < in+7 );
+    return i == j;
+  }
+  bool operator()(short, int) const { VERIFY(false); }
+  bool operator()(int, short) const { VERIFY(false); }
+};
+
+void
+test_forward_source()
+{
+  // The input range uses forward iterators
+  test_container<short, forward_iterator_wrapper> inc(in);
+  test_container<int, output_iterator_wrapper> outc(out);
+  std::unique_copy(inc.begin(), inc.end(), outc.begin());
+  check_and_reset(out);
+
+  test_container<short, forward_iterator_wrapper> inc2(in);
+  test_container<int, output_iterator_wrapper> outc2(out);
+  std::unique_copy(inc2.begin(), inc2.end(), outc2.begin(), Eq2());
+  check_and_reset(out);
+}
+
+void
+test_output_dest()
+{
+  // The input range uses input iterators.
+  // The output range uses output iterators.
+  test_container<short, input_iterator_wrapper> inc(in);
+  test_container<int, output_iterator_wrapper> outc(out);
+  std::unique_copy(inc.begin(), inc.end(), outc.begin());
+  check_and_reset(out);
+
+  test_container<short, input_iterator_wrapper> inc2(in);
+  test_container<int, output_iterator_wrapper> outc2(out);
+  std::unique_copy(inc2.begin(), inc2.end(), outc2.begin(), Eq());
+  check_and_reset(out);
+}
+
+void
+test_forward_dest_diff_type()
+{
+  // The input range uses input iterators.
+  // The output range uses forward iterators, but with different value type.
+  test_container<short, input_iterator_wrapper> inc(in);
+  test_container<int, forward_iterator_wrapper> outc(out);
+  std::unique_copy(inc.begin(), inc.end(), outc.begin());
+  check_and_reset(out);
+
+  test_container<short, input_iterator_wrapper> inc2(in);
+  test_container<int, forward_iterator_wrapper> outc2(out);
+  std::unique_copy(inc2.begin(), inc2.end(), outc2.begin(), Eq());
+  check_and_reset(out);
+}
+
+void
+test_forward_dest_same_type()
+{
+  // The input range uses input iterators.
+  // The output range uses forward iterators, with same value type.
+  test_container<short, input_iterator_wrapper> inc(in);
+  test_container<short, forward_iterator_wrapper> outc(out_shrt);
+  std::unique_copy(inc.begin(), inc.end(), outc.begin());
+  check_and_reset(out_shrt);
+
+  test_container<short, input_iterator_wrapper> inc2(in);
+  test_container<short, forward_iterator_wrapper> outc2(out_shrt);
+  std::unique_copy(inc2.begin(), inc2.end(), outc2.begin(), Eq3());
+  check_and_reset(out_shrt);
+}
+
+int main()
+{
+  test_forward_source();
+  test_output_dest();
+  test_forward_dest_diff_type();
+  test_forward_dest_same_type();
+}

From gccadmin@gcc.gnu.org  Thu Jun  4 08:19:26 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu,  4 Jun 2026 08:19:26 +0000 (GMT)
Subject: [gcc r17-1283] Daily bump.
Message-ID: <20260604081926.DAAA44BA2E19@sourceware.org>

https://gcc.gnu.org/g:f174757a36fdd35e18287f2f3c6dc39bb75d048a

commit r17-1283-gf174757a36fdd35e18287f2f3c6dc39bb75d048a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 4 08:18:58 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   5 +
 contrib/ChangeLog       |   5 +
 gcc/ChangeLog           | 501 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 430 +++++++++++++++++++++++++++++++++++++++++
 gcc/algol68/ChangeLog   |  26 +++
 gcc/c-family/ChangeLog  |  16 ++
 gcc/c/ChangeLog         |  21 ++
 gcc/cobol/ChangeLog     |  19 ++
 gcc/cp/ChangeLog        |  63 ++++++
 gcc/d/ChangeLog         |  10 +
 gcc/fortran/ChangeLog   |  39 ++++
 gcc/m2/ChangeLog        |  15 ++
 gcc/testsuite/ChangeLog | 248 ++++++++++++++++++++++++
 libbacktrace/ChangeLog  |   5 +
 libgcobol/ChangeLog     |   5 +
 libgomp/ChangeLog       |   7 +
 libsanitizer/ChangeLog  |   6 +
 libstdc++-v3/ChangeLog  | 159 +++++++++++++++
 19 files changed, 1581 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 87fb1128df85..016e5968aa0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-03  Richard Earnshaw  <rearnsha@arm.com>
+
+	* MAINTAINERS: Add all known missing account names to
+	write-after.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* Makefile.def: Fix typos.
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 43ae187f91b8..716685451023 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py (ignored_commits):
+	Add 86ff0e88764bfbff1a4989414ec83c0eaa723107.
+
 2026-05-29  Kevin Buettner  <kevinb@redhat.com>
 
 	* dg-extract-results.py: Show warnings instead of erroring out
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0da7046f84b..347e780eb061 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,504 @@
+2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	PR target/106895
+	* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
+	RS6000_BTI_INTPTI and RS6000_BTI_UINTPTI.
+	(intPTI_type_internal_node, uintPTI_type_internal_node): New
+	PTImode type macros.
+	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Register
+	signed and unsigned PTImode internal builtin types.
+	* config/rs6000/sync.md (trunctipti2): New splitter.
+	(extendptiti2): Likewise.
+	(zero_extendptiti2): Likewise.
+
+2026-06-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/125588
+	* match.pd (`if (cond) (A | CST1) : (A & ~CST1)`): Enable
+	for GIMPLE only.
+
+2026-06-04  Kevin Stefanov  <kevinstefanov15@gmail.com>
+
+	* config/m68k/m68k.cc (m68k_conditional_register_usage): Replace TEST_HARD_REG_BIT
+	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+	(m68k_zero_call_used_regs): Likewise.
+	* config/pdp11/pdp11.cc (pdp11_conditional_register_usage): Likewise.
+	* ira-color.cc (create_new_allocno_hard_regs_node): Replace call to hard_reg_set_size
+	with hard_reg_set_popcount.
+	* ira-int.h (hard_reg_set_size): Remove.
+	* ira-lives.cc (process_bb_node_lives): Replace TEST_HARD_REG_BIT
+	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+	* ira.cc (setup_class_hard_regs): Likewise.
+	(update_equiv_regs_prescan): Likewise.
+	(build_insn_chain): Likewise.
+	(setup_stack_reg_pressure_class): Replace call to hard_reg_set_size
+	with hard_reg_set_popcount.
+	* lra-eliminations.cc (spill_pseudos): Replace TEST_HARD_REG_BIT
+	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+	* optabs.cc (expand_asm_reg_clobber_mem_blockage): Replace
+	TEST_HARD_REG_BIT with EXECUTE_IF_SET_IN_HARD_REG_SET in one instance
+	and with hard_reg_set_popcount in another.
+	* postreload.cc (reload_combine): Replace TEST_HARD_REG_BIT
+	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+	* reginfo.cc (init_reg_sets_1): Likewise.
+	* regrename.cc (init_rename_info): Likewise.
+	* reload1.cc (maybe_fix_stack_asms): Likewise.
+	(update_eliminables_and_spill): Likewise.
+	* rtl-ssa/insns.cc (function_info::record_call_clobbers): Likewise.
+	* sched-deps.cc (sched_analyze_insn): Likewise.
+	* sel-sched-dump.cc (print_hard_reg_set): Likewise.
+
+2026-06-04  Xiaomei Xue  <xuexiaomei@hygon.cn>
+
+	* config/i386/sse.md (define_mode_attr sse2): Add V4SI/V8SI/V16SI/
+	V8HI/V16HI/V32HI.
+	(<sse2>_movnt<mode>): Change mode iterator from VI8 to VI_AVX_AVX512F.
+	(define_mode_iterator STORENT_MODE): Add V4SI/V8SI/V16SI/V8HI/V16HI/
+	V32HI/V16QI/V32QI/V64QI.
+
+2026-06-03  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/124405
+	* tree-ssa-phiopt.cc (cond_store_replacement): Make ASSIGN (the
+	candidate store for cselim) an argument of the function instead. Update
+	legality check due to relaxing the restriction that middle_bb can have
+	only a single statement.
+	(cselim_candidate): New.
+	(pass_cselim::execute): Call cselim_candidate and pass the result to
+	cond_store_replacement.
+
+2026-06-03  Milan Tripkovic  <Milan.Tripkovic@rt-rk.com>
+
+	* config/riscv/riscv-cores.def (RISCV_TUNE): Changed xt-c908
+	PIPELINE_MODEL and TUNE_INFO
+	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add entry
+	for xt-c908 design
+	* config/riscv/riscv.cc: New tune structure
+	for the xt-c908 design.
+	* config/riscv/riscv.md: Add xt-c908 .
+	Include xt-c908.md.
+	* config/riscv/xt-c908.md: New file.
+
+2026-06-03  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	* tree-scalar-evolution.cc
+	(compute_final_value_from_loop_phi_latch): New function.
+	(final_value_replacement_loop): Use it.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/103221
+	* passes.def (early_optimizations): Move sccopy
+	to after evrp.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* gimple-ssa-sccopy.cc (stmt_may_generate_copy): Remove restriction
+	on the ssa info being different for the "copy".
+	(scc_copy_prop::replace_scc_by_value): Call maybe_duplicate_ssa_info_at_copy
+	when copyproping a ssa name.
+
+2026-06-03  Pan Li  <pan2.li@intel.com>
+
+	* match-sat-alu.pd: Add pattern for unsigned scalar
+	SAT_MUL form 11.
+
+2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* rtl.def (CALL_INSN): Add a new integer field.
+	* rtl.h (CALL_INSN_ABI_ID): New macro.
+	* target.def (insn_callee_abi): Delete.
+	* doc/rtl.texi: Document CALL_INSN_ABI_ID.
+	* doc/tm.texi.in (TARGET_INSN_CALLEE_ABI): Remove.
+	* doc/tm.texi: Regenerate.
+	* calls.cc: Include regs.h and function-abi.h.
+	(emit_call_1): Initialize CALL_INSN_ABI_ID.
+	* cfgcleanup.cc (old_insns_match_p): Compare CALL_INSN_ABI_IDs.
+	* emit-rtl.cc (try_split): Copy the original insn's CALL_INSN_ABI_ID
+	to the new call.
+	(emit_copy_of_insn_after): Likewise.
+	(make_call_insn_raw): Initialise CALL_INSN_ABI_ID.
+	* function-abi.cc (insn_callee_abi): Remove use of the insn_callee_abi
+	hook and instead use CALL_INSN_ABI_ID.
+	* recog.cc (peep2_attempt): Copy the original insn's CALL_INSN_ABI_ID
+	to the new call.
+	* config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Remove
+	arm_pcs parameter.
+	* config/aarch64/aarch64.cc (aarch64_gen_callee_cookie): Likewise.
+	(aarch64_callee_abi): Delete.
+	(aarch64_insn_callee_abi): Likewise.
+	(aarch64_function_arg): Update call to aarch64_callee_abi.
+	(aarch64_output_mi_thunk): Likewise.  Set CALL_INSN_ABI_ID instead.
+	(TARGET_INSN_CALLEE_ABI): Delete.
+	* config/aarch64/aarch64.md (tlsdesc_small_<mode>): Update call
+	to aarch64_callee_abi and set CALL_INSN_ABI_ID instead.
+	* config/i386/i386.cc (ix86_insn_callee_abi): Delete.
+	(ix86_expand_avx_vzeroupper): Set CALL_INSN_ABI_ID.
+	(TARGET_INSN_CALLEE_ABI): Delete.
+	* config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls):
+	Remove coding convention from calls to gen_sibcall_internal and
+	gen_sibcall_value_internal.  Store the ABI identifier in
+	CALL_INSN_ABI_ID instead.
+	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
+	(riscv_call_tls_get_addr): Likewise, but calling gen_call_value.
+	(riscv_function_arg): Return null for the end marker.
+	(get_riscv_cc, riscv_insn_callee_abi): Delete.
+	(TARGET_INSN_CALLEE_ABI): Delete.
+	* config/riscv/riscv.md (UNSPEC_CALLEE_CC): Delete.
+	(sibcall): Revert to treating operand 2 as a placeholder.
+	Do not pass it to gen_sibcall_internal.
+	(sibcall_value): Likewise operand 3 and gen_sibcall_value_internal.
+	(call): Likewise operand 2 and gen_call_internal.
+	(call_value): Likewise operand 3 and gen_call_value_internal.
+	(sibcall_internal, call_internal): Remove operand 2.
+	(sibcall_value_internal, call_value_internal): Remove operand 3.
+	(untyped_call): Update call to gen_call.
+
+2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+
+	* config/aarch64/constraints.md (Uci): Drop @internal, slightly tweak
+	doc string.
+	(Ucj): Likewise.
+	* doc/md.texi (Machine Constraints): Document Uci and Ucj under AArch64
+	family.
+
+2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+
+	* doc/ifn.texi (Direct Internal Functions): Flesh out
+	documentation for IFN_MASK_LOAD.
+	* doc/md.texi (Standard Names): Add anchor for maskloadmn so it
+	can be cross-referenced.
+
+2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125579
+	* gimple-ssa-backprop.cc (backprop::execute): Avoid double deletions.
+
+2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125431
+	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches,
+	complex_fms_pattern::matches): Gate on FP contraction.
+
+2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125509
+	* tree-vect-loop-manip.cc (vect_do_peeling): Re-enable dominators
+	update for prolog peeling.
+
+2026-06-03  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125477
+	* tree-vect-loop-manip.cc (vect_loop_versioning): Verify we
+	can duplicate an outer loop before considering to version it.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/125507
+	* gengtype.cc (main): Add tree_code.
+	* tree-core.h (struct tree_base): Remove ENUM_BITFIELD.
+	(struct tree_type_common): Likewise.
+	(struct tree_decl_common): Likewise.
+	(struct tree_decl_with_vis): Likewise.
+	(struct tree_function_decl): Likewise.
+
+2026-06-03  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv.cc (riscv_sched_reorder): Remove dead
+	return after the early-return guard.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.h (bitmap_element): Fix left/right distinction in comments.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gimple-ssa-backprop.cc: Update the comment at head of the file.
+	(var_info::new_value, var_info::seq): New member variables.
+	(var_info::var_info): Initialize them.
+	(remove_unused_var): Replace with...
+	(remove_dead_stmt): ...this new function.
+	(note_replacement): Delete.
+	(backprop::prepare_change): Likewise.
+	(backprop::complete_change): Likewise.
+	(backprop::set_new_value): New function.
+	(backprop::subst_operand): Likewise.
+	(backprop::finish_stmt): Likewise.
+	(backprop::optimize_builtin_call): Replace the lhs and info parameters
+	with a var_info parameter.  Create a new statement rather than
+	changing the existing one.
+	(backprop::optimize_assign): Likewise.
+	(backprop::optimize_phi): Likewise.
+	(backprop::replace_assign_rhs): Likewise, but replace gassign and lhs
+	parameters.
+	(backprop::propagate_change): New function.
+	(backprop::commit_replacement): Likewise.
+	(backprop::execute): Update phase 3 for the above changes.  Do not
+	alter the original statements during phase 3.  If one SSA name
+	is scheduled to be replaced, also require all its users in m_vars
+	to be replaced.  Add a new phase that performs the scheduled
+	replacements.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gimple-ssa-backprop.cc: Remove the claim at the head of the file
+	that we only need to revisit a statement once.
+	(backprop::m_worklist, backprop::m_worklist_names): Delete.
+	(backprop::m_worklist1): New member variable.
+	(backprop::m_worklist2, backprop::m_this_worklist): Likewise.
+	(backprop::m_next_worklist, backprop::m_worklist_threshold): Likewise.
+	(backprop::backprop): Update accordingly.
+	(backprop::~backprop): Likewise.
+	(backprop::push_to_worklist): Switch to using bitmap worklists that
+	use m_vars indices instead of SSA_NAME_VERSIONs.  Decide which
+	worklist should be used based on m_worklist_threshold.
+	(backprop::pop_from_worklist): Pop the first bit from m_this_worklist.
+	Set m_worklist_threshold.
+	(backprop::execute): Use a double-worklist update in which each
+	iteration makes a post order walk.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gimple-ssa-backprop.cc (var_info): New structure.
+	(var_info_hasher): Likewise.
+	(backprop::m_info_pool): Replace with...
+	(backprop::m_var_pool): ...this new member variable.
+	(backprop::m_info_map): Replace with...
+	(backprop::m_var_table): ...this new member variable.
+	(backprop::m_worklist): Store var_info pointers instead of SSA names.
+	(backprop::backprop): Update accordingly.
+	(backprop::~backprop): Likewise.
+	(backprop::lookup_operand): Return a var_info pointer instead of
+	a usage_info pointer.
+	(backprop::push_to_worklist): Take a var_info pointer instead
+	of an SSA name.
+	(backprop::pop_from_worklist): Return a var_info pointer instead
+	of an SSA name.
+	(backprop::process_builtin_call_use): Update calls accordingly.
+	(backprop::process_assign_use): Likewise.
+	(backprop::process_phi_use): Likewise.
+	(backprop::reprocess_inputs): Likewise.
+	(backprop::process_var): Take a pointer to the var_info entry
+	as a second parameter.  Update for the above data structure changes.
+	(backprop::process_block): Update calls to process_var.
+	(backprop::execute): Likewise.  Update for the above data structure
+	changes.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gimple-ssa-backprop.cc (backprop::process_var): Don't try to
+	optimize SSA names that occur as a phi input for an abnormal edge,
+	moving the restriction from...
+	(backprop::optimize_phi): ...here.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gimple-iterator.cc (completely_unused): New function.
+	(gsi_replace): Allow changes in lhs if the caller has updated
+	all uses of the old name, including all debug uses.
+	* gimple-fold.cc (gsi_replace_with_seq_vops): Likewise.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.h: Document the complexity of pop_largest aka
+	bitmap_clear_last_set_bit.
+	(bitmap_clear_last_set_bit): Declare.
+	* bitmap.cc (bitmap_last_set_bit_worker): New function,
+	split out from...
+	(bitmap_last_set_bit): ...here.
+	(bitmap_clear_last_set_bit): New function.
+
+2026-06-02  Jonathan Yong  <10walls@gmail.com>
+
+	Revert:
+	2026-05-27  oltolm  <oleg.tolmatcev@gmail.com>
+
+	PR target/54412
+	* target.def (overaligned_stack_slot_required): New calls hook.
+	* calls.cc (allocate_call_dynamic_stack_space): New helper.
+	(initialize_argument_information): Use
+	targetm.calls.overaligned_stack_slot_required for over-aligned
+	by-reference argument copies.
+	(expand_call): Use
+	targetm.calls.overaligned_stack_slot_required for over-aligned
+	hidden return slots.
+	* function.cc (assign_stack_local_aligned): New helper.
+	(assign_parm_setup_block): Use
+	targetm.calls.overaligned_stack_slot_required for over-aligned
+	stack parm slots.
+	(assign_parm_setup_reg): Likewise.
+	* config/i386/i386.cc (ix86_overaligned_stack_slot_required): New.
+	(TARGET_OVERALIGNED_STACK_SLOT_REQUIRED): Define for i386.
+	* doc/tm.texi.in: Add hook placement.
+	* doc/tm.texi: Regenerate.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125545
+	* tree-ssa-reassoc.cc (insert_stmt_after): Allow asm goto
+	with a single successor.
+
+2026-06-02  Lino Hsing-Yu Peng  <linopeng@andestech.com>
+
+	* common/config/riscv/riscv-common.cc: Add zvfofp8min support.
+	* config/riscv/riscv-ext.def: Add zvfofp8min entry.
+	* config/riscv/riscv-ext.opt: Add zvfofp8min option.
+	* config/riscv/riscv-vector-builtins.cc: Require zvfofp8min.
+	* config/riscv/riscv-vector-builtins.h: Add zvfofp8min handling.
+	* doc/riscv-ext.texi: Document the new extension.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125553
+	* tree-ssa-sccvn.cc (visit_nary_op): Valueize the BIT_FIELD_REF
+	operand before looking at its definition.
+
+2026-06-02  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* config/riscv/riscv-cores.def: Switch xt-c9501fdvt tune to
+	xt_c9501_tune_info.
+	* config/riscv/riscv.cc (xt_c9501_vls_vector_cost): New.
+	(xt_c9501_vla_vector_cost): New.
+	(xt_c9501_vector_cost): New.
+	(xt_c9501_tune_info): New.
+
+2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+
+	* config/riscv/riscv-v.cc (expand_vec_perm): Add missing return
+	after emit_vlmax_gather_insn.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125502
+	* tree-ssa-forwprop.cc (optimize_vector_load): Do not
+	move defs of abnormals.
+
+2026-06-02  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md (crotate): Rename to inv_rotate.
+	Update all uses accordingly.
+
+2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Don't define
+	_XOPEN_SOURCE=600 for C++.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120702
+	* gimple-fold.cc (maybe_fold_reference): Only fold
+	register type reads.
+
+2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/125517
+	* wide-int.cc (wi::bitreverse_large): Rename LEN argument to XLEN and
+	use it as safe_uhwi argument.  Add LEN automatic variable set to
+	BLOCKS_NEEDED (precision).  Replace loop clearing val with memset.
+	Remove I automatic variable.
+
+2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+
+	* common/config/riscv/riscv-common.cc: Fix typos in comments.
+	* config/riscv/andes-25-series.md: Likewise.
+	* config/riscv/autovec-opt.md: Likewise.
+	* config/riscv/autovec.md: Likewise.
+	* config/riscv/bitmanip.md: Likewise.
+	* config/riscv/constraints.md: Likewise.
+	* config/riscv/gen-riscv-ext-opt.cc: Likewise.
+	* config/riscv/gen-riscv-mcpu-texi.cc: Likewise.
+	* config/riscv/generic-vector-ooo.md: Likewise.
+	* config/riscv/multilib-generator: Likewise.
+	* config/riscv/riscv-avlprop.cc: Likewise.
+	* config/riscv/riscv-ext.def: Likewise.
+	* config/riscv/riscv-ext.opt: Likewise.
+	* config/riscv/riscv-modes.def: Likewise.
+	* config/riscv/riscv-opt-popretz.cc: Likewise.
+	* config/riscv/riscv-profiles.def: Likewise.
+	* config/riscv/riscv-protos.h: Likewise.
+	* config/riscv/riscv-selftests.cc: Likewise.
+	* config/riscv/riscv-sr.cc: Likewise.
+	* config/riscv/riscv-string.cc: Likewise.
+	* config/riscv/riscv-subset.h: Likewise.
+	* config/riscv/riscv-target-attr.cc: Likewise.
+	* config/riscv/riscv-v.cc: Likewise.
+	* config/riscv/riscv-vect-permconst.cc: Likewise.
+	* config/riscv/riscv-vector-builtins-bases.cc: Likewise.
+	* config/riscv/riscv-vector-builtins-functions.def: Likewise.
+	* config/riscv/riscv-vector-builtins-shapes.cc: Likewise.
+	* config/riscv/riscv-vector-builtins-types.def: Likewise.
+	* config/riscv/riscv-vector-builtins.cc: Likewise.
+	* config/riscv/riscv-vector-builtins.def: Likewise.
+	* config/riscv/riscv-vector-builtins.h: Likewise.
+	* config/riscv/riscv-vector-costs.cc: Likewise.
+	* config/riscv/riscv-vector-costs.h: Likewise.
+	* config/riscv/riscv-vsetvl.cc: Likewise.
+	* config/riscv/riscv-vsetvl.def: Likewise.
+	* config/riscv/riscv-zicfilp.cc: Likewise.
+	* config/riscv/riscv.cc: Likewise.
+	(riscv_zcmp_valid_stack_adj_bytes_p): Rename misspelled
+	variable additioanl_bytes to additional_bytes.
+	* config/riscv/riscv.h: Likewise.
+	* config/riscv/riscv.md: Likewise.
+	* config/riscv/sifive-vector-builtins-functions.def: Likewise.
+	* config/riscv/sifive_vector.h: Likewise.
+	* config/riscv/spacemit-x60.md: Likewise.
+	* config/riscv/thead.cc: Likewise.
+	* config/riscv/tt-ascalon-d8.md: Likewise.
+	* config/riscv/vector-crypto.md: Likewise.
+	* config/riscv/vector-iterators.md: Likewise.
+	* config/riscv/vector.md: Likewise.
+	* config/riscv/zicond.md: Likewise.
+	* doc/riscv-mcpu.texi: Regenerate.
+
+2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+
+	* common/config/riscv/riscv-common.cc: Fix formatting.
+	* config/riscv/gen-riscv-mcpu-texi.cc: Likewise.
+	* config/riscv/gen-riscv-mtune-texi.cc: Likewise.
+	* config/riscv/genrvv-type-indexer.cc: Remove unused <assert.h>
+	include.
+	* config/riscv/riscv-string.cc: Fix formatting.
+	* config/riscv/riscv-target-attr.cc: Likewise.
+	* config/riscv/riscv-v.cc: Remove duplicate "targhooks.h" include.
+	Fix formatting.
+	* config/riscv/riscv-v.h: Fix formatting.
+	* config/riscv/riscv-vsetvl.cc: Likewise.
+	* config/riscv/riscv.cc (riscv_pass_by_reference): Remove stray
+	double semicolon.  Fix formatting elsewhere.
+	(riscv_output_move): Use gcc_unreachable () instead of abort ().
+	(riscv_save_libcall_count): Use gcc_unreachable () instead of
+	abort ().
+	* config/riscv/riscv.h: Fix formatting.
+	* config/riscv/thead.cc: Likewise.
+
+2026-06-02  Tianle Shi  <shitianle@hygon.cn>
+
+	* config/i386/i386.cc (ix86_vector_costs): Add
+	m_num_avx512_vec_perm.
+	(ix86_vector_costs::ix86_vector_costs): Initialize it.
+	(ix86_count_cross_lane_perm_p): New helper to classify
+	cross-lane vec_perm for AVX256 and AVX512 handling.
+	(ix86_vector_costs::add_stmt_cost): Use the helper for
+	vec_perm accounting, record 256-bit and 512-bit counts,
+	and print detected width as avx%u.
+	(ix86_vector_costs::finish_cost): Reject AVX512 costs
+	when TARGET_AVX512_AVOID_VEC_PERM is set and 512-bit
+	cross-lane vec_perm is present.
+	* config/i386/i386.h (TARGET_AVX512_AVOID_VEC_PERM):
+	New macro.
+	* config/i386/x86-tune.def (X86_TUNE_AVX512_AVOID_VEC_PERM):
+	New tune for c86-4g-m7.
+
+2026-06-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/125558
+	* common.opt (Wstrict-overflow): Mark as Ignore.
+	(Wstrict-overflow=): Fix up and mark as igore.
+	* gcc-diagnostic-spec.cc (nowarn_spec_t::nowarn_spec_t):
+	Remove OPT_Wstrict_overflow.
+	* opts.cc (common_handle_option): Likewise.
+
 2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
 
 	PR target/122827
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 98ddba91d55c..cf4a41146e2d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260602
+20260604
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9ca34f7d4569..5a939090b45a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,433 @@
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Validate
+	a known alignment on the object even if there is an address clause.
+
+2026-06-02  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* gcc-interface/trans.cc (gnat_to_gnu) <N_Exit_Statement>: Mark
+	the label tree as used.
+	(gnat_gimplify_stmt) <LOOP_STMT>: Do not emit end label
+	definition in unused.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Do not
+	give the warning about too large a size here but...
+	* gcc-interface/utils2.cc (build_allocator): ...here instead.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Type>: Do not
+	derive the layout of C-compatible unchecked union types.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.cc (components_to_record): Tweak comment.
+	(build_position_list): Deal with unchecked union types.
+	(build_variant_list): Likewise.
+	(get_variant_part): Likewise.
+	(create_variant_part_from): Likewise.
+	(copy_and_substitute_in_layout): Likewise.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Subtype>: Do
+	not repeat conditions in chained tests.
+	(copy_and_substitute_in_layout): For a tagged subtype, inherit the
+	non-stored dicriminants from the old type explicitely.
+	* gcc-interface/trans.cc (gnat_to_gnu): Exclude more contexts for
+	the transformation of boolean rvalues.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/89609
+	* gcc-interface/gigi.h (adjust_result_decl_for_invisible_reference):
+	New inline function.
+	* gcc-interface/decl.cc (update_profile): Adjust the RESULT_DECL of
+	the function if it returns by invisible reference.
+	* gcc-interface/trans.cc (Subprogram_Body_to_gnu): Replace manual
+	adjustment by a call to adjust_result_decl_for_invisible_reference.
+	(maybe_make_gnu_thunk): Likewise.
+	* gcc-interface/targtyps.cc: Include stor-layout.h header file.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/utils.cc (maybe_pad_type): Propagate the flag
+	TYPE_REVERSE_STORAGE_ORDER from the inner type to the record type
+	if the former is also an aggregate type.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.adb (Apply_Accessibility_Check_For_Return): Bail out
+	for the return synthesized in a function with _Wrapped_Statements.
+
+2026-06-02  Tom Tromey  <tromey@adacore.com>
+
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+	(GNATLLVM): Remove note about nested functions.
+	* gnat_ugn.texi: Regenerate.
+
+2026-06-02  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not disable
+	expander if body comes from an expression function.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* sem_prag.adb (Analyze_Pragma): Remove overflow supression
+	workaround.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* rtsfind.adb (Maybe_Add_With): Ensure conistent Implicit_With nodes
+	traversal after ignored ghost nodes have been removed.
+	Omit checks on ignored WITH clauses.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* krunch.ads: Fix a few typos in the description.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gen_il-gen-gen_entities.adb (Access_Kind): Add Root_Type_Only for
+	the Master_Id field.
+	* einfo.ads (Master_Id): Document that it lives on root types only.
+	* accessibility.adb (Apply_Accessibility_Check_For_Allocator): Avoid
+	generating secondary useless checks.
+	* exp_ch3.adb (Build_Initialization_Call): Use the Master_Id of the
+	type of target reference directly.
+	(Build_Master): Minor tweak.
+	(Expand_N_Full_Type_Declaration): Do not call Build_Master for a
+	derived access type declaration.
+	* exp_ch4.adb (Expand_N_Allocator): Test Master_Id directly on the
+	access type.
+	* sem_res.adb (Resolve_Actuals): In the case of an allocator, if the
+	designated type is a CW interface, call Convert_To_And_Rewrite to
+	add the special conversion but nevertheless resolve the allocator to
+	the type of the formal afterward; do not establish a transient scope
+	if the type is a named access type.
+
+2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+
+	* libgnat/s-os_lib.adb (Get_Debuggable_Suffix, Get_Executable_Suffix,
+	Get_Object_Suffix, Get_Target_Debuggable_Suffix,
+	Get_Target_Executable_Suffix, Get_Target_Object_Suffix): Access strings
+	like we do in Gnatlink.
+	* adaint.c (__gnat_object_suffix, __gnat_executable_suffix,
+	__gnat_debuggable_suffix): Now constants, just like the ones for target
+	suffixes.
+
+2026-06-02  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sinfo.ads <Expression_Copy>: Mention it is present in
+	N_Aspect_Specification nodes.
+	<N_Aspect_Specification>: Add Expression_Copy field.
+
+2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+
+	* env.c (__gnat_setenv): Add _POSIX_VERSION >= 200112L to setenv
+	availability check.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix a
+	couple of glitches.
+	* gnat_ugn.texi: Regenerate.
+
+2026-06-02  Gary Dismukes  <dismukes@adacore.com>
+
+	* sem_ch3.adb (Copy_Parent_Attributes): Inherit Linker_Section_Pragma.
+
+2026-06-02  Sebastian Poeplau  <poeplau@adacore.com>
+
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Mention
+	inline assembler limitations.
+	* gnat_ugn.texi: Regenerate.
+
+2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+
+	* adaint.c, adaint.h (__gnat_to_gm_time): Adapt C side, while keeping
+	the explicit conversion to time_t, if this ever needs to be debugged.
+	* libgnat/s-os_lib.adb (To_GM_Time): Adapt Ada side.
+
+2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+
+	* libgnat/a-calend.adb (localtime_tzoff): Simplify interface.
+	* sysdep.c (__gnat_localtime_tzoff): Remove duplicated specs; pass
+	"in" parameters via copy and "out" parameters via pointers.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/42413
+	* exp_ch4.adb (Process_Transients_In_Expression): Deal with a task
+	activation chain present in the statement list.
+	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Also
+	establish a transient scope if the result type has tasks.
+	* exp_ch7.adb (Make_Transient_Block): Deal with Has_Master_Entity
+	and Has_Activation_Chain_Entity set on the transient scope.
+	* exp_ch9.ads (Make_Task_Activation_Call): New declaration from...
+	* exp_ch9.adb (Make_Task_Activation_Call): ...here.
+	(Build_Activation_Chain_Entity): Deal with transient scopes.
+	(Build_Master_Entity): Likewise.
+	(Find_Enclosing_Context): Likewise.
+	* sem_elab.adb (Activation_Processor.Process_Activation): Deal with
+	N_Expression_With_Actions nodes.
+	* sem_util.adb (Current_Entity_In_Scope): Prevent transient scopes
+	from being transparent for _Chain and _Master entities.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/42413
+	* exp_aggr.adb (Build_Record_Aggr_Code): Minor tweak.
+	* exp_ch9.adb (Make_Task_Activation_Call): New helper function.
+	(Build_Activation_Chain_Entity): Streamline.
+	(Build_Master_Entity): Rename local variable.
+	(Build_Task_Activation_Call): Call Make_Task_Activation_Call.
+	(Build_Task_Allocate_Block): Likewise.  Set Is_Task_Allocation_Block
+	separately after having created the block.
+	* gen_il-gen-gen_nodes.adb (N_Block_Statement): Change the category
+	of Is_Task_Allocation_Block flag from syntactic to semantic.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/42413
+	* gen_il-fields.ads (Opt_Field_Enum): Remove Activation_Chain_Entity
+	and add Has_Activation_Chain_Entity.
+	* gen_il-gen-gen_entities.adb (Entity_Kind): Add new semantic flag
+	Has_Activation_Chain_Entity.
+	* gen_il-gen-gen_nodes.adb (N_Subprogram_Body): Remove
+	Activation_Chain_Entity field.
+	(N_Task_Body): Likewise.
+	(N_Package_Declaration): Likewise.
+	(N_Block_Statement): Likewise.
+	(N_Extended_Return_Statement): Likewise.
+	(N_Entry_Body): Likewise.
+	* einfo.ads (Has_Activation_Chain_Entity): Document new flag.
+	* sinfo.ads (Activation_Chain_Entity): Delete documentation.
+	* exp_ch9.adb (Build_Activation_Chain_Entity): Replace uses of
+	Activation_Chain_Entity by Has_Activation_Chain_Entity.
+	(Build_Task_Activation_Call): Retrieve the activation chain entity
+	by means of new helper function Activation_Chain_Entity.
+	(Build_Task_Allocate_Block): Set Has_Activation_Chain_Entity in
+	lieu of Activation_Chain_Entity.
+	(Expand_N_Task_Body): Likewise.
+	(Find_Enclosing_Context): Fix handling of N_Entry_Body.
+	* sem_ch7.adb (May_Need_Implicit_Body): Replace test on
+	Activation_Chain_Entity by Has_Activation_Chain_Entity.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* exp_ch7.adb (Processing_Actions): Avoid processing
+	ignored ghost declarations.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/18205
+	* exp_attr.adb (Rewrite_Attribute_Proc_Call): Skip the conversion to
+	the formal type only if the actual is of a class-wide type. Generate
+	a dispatching call when both the prefix is a class-wide type and the
+	subprogram is a dispatching operation.
+	(Expand_N_Attribute_Reference) <Input>: Use U_Type consistently and
+	remove an useless invocation of Root_Type.
+	<Put_Image>: Minor comment tweak.
+	<Read>: Likewise.
+	<Write>: Likewise.
+
+2026-06-02  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sysdep.c (getc_immediate_common): Cleanup macro test.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_util.ads (Partially_Visible_Subcomponent): Rename into ...
+	(Partially_Visible_Part): ...this. Improve documentation.
+	* sem_util.adb: Likewise.
+	* sem_ch3.adb (Analyze_Component_Declaration,
+	Array_Type_Declaration): Adapt to renaming.
+	* sem_ch7.adb (Install_Composite_Operations): Likewise.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* einfo.ads (Contains_Ignored_Ghost_Code): Remove documentation.
+
+2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+
+	* sem_util.adb (Has_Assertion_Level_Argument): Invert the final
+	check in aspect branch and the check in pragma branch to use
+	early returns for consistency.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* par.adb, par-util.adb (Check_Bad_Layout_At): New procedure.
+	* par-ch3.adb (P_Declarative_Item): Use new procedure.
+	* par-ch5.adb (P_Sequence_Of_Statements): Likewise.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* sem_util.adb (Has_Assertion_Level_Argument): Check for
+	the correct type of association.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* err_vars.ads (Error_Msg_Qual_For_Standard): New Variable.
+	* errout.ads (Error_Msg_Qual_For_Standard): Likewise.
+	* errout.adb (Set_Qualification): Print all qualified names
+	when Error_Msg_Qual_For_Standard is set.
+	* sem_util.adb (Normalize_Actuals): Improve error message.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* sem_util.adb (Normalize_Actuals): Improve error message.
+
+2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+
+	* env.c (__gnat_setenv): Add __linux__ preprocessor macro
+	directive to the setenv block.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Check_Ghost_Equality_Op): Use Underlying_Type to
+	look through the private view before checking Is_Record_Type and
+	Is_Limited_Record.
+	* sem_ch3.adb (Process_Full_View): After completing the full view,
+	re-check any primitive equality operators on the private type
+	against SPARK RM 6.9(23) via Check_Ghost_Equality_Op.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch9.ads (Build_Task_Allocate_Block): Change return type.
+	* exp_ch9.adb (Build_Task_Allocate_Block): Likewise.  Build an
+	internal block entity instead of declaring an implicit label.
+	* exp_aggr.adb (Convert_Aggr_In_Allocator): Adjust to above change.
+	* exp_ch4.adb (Expand_N_Allocator): Likewise.
+	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Add default
+	value for Master_Actual parameter, change name of 4th parameter to
+	Chain_Actual and deal with them consistently.
+	(Make_Build_In_Place_Call_In_Allocator): Flatten block statement.
+	Adjust call to Add_Task_Actuals_To_Build_In_Place_Call.
+	(Make_Build_In_Place_Call_In_Anonymous_Context): Likewise.
+	(Make_Build_In_Place_Call_In_Assignment): Likewise.
+	(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
+	* exp_ch7.adb (Build_Cleanup_Statements): Minor tweak.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_aux.ads: Add note.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem.ads (Suppress_Stack_Entry): Move down Suppress component.
+	(Scope_Stack_Entry): Reorder components to eliminate holes.
+
+2026-06-02  Tom Tromey  <tromey@adacore.com>
+
+	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+	(GNATLLVM): Update debugging documentation.
+	* gnat_ugn.texi: Regenerate.
+
+2026-06-02  Bob Duff  <duff@adacore.com>
+
+	* sem_ch13.adb
+	(Insert_Aitem): Remove Ins_Node formal parameter.
+	(Analyze_One_Aspect): Likewise.
+	(Analyze_Aspect_Specifications): Remove Ins_Node local variable.
+	(Insert_After_Place): New function containing the
+	special case for Annotate.
+
+2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+
+	* doc/gnat_rm/implementation_defined_attributes.rst (Attribute_Ref):
+	New section based on comment in sem_attr.ads.
+	* gnat_rm.texi: Regenerate.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_util.adb, sem_util.ads (Partially_Visible_Subcomponent): Move
+	to right spot.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_aggr.adb (Build_Array_Aggr_Code): Adjust actual parameter in
+	the call to Build_Master_Entity.
+	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Likewise.
+	(Expand_N_Object_Declaration): Likewise.
+	(Expand_Previous_Access_Type): Likewise.
+	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context):
+	Likewise.
+	(Make_Build_In_Place_Iface_Call_In_Allocator): Likewise.
+	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context): Likewise.
+	* sem_ch3.adb (Access_Definition): Likewise.
+	(Access_Type_Declaration): Likewise.
+	* exp_ch9.ads (Build_Activation_Chain_Entity): Tweak description.
+	(Build_Master_Entity): Change parameter and tweak description.
+	* exp_ch9.adb (Build_Master_Entity): Change parameter and adjust.
+
+2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/124143
+	* libgnat/s-spsufi.ads (Finalize_And_Deallocate): Adjust comment.
+	* libgnat/s-spsufi.adb: Remove clause for Ada.Unchecked_Deallocation
+	(Finalize_And_Deallocate): Adjust and implement AI12-0331.
+	* libgnat/s-stposu.ads (Allocate_From_Subpool): Remove ??? comment.
+	(Deallocate_Subpool): Likewise.
+	(SP_Node): Delete.
+	(SP_Node_Ptr): Likewise.
+	(Root_Storage_Pool_With_Subpools): Adjust type of Subpools component
+	(Root_Subpool): Remove Node, add Prev and Next components.
+	(Detach): Adjust signature.
+	(Initialize): Delete.
+	(Initialize_Pool): Likewise.
+	* libgnat/s-stposu.adb (Allocate_Any_Controlled): Adjust.
+	(Attach): Reimplement.
+	(Detach): Likewise.
+	(Finalize_Pool): Loop over a simple doubly linked list.
+	(Initialize): Delete.
+	(Initialize_Pool): Likewise.
+	(Print_Pool): Adjust.
+	(Print_Subpool): Likewise.
+	(Set_Pool_Of_Subpool): Remove obsolete code.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_util.ads (Has_Private_Component): Rename into...
+	(Is_Incompletely_Defined): ...this.
+	* sem_util.adb (Has_Private_Component): Rename into...
+	(Is_Incompletely_Defined): ...this.
+	(Check_Fully_Declared): Adapt to above renaming.
+	* exp_ch3.adb (Freeze_Type): Likewise.
+	* freeze.adb (Check_And_Freeze_Type): Likewise.
+	* sem_aggr.adb (Array_Aggr_Subtype): Likewise.
+	* sem_ch12.adb (Instantiate_Type): Likewise.
+	* sem_ch13.adb (Rep_Item_Too_Early): Likewise.
+	* sem_ch3.adb (Access_Definition, Analyze_Full_Type_Declaration,
+	Analyze_Subtype_Declaration, Build_Derived_Access_Type,
+	Copy_And_Build, Complete_Private_Subtype, Constrain_Access,
+	Constrain_Array, Build_Constrained_Access_Type, Constrain_Concurrent,
+	Constrain_Corresponding_Record, Copy_Array_Subtype_Attributes,
+	Derived_Type_Declaration): Likewise.
+	* sem_ch6.adb (Create_Extra_Formals): Likewise.
+	* sem_res.adb (Make_Call_Into_Operator): Likewise.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* gen_il-gen-gen_entities.adb (Gen_Entities): Move
+	Is_Limited_Composite.
+	* einfo.ads (Is_Limited_Composite): Update documentation.
+
+2026-06-02  Viljar Indus  <indus@adacore.com>
+
+	* sem_prag.adb (Analyze_Abstract_State): make error checks
+	exclusive.
+
+2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+
+	* sem_util.ads, sem_util.adb (Private_Component): Rename into...
+	(Partially_Visible_Subcomponent): ...this.
+	* sem_ch3.adb (Analyze_Component_Declaration, Array_Type_Declaration):
+	Adapt to above renaming.
+	* sem_ch7.adb (Install_Composite_Operations): Likewise.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* gnathtml.pl: Reflow long line.
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index ffbd4b1fd557..b39125917b17 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,29 @@
+2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* ga68.texi (Worthy characters): Remove spurious @ entry in the
+	list of worthy characters.
+
+2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* ga68.vw (Modes and nests): Incorporate syntax from the RR
+	chapter 7.
+
+2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-parser-bottom-up.cc (recover_from_error): Use the output of
+	a68_phrase_to_text as format string so format tags are honored.
+
+2026-06-02  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-parser-modes.cc (WELL): Define.
+	(NO_YIN): Likewise.
+	(NO_YANG): Likewise.
+	(UNWELL): Likewise.
+	(is_well_formed): Discriminate reason for the given mode to not be
+	well formed.
+	(a68_make_moid_list): Emit note explaining why a mode is not well
+	formed.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* a68-imports-archive.cc (struct Archive_fl_header): Fix typos.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 107f8416b6a6..1df5f5d75335 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,19 @@
+2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+
+	* c-attribs.cc (handle_optimize_attribute):
+	Save the global target options before modifying
+	them. If the function with the optimize attribute
+	already has a target option node then restore those
+	target options as the global options, so that they
+	are used as the basis for any new optimization and
+	target options attached to the function.
+
+2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c/121911
+	* c-common.cc (c_common_nodes_and_builtins): Don't declare stack
+	protection guard here.
+
 2026-06-01  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/98539
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index a48f9e96afa5..f2b33d19fd18 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125252
+	* c-typeck.cc (ptr_to_tagged_member): Return type of member.
+	(c_type_canonical): Use incomplete type.
+
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/123569
+	* c-parser.cc (mark_exp_read_cond): New function.
+	(c_parser_unary_expression): Use mark_exp_read_cond.
+	(c_parser_postfix_expression_after_primary): Likewise.
+	* c-typeck.cc (build_unary_op): Remove dead code and
+	add checking assertion.
+
+2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c/121911
+	* c-decl.cc (push_file_scope): Add stack protection guard to
+	visible_builtins.
+
 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
 
 	* c-fold.cc (c_disable_warnings): Likewise.
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 970952006a21..62189efcfa7e 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,22 @@
+2026-06-02  Robert Dubner  <rdubner@symas.com>
+
+	* compare.cc (cobol_compare_relop): Rename the cobol_compare_relop
+	function.
+	(cobol_compare): Likewise.
+	* compare.h (cobol_compare_relop): Likewise.
+	(cobol_compare): Likewise.
+	* genapi.cc (parser_display): Refine the use of SYSPUNCH_e for
+	inserting debugging comments into the assembly language.
+	(parser_relop): Use "cobol_compare".
+	(handle_gg_trim): Break out SBC TRIM logic.
+	(parser_intrinsic_call_2): Likewise.
+	(parser_bsearch_when): Use "cobol_compare"
+	* genutil.cc (refer_is_super_clean): FldLiteralN is always "super
+	clean".
+	(is_pure_integer): Make binary_from_FldNumericBin5 "static bool".
+	(binary_from_FldLiteralN): New function.
+	(get_binary_value): Use the new function.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* compare.cc (alpha_compare): Fix typos.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5614f161175c..b32887ec9bbc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,66 @@
+2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125378
+	* tree.cc (build_min_non_dep_op_overload): Handle comparison
+	operator expressions rewritten from a <=> that contain an
+	integer promotion.
+
+2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125490
+	* parser.cc (cp_parser_constraint_expression): Pass
+	no_toplevel_fold_p=false instead of =true to
+	cp_parser_binary_expression.
+
+2026-06-03  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/107124
+	* cp-tree.h: Adjust comments to mention
+	maybe_build_nontype_implicit_conv instead of
+	maybe_convert_nontype_argument.
+	* pt.cc (maybe_convert_nontype_argument): Rename to...
+	(maybe_build_nontype_implicit_conv): ...this.
+	(convert_nontype_argument_maybe_dependent): New, factored
+	out of...
+	(convert_template_argument): ...here.
+	(unify) <case TEMPLATE_PARM_INDEX>: Call
+	convert_nontype_argument_maybe_dependent and return unify_invalid
+	if it failed.  Don't call strip_typedefs_expr.
+
+2026-06-03  Jason Merrill  <jason@redhat.com>
+
+	PR c++/124794
+	* parser.cc (cp_parser_splice_specifier): Use TYPE_BINFO (scope)
+	for not-derived case.
+	* search.cc (build_baselink): Assert that binfos aren't null.
+
+2026-06-03  feedable  <feedabl3@gmail.com>
+
+	PR c++/124794
+	PR c++/125069
+	* parser.cc (cp_parser_splice_specifier): Do not strip BASELINKs.
+	(cp_parser_splice_expression): Add parsing for member function
+	template specializations without the "template" keyword.
+	* pt.cc (tsubst_splice_expr): Handle TEMPLATE_ID_EXPR where the
+	template part is a SPLICE_EXPR.
+	(tsubst_expr): Defer to tsubst_splice_expr when the template part of
+	TEMPLATE_ID_EXPR is a SPLICE_EXPR.
+	* reflect.cc (check_splice_expr): Add handling for BASELINKs.
+
+2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c/121911
+	* decl.cc (cxx_init_decl_processing ): Declare stack protection
+	guard after calling c_common_nodes_and_builtins.
+
+2026-06-02  Peter Damianov  <peter0x44@disroot.org>
+
+	* class.cc (dump_vtable_entry): New function.
+	(dump_array): Use it.
+	(dump_class_hierarchy_r): Drop redundant literal 0x from
+	HOST_WIDE_INT_PRINT_HEX formatting.
+	(dump_vtable): Likewise.
+
 2026-06-01  Joe Natter  <johannes.natter@outlook.at>
 
 	PR c++/125422
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index bd59ba38da16..bcf5e0297d2e 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+
+	* d-attribs.cc (d_handle_optimize_attribute):
+	Save the global target options before modifying
+	them. If the function with the optimize attribute
+	already has a target option node then restore those
+	target options as the global options, so that they
+	are used as the basis for any new optimization and
+	target options attached to the function.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* d-attribs.cc (d_handle_alloc_size_attribute): Fix typos.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6eb5e12a5e8f..ed14567a7b14 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,42 @@
+2026-06-03  Henri Menke  <henri@henrimenke.de>
+
+	* gfortran.h (enum ext_attr_id_t): Add EXT_ATTR_INLINE and
+	EXT_ATTR_ALWAYS_INLINE at the end.  Document that new attributes
+	must be appended to preserve module compatibility.
+	* decl.cc (ext_attr_list): Add "inline" and "always_inline".
+	(gfc_match_gcc_attributes): Warn about and drop INLINE or
+	ALWAYS_INLINE when combined with NOINLINE on the same symbol.
+	* trans-decl.cc (build_function_decl): Handle EXT_ATTR_INLINE and
+	EXT_ATTR_ALWAYS_INLINE by setting DECL_DECLARED_INLINE_P, and
+	DECL_DISREGARD_INLINE_LIMITS for ALWAYS_INLINE.
+	* gfortran.texi (ATTRIBUTES directive): Document INLINE and
+	ALWAYS_INLINE.
+
+2026-06-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+	PR fortran/105594
+	* module.cc (gfc_use_module): Suppress bogus warning for a missing
+	ONLY clause on a submodule.
+
+2026-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125324
+	* gfortranspec.cc (lang_specific_driver): Also append -lpthread
+	when need_caf_shmem is set.
+
+2026-06-02  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/88632
+	PR fortran/104630
+	* module.cc (write_symtree): Do not filter out private symbols
+	when writing a submodule interface file (.smod).  Submodules are
+	descendants of their ancestor module and access private symbols
+	in the module's contains section via host association per
+	Fortran 2018 section 14.2.2.
+
 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/125527
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index bb9cfeb3065b..9a80c6142209 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,18 @@
+2026-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/125512
+	* gm2-compiler/P3Build.bnf (SubDesignator): Rewrite to
+	include spell checking.
+
+2026-06-02  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/125544
+	* gm2-libs-iso/Storage.def (REALLOCATE): Updated comment
+	describing new behavior.
+	* gm2-libs-iso/Storage.mod (REALLOCATE): Check addr
+	and call ALLOCATE if NIL else call lowerReallocate.
+	(lowerReallocate): New procedure.
+
 2026-05-19  Jakub Jelinek  <jakub@redhat.com>
 
 	PR other/125348
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a9f109382ad4..f788725d53b1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,251 @@
+2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	PR target/106895
+	* gcc.target/powerpc/pr106895-1.c: New test.
+	* gcc.target/powerpc/pr106895-2.c: New test.
+
+2026-06-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/125588
+	* gcc.dg/pr125588-1.c: New test.
+
+2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125378
+	* g++.dg/lookup/operator-8b.C: New test.
+	* g++.dg/lookup/operator-8c.C: New test.
+	* g++.dg/lookup/operator-9a.C: New test.
+	* g++.dg/lookup/operator-9b.C: New test.
+
+2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125490
+	* g++.dg/cpp2a/concepts-pr125490.C: New test.
+	* g++.dg/cpp2a/concepts-pr125490a.C: New test.
+
+2026-06-03  Henri Menke  <henri@henrimenke.de>
+
+	* gfortran.dg/always_inline_1.f90: New test.
+	* gfortran.dg/always_inline_2.f90: New test.
+	* gfortran.dg/inline_1.f90: New test.
+	* gfortran.dg/inline_2.f90: New test.
+
+2026-06-03  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+
+	PR tree-optimization/124405
+	* gcc.dg/tree-ssa/pr124405.c: New test.
+
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125252
+	* gcc.dg/pr125252.c
+
+2026-06-03  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/107124
+	* g++.dg/template/deduce11.C: New test.
+	* g++.dg/template/deduce12.C: New test.
+
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/123569
+	* gcc.dg/pr123569.c: New test.
+
+2026-06-03  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	* gcc.dg/tree-ssa/sccp-loop-phi.c: New test.
+	* gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c: New test.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/103221
+	* gcc.dg/tree-ssa/dse-points-to.c: Disable sccopy1.
+	* gcc.dg/tree-ssa/pr45397.c: Remove the xfail.
+	* gcc.dg/ubsan/pr81981.c: Swap around which one is xfailed.
+
+2026-06-03  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c: New test.
+
+2026-06-03  feedable  <feedabl3@gmail.com>
+
+	PR c++/124794
+	PR c++/125069
+	* g++.dg/reflect/member19.C: Enable tests.
+	* g++.dg/reflect/splice15.C: New test.
+	* g++.dg/reflect/splice16.C: New test.
+
+2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gcc.dg/rtl/x86_64/different-structs.c: Initialize CALL_INSN_ABI_ID.
+	* selftests/x86_64/call-insn.rtl: Likewise.
+
+2026-06-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+	PR fortran/105594
+	* gfortran.dg/pr105594.f90: New test.
+
+2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+
+	* gcc.target/aarch64/sme/inline-asm.c: New test.
+
+2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125579
+	* gcc.dg/pr125579.c: New test.
+
+2026-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/125581
+	* gnat.dg/atomic9.adb (NVIC_STIR): Add alignment clause.
+
+2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125431
+	* gfortran.dg/vect/pr125431.f90: New test.
+
+2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125509
+	* gcc.dg/vect/pr125509.c: New test.
+
+2026-06-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* g++.dg/modules/pr120458-1_a.C: Skip on non-UCN targets.
+	* g++.dg/modules/pr120458-2_a.C: Likewise.
+
+2026-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR modula2/125512
+	* gm2.dg/spell/iso/fail/badmodule.mod: New test.
+	* gm2.dg/spell/iso/fail/badrecord.mod: New test.
+	* gm2.dg/spell/iso/fail/color.def: New test.
+
+2026-06-03  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125477
+	* gcc.dg/torture/pr125477.c: New testcase.
+
+2026-06-03  Jin Ma  <jinma@linux.alibaba.com>
+
+	PR target/111037
+	PR target/113248
+	* gcc.target/riscv/rvv/vsetvl/pr111037-1.c: Update vsetvl
+	patterns to match post-reorder asm sequence.
+	* gcc.target/riscv/rvv/vsetvl/pr111037-4.c: Likewise.
+	* gcc.target/riscv/rvv/vsetvl/pr113248.c: Likewise.
+
+2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* gcc.dg/tree-ssa/backprop-7.c: New test.
+
+2026-06-02  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/compile/malformed-mode-1.a68: New test.
+	* algol68/compile/malformed-mode-2.a68: Likewise.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125545
+	* gcc.dg/torture/pr125545.c: New testcase.
+
+2026-06-02  Lino Hsing-Yu Peng  <linopeng@andestech.com>
+
+	* gcc.target/riscv/arch-61.c: New test.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125553
+	* gcc.dg/torture/pr125553.c: New testcase.
+
+2026-06-02  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+
+	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c:
+	New test.
+	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c:
+	New test.
+	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c:
+	New test.
+	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c:
+	New test.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* gcc.dg/torture/pr125250.c: Declare g0 as _Bool.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125502
+	* gcc.dg/torture/pr125502.c: New testcase.
+
+2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+
+	* gcc.target/powerpc/pr125327.c: New test.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120702
+	* gcc.dg/tree-ssa/pr120702.c: New testcase.
+
+2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/125517
+	* gcc.dg/builtin-bitreverse-9.c: New test.
+
+2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* gfortran.dg/gomp/allocate-6.f90: Adjust dg-error wording after
+	recent spelling fixes.
+	* gfortran.dg/gomp/allocate-7.f90: Likewise.
+	* gfortran.dg/gomp/allocate-14.f90: Likewise.
+	* gcc.target/sparc/struct-ret-check-1.c: Fix comment spelling,
+	specificed -> specified.
+
+2026-06-02  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/88632
+	PR fortran/104630
+	* gfortran.dg/submodule_35.f90: New test.
+	* gfortran.dg/submodule_35_aux.f90: Submodule and program for
+	for the new test.
+	Assisted by: Claude Sonnet 4.6
+
+2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c/121911
+	* gcc.dg/Wnested-externs-1.c: Add -mstack-protector-guard=global
+	for x86.
+
+2026-06-02  Tianle Shi  <shitianle@hygon.cn>
+
+	* gcc.target/i386/avx512_avoid_vec_perm-1.c: New test.
+	* gcc.target/i386/avx512_avoid_vec_perm-2.c: New test.
+	* gcc.target/i386/avx512_avoid_vec_perm-3.c: New test.
+
 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/125527
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index f840ba14760d..bf487ca37e55 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-02  Ian Lance Taylor  <iant@golang.org>
+
+	* elf.c (elf_zstd_decompress_frame): Support a compressed block
+	with no sequences, only literals.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* allocfail.sh: Fix typos.
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 26bfbc4b1f51..6edcc6375131 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-02  Robert Dubner  <rdubner@symas.com>
+
+	* intrinsic.cc (__gg__trim): Eliminate useless comment.
+	(__gg__trim_1): New function.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* README: Reflow long line.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index e887c14b3af8..c25009c25344 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* oacc-parallel.c (GOACC_parallel_keyed): Use gomp_alloca instead
+	of alloca.
+	* target.c (GOMP_target): Likewise.
+	(GOMP_target_ext): Likewise.
+
 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* config/gcn/simple-bar.h: Fix typos.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 0fdc7f57e007..809294081c78 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* sanitizer_common/sanitizer_platform_limits_solaris.cpp:
+	Cherry-pick llvm-project revision
+	0e92b557a78eddc7493ade4cfc0a3b6b93ee61cf.
+
 2026-04-29  Jakub Jelinek  <jakub@redhat.com>
 
 	* sanitizer_common/sanitizer_platform_limits_posix.cpp: Cherry picked
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d1953b6a282e..6ee4bc4b3b79 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,162 @@
+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.

From gccadmin@gcc.gnu.org  Thu Jun  4 08:22:27 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu,  4 Jun 2026 08:22:27 +0000 (GMT)
Subject: [gcc r15-11252] Daily bump.
Message-ID: <20260604082227.1B7894BA2E19@sourceware.org>

https://gcc.gnu.org/g:562e19a59aeb9673febdc93d470e70bf5093f835

commit r15-11252-g562e19a59aeb9673febdc93d470e70bf5093f835
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 4 08:21:57 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 141 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/c/ChangeLog         |   6 +++
 gcc/cp/ChangeLog        |   9 ++++
 gcc/testsuite/ChangeLog | 136 ++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  30 +++++++++++
 6 files changed, 323 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bf7d0f161c07..c53661ed6944 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,144 @@
+2026-06-03  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-05-11  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* tree-ssa-loop-im.cc (execute_sm): For modes that cannot
+	transfer bits, _Bool and bitfield accesses force the
+	multi-threaded model.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	Backported from master:
+	2026-02-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124086
+	* tree-complex.cc (extract_component): Extend the check
+	for ssa names for VCE to include invariants.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	Backported from master:
+	2026-02-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/121661
+	* tree-complex.cc (extract_component): Create gimple
+	assign statements directly rather than call force_gimple_operand_gsi.
+
+2026-06-03  Andrew MacLeod  <amacleod@redhat.com>
+
+	Backported from master:
+	2025-10-01  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/120560
+	* vr-values.cc (range_from_loop_direction): Use wi::ge_p rather
+	than wi::gt_p.
+
+2026-06-03  Jan Hubicka  <hubicka@ucw.cz>
+
+	Backported from master:
+	2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* ipa-polymorphic-call.cc (polymorphic_ctor_dtor_p): Remove
+	check for pure/const flags
+
+2026-06-03  Jan Hubicka  <hubicka@ucw.cz>
+
+	Backported from master:
+	2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* ipa-devirt.cc (odr_type_p): Add no_derived_construction_vtables
+	(odr_types_ptr): Move ahead in file.
+	(odr_types): Move ahead in file.
+	(anonymous_construction_vtable_p): New function.
+	(mark_derived_construction_vtables): New function.
+	(construction_vtable_hook): New function.
+	(type_possibly_instantiated_p): Watch for construction vtables.
+
+2026-06-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	Backported from master:
+	2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	* config/aarch64/tuning_models/olympus.h (olympus_scalar_issue_info,
+	olympus_advsimd_issue_info, olympus_sve_issue_info): Set
+	loads_stores_per_cycle to 6.
+
+2026-06-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	Backported from master:
+	2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/122827
+	* config/aarch64/aarch64.cc (aarch64_hard_regno_call_part_clobbered):
+	For SVE modes use BYTES_PER_SVE_VECTOR for the per-register size
+	rather than GET_MODE_SIZE.
+	* config/aarch64/aarch64-early-ra.cc (early_ra::get_allocno_subgroup):
+	Classify any SVE mode as FPR_Z.
+
+2026-06-02  Roger Sayle  <roger@nextmovesoftware.com>
+
+	Backported from master:
+	2025-10-15  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR rtl-optimization/122266
+	* combine.cc (struct reg_stat_type): Change types of sign_bit_copies
+	and last_set_sign_bit_copies to unsigned short, to avoid overflows
+	on TImode (and wider) values.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Revert:
+	2025-06-06  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120003
+	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+	Allow block re-use but do not enlarge the path beyond such a
+	re-use.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-05-04  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/125146
+	* gimple-fold.cc (fold_stmt_1): Discard stmts in seq
+	after failed gimple_simplify as well.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125025
+	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Avoid
+	negation of most negative signed integer.
+	(number_of_iterations_lt): Likewise.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125019
+	* tree-vect-loop.cc (vectorizable_recurr): Properly guard
+	against hitting last stmt when searching for the insertion
+	place.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124868
+	* gimple-ssa-isolate-paths.cc (handle_return_addr_local_phi_arg):
+	Do not diagnose returns in blocks not dominated by the PHI.
+	(find_implicit_erroneous_behavior): Do two sweeps over PHIs,
+	first for NULL dereferences and then for local address returns.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 98ddba91d55c..cf4a41146e2d 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260602
+20260604
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index ebde50a4937b..895c50d8b11f 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125252
+	* c-typeck.cc (ptr_to_tagged_member): Return type of member.
+	(c_type_canonical): Use incomplete type.
+
 2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
 
 	PR c/124532
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2f125dda4ee4..98d9c826fb3a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-03  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2025-10-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/122163
+	* expr.cc (mark_use): When processing a reference, always return
+	an lvalue reference when !rvalue_p.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 429b93724191..668dd6e0a3ee 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,139 @@
+2026-06-03  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125252
+	* gcc.dg/pr125252.c
+
+2026-06-03  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* gcc.dg/torture/pr125250.c: Declare g0 as _Bool.
+
+2026-06-03  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-05-11  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125250
+	* gcc.dg/torture/pr125250.c: New testcase.
+
+2026-06-03  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	Backported from master:
+	2025-10-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+
+	PR c++/122163
+	* g++.dg/cpp0x/lambda/lambda-ref3.C: New test.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	Backported from master:
+	2026-02-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* c-c++-common/torture/pr124086-1.c: Only enable
+	for power of 2 long double.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	Backported from master:
+	2026-02-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/124086
+	* c-c++-common/torture/pr124086-1.c: New test.
+	* g++.dg/torture/pr124086-1.C: New test.
+
+2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	Backported from master:
+	2026-02-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR middle-end/121661
+	* gcc.dg/torture/pr121661-1.c: New test.
+
+2026-06-03  Andrew MacLeod  <amacleod@redhat.com>
+
+	Backported from master:
+	2025-10-01  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/120560
+	* gcc.dg/pr120560.c: New.
+
+2026-06-03  Jan Hubicka  <hubicka@ucw.cz>
+
+	Backported from master:
+	2026-04-17  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR ipa/120098
+	* g++.dg/torture/pr120098.C: New test.
+
+2026-06-03  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	Backported from master:
+	2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/122827
+	* gcc.target/aarch64/sve/pr122827.c: New test.
+
+2026-06-02  Roger Sayle  <roger@nextmovesoftware.com>
+
+	Backported from master:
+	2025-10-15  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR rtl-optimization/122266
+	* gcc.target/i386/pr122266.c: New test case.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-05-04  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125153
+	* gcc.dg/torture/pr125153.c: New testcase.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Revert:
+	2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120003
+	* gcc.dg/tree-ssa/ssa-thread-23.c: New testcase.
+	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Revert:
+	2025-06-06  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/120003
+	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust aarch64 expected
+	thread2 number of threads.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125025
+	* gcc.dg/torture/pr125025.c: New testcase.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-27  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125019
+	* gcc.dg/pr125019.c: New testcase.
+
+2026-06-02  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-04-14  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/124868
+	* gcc.dg/torture/pr124868.c: New testcase.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c1020391881b..e064ecec90b6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,33 @@
+2026-06-03  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-06-02  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120386
+	* include/bits/ranges_algo.h (__unique_copy_fn): Reorder
+	arguments for third case to match the first two cases.
+	* include/bits/stl_algo.h (__unique_copy): Replace three
+	overloads with two, depending only on the iterator category of
+	the input range.  Dispatch to __unique_copy_1 for the
+	non-forward case.
+	(__unique_copy_1): New overloads for the case where the input
+	range uses non-forward iterators.
+	(unique_copy): Only pass the input range category to
+	__unique_copy.
+	* testsuite/25_algorithms/unique_copy/lwg2439.cc: New test.
+
+2026-06-03  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-05-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/120384
+	* include/bits/stl_algo.h (__unique_copy): Remove all
+	_BinaryPredicateConcept concept checks.
+	(unique_copy): Check _BinaryPredicateConcept in overload that
+	takes a predicate.
+	* testsuite/25_algorithms/unique_copy/120384.cc: New test.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:

From redi@gcc.gnu.org  Thu Jun  4 09:59:11 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 09:59:11 +0000 (GMT)
Subject: [gcc r15-11253] libstdc++: Avoid incrementing input iterators with
 std::prev [PR122224]
Message-ID: <20260604095911.540084BA5439@sourceware.org>

https://gcc.gnu.org/g:bca9b252b872cf76dbcc735cb2cdf34bc2e76b22

commit r15-11253-gbca9b252b872cf76dbcc735cb2cdf34bc2e76b22
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Oct 21 17:06:49 2025 +0100

    libstdc++: Avoid incrementing input iterators with std::prev [PR122224]
    
    As explained in PR libstdc++/122224 we do not make it ill-formed to call
    std::prev with a non-Cpp17BidirectionalIterator. Instead we just use a
    runtime assertion to check the std::advance precondition that the
    distance is not negative.
    
    This allows us to support std::prev on types which model the C++20
    std::bidirectional_iterator concept but do not meet the
    Cpp17BidirectionalIterator requirements, e.g. iota_view's iterators.
    
    It also allows us to support std::prev(iter, -1) which is admittedly
    weird, but there's no reason it shouldn't be equivalent to
    std::next(iter), which is perfectly fine to use on non-bidirectional
    iterators. In other words, "reverse decrementing" is valid for
    non-bidirectional iterators.
    
    However, the current implementation of std::advance for
    non-bidirectional iterators uses a loop that does `while (n--) ++i;`
    which assumes that n is not negative and so will eventually reach zero.
    When the assertion for the precondition is not enabled, incrementing the
    iterator while n is non-zero means that using std::prev(iter) or
    std::next(iter, -1) on a non-bidirectional iterator will keep
    incrementing the iterator until n reaches INT_MIN, overflows, and then
    keeps decrementing until it eventually reaches zero. Incrementing most
    iterators that many times will cause memory safety errors long before
    the integer reaches zero and terminates the loop.
    
    This commit changes the loop to use `while (n-- > 0)` which means that
    the loop doesn't execute at all if a negative n is used. We still
    consider such calls to be erroneous, but when the precondition isn't
    checked by an assertion, the function now has no effects. The undefined
    behaviour resulting from incrementing the iterator is prevented.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/122224
            * include/bits/stl_iterator_base_funcs.h (prev): Compare
            distance as n > 0 instead of n != 0.
            * testsuite/24_iterators/range_operations/122224.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 02797a4eeb9453a1c640171d00e52837c5b3de42)

Diff:
---
 .../include/bits/stl_iterator_base_funcs.h         |   2 +-
 .../24_iterators/range_operations/122224.cc        | 100 +++++++++++++++++++++
 2 files changed, 101 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
index 637159fffc83..dd1c3e7e0732 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
@@ -161,7 +161,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
       // concept requirements
       __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
       __glibcxx_assert(__n >= 0);
-      while (__n--)
+      while (__n-- > 0)
 	++__i;
     }
 
diff --git a/libstdc++-v3/testsuite/24_iterators/range_operations/122224.cc b/libstdc++-v3/testsuite/24_iterators/range_operations/122224.cc
new file mode 100644
index 000000000000..62bea92481c7
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/range_operations/122224.cc
@@ -0,0 +1,100 @@
+// { dg-do run { target c++11 } }
+// { dg-add-options no_pch }
+
+// Undefine these if present in runtest flags.
+#undef _GLIBCXX_ASSERTIONS
+#undef _GLIBCXX_DEBUG
+
+// Prevent assertions from being automatically enabled at -O0
+#define _GLIBCXX_NO_ASSERTIONS
+
+#include <iterator>
+#include <testsuite_iterators.h>
+#include <testsuite_hooks.h>
+
+template<typename Container>
+void
+test_advance()
+{
+  int a[] = { 1, 2, 3 };
+  Container c(a);
+  auto iter = c.begin();
+
+  // This call violates the precondition for std::advance,
+  // but with assertions disabled we do not diagnose it.
+  std::advance(iter, -1);
+
+  // However we do guarantee that erroneously decrementing
+  // an input iterator is a no-op and does no harm.
+  VERIFY( *iter == 1 );
+
+  ++iter;
+  std::advance(iter, -999);
+  VERIFY( *iter == 2 );
+
+  std::advance(iter, 0);
+  VERIFY( *iter == 2 );
+  std::advance(iter, 1);
+  VERIFY( *iter == 3 );
+}
+
+template<typename Container>
+void
+test_prev()
+{
+  int a[] = { 1, 2, 3 };
+  Container c(a);
+  auto iter = c.begin();
+
+  // This calls std::advance(iter, -1), which violates the precondition.
+  iter = std::prev(iter);
+
+  // As above, we turn the std::prev call into a no-op.
+  VERIFY( *iter == 1 );
+
+  ++iter;
+  iter = std::prev(iter, 999);
+  VERIFY( *iter == 2 );
+
+  iter = std::prev(iter, 0);
+  VERIFY( *iter == 2 );
+  iter = std::prev(iter, -1);
+  VERIFY( *iter == 3 );
+}
+
+template<typename Container>
+void
+test_next()
+{
+  int a[] = { 1, 2, 3 };
+  Container c(a);
+  auto iter = c.begin();
+
+  // This calls std::advance(iter, -1), which violates the precondition.
+  iter = std::next(iter, -1);
+
+  // As above, we turn the std::prev call into a no-op.
+  VERIFY( *iter == 1 );
+
+  ++iter;
+  iter = std::next(iter, -999);
+  VERIFY( *iter == 2 );
+
+  iter = std::next(iter, 0);
+  VERIFY( *iter == 2 );
+  iter = std::next(iter);
+  VERIFY( *iter == 3 );
+}
+
+int main()
+{
+  using InputContainer = __gnu_test::input_container<int>;
+  test_advance<InputContainer>();
+  test_prev<InputContainer>();
+  test_next<InputContainer>();
+
+  using ForwardContainer = __gnu_test::forward_container<int>;
+  test_advance<ForwardContainer>();
+  test_prev<ForwardContainer>();
+  test_next<ForwardContainer>();
+}

From redi@gcc.gnu.org  Thu Jun  4 12:56:00 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 12:56:00 +0000 (GMT)
Subject: [gcc r17-1340] libstdc++: Remove trailing whitespace in
 debug/safe_iterator.h
Message-ID: <20260604125600.2ABF74BAD17E@sourceware.org>

https://gcc.gnu.org/g:a0d353d21d2256c1f32ead923c10d7a75efd8d4b

commit r17-1340-ga0d353d21d2256c1f32ead923c10d7a75efd8d4b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jun 4 13:54:02 2026 +0100

    libstdc++: Remove trailing whitespace in debug/safe_iterator.h
    
    libstdc++-v3/ChangeLog:
    
            * include/debug/safe_iterator.h: Remove trailing whitespace.

Diff:
---
 libstdc++-v3/include/debug/safe_iterator.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 4da3d2bb3d46..77e45ae073eb 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -1149,7 +1149,7 @@ namespace __gnu_debug
     inline bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
 		  _Size __n)
-    { 
+    {
       if (std::__is_constant_evaluated())
 	return true;
 
@@ -1166,7 +1166,7 @@ namespace __gnu_debug
     {
       if (std::__is_constant_evaluated())
 	return true;
-    
+
       return __it._M_can_advance(__dist, __way);
     }

From redi@gcc.gnu.org  Thu Jun  4 12:56:36 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 12:56:36 +0000 (GMT)
Subject: [gcc r16-9053] libstdc++: Remove trailing whitespace in
 debug/safe_iterator.h
Message-ID: <20260604125636.639D94BAE7D3@sourceware.org>

https://gcc.gnu.org/g:e76b9d0fd2c5cae4b1b34941c41d42848500c913

commit r16-9053-ge76b9d0fd2c5cae4b1b34941c41d42848500c913
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jun 4 13:54:02 2026 +0100

    libstdc++: Remove trailing whitespace in debug/safe_iterator.h
    
    libstdc++-v3/ChangeLog:
    
            * include/debug/safe_iterator.h: Remove trailing whitespace.
    
    (cherry picked from commit a0d353d21d2256c1f32ead923c10d7a75efd8d4b)

Diff:
---
 libstdc++-v3/include/debug/safe_iterator.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 4da3d2bb3d46..77e45ae073eb 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -1149,7 +1149,7 @@ namespace __gnu_debug
     inline bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
 		  _Size __n)
-    { 
+    {
       if (std::__is_constant_evaluated())
 	return true;
 
@@ -1166,7 +1166,7 @@ namespace __gnu_debug
     {
       if (std::__is_constant_evaluated())
 	return true;
-    
+
       return __it._M_can_advance(__dist, __way);
     }

From ppalka@gcc.gnu.org  Thu Jun  4 14:28:29 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu,  4 Jun 2026 14:28:29 +0000 (GMT)
Subject: [gcc r16-9054] libstdc++: Fix suboptimal complexity of
 flat_map::_M_insert
Message-ID: <20260604142829.B23804BA2E09@sourceware.org>

https://gcc.gnu.org/g:a44795c005db8f55dc0272e97e688642477f3034

commit r16-9054-ga44795c005db8f55dc0272e97e688642477f3034
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:27 2026 -0400

    libstdc++: Fix suboptimal complexity of flat_map::_M_insert
    
    Ever since r16-1742 ranges::inplace_merge is now correctly C++20 iterator
    aware which allows us to idiomatically implement this helper with the
    correct optimal complexity N + M log M instead of N log N.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 457c7bb2d3dc605738f044c02c66512770cb7d10)

Diff:
---
 libstdc++-v3/include/std/flat_map | 32 +++++++++-----------------------
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index 18f06e6bdaf8..a51c6625d54a 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -602,13 +602,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Iter, typename _Sent>
 	_GLIBCXX26_CONSTEXPR
 	void
-	_M_insert(_Iter __first, _Sent __last)
+	_M_insert(_Iter __first, _Sent __last, bool __is_sorted = false)
 	{
-	  // FIXME: This implementation fails its complexity requirements.
-	  // We can't idiomatically implement an efficient version (as in the
-	  // disabled code) until ranges::inplace_merge is fixed to dispatch
-	  // on iterator concept instead of iterator category.
-#if 0
 	  auto __guard = _M_make_clear_guard();
 	  auto __n = size();
 	  for (; __first != __last; ++__first)
@@ -618,22 +613,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      _M_cont.values.emplace_back(std::move(__value.second));
 	    }
 	  auto __zv = views::zip(_M_cont.keys, _M_cont.values);
-	  ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
-	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(), value_comp());
+	  if (__is_sorted)
+	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__zv.begin() + __n, __zv.end(),
+						    value_comp()));
+	  else
+	    ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
+	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(),
+				value_comp());
 	  if constexpr (!_Multi)
 	    _M_unique();
-	  __guard._M_cont = nullptr;
-#else
-	  auto __guard = _M_make_clear_guard();
-	  for (; __first != __last; ++__first)
-	    {
-	      value_type __value = *__first;
-	      _M_cont.keys.emplace_back(std::move(__value.first));
-	      _M_cont.values.emplace_back(std::move(__value.second));
-	    }
-	  _M_sort_uniq();
 	  __guard._M_disable();
-#endif
 	}
 
     public:
@@ -647,10 +636,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	_GLIBCXX26_CONSTEXPR
 	void
 	insert(__sorted_t, _InputIterator __first, _InputIterator __last)
-	{
-	  // FIXME: This implementation fails its complexity requirements; see above.
-	  insert(std::move(__first), std::move(__last));
-	}
+	{ _M_insert(std::move(__first), std::move(__last), true); }
 
       template<__detail::__container_compatible_range<value_type> _Rg>
 	_GLIBCXX26_CONSTEXPR

From ppalka@gcc.gnu.org  Thu Jun  4 14:28:34 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu,  4 Jun 2026 14:28:34 +0000 (GMT)
Subject: [gcc r16-9055] libstdc++: Implement P3567R2 flat_meow fixes
Message-ID: <20260604142834.E019D4BAE7CA@sourceware.org>

https://gcc.gnu.org/g:6d39e1b4e860ab2b98375857635a5176f6d224cc

commit r16-9055-g6d39e1b4e860ab2b98375857635a5176f6d224cc
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:29 2026 -0400

    libstdc++: Implement P3567R2 flat_meow fixes
    
    This implements the changes in sections 5, 6 and 8 of P3567R2; the other
    changes (in section 4 and 7) are effectively already implemented.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit f46eccc9409136831225e30017a1d8ba6654a9b9)

Diff:
---
 libstdc++-v3/include/bits/version.def              |   9 +-
 libstdc++-v3/include/bits/version.h                |   8 +-
 libstdc++-v3/include/std/flat_map                  |  54 +++++++++--
 libstdc++-v3/include/std/flat_set                  |  69 ++++++++++++--
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 104 ++++++++++++++++++++-
 .../testsuite/23_containers/flat_multimap/1.cc     | 102 ++++++++++++++++++++
 .../testsuite/23_containers/flat_multiset/1.cc     |  94 +++++++++++++++++++
 libstdc++-v3/testsuite/23_containers/flat_set/1.cc |  96 ++++++++++++++++++-
 8 files changed, 513 insertions(+), 23 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 4db17a6d98c7..276bd3b9057a 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -1898,16 +1898,21 @@ ftms = {
 
 ftms = {
   name = flat_map;
+  // 202207 P0429R9 A Standard flat_map
+  // 202511 P3567R2 flat_meow Fixes
   values = {
-    v = 202207;
+    v = 202511; // P3567R2 applied as DR for C++23
     cxxmin = 23;
   };
 };
 
 ftms = {
   name = flat_set;
+  // 202207 P1222R4 A Standard flat_set
+  //        LWG3751 Missing feature macro for flat_set
+  // 202511 P3567R2 flat_meow Fixes
   values = {
-    v = 202207;
+    v = 202511; // P3567R2 applied as DR for C++23
     cxxmin = 23;
   };
 };
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 62bc83f7ea12..5337ab79b38d 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2108,9 +2108,9 @@
 
 #if !defined(__cpp_lib_flat_map)
 # if (__cplusplus >= 202100L)
-#  define __glibcxx_flat_map 202207L
+#  define __glibcxx_flat_map 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
-#   define __cpp_lib_flat_map 202207L
+#   define __cpp_lib_flat_map 202511L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_flat_map) */
@@ -2118,9 +2118,9 @@
 
 #if !defined(__cpp_lib_flat_set)
 # if (__cplusplus >= 202100L)
-#  define __glibcxx_flat_set 202207L
+#  define __glibcxx_flat_set 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
-#   define __cpp_lib_flat_set 202207L
+#   define __cpp_lib_flat_set 202511L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_flat_set) */
diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index a51c6625d54a..f06c75a16f65 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -74,9 +74,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
       static_assert(is_same_v<_Tp, typename _MappedContainer::value_type>);
 
-      static_assert(is_nothrow_swappable_v<_KeyContainer>);
-      static_assert(is_nothrow_swappable_v<_MappedContainer>);
-
       using _Derived = __conditional_t<_Multi,
 				       flat_multimap<_Key, _Tp, _Compare,
 						     _KeyContainer, _MappedContainer>,
@@ -395,6 +392,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _Flat_map_impl(__s, __il.begin(), __il.end(), __comp, __a)
 	{ }
 
+      _Flat_map_impl(const _Flat_map_impl&) = default;
+      _Flat_map_impl& operator=(const _Flat_map_impl&) = default;
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_map_impl(_Flat_map_impl&& __other)
+      noexcept(is_nothrow_move_constructible_v<containers>
+	       && is_nothrow_move_constructible_v<key_compare>)
+#if __cpp_exceptions
+      try
+#endif
+      : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+      { __other.clear(); }
+#if __cpp_exceptions
+      catch (...)
+      { __other.clear(); }
+#endif
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_map_impl&
+      operator=(_Flat_map_impl&& __other)
+      noexcept(is_nothrow_move_assignable_v<containers>
+	       && is_nothrow_move_assignable_v<key_compare>)
+      {
+	auto __guard = _M_make_clear_guard();
+	auto __guard_other = _ClearGuard{__other._M_cont};
+	_M_cont = std::move(__other._M_cont);
+	_M_comp = std::move(__other._M_comp);
+	__guard._M_disable();
+	// __guard_other._M_disable is deliberately not called.
+	return *this;
+      }
+
       _GLIBCXX26_CONSTEXPR
       _Derived&
       operator=(initializer_list<value_type> __il)
@@ -644,6 +673,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	insert_range(_Rg&& __rg)
 	{ _M_insert(ranges::begin(__rg), ranges::end(__rg)); }
 
+      template<__detail::__container_compatible_range<value_type> _Rg>
+	_GLIBCXX26_CONSTEXPR
+	void
+	insert_range(__sorted_t, _Rg&& __rg)
+	{ _M_insert(ranges::begin(__rg), ranges::end(__rg), true); }
+
       _GLIBCXX26_CONSTEXPR
       void
       insert(initializer_list<value_type> __il)
@@ -728,11 +763,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       _GLIBCXX26_CONSTEXPR
       void
-      swap(_Derived& __y) noexcept
+      swap(_Derived& __y)
+      noexcept(is_nothrow_swappable_v<key_container_type>
+	       && is_nothrow_swappable_v<mapped_container_type>
+	       && is_nothrow_swappable_v<key_compare>)
       {
-	ranges::swap(_M_comp, __y._M_comp);
+	auto __guard = _M_make_clear_guard();
+	auto __guard_y = _ClearGuard{__y._M_cont};
 	ranges::swap(_M_cont.keys, __y._M_cont.keys);
 	ranges::swap(_M_cont.values, __y._M_cont.values);
+	ranges::swap(_M_comp, __y._M_comp);
+	__guard._M_disable();
+	__guard_y._M_disable();
       }
 
       _GLIBCXX26_CONSTEXPR
@@ -974,7 +1016,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
 
       friend _GLIBCXX26_CONSTEXPR void
-      swap(_Derived& __x, _Derived& __y) noexcept
+      swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
       { return __x.swap(__y); }
 
       template<typename _Predicate>
diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index 286290896ae0..e92559949ebb 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -71,7 +71,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     class _Flat_set_impl
     {
       static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
-      static_assert(is_nothrow_swappable_v<_KeyContainer>);
 
       using _Derived = __conditional_t<_Multi,
 				       flat_multiset<_Key, _Compare, _KeyContainer>,
@@ -324,6 +323,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _Flat_set_impl(__s, __il.begin(), __il.end(), __comp, __a)
 	{ }
 
+      _Flat_set_impl(const _Flat_set_impl&) = default;
+      _Flat_set_impl& operator=(const _Flat_set_impl&) = default;
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_set_impl(_Flat_set_impl&& __other)
+      noexcept(is_nothrow_move_constructible_v<container_type>
+	       && is_nothrow_move_constructible_v<key_compare>)
+#if __cpp_exceptions
+      try
+#endif
+      : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+      { __other.clear(); }
+#if __cpp_exceptions
+      catch (...)
+      { __other.clear(); }
+#endif
+
+      _GLIBCXX26_CONSTEXPR
+      _Flat_set_impl&
+      operator=(_Flat_set_impl&& __other)
+      noexcept(is_nothrow_move_assignable_v<container_type>
+	       && is_nothrow_move_assignable_v<key_compare>)
+      {
+	auto __guard = _M_make_clear_guard();
+	auto __guard_other = _ClearGuard{__other._M_cont};
+	_M_cont = std::move(__other._M_cont);
+	_M_comp = std::move(__other._M_comp);
+	__guard._M_disable();
+	// __guard_other._M_disable is deliberately not called.
+	return *this;
+      }
+
       _GLIBCXX26_CONSTEXPR
       _Derived&
       operator=(initializer_list<value_type> __il)
@@ -540,10 +571,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __guard._M_disable();
 	}
 
-      template<__detail::__container_compatible_range<value_type> _Rg>
+      template<typename _Rg>
 	_GLIBCXX26_CONSTEXPR
 	void
-	insert_range(_Rg&& __rg)
+	_M_insert_range(_Rg&& __rg, bool __is_sorted = false)
 	{
 	  auto __guard = _M_make_clear_guard();
 	  typename container_type::iterator __it;
@@ -561,13 +592,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		_M_cont.emplace_back(*__first);
 	      __it = _M_cont.begin() + __n;
 	    }
-	  std::sort(__it, _M_cont.end(), _M_comp);
+	  if (__is_sorted)
+	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__it, _M_cont.end(), _M_comp));
+	  else
+	    std::sort(__it, _M_cont.end(), _M_comp);
 	  std::inplace_merge(_M_cont.begin(), __it, _M_cont.end(), _M_comp);
 	  if constexpr (!_Multi)
 	    _M_unique();
 	  __guard._M_disable();
 	}
 
+    template<__detail::__container_compatible_range<value_type> _Rg>
+      _GLIBCXX26_CONSTEXPR
+      void
+      insert_range(_Rg&& __rg)
+      { _M_insert_range(std::forward<_Rg>(__rg)); }
+
+    template<__detail::__container_compatible_range<value_type> _Rg>
+      _GLIBCXX26_CONSTEXPR
+      void
+      insert_range(__sorted_t, _Rg&& __rg)
+      { _M_insert_range(std::forward<_Rg>(__rg), true); }
+
       _GLIBCXX26_CONSTEXPR
       void
       insert(initializer_list<value_type> __il)
@@ -628,11 +674,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       _GLIBCXX26_CONSTEXPR
       void
-      swap(_Derived& __x) noexcept
+      swap(_Derived& __y)
+      noexcept(is_nothrow_swappable_v<container_type>
+	       && is_nothrow_swappable_v<key_compare>)
       {
-	using std::swap;
-	swap(_M_cont, __x._M_cont);
-	swap(_M_comp, __x._M_comp);
+	auto __guard = _M_make_clear_guard();
+	auto __guard_y = _ClearGuard{__y._M_cont};
+	ranges::swap(_M_comp, __y._M_comp);
+	ranges::swap(_M_cont, __y._M_cont);
+	__guard._M_disable();
+	__guard_y._M_disable();
       }
 
       _GLIBCXX26_CONSTEXPR
@@ -830,7 +881,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
 
       friend _GLIBCXX26_CONSTEXPR void
-      swap(_Derived& __x, _Derived& __y) noexcept
+      swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
       { return __x.swap(__y); }
 
       template<typename _Predicate>
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 1cb088f511eb..7e22e0366ec2 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -3,7 +3,7 @@
 
 #include <flat_map>
 
-#if __cpp_lib_flat_map != 202207L
+#if __cpp_lib_flat_map != 202511L
 # error "Feature-test macro __cpp_lib_flat_map has wrong value in <flat_map>"
 #endif
 
@@ -299,6 +299,103 @@ test10()
   VERIFY (k == "world");
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+template<template<typename> class KC, template<typename> class MC>
+void
+test11()
+{
+#if __cpp_exceptions
+  using flat_map = std::flat_map<int, int, std::less<int>, KC<int>, MC<int>>;
+
+  auto is_really_empty = [](const flat_map& m) {
+    return m.empty() && m.keys().empty() && m.values().empty();
+  };
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_map source;
+  source.insert({{1, 100}, {2, 200}});
+  try
+    {
+      flat_map target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  flat_map target;
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  target.clear();
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+#endif
+}
+
+constexpr
+void
+test12()
+{
+  // Verify usability of flat_map::insert_range(sorted_unique_t, Rg&&).
+  std::flat_map<int, int> m = {{2, 200}};
+  std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+  m.insert_range(std::sorted_unique, s);
+  VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+}
+
 void
 test()
 {
@@ -315,6 +412,9 @@ test()
   test08();
   test09();
   test10();
+  test11<std::vector, throwing_vector>();
+  test11<throwing_vector, std::vector>();
+  test12();
 }
 
 constexpr
@@ -333,6 +433,8 @@ test_constexpr()
 #if __cpp_lib_constexpr_string >= 201907L
   test10();
 #endif
+  // test11() is non-constexpr
+  test12();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
index 00644c14061a..48688b7583ed 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
@@ -252,6 +252,103 @@ test09()
   using value_type = std::pair<int, int>;
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+template<template<typename> class KC, template<typename> class MC>
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_multimap = std::flat_multimap<int, int, std::less<int>, KC<int>, MC<int>>;
+
+  auto is_really_empty = [](const flat_multimap& m) {
+    return m.empty() && m.keys().empty() && m.values().empty();
+  };
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_multimap source;
+  source.insert({{1, 100}, {2, 200}});
+  try
+    {
+      flat_multimap target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  flat_multimap target;
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({{1, 100}, {2, 200}});
+  target.clear();
+  target.insert({{3, 300}, {4, 400}});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( is_really_empty(source) );
+      VERIFY( is_really_empty(target) );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_multimap::insert_range(sorted_equivalent_t, Rg&&).
+  std::flat_multimap<int, int> m = {{2, 200}};;
+  std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+  m.insert_range(std::sorted_equivalent, s);
+  VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+}
+
 void
 test()
 {
@@ -266,6 +363,9 @@ test()
   test06();
   test07();
   test09();
+  test10<std::vector, throwing_vector>();
+  test10<throwing_vector, std::vector>();
+  test11();
 }
 
 constexpr
@@ -280,6 +380,8 @@ test_constexpr()
   test06();
   test07();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
index be330fefdd05..4544adb50770 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
@@ -265,6 +265,96 @@ test09()
   VERIFY( std::ranges::equal(s, (int[]){2,2,4}) );
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_multiset = std::flat_multiset<int, std::less<int>, throwing_vector<int>>;
+
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_multiset source = {1, 2};
+  try
+    {
+      flat_multiset target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({1, 2});
+  flat_multiset target = {3, 4};
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({1, 2});
+  target.clear();
+  target.insert({3, 4});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_multiset::insert_range(sorted_equivalent_t, Rg&&).
+  std::flat_multiset<int> m = {2};
+  int s[] = {1, 3};
+  m.insert_range(std::sorted_equivalent, s);
+  VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -278,6 +368,8 @@ test()
   test07();
   test08();
   test09();
+  test10();
+  test11();
 }
 
 constexpr
@@ -292,6 +384,8 @@ test_constexpr()
   test07();
   test08();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
index a14d03476e18..ac12815bd0d4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
@@ -2,7 +2,7 @@
 
 #include <flat_set>
 
-#if __cpp_lib_flat_set != 202207L
+#if __cpp_lib_flat_set != 202511L
 # error "Feature-test macro __cpp_lib_flat_set has wrong value in <flat_set>"
 #endif
 
@@ -277,6 +277,96 @@ test09()
   VERIFY( std::ranges::equal(s, (int[]){2,4}) );
 }
 
+template<typename T>
+struct throwing_vector : std::vector<T>
+{
+  static inline bool throw_on_move = false;
+
+  throwing_vector() = default;
+  throwing_vector(const throwing_vector&) = default;
+  throwing_vector& operator=(const throwing_vector&) = default;
+
+  throwing_vector(throwing_vector&& other)
+  : std::vector<T>(std::move(other))
+  {
+    if (throw_on_move)
+      throw std::runtime_error("move ctor");
+  }
+
+  throwing_vector&
+  operator=(throwing_vector&& other)
+  {
+    static_cast<std::vector<T>&>(*this) = std::move(other);
+    if (throw_on_move)
+      throw std::runtime_error("move assign");
+    return *this;
+  }
+};
+
+void
+test10()
+{
+#if __cpp_exceptions
+  using flat_set = std::flat_set<int, std::less<int>, throwing_vector<int>>;
+
+  throwing_vector<int>::throw_on_move = true;
+
+  // Verify invariant preservation upon throwing move construction.
+  flat_set source = {1, 2};
+  try
+    {
+      flat_set target(std::move(source));
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+    }
+
+  // Verify invariant preservation upon throwing move assignment.
+  source.clear();
+  source.insert({1, 2});
+  flat_set target = {3, 4};
+  try
+    {
+      target = std::move(source);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+
+  // Verify invariant preservation upon throwing swap.
+  source.clear();
+  source.insert({1, 2});
+  target.clear();
+  target.insert({3, 4});
+  try
+    {
+      source.swap(target);
+      VERIFY( false );
+    }
+  catch (const std::runtime_error&)
+    {
+      VERIFY( source.empty() );
+      VERIFY( target.empty() );
+    }
+#endif
+}
+
+constexpr
+void
+test11()
+{
+  // Verify usability of flat_set::insert_range(sorted_unique_t, Rg&&).
+  std::flat_set<int> m = {2};
+  int s[] = {1, 3};
+  m.insert_range(std::sorted_unique, s);
+  VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -290,6 +380,8 @@ test()
   test07();
   test08();
   test09();
+  test10();
+  test11();
 }
 
 constexpr
@@ -304,6 +396,8 @@ test_constexpr()
   test07();
   test08();
   test09();
+  // test10() is non-constexpr
+  test11();
   return true;
 }

From ppalka@gcc.gnu.org  Thu Jun  4 14:28:40 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu,  4 Jun 2026 14:28:40 +0000 (GMT)
Subject: [gcc r16-9056] libstdc++: Fix availability of
 flat_meow::operator=(initializer_list)
Message-ID: <20260604142840.0A6F64BAE7E6@sourceware.org>

https://gcc.gnu.org/g:9e64aa0ab2302ba16b9884957929609cd2742c55

commit r16-9056-g9e64aa0ab2302ba16b9884957929609cd2742c55
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu May 28 10:39:32 2026 -0400

    libstdc++: Fix availability of flat_meow::operator=(initializer_list)
    
    This assignment operator was not being brought in from the private base
    class causing assignments from {...} to be inefficiently treated as
    construction + move assignment.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit c345d6afd9a9b331cb679b82e89213deb8f8a69a)

Diff:
---
 libstdc++-v3/include/std/flat_map                  | 10 +++++++++
 libstdc++-v3/include/std/flat_set                  | 10 +++++++++
 libstdc++-v3/testsuite/23_containers/flat_map/1.cc | 23 +++++++++++++++------
 .../testsuite/23_containers/flat_multimap/1.cc     | 23 +++++++++++++++------
 .../testsuite/23_containers/flat_multiset/1.cc     | 24 ++++++++++++++++------
 libstdc++-v3/testsuite/23_containers/flat_set/1.cc | 24 ++++++++++++++++------
 6 files changed, 90 insertions(+), 24 deletions(-)

diff --git a/libstdc++-v3/include/std/flat_map b/libstdc++-v3/include/std/flat_map
index f06c75a16f65..b82d41b4f5e1 100644
--- a/libstdc++-v3/include/std/flat_map
+++ b/libstdc++-v3/include/std/flat_map
@@ -1275,6 +1275,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
@@ -1628,6 +1633,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index e92559949ebb..2f204cc08bf9 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -967,6 +967,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
@@ -1115,6 +1120,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // constructors
       using _Impl::_Impl;
 
+      // operator=(initializer_list<value_type>)
+      // Although this also brings in the base move/copy assignment operators,
+      // they will be hidden by our synthesized ones.
+      using _Impl::operator=;
+
       // iterators
       using _Impl::begin;
       using _Impl::end;
diff --git a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
index 7e22e0366ec2..0cd06b72e96c 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
@@ -351,8 +351,7 @@ test11()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
+  source = {{1, 100}, {2, 200}};
   flat_map target;
   target.insert({{3, 300}, {4, 400}});
   try
@@ -367,10 +366,8 @@ test11()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
-  target.clear();
-  target.insert({{3, 300}, {4, 400}});
+  source = {{1, 100}, {2, 200}};
+  target = {{3, 300}, {4, 400}};
   try
     {
       source.swap(target);
@@ -396,6 +393,18 @@ test12()
   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
 }
 
+void
+test13()
+{
+  // Verify usability of flat_map::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_map<int, int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+  s = il;
+  VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+}
+
 void
 test()
 {
@@ -415,6 +424,7 @@ test()
   test11<std::vector, throwing_vector>();
   test11<throwing_vector, std::vector>();
   test12();
+  test13();
 }
 
 constexpr
@@ -435,6 +445,7 @@ test_constexpr()
 #endif
   // test11() is non-constexpr
   test12();
+  // test13() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
index 48688b7583ed..a070c5ef0911 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
@@ -304,8 +304,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
+  source = {{1, 100}, {2, 200}};
   flat_multimap target;
   target.insert({{3, 300}, {4, 400}});
   try
@@ -320,10 +319,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({{1, 100}, {2, 200}});
-  target.clear();
-  target.insert({{3, 300}, {4, 400}});
+  source = {{1, 100}, {2, 200}};
+  target = {{3, 300}, {4, 400}};
   try
     {
       source.swap(target);
@@ -349,6 +346,18 @@ test11()
   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_multimap::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_multimap<int, int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+  s = il;
+  VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+  VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+}
+
 void
 test()
 {
@@ -366,6 +375,7 @@ test()
   test10<std::vector, throwing_vector>();
   test10<throwing_vector, std::vector>();
   test11();
+  test12();
 }
 
 constexpr
@@ -382,6 +392,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
index 4544adb50770..eea53733f6d2 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
@@ -289,6 +289,8 @@ struct throwing_vector : std::vector<T>
       throw std::runtime_error("move assign");
     return *this;
   }
+
+  using std::vector<int>::operator=;
 };
 
 void
@@ -312,8 +314,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({1, 2});
+  source = {1, 2};
   flat_multiset target = {3, 4};
   try
     {
@@ -327,10 +328,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({1, 2});
-  target.clear();
-  target.insert({3, 4});
+  source = {1, 2};
+  target = {3, 4};
   try
     {
       source.swap(target);
@@ -355,6 +354,17 @@ test11()
   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_multiset::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_multiset<int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<int> il = {2, 3, 1};
+  s = il;
+  VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -370,6 +380,7 @@ test()
   test09();
   test10();
   test11();
+  test12();
 }
 
 constexpr
@@ -386,6 +397,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }
 
diff --git a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
index ac12815bd0d4..116ccdcb48d4 100644
--- a/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
@@ -301,6 +301,8 @@ struct throwing_vector : std::vector<T>
       throw std::runtime_error("move assign");
     return *this;
   }
+
+  using std::vector<int>::operator=;
 };
 
 void
@@ -324,8 +326,7 @@ test10()
     }
 
   // Verify invariant preservation upon throwing move assignment.
-  source.clear();
-  source.insert({1, 2});
+  source = {1, 2};
   flat_set target = {3, 4};
   try
     {
@@ -339,10 +340,8 @@ test10()
     }
 
   // Verify invariant preservation upon throwing swap.
-  source.clear();
-  source.insert({1, 2});
-  target.clear();
-  target.insert({3, 4});
+  source = {1, 2};
+  target = {3, 4};
   try
     {
       source.swap(target);
@@ -367,6 +366,17 @@ test11()
   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
 }
 
+void
+test12()
+{
+  // Verify usability of flat_set::operator=(initializer_list).
+  throwing_vector<int>::throw_on_move = true;
+  std::flat_set<int, std::less<int>, throwing_vector<int>> s;
+  std::initializer_list<int> il = {2, 3, 1};
+  s = il;
+  VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+}
+
 void
 test()
 {
@@ -382,6 +392,7 @@ test()
   test09();
   test10();
   test11();
+  test12();
 }
 
 constexpr
@@ -398,6 +409,7 @@ test_constexpr()
   test09();
   // test10() is non-constexpr
   test11();
+  // test12() is non-constexpr
   return true;
 }

From ppalka@gcc.gnu.org  Thu Jun  4 14:28:45 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Thu,  4 Jun 2026 14:28:45 +0000 (GMT)
Subject: [gcc r16-9057] libstdc++: Adjust flat_set::swap swapping order
Message-ID: <20260604142845.32E014BAE7D8@sourceware.org>

https://gcc.gnu.org/g:3297bc3a2440a71f02723ee87eec9b2232991ea5

commit r16-9057-g3297bc3a2440a71f02723ee87eec9b2232991ea5
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri May 29 15:21:06 2026 -0400

    libstdc++: Adjust flat_set::swap swapping order
    
    In r17-908 I accidentally made us swap the comparator first, but we
    decided that the container should be swapped first.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/flat_set (_Flat_set_impl::swap): Swap _M_cont
            first.
    
    (cherry picked from commit f052dcf8699fa650cda20944fdd3a96104b6830c)

Diff:
---
 libstdc++-v3/include/std/flat_set | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/flat_set b/libstdc++-v3/include/std/flat_set
index 2f204cc08bf9..31dce48bbe0a 100644
--- a/libstdc++-v3/include/std/flat_set
+++ b/libstdc++-v3/include/std/flat_set
@@ -680,8 +680,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
 	auto __guard = _M_make_clear_guard();
 	auto __guard_y = _ClearGuard{__y._M_cont};
-	ranges::swap(_M_comp, __y._M_comp);
 	ranges::swap(_M_cont, __y._M_cont);
+	ranges::swap(_M_comp, __y._M_comp);
 	__guard._M_disable();
 	__guard_y._M_disable();
       }

From redi@gcc.gnu.org  Thu Jun  4 14:45:29 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 14:45:29 +0000 (GMT)
Subject: [gcc r15-11254] libstdc++: Backport constexpr support for debug mode
 helpers [PR119163]
Message-ID: <20260604144529.886BD4BA2E19@sourceware.org>

https://gcc.gnu.org/g:6e0376b42d4c6eff348a151b0f66453c5a5d8f00

commit r15-11254-g6e0376b42d4c6eff348a151b0f66453c5a5d8f00
Author: Fran?ois Dumont <frs.dumont@gmail.com>
Date:   Mon Sep 22 18:58:52 2025 +0200

    libstdc++: Backport constexpr support for debug mode helpers [PR119163]
    
    This is a partial backport of r16-5845-g8a2e6590cc4a2f to fix a test
    failure with -D_GLIBCXX_DEBUG:
    
    FAIL: 20_util/specialized_algorithms/uninitialized_copy/constexpr.cc  -std=gnu++26 (test for excess errors)
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/119163
            * include/debug/functions.h (__check_valid_range): Add C++20 constexpr.
            * include/debug/helper_functions.h (__valid_range): Likewise.
            * include/debug/safe_iterator.h (__valid_range): Likewise.

Diff:
---
 libstdc++-v3/include/debug/functions.h        | 10 +++++++---
 libstdc++-v3/include/debug/helper_functions.h |  4 ++--
 libstdc++-v3/include/debug/safe_iterator.h    | 12 +++++++++++-
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h
index c5f5582b0050..4e6fdae71935 100644
--- a/libstdc++-v3/include/debug/functions.h
+++ b/libstdc++-v3/include/debug/functions.h
@@ -53,15 +53,19 @@ namespace __gnu_debug
    * assertion statement because, e.g., we are in a constructor.
   */
   template<typename _InputIterator>
-    inline _InputIterator
+    _GLIBCXX20_CONSTEXPR inline _InputIterator
     __check_valid_range(const _InputIterator& __first,
 			const _InputIterator& __last,
 			const char* __file,
 			unsigned int __line,
 			const char* __function)
     {
-      __glibcxx_check_valid_range_at(__first, __last,
-				     __file, __line, __function);
+      if (!std::__is_constant_evaluated())
+	{
+	  __glibcxx_check_valid_range_at(__first, __last,
+					 __file, __line, __function);
+	}
+
       return __first;
     }
 
diff --git a/libstdc++-v3/include/debug/helper_functions.h b/libstdc++-v3/include/debug/helper_functions.h
index 9395892b537c..b9771034bf34 100644
--- a/libstdc++-v3/include/debug/helper_functions.h
+++ b/libstdc++-v3/include/debug/helper_functions.h
@@ -249,7 +249,7 @@ namespace __gnu_debug
     }
 
   template<typename _Iterator, typename _Sequence, typename _Category>
-    bool
+    _GLIBCXX20_CONSTEXPR bool
     __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
 		  const _Safe_iterator<_Iterator, _Sequence, _Category>&,
 		  typename _Distance_traits<_Iterator>::__type&);
@@ -272,7 +272,7 @@ namespace __gnu_debug
     }
 
   template<typename _Iterator, typename _Sequence, typename _Category>
-    bool
+    _GLIBCXX20_CONSTEXPR bool
     __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
 		  const _Safe_iterator<_Iterator, _Sequence, _Category>&);
 
diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 7c563381d0bf..9c5f360414bf 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -1108,21 +1108,31 @@ namespace __gnu_debug
 
   /** Safe iterators know how to check if they form a valid range. */
   template<typename _Iterator, typename _Sequence, typename _Category>
+    _GLIBCXX20_CONSTEXPR
     inline bool
     __valid_range(const _Safe_iterator<_Iterator, _Sequence,
 				       _Category>& __first,
 		  const _Safe_iterator<_Iterator, _Sequence,
 				       _Category>& __last,
 		  typename _Distance_traits<_Iterator>::__type& __dist)
-    { return __first._M_valid_range(__last, __dist); }
+    {
+      if (std::__is_constant_evaluated())
+	return true;
+
+      return __first._M_valid_range(__last, __dist);
+    }
 
   template<typename _Iterator, typename _Sequence, typename _Category>
+    _GLIBCXX20_CONSTEXPR
     inline bool
     __valid_range(const _Safe_iterator<_Iterator, _Sequence,
 				       _Category>& __first,
 		  const _Safe_iterator<_Iterator, _Sequence,
 				       _Category>& __last)
     {
+      if (std::__is_constant_evaluated())
+	return true;
+
       typename _Distance_traits<_Iterator>::__type __dist;
       return __first._M_valid_range(__last, __dist);
     }

From redi@gcc.gnu.org  Thu Jun  4 14:45:39 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 14:45:39 +0000 (GMT)
Subject: [gcc r15-11255] libstdc++: Make more _Safe_iterator functions in
 constexpr in C++20.
Message-ID: <20260604144539.DC5F44BAE7D0@sourceware.org>

https://gcc.gnu.org/g:2bb5a6255821e3588c476541d78a010203db1ee5

commit r15-11255-g2bb5a6255821e3588c476541d78a010203db1ee5
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Fri Dec 19 13:07:00 2025 +0100

    libstdc++: Make more _Safe_iterator functions in constexpr in C++20.
    
    This functions are indirectly called from flat_ containers operations
    (from preconditions check of lower_bound, upper_bound, ...) that were
    made constexpr by r16-6026-gbf9dd44a97400e, leading to test with
    in _GLIBCXX_DEBUG mode.
    
    For __can_advance we uncoditionally return true in constant evaluation,
    similary to __valid_range. The constexpr iterator will detect comparision
    of iterator to different ranges.
    
    libstdc++-v3/ChangeLog:
    
            * include/debug/helper_functions.h (__gnu_debug::__can_advance):
            Declare as _GLIBCXX20_CONSTEXPR.
            * include/debug/safe_iterator.h (__gnu_debug::__can_advance):
            Define as _GLIBCXX20_CONSTEXPR, and return true for constexpr
            evaluation.
            (__gnu_debug::__base): Define as _GLIBCXX20_CONSTEXPR.
    
    (cherry picked from commit 158acb680582d99d359eb4e609e956aaf1d45ab4)

Diff:
---
 libstdc++-v3/include/debug/helper_functions.h |  4 ++--
 libstdc++-v3/include/debug/safe_iterator.h    | 18 +++++++++++++++---
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/include/debug/helper_functions.h b/libstdc++-v3/include/debug/helper_functions.h
index b9771034bf34..b058408a1e3f 100644
--- a/libstdc++-v3/include/debug/helper_functions.h
+++ b/libstdc++-v3/include/debug/helper_functions.h
@@ -292,7 +292,7 @@ namespace __gnu_debug
 
   template<typename _Iterator, typename _Sequence, typename _Category,
 	   typename _Size>
-    bool
+    _GLIBCXX20_CONSTEXPR bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
 		  _Size);
 
@@ -304,7 +304,7 @@ namespace __gnu_debug
 
   template<typename _Iterator, typename _Sequence, typename _Category,
 	   typename _Diff>
-    bool
+    _GLIBCXX20_CONSTEXPR bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
 		  const std::pair<_Diff, _Distance_precision>&, int);
 
diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 9c5f360414bf..0a5ef0097751 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -1139,21 +1139,33 @@ namespace __gnu_debug
 
   template<typename _Iterator, typename _Sequence, typename _Category,
 	   typename _Size>
+    _GLIBCXX20_CONSTEXPR
     inline bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
 		  _Size __n)
-    { return __it._M_can_advance(__n); }
+    { 
+      if (std::__is_constant_evaluated())
+	return true;
+
+      return __it._M_can_advance(__n);
+    }
 
   template<typename _Iterator, typename _Sequence, typename _Category,
 	   typename _Diff>
+    _GLIBCXX20_CONSTEXPR
     inline bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
 		  const std::pair<_Diff, _Distance_precision>& __dist,
 		  int __way)
-    { return __it._M_can_advance(__dist, __way); }
+    {
+      if (std::__is_constant_evaluated())
+	return true;
+    
+      return __it._M_can_advance(__dist, __way);
+    }
 
   template<typename _Iterator, typename _Sequence>
-    _Iterator
+    _GLIBCXX20_CONSTEXPR _Iterator
     __base(const _Safe_iterator<_Iterator, _Sequence,
 				std::random_access_iterator_tag>& __it)
     { return __it.base(); }

From redi@gcc.gnu.org  Thu Jun  4 14:45:45 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 14:45:45 +0000 (GMT)
Subject: [gcc r15-11256] libstdc++: Remove trailing whitespace in
 debug/safe_iterator.h
Message-ID: <20260604144545.0E2544BAE7D6@sourceware.org>

https://gcc.gnu.org/g:f197b2a49166546134cf9d99b9f02756185fb8d3

commit r15-11256-gf197b2a49166546134cf9d99b9f02756185fb8d3
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jun 4 13:54:02 2026 +0100

    libstdc++: Remove trailing whitespace in debug/safe_iterator.h
    
    libstdc++-v3/ChangeLog:
    
            * include/debug/safe_iterator.h: Remove trailing whitespace.
    
    (cherry picked from commit a0d353d21d2256c1f32ead923c10d7a75efd8d4b)

Diff:
---
 libstdc++-v3/include/debug/safe_iterator.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h
index 0a5ef0097751..6a82e2bf1876 100644
--- a/libstdc++-v3/include/debug/safe_iterator.h
+++ b/libstdc++-v3/include/debug/safe_iterator.h
@@ -1143,7 +1143,7 @@ namespace __gnu_debug
     inline bool
     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
 		  _Size __n)
-    { 
+    {
       if (std::__is_constant_evaluated())
 	return true;
 
@@ -1160,7 +1160,7 @@ namespace __gnu_debug
     {
       if (std::__is_constant_evaluated())
 	return true;
-    
+
       return __it._M_can_advance(__dist, __way);
     }

From redi@gcc.gnu.org  Thu Jun  4 14:45:50 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu,  4 Jun 2026 14:45:50 +0000 (GMT)
Subject: [gcc r15-11257] libstdc++: Fix missing #endif in unused header
Message-ID: <20260604144550.327F74BAE7E9@sourceware.org>

https://gcc.gnu.org/g:a11064571e04cb0cf579f46531f9f7ead154dd23

commit r15-11257-ga11064571e04cb0cf579f46531f9f7ead154dd23
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Apr 1 10:26:19 2026 +0100

    libstdc++: Fix missing #endif in unused header
    
    This header does not appear to be used anywhere, but Doxygen gives a
    warning when processing it:
    
    include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:49: warning: More #if's than #endif's found (might be in an included file).
    
    libstdc++-v3/ChangeLog:
    
            * include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp:
            Add missing #endif.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 0591b1422c96cc3ba8c38dd14963959561201219)

Diff:
---
 .../ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp   | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
index ff331a17970d..720b6e04939c 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
@@ -46,3 +46,4 @@ inline typename PB_DS_CLASS_C_DEC::pointer
 PB_DS_CLASS_C_DEC::
 find_key_pointer(key_const_reference r_key, false_type)
 
+#endif

From ppalka@gcc.gnu.org  Fri Jun  5 00:04:55 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Fri,  5 Jun 2026 00:04:55 +0000 (GMT)
Subject: [gcc r15-11259] libstdc++: Use ranges::iter_move in ranges::unique
 [PR120789]
Message-ID: <20260605000455.D4A684BA2E07@sourceware.org>

https://gcc.gnu.org/g:dca6d147d8b1ce3860635375b492bb80a511deaa

commit r15-11259-gdca6d147d8b1ce3860635375b492bb80a511deaa
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Jul 1 13:43:09 2025 -0400

    libstdc++: Use ranges::iter_move in ranges::unique [PR120789]
    
            PR libstdc++/120789
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/ranges_algo.h (__unique_fn::operator()): Use
            ranges::iter_move(iter) instead of std::move(*iter).
            * testsuite/25_algorithms/unique/120789.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 6f69a68998f601cdb86c65113eb1feddfa9da31a)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  2 +-
 .../testsuite/25_algorithms/unique/120789.cc       | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 7b1408452128..3bf3cf2f102b 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1173,7 +1173,7 @@ namespace ranges
 	  if (!std::__invoke(__comp,
 			     std::__invoke(__proj, *__dest),
 			     std::__invoke(__proj, *__first)))
-	    *++__dest = std::move(*__first);
+	    *++__dest = ranges::iter_move(__first);
 	return {++__dest, __first};
       }
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc b/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc
new file mode 100644
index 000000000000..24b107132473
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc
@@ -0,0 +1,36 @@
+// PR libstdc++/120789 - ranges::unique should use ranges::iter_move
+// { dg-do compile { target c++20 } }
+
+#include <algorithm>
+
+struct A
+{
+  bool operator==(const A&) const;
+};
+
+struct B
+{
+  B(B&&) = delete;
+  B& operator=(const A&) const;
+
+  operator A() const;
+  bool operator==(const B&) const;
+};
+
+struct I
+{
+  using value_type = A;
+  using difference_type = int;
+  B operator*() const;
+  I& operator++();
+  I operator++(int);
+  bool operator==(const I&) const;
+  friend A iter_move(const I&);
+};
+
+void
+test01()
+{
+  std::ranges::subrange<I, I> r;
+  auto [begin, end] = std::ranges::unique(r);
+}

From ppalka@gcc.gnu.org  Fri Jun  5 00:05:06 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Fri,  5 Jun 2026 00:05:06 +0000 (GMT)
Subject: [gcc r15-11260] libstdc++: Use ranges::iter_move in ranges::remove_if
 [PR120789]
Message-ID: <20260605000506.3013E4BA2E13@sourceware.org>

https://gcc.gnu.org/g:a020373e661023eb145de752efcf0cdd4b68f5d6

commit r15-11260-ga020373e661023eb145de752efcf0cdd4b68f5d6
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Jul 1 13:43:12 2025 -0400

    libstdc++: Use ranges::iter_move in ranges::remove_if [PR120789]
    
            PR libstdc++/120789
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/ranges_algo.h (__remove_if_fn::operator()): Use
            ranges::iter_move(iter) instead of std::move(*iter).
            * testsuite/25_algorithms/remove_if/120789.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 17e9ae215f991f2f94fe480aee2404c508388b7c)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  2 +-
 .../testsuite/25_algorithms/remove_if/120789.cc    | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 3bf3cf2f102b..e552cc699a54 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1013,7 +1013,7 @@ namespace ranges
 	for (; __first != __last; ++__first)
 	  if (!std::__invoke(__pred, std::__invoke(__proj, *__first)))
 	    {
-	      *__result = std::move(*__first);
+	      *__result = ranges::iter_move(__first);
 	      ++__result;
 	    }
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc b/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc
new file mode 100644
index 000000000000..c1f4eeb9b4dd
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc
@@ -0,0 +1,36 @@
+// PR libstdc++/120789 - ranges::remove_if should use ranges::iter_move
+// { dg-do compile { target c++20 } }
+
+#include <algorithm>
+
+struct A
+{
+  bool operator==(const A&) const;
+};
+
+struct B
+{
+  B(B&&) = delete;
+  B& operator=(const A&) const;
+
+  operator A() const;
+  bool operator==(const B&) const;
+};
+
+struct I
+{
+  using value_type = A;
+  using difference_type = int;
+  B operator*() const;
+  I& operator++();
+  I operator++(int);
+  bool operator==(const I&) const;
+  friend A iter_move(const I&);
+};
+
+void
+test01()
+{
+  std::ranges::subrange<I, I> r;
+  auto [begin, end] = std::ranges::remove_if(r, [](auto&&) { return true; });
+}

From meissner@gcc.gnu.org  Fri Jun  5 00:22:47 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Fri,  5 Jun 2026 00:22:47 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work247)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260605002247.647C94BA5436@sourceware.org>

https://gcc.gnu.org/g:5acd29197047663474777b9270b8699d191e6041

commit 5acd29197047663474777b9270b8699d191e6041
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Jun 4 20:22:18 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..2f045dc8355d
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work247 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..e7398ac94686
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work247, baseline ====================
+
+2026-06-04   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-04  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From redi@gcc.gnu.org  Fri Jun  5 10:19:48 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri,  5 Jun 2026 10:19:48 +0000 (GMT)
Subject: [gcc r15-11263] libstdc++: Format chrono %a/%A/%b/%B/%p using
 locale's time_put [PR117214]
Message-ID: <20260605101948.CCF624BAE7DB@sourceware.org>

https://gcc.gnu.org/g:bf0465b3e2c3142957444f46b9a3cd3719c8299f

commit r15-11263-gbf0465b3e2c3142957444f46b9a3cd3719c8299f
Author: XU Kailiang <xu2k3l4@outlook.com>
Date:   Wed Jul 2 15:10:29 2025 +0800

    libstdc++: Format chrono %a/%A/%b/%B/%p using locale's time_put [PR117214]
    
    C++ formatting locale could have a custom time_put that performs
    differently from the C locale, so do not use __timepunct directly.
    
    This patch for gcc-15 was originally submitted for trunk, but then got
    rebased and committed as r16-2063-g8ad5968a8dcb47. For the gcc-15
    backport we need to go back to the original v1 patch.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/117214
            * include/bits/chrono_io.h (__formatter_chrono::_M_a_A)
            (__formatter_chrono::_M_b_B, __formatter_chrono::_M_p): Use
            _M_locale_fmt to format %a/%A/%b/%B/%p.
            * testsuite/std/time/format/pr117214_custom_timeput.cc: New
            test.
    
    Signed-off-by: XU Kailiang <xu2k3l4@outlook.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h              | 37 +++++++++-------------
 .../std/time/format/pr117214_custom_timeput.cc     | 36 +++++++++++++++++++++
 2 files changed, 51 insertions(+), 22 deletions(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index 243d3ff8026d..d84c6690f01c 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -843,14 +843,10 @@ namespace __format
 	    __throw_format_error("format error: invalid weekday");
 
 	  locale __loc = _M_locale(__ctx);
-	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
-	  const _CharT* __days[7];
-	  if (__full)
-	    __tp._M_days(__days);
-	  else
-	    __tp._M_days_abbreviated(__days);
-	  __string_view __str(__days[__wd.c_encoding()]);
-	  return _M_write(std::move(__out), __loc, __str);
+	  struct tm __tm{};
+	  __tm.tm_wday = __wd.c_encoding();
+	  return _M_locale_fmt(std::move(__out), __loc, __tm,
+			       __full ? 'A' : 'a', 0);
 	}
 
       template<typename _Tp, typename _FormatContext>
@@ -864,14 +860,10 @@ namespace __format
 	  if (!__m.ok())
 	    __throw_format_error("format error: invalid month");
 	  locale __loc = _M_locale(__ctx);
-	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
-	  const _CharT* __months[12];
-	  if (__full)
-	    __tp._M_months(__months);
-	  else
-	    __tp._M_months_abbreviated(__months);
-	  __string_view __str(__months[(unsigned)__m - 1]);
-	  return _M_write(std::move(__out), __loc, __str);
+	  struct tm __tm{};
+	  __tm.tm_mon = (unsigned)__m - 1;
+	  return _M_locale_fmt(std::move(__out), __loc, __tm,
+			       __full ? 'B' : 'b', 0);
 	}
 
       template<typename _Tp, typename _FormatContext>
@@ -1196,13 +1188,14 @@ namespace __format
 	     _FormatContext& __ctx) const
 	{
 	  // %p The locale's equivalent of the AM/PM designations.
-	  auto __hms = _S_hms(__t);
+	  auto __hi = _S_hms(__t).hours().count();
+	  if (__hi >= 24) [[unlikely]]
+	    __hi %= 24;
+
 	  locale __loc = _M_locale(__ctx);
-	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
-	  const _CharT* __ampm[2];
-	  __tp._M_am_pm(__ampm);
-	  return _M_write(std::move(__out), __loc,
-			  __ampm[__hms.hours().count() >= 12]);
+	  struct tm __tm{};
+	  __tm.tm_hour = __hi;
+	  return _M_locale_fmt(std::move(__out), __loc, __tm, 'p', 0);
 	}
 
       template<typename _Tp, typename _FormatContext>
diff --git a/libstdc++-v3/testsuite/std/time/format/pr117214_custom_timeput.cc b/libstdc++-v3/testsuite/std/time/format/pr117214_custom_timeput.cc
new file mode 100644
index 000000000000..8c9f3d29bc6a
--- /dev/null
+++ b/libstdc++-v3/testsuite/std/time/format/pr117214_custom_timeput.cc
@@ -0,0 +1,36 @@
+// { dg-do run { target c++20 } }
+
+#include <chrono>
+#include <format>
+#include <locale>
+#include <testsuite_hooks.h>
+
+struct custom_time_put : std::time_put<char>
+{
+  iter_type
+  do_put(iter_type out, std::ios_base& io, char_type fill, const tm* t,
+	 char format, char modifier) const override
+  {
+    using Base = std::time_put<char>;
+
+    switch (format) {
+      case 'a': case 'A': case 'b': case 'B': case 'p':
+	*out++ = '[';
+	*out++ = format;
+	*out++ = ']';
+    }
+    return Base::do_put(out, io, fill, t, format, modifier);
+  }
+};
+
+int main()
+{
+  using namespace std::chrono;
+  std::locale loc(std::locale::classic(), new custom_time_put);
+#define test(t, fmt, exp) VERIFY( std::format(loc, fmt, t) == exp )
+  test(Monday,  "{:L%a}", "[a]Mon");
+  test(Monday,  "{:L%A}", "[A]Monday");
+  test(January, "{:L%b}", "[b]Jan");
+  test(January, "{:L%B}", "[B]January");
+  test(1h,      "{:L%p}", "[p]AM");
+}

From yuao@gcc.gnu.org  Fri Jun  5 11:54:09 2026
From: yuao@gcc.gnu.org (Yuao Ma)
Date: Fri,  5 Jun 2026 11:54:09 +0000 (GMT)
Subject: [gcc r17-1371] libstdc++: avoid ill-formed nested generator
Message-ID: <20260605115409.110644BAE7DB@sourceware.org>

https://gcc.gnu.org/g:78090f55dbb896e57f14b3ab2c333d1f5adb4815

commit r17-1371-g78090f55dbb896e57f14b3ab2c333d1f5adb4815
Author: Yuao Ma <c8ef@outlook.com>
Date:   Fri Jun 5 19:50:54 2026 +0800

    libstdc++: avoid ill-formed nested generator
    
    This was approved as LWG 4119.
    
    libstdc++-v3/ChangeLog:
    
            * 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.

Diff:
---
 libstdc++-v3/include/std/generator                         |  5 ++++-
 .../testsuite/24_iterators/range_generators/lwg4119.cc     | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/generator b/libstdc++-v3/include/std/generator
index 88651dd6f76a..87fe28766f09 100644
--- a/libstdc++-v3/include/std/generator
+++ b/libstdc++-v3/include/std/generator
@@ -163,6 +163,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  noexcept
 	{ return _Recursive_awaiter { std::move(__r.range) }; }
 
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4119. generator::promise_type::yield_value(elements_of<R, Alloc>)'s
+	// nested generator may be ill-formed
 	template<ranges::input_range _R, typename _Alloc>
 	requires convertible_to<ranges::range_reference_t<_R>, _Yielded>
 	auto
@@ -171,7 +174,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  auto __n = [] (allocator_arg_t, _Alloc,
 			 ranges::iterator_t<_R> __i,
 			 ranges::sentinel_t<_R> __s)
-	    -> generator<_Yielded, ranges::range_value_t<_R>, _Alloc> {
+	    -> generator<_Yielded, void, _Alloc> {
 	    for (; __i != __s; ++__i)
 	      co_yield static_cast<_Yielded>(*__i);
 	  };
diff --git a/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc b/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc
new file mode 100644
index 000000000000..383c9074345c
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc
@@ -0,0 +1,14 @@
+// { dg-do compile { target c++23 } }
+
+#include <generator>
+#include <vector>
+
+std::generator<std::span<int>> f() {
+  std::vector<int> v;
+  co_yield v;
+}
+
+std::generator<std::span<int>> g() {
+  std::vector<std::vector<int>> v;
+  co_yield std::ranges::elements_of(v);
+}

From jianghc@gcc.gnu.org  Mon Jun  8 06:23:39 2026
From: jianghc@gcc.gnu.org (Haochen Jiang)
Date: Mon,  8 Jun 2026 06:23:39 +0000 (GMT)
Subject: [gcc r17-1413] testsuite: Resolve non-unique test names under several
 section
Message-ID: <20260608062339.C56B14C31847@sourceware.org>

https://gcc.gnu.org/g:07aeb5248d3fc2e8a3562ecca4059086d7502177

commit r17-1413-g07aeb5248d3fc2e8a3562ecca4059086d7502177
Author: Haochen Jiang <haochen.jiang@intel.com>
Date:   Mon Jun 1 14:29:17 2026 +0800

    testsuite: Resolve non-unique test names under several section
    
    Last year, contrib/compare_test introduces non-unique test name check.
    It is a good feature for new tests addition so that they will have no
    more same test names, which will help identify bugs more precisely.
    
    However, the legacy old tests got many non-unique names. This will
    result in compare_tests showing tons of lines for non-unique names
    at the beginning of the report. This actually reduced the readability
    report when I am testing new patches whether there are test regressions.
    
    This patch will not fix all the non-unique names (Definitely!). The fixed
    amount non-unique names is around 70-75%. Still about 1/4 remaining. But
    for a current 3400+ lines long non-unique name list for unix{-m32,-m64} under
    x86_64, it is a big step.
    
    For modules.exp, the patch appends std option into the report.
    
    The layout change example:
    
    -       3 PASS: g++: g++.dg/modules/access-1_a.C module-cmi Foo (gcm.cache/Foo.gcm)
    +       g++: g++.dg/modules/access-1_a.C -std=c++17 module-cmi Foo (gcm.cache/Foo.gcm)
    +       g++: g++.dg/modules/access-1_a.C -std=c++20 module-cmi Foo (gcm.cache/Foo.gcm)
    +       g++: g++.dg/modules/access-1_a.C -std=c++26 module-cmi Foo (gcm.cache/Foo.gcm)
    
    For lto.exp, the patch appends option testing into the report.
    The layout change example:
    
    -       6 PASS: g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3)
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O0 -flto -flto-partition=1to1 -fno-use-linker-plugin )
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O0 -flto -flto-partition=none -fuse-linker-plugin)
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O0 -flto -fuse-linker-plugin -fno-fat-lto-objects )
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O2 -flto -flto-partition=1to1 -fno-use-linker-plugin )
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O2 -flto -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects )
    +       g++: g++.dg/lto/odr-1  (test for LTO warnings, odr-1_0.C line 3 -O2 -flto -fuse-linker-plugin)
    
    For prettyprinters, the patch appends -flto or not into the report.
    
    The layout change example:
    
    -       2 PASS: libstdc++: libstdc++-prettyprinters/48362.cc execution test
    +       libstdc++: libstdc++-prettyprinters/48362.cc -flto execution test
    
    The other is the original non-lto one, which is unchanged.
    
    Tested on x86_64-pc-linux-gnu{-m32,}.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/modules/modules.exp (module_cmi_p): Add std parameter
            and include it in test report.  Update call site.
            * lib/lto.exp (lto_handle_diagnostics_for_file): Add optstr
            parameter and append it to the test report.
            (lto_handle_diagnostics): Add optstr parameter.
            (lto-link-and-maybe-run): Update lto_handle_diagnostics call site.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Pass
            -flto as the options to make it shown in test report.

Diff:
---
 gcc/testsuite/g++.dg/modules/modules.exp                  | 10 +++++-----
 gcc/testsuite/lib/lto.exp                                 | 15 +++++++++------
 .../testsuite/libstdc++-prettyprinters/prettyprinters.exp |  2 +-
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp
index aa351b73e0e6..3afbcb39e104 100644
--- a/gcc/testsuite/g++.dg/modules/modules.exp
+++ b/gcc/testsuite/g++.dg/modules/modules.exp
@@ -151,7 +151,7 @@ proc dg-module-cmi { args } {
 
 # check the expected module files exist (or not)
 # return list to delete
-proc module_cmi_p { src ifs } {
+proc module_cmi_p { src ifs std } {
     set res {}
     foreach if_arg $ifs {
 	set spec [lindex $if_arg 0]
@@ -169,9 +169,9 @@ proc module_cmi_p { src ifs } {
 	global srcdir
 	set relcmi [string map [list $srcdir "/\$srcdir"] $cmi]
 	if { $not != [file_on_host exists $cmi] } {
-	    pass "$src module-cmi $spec ($relcmi)"
+	    pass "$src $std module-cmi $spec ($relcmi)"
 	} else {
-	    fail "$src module-cmi $spec ($relcmi)"
+	    fail "$src $std module-cmi $spec ($relcmi)"
 	    set not [expr ! $not ]
 	}
 	if { ! $not } {
@@ -369,7 +369,7 @@ foreach test [prune [lsort [find $srcdir/$subdir {*.[CH]}]] \
 		continue
 	    }
 	    set testcase [string range $test [string length "$srcdir/"] end]
-	    cleanup_module_files [module_cmi_p $testcase $module_cmis]
+	    cleanup_module_files [module_cmi_p $testcase $module_cmis $std]
 	}
     }
 }
@@ -417,7 +417,7 @@ foreach src [lsort [find $srcdir/$subdir {*_a.[CHX}]] {
 			break
 		    }
 		    set testcase [string range $test [string length "$srcdir/"] end]
-		    lappend mod_files [module_cmi_p $testcase $module_cmis]
+		    lappend mod_files [module_cmi_p $testcase $module_cmis $std]
 		}
 	    }
 	    set testcase [regsub {_a.[CH]} $src {}]
diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp
index 64b7d9922726..036d7e6cc86c 100644
--- a/gcc/testsuite/lib/lto.exp
+++ b/gcc/testsuite/lib/lto.exp
@@ -25,8 +25,9 @@
 # MESSAGES_FOR_FILE is a list of expected messages, akin to DejaGnu's
 # "dg-messages" variable.
 # TEXT is the textual output from the LTO link.
+# OPTSTR is the LTO option set in effect.
 
-proc lto_handle_diagnostics_for_file { name filename messages_for_file text } {
+proc lto_handle_diagnostics_for_file { name filename messages_for_file text optstr } {
     global dg-linenum-format
 
     set filename_without_path [file tail $filename]
@@ -69,8 +70,9 @@ proc lto_handle_diagnostics_for_file { name filename messages_for_file text } {
 
 	# Unlike dg-test, add the filename to the PASS/FAIL message (rather
 	# than just the line number) so that the user can identify the
-	# pertinent directive.
-	set describe_where "$filename_without_path line $line"
+	# pertinent directive.  Also append the option set, so that the same
+	# directive checked under several LTO options got a unique test name.
+	set describe_where "$filename_without_path line $line $optstr"
 
 	# Issue the PASS/FAIL, adding "LTO" to the messages (e.g. "LTO errors")
 	# to distinguish them from the non-LTO case (in case we ever need to
@@ -112,8 +114,9 @@ proc lto_handle_diagnostics_for_file { name filename messages_for_file text } {
 # Return TEXT, stripped of any diagnostics that were handled.
 #
 # TEXT is the textual output from the LTO link.
+# OPTSTR is the LTO option set in effect.
 
-proc lto_handle_diagnostics { text } {
+proc lto_handle_diagnostics { text optstr } {
     global testcase
 
     upvar dg-messages-by-file messages_by_file
@@ -128,7 +131,7 @@ proc lto_handle_diagnostics { text } {
 	set dg-messages $messages_by_file($src)
 	verbose "  messages for $src: ${dg-messages}" 3
 	set text [lto_handle_diagnostics_for_file $testcase $src \
-		      ${dg-messages} $text]
+		      ${dg-messages} $text $optstr]
     }
 
     verbose "lto_handle_diagnostics: exit: $text" 2
@@ -414,7 +417,7 @@ proc lto-link-and-maybe-run { testname objlist dest optall optfile optstr } {
     }
 
     # Check for diagnostics specified by directives
-    set comp_output [lto_handle_diagnostics $comp_output]
+    set comp_output [lto_handle_diagnostics $comp_output $optstr]
 
     # Prune unimportant visibility warnings before checking output.
     set comp_output [lto_prune_warns $comp_output]
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp b/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
index dd3729744fa5..4f56c4b0aadc 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
@@ -52,7 +52,7 @@ if { [check_effective_target_lto] } {
   # Work around linker bug https://sourceware.org/PR20882
   regsub {^(.*)-Wl,--gc-sections(.*)$} $cxxldflags {\1\2} cxxldflags
   gdb-dg-runtest [lsort [glob $srcdir/$subdir/*.cc]] \
-    "" "$DEFAULT_CXXFLAGS -flto $PCH_CXXFLAGS"
+    "-flto" "$DEFAULT_CXXFLAGS $PCH_CXXFLAGS"
 }
 
 if [info exists guality_gdb_name] {

From gerald@gcc.gnu.org  Mon Jun  8 18:40:24 2026
From: gerald@gcc.gnu.org (Gerald Pfeifer)
Date: Mon,  8 Jun 2026 18:40:24 +0000 (GMT)
Subject: [gcc r17-1429] libstdc++: Spell command-line option with a dash
Message-ID: <20260608184024.596DC4BA2E21@sourceware.org>

https://gcc.gnu.org/g:a94bfa2fba3c7675724c1142789533b28076568e

commit r17-1429-ga94bfa2fba3c7675724c1142789533b28076568e
Author: Gerald Pfeifer <gerald@pfeifer.com>
Date:   Mon Jun 8 20:36:20 2026 +0200

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

Diff:
---
 libstdc++-v3/doc/html/manual/abi.html | 6 +++---
 libstdc++-v3/doc/xml/manual/abi.xml   | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index cc8725393b42..0d03c737646c 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -22,10 +22,10 @@
   GNU C++ compiler uses an industry-standard C++ ABI, the
   <a class="link" href="abi.html#biblio.cxxabi" title="Itanium C++ ABI">Itanium C++ ABI</a>.
 </p><p>
- The GNU C++ compiler, g++, has a compiler command line option to
+  The GNU C++ compiler, g++, has a command-line option to
   switch between various different C++ ABIs. This explicit version
   switch is the flag <code class="code">-fabi-version</code>. In addition, some
-  g++ command line options may change the ABI as a side-effect of
+  command-line options may change the ABI as a side-effect of
   use. Such flags include <code class="code">-fpack-struct</code> and
   <code class="code">-fno-exceptions</code>, but include others: see the complete
   list in the GCC manual under the heading <a class="link" href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options" target="_top">Options
@@ -137,7 +137,7 @@ compatible.
     This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
     Later versions defined it in "c-common.c" in the gcc directory, and from
     G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
-    '-fabi-version' command line option.
+    '-fabi-version' command-line option.
     </p><p>
     It is versioned as follows, where 'n' is given by '-fabi-version=n':
     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0: 100</p></li><li class="listitem"><p>GCC 3.1: 100 (Error, should be 101)</p></li><li class="listitem"><p>GCC 3.2: 102</p></li><li class="listitem"><p>GCC 3.3: 102</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 102 (when n=1)</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 1000 + n (when n&gt;1) </p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 999999 (when n=0)</p></li></ul></div><p></p></li><li class="listitem"><p>Changes to the default compiler option for
diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml
index e96e9e0c55ae..f1f602125b35 100644
--- a/libstdc++-v3/doc/xml/manual/abi.xml
+++ b/libstdc++-v3/doc/xml/manual/abi.xml
@@ -46,10 +46,10 @@
 </para>
 
 <para>
- The GNU C++ compiler, g++, has a compiler command line option to
+  The GNU C++ compiler, g++, has a command-line option to
   switch between various different C++ ABIs. This explicit version
   switch is the flag <code>-fabi-version</code>. In addition, some
-  g++ command line options may change the ABI as a side-effect of
+  command-line options may change the ABI as a side-effect of
   use. Such flags include <code>-fpack-struct</code> and
   <code>-fno-exceptions</code>, but include others: see the complete
   list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
@@ -381,7 +381,7 @@ compatible.
     This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
     Later versions defined it in "c-common.c" in the gcc directory, and from
     G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
-    '-fabi-version' command line option.
+    '-fabi-version' command-line option.
     </para>
 
     <para>

From gccadmin@gcc.gnu.org  Tue Jun  9 08:53:57 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  9 Jun 2026 08:53:57 +0000 (GMT)
Subject: [gcc r17-1440] Daily bump.
Message-ID: <20260609085357.D239C4BA23FD@sourceware.org>

https://gcc.gnu.org/g:df3510f80e7c02d9c19d7cb33759cd925880f53a

commit r17-1440-gdf3510f80e7c02d9c19d7cb33759cd925880f53a
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 9 08:53:25 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   4 +
 contrib/ChangeLog       |  12 ++
 gcc/ChangeLog           | 459 +++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 457 ++++++++++++++++++++++++++++++++++++++++++++++
 gcc/algol68/ChangeLog   |   5 +
 gcc/c-family/ChangeLog  |  32 ++++
 gcc/c/ChangeLog         |  20 +++
 gcc/cobol/ChangeLog     |  42 +++++
 gcc/cp/ChangeLog        |  67 +++++++
 gcc/fortran/ChangeLog   | 170 ++++++++++++++++++
 gcc/testsuite/ChangeLog | 468 ++++++++++++++++++++++++++++++++++++++++++++++++
 libgcobol/ChangeLog     |  31 ++++
 libgomp/ChangeLog       |  25 +++
 libiberty/ChangeLog     |  17 ++
 libstdc++-v3/ChangeLog  |  21 +++
 16 files changed, 1831 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 016e5968aa0f..58af42cd8d5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-05  Richard Earnshaw  <rearnsha@arm.com>
+
+	* .forgejo/CODEOWNERS: New file.
+
 2026-06-03  Richard Earnshaw  <rearnsha@arm.com>
 
 	* MAINTAINERS: Add all known missing account names to
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 716685451023..282efdcbcf95 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,15 @@
+2026-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc-changelog/git_update_version.py (ignored_commits): Add
+	'843b49269eaca82860ab4171f9644b5c411f05fc' and
+	'5c0785d62ca44b9073e543b2b3dbb04f0aca83af', remove all older
+	hashes.
+
+2026-06-05  Jonathan Wakely  <jwakely@redhat.com>
+
+	* download_prerequisites: use 'command -v' to check for wget and
+	curl.
+
 2026-06-04  Jakub Jelinek  <jakub@redhat.com>
 
 	* gcc-changelog/git_update_version.py (ignored_commits):
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 347e780eb061..a942d2eeab98 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,462 @@
+2026-06-09  Xi Ruoyao  <xry111@xry111.site>
+
+	PR rtl-optimization/125609
+	PR middle-end/122992
+	* hard-reg-set.h
+	(build_error_on_rvalue): New function.
+	(EXECUTE_IF_SET_IN_HARD_REG_SET): Call the function above.
+
+2026-06-09  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* config/rs6000/amo.h (_AMO_LD): Add _AMO_LD_CS_EQ enumerator, gated on
+	_ARCH_FUTURE.
+	(amo_lwat_cas_eq, amo_lwat_scas_eq, amo_ldat_cas_eq,
+	amo_ldat_scas_eq): New compare-and-swap equal helper functions.
+	(_AMO_ERR_CMPSWP): New macro for error-attribute stubs on non-Future
+	targets.
+	* doc/extend.texi (PowerPC Atomic Memory Operation Functions): Document
+	new functions.
+
+2026-06-08  Sam James  <sam@gentoo.org>
+
+	* doc/tm.texi: Regenerate.
+
+2026-06-08  Gerald Pfeifer  <gerald@pfeifer.com>
+
+	* doc/cpp.texi: Spell "command-line option" with a dash.
+	(Binary Resource Inclusion): Ditto.
+	* doc/fragments.texi (Target Fragment): Ditto.
+	* doc/gcc.texi: Ditto.
+	(Indices): Ditto.
+	* doc/gccint.texi: Ditto.
+	(Top): Ditto.
+	(Option Index): Ditto.
+	* doc/gcov.texi (Invoking Gcov): Ditto. And fix grammar.
+	* doc/gm2.texi (Compiler options): Ditto.
+	(Extensions): Ditto.
+	(The PIM system module): Ditto.
+	(The ISO system module): Ditto.
+	* doc/invoke.texi (Debugging Options): Ditto.
+	(AVR Options): Ditto.
+	* doc/lto.texi (LTO object file layout): Ditto.
+	(WHOPR): Ditto.
+	* doc/md.texi (Machine Constraints): Ditto.
+	* doc/objc.texi (Constant string objects): Ditto. And fix grammar.
+	(Exceptions): Ditto.
+	(Synchronization): Ditto.
+	* doc/tm.texi.in: Ditto. And standardize on "option" over
+	"flag".
+	(strategy): Ditto. And standardize on "option" over "switch"
+	and fix grammar.
+	* target.def: Ditto.
+	* doc/tm.texi: Regenerate.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* config/aarch64/aarch64-builtins.cc (enum aarch64_builtins):
+	Add AARCH64_PREFETCH_PLD_RANGE and AARCH64_PREFETCH_PLDX_RANGE.
+	(aarch64_init_prefetch_builtins): Add initialization of
+	__pld_range and __pldx_range.
+	(require_const_argument): Update to return the minval if value
+	is out of range.
+	(aarch64_expand_prefetch_range_builtin): New function.
+	(aarch64_general_expand_builtin): Add support for
+	AARCH64_PREFETCH_PLD_RANGE and AARCH64_PREFETCH_PLDX_RANGE.
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+	__ARM_PREFETCH_RANGE macro.
+	* config/aarch64/aarch64.md (unspec): Add UNSPEC_PLDX_RANGE and
+	UNSPEC_PLD_RANGE
+	(aarch64_rprfm): New instruction.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* config/aarch64/aarch64.h (TARGET_FPRCVT): New macro definition.
+	* config/aarch64/aarch64.md (arches): Add fprcvt.
+	(arch_enabled): Add fprcvt.
+	(l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2): Add
+	FEAT_FPRCVT variant.
+	(<optab>_trunchf<GPI:mode>2): Likewise.
+	(<optab>_trunc<fcvt_change_mode><GPI:mode>2): Likewise.
+	(fix_to_zero_extend<mode>di2): Likewise.
+	(<optab><fcvt_iesize><GPF:mode>2): Likewise.
+	(define_insn "aarch64_fp16_<optab><mode>hf2): Likewise.
+	* config/aarch64/iterators.md (fpw): Add SF and DF variants.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* config/aarch64/aarch64-simd-builtins.def: (lround): Add new
+	forms for new conversions.
+	(lroundu): Likewise.
+	(lceil): Likewise.
+	(lceilu): Likewise.
+	(lfloor): Likewise.
+	(lflooru): Likewise.
+	(lfrintn): Likewise.
+	(lfrintnu): Likewise.
+	* config/aarch64/arm_neon.h (vcvtd_s32_f64): New intrinsic.
+	(vcvtd_s32_f64): Likewise.
+	(vcvtd_u32_f64): Likewise.
+	(vcvts_s64_f32): Likewise.
+	(vcvts_u64_f32): Likewise.
+	(vcvtad_s32_f64): Likewise.
+	(vcvtad_u32_f64): Likewise.
+	(vcvtas_s64_f32): Likewise.
+	(vcvtas_u64_f32): Likewise.
+	(vcvtmd_s32_f64): Likewise.
+	(vcvtmd_u32_f64): Likewise.
+	(vcvtms_s64_f32): Likewise.
+	(vcvtms_u64_f32): Likewise.
+	(vcvtnd_s32_f64): Likewise.
+	(vcvtnd_u32_f64): Likewise.
+	(vcvtns_s64_f32): Likewise.
+	(vcvtns_u64_f32): Likewise.
+	(vcvtpd_s32_f64): Likewise.
+	(vcvtpd_u32_f64): Likewise.
+	(vcvtps_s64_f32): Likewise.
+	(vcvtps_u64_f32): Likewise.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+	__ARM_FEATURE_SSVE_FEXPA.
+	* config/aarch64/aarch64-sve-builtins-base.def (svexpa): Change
+	gating to streaming compatible if AARCH64_FL_SSVE_FEXPA is
+	supported.
+	* config/aarch64/aarch64-sve.md: Update gating to be enabled if
+	TARGET_SSVE_FEXPA.
+	* config/aarch64/aarch64.h (TARGET_SVE_FEXPA): New macro.
+	* config/aarch64/iterators.md (SVE_FP_UNARY_INT): Update FEXPA
+	gating.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+	__ARM_FEATURE_SSVE_BITPERM.
+	* config/aarch64/aarch64-sve-builtins-sve2.def:
+	Make sve-bitperm intrinsics streaming compatible.
+	* config/aarch64/aarch64-sve2.md: Change gating of sve-bitperm
+	instructions.
+	* config/aarch64/aarch64.h (TARGET_SVE_BITPERM): New macro.
+	(TARGET_SVE2_BITPERM): Removed.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125668
+	* tree-ssa-forwprop.cc (forward_propagate_addr_expr_1):
+	Preserve alignment of the original access also for propagating
+	into the LHS.
+
+2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125653
+	* gimple-ssa-backprop.cc (backprop::process_var): Avoid early
+	return for SSA names that occur in abnormal phis.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125652
+	* tree-chrec.cc (chrec_fold_plus_poly_poly): Avoid UB
+	integer overflow in accumulating CHREC_RIGHT.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125646
+	* tree-vect-patterns.cc (vect_synth_mult_by_constant): Assign
+	vector type to the pattern def sequence stmts.
+
+2026-06-08  Andreas Schwab  <schwab@suse.de>
+
+	PR rtl-optimization/122992
+	* config/m68k/m68k.cc (m68k_conditional_register_usage): Fix
+	signedness of register number var.
+	(m68k_zero_call_used_regs): Fix missing declaration.
+
+2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* config/aarch64/aarch64-sve.md
+	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>): Remove
+	<vconq> from name.
+
+2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* simplify-rtx.cc (simplify_context::simplify_unary_operation_1):
+	Simplify vec_duplicates of vec_duplicates.
+	* config/aarch64/aarch64-sve.md
+	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>): Remove
+	nested vec_duplicate.
+
+2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* config/sh/sh.md (bswapsi): Remove can_create_pseudo_p () check.
+
+2026-06-08  Xi Ruoyao  <xry111@xry111.site>
+
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
+2026-06-08  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* match.pd: ((type) minmax (wide) a, wide (b)): New pattern.
+
+2026-06-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* doc/sourcebuild.texi: Document that check-function-bodies
+	automatically adds the check_function_bodies options.
+
+2026-06-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125612
+	* tree-ssa-phiopt.cc (cond_store_replacement): For the case where
+	lhs is "known" to be nontrapping make sure there are no loads in
+	the middle bb.
+
+2026-06-07  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/sh/sh.md (bswapsi2): Move check for can_create_pseudos_p
+	into condition rather than FAILing.
+
+2026-06-07  John Ericson  <git@JohnEricson.me>
+
+	* gcc.cc (find_a_file): Remove mode parameter, because always
+	R_OK. Skip suffix logic, because suffix is always empty in that
+	case.
+	(read_specs): Remove mode from find_a_file call.
+	(find_a_program): Suffix is unconditional, inline mode constant.
+	(end_going_arg): Remove mode from find_a_file call.
+	(find_file): Remove mode from find_a_file call.
+	(driver::set_up_specs): Remove mode from find_a_file call.
+	(include_spec_function): Remove mode from find_a_file call.
+
+2026-06-07  John Ericson  <git@JohnEricson.me>
+
+	* gcc.cc (find_a_program): Inline find_a_file, instead of
+	calling.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs  <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gimplify.cc (compute_omp_iterator_count): Account for difference
+	in loop boundaries in Fortran.
+	(build_omp_iterator_loop): Change upper boundary condition for
+	Fortran.  Insert block statements into innermost loop.
+	(remove_unused_omp_iterator_vars): Copy block subblocks of old
+	iterator to new iterator and remove original.
+	(extract_base_bit_offset): Add iterator argument.  Remove iterator
+	variables from base.
+	(omp_accumulate_sibling_list): Add iterator argument to
+	extract_base_bit_offset.
+	* tree-pretty-print.cc (dump_block_node): Ignore BLOCK_SUBBLOCKS
+	containing iterator block statements.
+
+2026-06-06  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* optabs-query.cc (can_open_code_p): Use can_open_code_p rather
+	than can_implement_p when testing for AND and XOR.
+
+2026-06-06  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* optabs-query.cc (can_open_code_p): Handle more bswap cases,
+	incorporating logic from...
+	* gimple-ssa-store-merging.cc (maybe_optimize_vector_constructor)
+	(pass_optimize_bswap::execute)
+	(imm_store_chain_info::try_coalesce_bswap): ...here.  Use
+	can_open_code_p instead of direct optab_handler checks.
+
+2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125611
+	* config/i386/sse.md (<ssse3_avx2>_pmulhrsw<mode>3, smulhrs<mode>3):
+	Use vector_operand instead of nonimmediate_operand.
+
+2026-06-06  Ramin Moussavi  <lordrasmus@gmail.com>
+
+	* config/csky/csky.h (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
+
+2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gimplify.cc (remove_unused_omp_iterator_vars): Don't warn about
+	possibly-unused iterator variables.  Simplify control flow of
+	remaining code.
+
+2026-06-05  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/125501
+	* tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges): Abort
+	if there are 2 SSA_NAMES on the branch condition.
+
+2026-06-05  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR rtl-optimization/124713
+	* avoid-store-forwarding.cc (process_store_forwarding): Re-apply
+	SIGN_EXTEND/ZERO_EXTEND after bit insert sequence when the load is
+	not eliminated.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* gimple-ssa-store-merging.cc (maybe_optimize_vector_constructor):
+	Also support bswap32 if bswapdi2 expander is present.  Add comment
+	about bswap64 support on 32-bit targets with bswapsi2 expander.
+	(pass_optimize_bswap::execute): Likewise.
+	* config/riscv/bitmanip.md (bswapsi2): Change condition to disable
+	the expander on TARGET_64BIT without TARGET_XTHEADBB, never FAIL.
+
+2026-06-05  Roger Sayle  <roger@nextmovesoftware.com>
+	    Richard Earnshaw  <richard.earnshaw@arm.com>
+
+	PR target/56102
+	PR middle-end/122871
+	* config/arm/arm.cc (thumb1_rtx_costs): Provide reasonable costs
+	for PLUS, MINUS, COMPARE, AND, XOR, IOR, NEG, NOT, ASHIFT,
+	ASHIFTRT and ROTATERT for SImode, DImode, HImode and QImode.
+	(thumb1_size_rtx_costs): Likewise.
+	(comp_not_to_clear_mask_str_un): Silence host compiler warning.
+
+2026-06-05  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR target/125538
+	* config/aarch64/aarch64-simd.md
+	(*aarch64_simd_dup_subvector<vcons><mode>): New insn pattern.
+	(*aarch64_simd_dup_subvectorv2qiqi): Likewise.
+	* config/aarch64/iterators.md (VSDUP): New mode iterator.
+	(VCONS): New mode attribute.
+	(vcons): Likewise.
+
+2026-06-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125602
+	* tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
+	Avoid double negation for assumption condition.  Compute
+	negated step in niter_type.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* gimple-lower-bitint.cc (bitint_large_huge::lower_bswap_bitreverse):
+	Add OBJ argument, use it instead of m_vars[part] if non-NULL.  Don't
+	gsi_remove stmt.
+	(bitint_large_huge::lower_call): Adjust caller.
+	(bitint_large_huge::lower_stmt): Handle store of
+	IFN_BSWAP/IFN_BITREVERSE result.
+	(stmt_needs_operand_addr): Return true also for
+	IFN_BSWAP/IFN_BITREVERSE.
+	(build_bitint_stmt_ssa_conflicts): Formatting fix.
+	(gimple_lower_bitint): Allow merging IFN_BSWAP/IFN_BITREVERSE with
+	subsequent non-bitfield store.  Allow merging load of
+	IFN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT,BSWAP,BITREVERSE} argument
+	with the call.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/122731
+	* doc/extend.texi (__builtin_bswapg, __builtin_bitreverseg): Document.
+	* internal-fn.def (DEF_INTERNAL_INTSZ_FN): Define.
+	(DEF_INTERNAL_INTSZ_EXT_FN): Define.
+	(BSWAP): New internal fn.
+	(BITREVERSE): Likewise.
+	* internal-fn.h (expand_BSWAP, expand_BITREVERSE): Declare.
+	* internal-fn.cc (DEF_INTERNAL_INTSZ_EXT_FN): Define.
+	(expand_BSWAP, expand_BITREVERSE): New functions.
+	* builtins.h (fold_build_builtin_bswapg_bitreverseg): Declare.
+	* builtins.cc (fold_build_builtin_bswapg_bitreverseg): New function.
+	* wide-int.h (wi::bswap): Fix up docs that only multiple of 8 bits
+	is required.
+	* gimple-match-exports.cc (build_call_internal): Handle IFN_BSWAP
+	and IFN_BITREVERSE.
+	* gencfn-macros.cc (internal_fn_intsz_names): New variable.
+	(intsz_suffixes): Likewise.
+	(suffix_lists): Add intsz_suffixes.
+	(main): Handle internal_fn_intsz_names.
+	* match.pd (BSWAP, BITREVERSE): Remove.
+	(popcount(bswap(x)) is popcount(x)): Use BSWAP BITREVERSE
+	op lists.
+	* tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): Use
+	CASE_CFN_BSWAP and CASE_CFN_BITREVERSE.
+	(cond_removal_in_builtin_zero_pattern): Likewise.
+	* fold-const-call.cc (fold_const_call_ss): Likewise.
+	* fold-const.cc (tree_call_nonnegative_p): Likewise.
+	* gimple-lower-bitint.cc (struct bitint_large_huge): Declare
+	lower_bswap_bitreverse method.
+	(bitint_large_huge::lower_bswap_bitreverse): New method.
+	(bitint_large_huge::lower_call): Call it.
+	(build_bitint_stmt_ssa_conflicts): Set muldiv_p for IFN_BSWAP
+	and IFN_BITREVERSE.
+
+2026-06-05  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125599
+	* gimple-ssa-backprop.cc (backprop::execute): Calculate the
+	transitive closure of replacement values.
+
+2026-06-05  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR rtl-optimization/125609
+	PR middle-end/122992
+	* rtl-ssa/insns.cc (function_info::record_call_clobbers): Use a
+	variable to store out the result of abi.full_reg_clobbers().
+
+2026-06-05  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/riscv.h (OPTION_DEFAULT_SPECS): Specify default
+	cmodel.
+
+2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.cc (bitmap_elt_clear_from): Make static.  Require a
+	list view.
+	(bitmap_tree_listify_from): Delete.
+	(bitmap_list_view): Rewrite to avoid separate vectors.
+	(bitmap_clear): Switch to a list view before calling
+	bitmap_elt_clear_from and restore the original view afterwards.
+
+2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.cc (bitmap_tree_unlink_element): Optimize the handling
+	of the maximal node.
+
+2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.cc: Include pretty-print.h and splay-tree-utils.h.
+	(bitmap_splay_tree_accessors): New class.
+	(bitmap_splay_tree): New type.
+	(bitmap_first_set_bit_worker): Use bitmap_splay_tree::min_node
+	for tree views.
+	(bitmap_last_set_bit_worker): Use bitmap_splay_tree::max_node
+	for tree views.
+
+2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* bitmap.cc (bitmap_tree_link_element): Require callers to have
+	done a splay operation.  Avoid doing another one here.
+
+2026-06-04  Kito Cheng  <kito.cheng@sifive.com>
+
+	* config/riscv/multilib-generator: Support extra options in the
+	multilib config string.
+	* doc/install.texi (--with-multilib-generator): Document the extra
+	options syntax.
+
+2026-06-04  Kito Cheng  <kito.cheng@sifive.com>
+
+	* common/config/riscv/riscv-common.cc (riscv_supported_std_ext):
+	Move 'v' before 'p' and drop 'n' to match the spec.
+	* config/riscv/arch-canonicalize (CANONICAL_ORDER): Ditto.
+
+2026-06-04  Raphael Zinsly  <raphael.zinsly@oss.qualcomm.com>
+	    Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/125387
+	* config/riscv/riscv.cc (riscv_rtx_costs): Recognize and properly cost
+	mulh instructions.
+
+2026-06-04  vekumar  <Venkataramanan.Kumar@amd.com>
+
+	* config/i386/x86-tune.def (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM): Enable
+	for m_ZNVER6.
+	(X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM): Likewise.
+	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Likewise.
+
 2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
 
 	PR target/106895
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index cf4a41146e2d..eed21ff12b80 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260604
+20260609
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5a939090b45a..48651e3cdd65 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,460 @@
+2026-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Revert latest
+	change.
+	(Find_Type_Of_Subtype_Indic): Return Any_Type if Find_Type fails to
+	resolve the type.
+	* sem_ch12.adb (Analyze_Formal_Derived_Type): Restore more specific
+	error recovery path.
+
+2026-06-05  Ronan Desplanques  <desplanques@adacore.com>
+
+	* exp_ch6.adb (Needs_BIP_Collection): Fix condition.
+
+2026-06-05  Mathias Aparicio  <aparicio@adacore.com>
+
+	* libgnat/a-textio.adb
+	(Get_Upper_Half_Char, Get_Upper_Half_Char_Immed): Replace
+	Constraint_Error with Data_Error
+
+2026-06-05  Viljar Indus  <indus@adacore.com>
+
+	* sem_warn.adb (Warn_On_Suspicious_Index): Only check elements
+	that are coming from source.
+
+2026-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Be prepared
+	for Find_Type_Of_Subtype_Indic returning no type.
+	* sem_ch4.adb (Process_Generic_Instantiation): Give an error if the
+	generic instantation is referenced in a generic formal part.
+	* sem_ch12.adb (Analyze_Formal_Derived_Type): Return early in every
+	case of serious errors.
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* expander.adb: Handle pragma statements in the expander.
+	* sem_ch6.adb (Check_Statement_Sequence): Handle cases where
+	an ignored assertion pragma is at the end of a function body
+	that is known to trigger an assertion.
+	* sem_prag.adb (Analyze_Pragma): Remove the if-statement
+	creation for ignored pragmas. Relocate checks for assertion
+	pragma conditions that were performed on these transformed
+	if-statements here.
+	* sem_res.adb (Resolve_Short_Circuit): Remove the code for
+	ignored assertion pragmas.
+	* sem_util.adb (Original_Aspect_Pragma_Name): use the identifier
+	name for pragma Check only when it did not come from source.
+	* tbuild.adb (Make_Implicit_Loop_Statement): Adjust the code
+	for ignored Check pragmas.
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* sem_prag.adb (Analyze_Pragma): Remove overflow supression
+	workaround.
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Set_Ghost_Mode): Create ignored ghost regions
+	for ignored pragamas.
+	* sem_prag.adb (Analyze_Pragma): Mark ignored pragmas checks as
+	ignored ghost pragmas.
+
+2026-06-04  Artur Pietrek  <pietrek@adacore.com>
+
+	* exp_ch7.adb (Make_Address_For_Finalize): check
+	Has_Controlled_Component predicate before emitting the shift to be
+	consistant with what Is_Constr_Array_Subt_With_Bounds says.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.adb (Type_Access_Level): Revert ealier change.
+	* sem_ch3.adb (Derive_Subprogram.Replace_Type): Set the Scope of
+	the new anonymous access type to the scope of the derived type.
+	Do not (temporarily) sets the Scope of the subprogram to itself.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* errout.adb, exp_util.adb, sem_case.adb, sem_ch4.adb, sem_res.adb:
+	Replace low-lever inequality with a high-level routine.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_intr.adb (Check_Intrinsic_Subprogram): Recognize pragmas that
+	do not come from source because they come from aspect specification.
+
+2026-06-04  Ronan Desplanques  <desplanques@adacore.com>
+
+	* opt.ads (Latest_Ada_Only): Remove.
+	* par-prag.adb (Prag): Adapt to removal.
+	* sem_prag.adb (Analyze_Pragma): Likewise.
+	* switch-c.adb (Scan_Front_End_Switches): Likewise.
+	* usage.adb (Usage): Likewise.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.ads (Apply_Accessibility_Check_For_Parameter):
+	Rename to...
+	(Apply_Accessibility_Check_For_Conversion): ...this.
+	* accessibility.adb (Apply_Accessibility_Check_For_Parameter):
+	Rename to...
+	(Apply_Accessibility_Check_For_Conversion): ...this.
+	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Access>:
+	Adjust to above renaming.
+	* exp_ch4.adb (Expand_N_Type_Conversion): Likewise.
+	* exp_ch6.adb (Expand_Actuals): Likewise.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* einfo.ads (Is_Local_Anonymous_Access): Mention return objects.
+	* accessibility.adb (Type_Access_Level): Call Enclosing_Subprogram.
+	* sem_ch3.adb (Find_Type_Of_Object): Set Is_Local_Anonymous_Access
+	on the anonymous access type of return objects.
+
+2026-06-04  Steve Baird  <baird@adacore.com>
+
+	* libgnat/a-cbinho.adb (Adjust): Avoid null pointer dereference.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* einfo.ads (Is_Local_Anonymous_Access): Mention access results.
+	* accessibility.adb (Accessibility_Level): Add missing guard on
+	the entity for error cases.  In the component cases, retrieve the
+	function call if the prefix is a captured function call.  Remove
+	the bypass returning the library level in a return context if the
+	prefix is a function call.  Call Function_Call_Or_Allocator_Level
+	in this case when the level of the prefix is tied to that of the
+	result of the enclosing function.
+	(Check_Return_Construct_Accessibility): Change the implementation
+	to do a bona-fide static accessibility check.
+	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Merge the
+	implementations of the RM 3.10.2(28) rule for named and anonymous
+	access types.
+	* sem_ch6.adb (Analyze_Expression_Function): Set the Ekind of the
+	entity created for the body very early.
+	* sem_util.adb (In_Return_Value): Fix typo in comment.
+
+2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+
+	* sem_ch13.adb (Build_Discrete_Static_Predicate.Get_RList): If
+	case expression alternatives are False return False_Range.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* einfo.ads (Extra_Accessibility): Rename to...
+	(Extra_Accessibility_Of_Object): ...this and adjust description.
+	* gen_il-fields.ads (Opt_Field_Enum): Replace Extra_Accessibility
+	with Extra_Accessibility_Of_Object.
+	* gen_il-gen-gen_entities.adb (Constant_Or_Variable_Kind): Ditto.
+	(Formal_Kind): Ditto.
+	* accessibility.ads (Effective_Extra_Accessibility): Rename to...
+	(Extra_Accessibility): ...this.
+	* accessibility.adb (Apply_Accessibility_Check_For_Parameter): Do
+	not manually look through renamings and adjust.
+	(Effective_Extra_Accessibility): Rename to...
+	(Extra_Accessibility): ...this and add guard.
+	* exp_ch3.adb (Expand_N_Object_Declaration): Adjust.
+	* exp_ch4.adb (Expand_N_Type_Conversion): Likewise.
+	* exp_ch5.adb (Expand_N_Assignment_Statement): Likewise.
+	* exp_ch6.adb (Expand_Actuals): Likewise.
+	* sem_ch3.adb (Derive_Subprogram): Likewise.
+	* sem_ch6.adb (Create_Extra_Formals): Likewise.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch4.adb (Expand_Allocator_Expression): In the case of access
+	discriminants, pass Zero_On_Dynamic_Level to compute the static
+	accessibility level of the expression.
+	* sem_res.adb (Check_Aliased_Parameter): Pass Zero_On_Dynamic_Level
+	to compute the static accessibility level of actual parameters.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.ads (Accessibility_Level_Kind): Tweak description.
+	* accessibility.adb (Function_Call_Or_Allocator_Level): Recurse on
+	the defining identifier for an N_Object_Declaration node.
+	(Accessibility_Level): Minor tweaks.
+	* exp_ch3.adb (Expand_N_Object_Declaration): Do not special case
+	function calls in the computation of accessibility levels.
+	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not manually
+	compute the accessibility level of the LHS.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Do not create
+	object declarations when actual is captured in an object renaming.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_aux.adb (Is_Definite_Subtype): Only call Ekind if necessary.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch13.adb (Rep_Item_Too_Late): Simplify with membership test.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* freeze.adb, sem_ch13.adb: Tune whitespace.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_ch4.adb (Expand_N_In): Rewrite with True/False entity array.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_ch9.adb (Scan_Declarations): Remove redundant guard.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_util.adb (Full_Qualified_Name_String): Add assertions; fix style.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_attr.adb (Expand_N_Attribute_Reference): Store chars without
+	converting the actual parameters.
+	* exp_ch11.adb (Null_String): Likewise.
+	* exp_disp.adb (Make_DT): Likewise.
+	* exp_util.adb (Fully_Qualified_Name_String): Likewise.
+	* sem_attr.adb (Analyze_Attribute): Likewise.
+	* sem_dist.adb (Full_Qualified_Name): Likewise.
+	* sem_prag.adb (Process_Interface_Name, Set_Encoded_Interface_Name):
+	Likewise.
+	* stringt.adb (Store_String_Chars): Likewise.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch9.adb (Analyze_Requeue): Fix unbalanced parens.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_ch4.adb, sem_attr.adb, sem_ch3.adb: Use Access_Protected_Kind
+	and Access_Subprogram_Kind where possible.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* adaint.c (__gnat_library_template): Move logic to gnatmake.
+	* make.adb (Get_Library_File): Use simple single template.
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* libgnat/g-comlin.adb (Getopt): Check if Switches
+	are empty before looking at the first element.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* accessibility.ads: Alphabetize declarations.
+	(Subprogram_Access_Level): Beef up description.
+	* accessibility.adb (Accessibility_Level): Deal with formal objects
+	of generic subprograms.
+	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Set the
+	Is_Local_Anonymous_Access flag on the access result type, if any.
+	* libgnat/g-cppexc.ads (Get_Access_To_Tagged_Object): Do not declare
+	the formal type parameter as abstract.
+	* libgnat/g-cppexc.adb (Get_Access_To_Object): Fix illegal code.
+	(Get_Access_To_Tagged_Object): Likewise.
+
+2026-06-04  Steve Baird  <baird@adacore.com>
+
+	* exp_attr.adb (Build_And_Insert_Type_Attr_Subp): Test for subunit case before
+	concluding that a subprogram body has no enclosing declaration list.
+
+2026-06-04  Johannes Kanig  <kanig@adacore.com>
+
+	* inline.ads: Introduce two new Boolean flags
+	* inline.adb (Cannot_Inline): Modify the negative message into
+	a warning, and use new flag
+	* sem_res.adb (Resolve_Call): Use new flag to guard issue of msg
+	* debug.adb: Debug flag now unused for GNATprove
+
+2026-06-04  Tonu Naks  <naks@adacore.com>
+
+	* adaint.c (__gnat_copy_attribs): Fix call to SetFileTime
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* sem_ch12.adb (Analyze_Package_Instantiation): Remove
+	forced inlining in configurable run times.
+
+2026-06-04  Marc Poulhi?s  <poulhies@adacore.com>
+
+	* sem_util.adb (Enclosing_Declaration): Refactor membership test.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* doc/gnat_rm/implementation_defined_attributes.rst (Valid_Scalars):
+	Remove reference to private tagged types.
+	* exp_attr.adb  (Expand_N_Attribute_Reference) <Valid_Scalars>: Do
+	not bail out for private tagged types.
+	* sem_attr.adb (Analyze_Attribute) <Valid_Scalars>: Do not warn for
+	for private tagged types.
+	* sem_ch3.adb (Is_Visible_Component): Accept any component reference
+	whose prefix is a type conversion that does not come from source.
+	* gnat_rm.texi: Regenerate.
+
+2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+
+	* sem_ch13.ads (Is_Predicate_Static): Public declaration,
+	from the private function in the package body
+	* sem_ch13.adb (Is_Predicate_Static): Remove the now-redundant
+	local declaration
+	* exp_ch4.adb (Expand_N_Case_Expression): Add Is_Predicate_Static
+	to the static guard
+
+2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+
+	* adaint.c (__gnat_is_executable_file_attr): Initialize
+	attr->regular using __gnat_is_regular_file_attr. Directly return
+	0 before checking if executable if the attr->regular is 0.
+	Remove the now unnecessary check for invalid_file_attributes.
+
+2026-06-04  Claire Dross  <dross@adacore.com>
+
+	* doc/gnat_rm/implementation_defined_aspects.rst (Aspect Iterable):
+	A Constant_Reference function can be supplied instead of an Element
+	function.
+	* gnat_rm.texi: Regenerate.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Is_Visible_Component): Fold Is_Local_Type predicate,
+	reason only on type entities, and tidy up specific processing added
+	for ACATS B730006 test.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* libgnat/a-tags.ads (Type_Specific_Data): Move Boolean components
+	to right after Natural components and put Is_Abstract last.
+	* exp_disp.adb (Make_DT): Adjust to above reordering.
+
+2026-06-04  Viljar Indus  <indus@adacore.com>
+
+	* ghost.adb (Is_OK_Statement): Avoid checking for policies and
+	levels when checking the context of the Initialized attribute.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand new
+	attribute.
+	* par-ch4.adb (Scan_Apostrophe): Parse 'At as an attribute reference;
+	otherwise, it would be parsed as a keyword.
+	* sem_attr.adb (Analyze_Attribute): Basic checks for new attribute.
+	(Eval_Attribute): New attribute will never be evaluated.
+	* snames.ads-tmpl: (Preset Names): "at" is now also an attribute, not
+	just a keyword.
+	(Attribute_Id): New attribute identifier.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_util.ads (In_Reverse_Storage_Order_Object): Adjust.
+	* sem_util.adb (In_Reverse_Storage_Order_Object): Rewrite.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* adaint.c (__gnat_prj_add_obj_files): Remove; files that referenced
+	this variable were removed years ago.
+
+2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+
+	* freeze.adb (Check_And_Freeze_Type): Emit a more precise error
+	message when a component's frozen record is incompletely defined
+	instead of printing private component error.
+	* sem_util.ads (Incompletely_Defined): New function that
+	traverses recursively a type and returns the first incompletely
+	defined component or itself if it is incompletely defined.
+	* sem_util.adb (Incompletely_Defined): Likewise.
+	(Is_Incompletely_Defined): Refactor to a test of the new
+	Incompletely_Defined function for equality with Empty.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/124923
+	* exp_attr.adb  (Expand_N_Attribute_Reference) <Valid_Scalars>: Also
+	bail out for a private type whose full view alone is tagged.
+	* sem_attr.adb (Analyze_Attribute) <Valid_Scalars>: Also warn for a
+	private type whose only full view alone is tagged.
+
+2026-06-04  Steve Baird  <baird@adacore.com>
+
+	* exp_attr.adb
+	(Expand_N_Attribute_Reference.Build_And_Insert_Type_Attr_Subp):
+	handle the case of a library unit subprogram body; do not assume
+	that every subprogram body has an enclosing declaration list.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* par-prag.adb (Prag): Fix order.
+	* sem_prag.adb (Analyze_Pragma, Sig_Flags): Likewise.
+	* snames.ads-tmpl (Preset Names, Pragma_Id): Likewise.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/124923
+	* exp_attr.adb (Build_Record_VS_Func): Rename first parameter, fix
+	description and implement support for tagged extensions.
+	(Expand_N_Attribute_Reference) <Attribute_Valid_Scalars>: Also bail
+	out for the class-wide type of private tagged types and Adjust call
+	to Build_Record_VS_Func.
+	* sem_attr.adb (Analyze_Attribute) <Attribute_Valid_Scalars>: Also
+	warn for the class-wide type of private tagged types.
+	* sem_ch4.adb (Try_Selected_Component_In_Instance): Extend a special
+	case from instance bodies to whole instances.
+	* sem_util.ads (Validated_View): Adjust description.
+	* sem_util.adb (Validated_View): Do not recurse on the parent type
+	for tagged extensions.
+
+2026-06-04  Claire Dross  <dross@adacore.com>
+
+	* exp_ch5.adb (Expand_Formal_Container_Element_Loop): Use
+	Constant_Reference instead of Element if necessary.
+	* sem_ch13.adb (Resolve_Iterable_Operation): Check Constant_Reference.
+	(Validate_Iterable_Aspect): Handle Constant_Reference if supplied.
+	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Iteration over
+	elements of a container is allowed if Constant_Reference is supplied.
+	* sem_util.adb (Get_Iterable_Type_Primitive): Fix assertion.
+	* snames.ads-tmpl (Name_Constant_Reference): New name.
+
+2026-06-04  Javier Miranda  <miranda@adacore.com>
+
+	* errout.adb (Set_Msg_Node): Improve readability of message for
+	constructors name, replacing the internal compiler name
+	generated for direct attribute definitions with a nicer name.
+	* erroutc.ads (Replace_With_Attribute_Definition): Promote from
+	a nested subprogram declaration to a public package-level
+	declaration.
+	* erroutc.adb (Replace_With_Attribute_Definition): Move its
+	implementation to package level.
+	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Make]):
+	Code cleanup; handle assignment statement and limited type
+	object declaration.
+	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Add
+	comment.
+	(Build_Default_Simple_Initialization): Add comment.
+	* exp_ch4.adb (Expand_N_Allocator): Fix No_Initialization for
+	internally generated allocators of types with constructors.
+	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): Install
+	formals and refactor its body to be consistent with the GNAT
+	style.
+	* sem_ch3.adb (OK_For_Limited_Init_In_05): Accept T'Make since
+	it is semantically equivalent to a function call.
+	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): Handle
+	incomplete and private type declarations.
+	* sem_ch13.adb (Diagnose_Misplaced_Aspects): Remove misleading
+	error for aspect 'Initializes.
+	* sem_res.adb (Resolve_Actuals): Skip check on the first actual
+	of init-proc and constructors because the constructor may be
+	invoked to initialize a constant object, which is allowed.
+
+2026-06-04  Johannes Kanig  <kanig@adacore.com>
+
+	* gnat1drv.adb (Gnat1drv): In GNATprove mode, call the
+	back end before exiting on compilation errors.
+
+2026-06-04  Johannes Kanig  <kanig@adacore.com>
+
+	* comperr.adb (Compiler_Abort): Use the SPARK bug-report URL in
+	GNATprove mode only, and keep the GCC bug-report URL for other
+	FSF tools.
+
 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Validate
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index b39125917b17..2f95edebf124 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-08  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-pretty-print.h (a68_attr_format_token): Get diagnostic
+	string from a68_attribute_name.
+
 2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* ga68.texi (Worthy characters): Remove spurious @ entry in the
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 1df5f5d75335..4c3e453a0176 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,35 @@
+2026-06-08  Zhou Qiankang  <wszqkzqk@qq.com>
+
+	PR c++/125642
+	* c-cppbuiltin.cc (c_cpp_builtins): Don't define __FRACT_FBIT__
+	in C++.
+
+2026-06-06  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125618
+	* c-common.cc (complete_array_type): Change back to using
+	build_range_type.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/122731
+	* c-common.h (enum rid): Add RID_BUILTIN_BSWAPG and
+	RID_BUILTIN_BITREVERSEG.
+	* c-common.cc (c_common_reswords): Add __builtin_bswapg
+	and __builtin_bitreverseg.
+
+2026-06-04  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125072
+	* c-ubsan.cc (get_index_from_offset,get_index_from_pointer_addr_expr,
+	is_instrumentable_pointer_array_address): Return factor.
+	(ubsan_maybe_instrument_array_ref): Apply factor.
+
+2026-06-04  Martin Uecker  <uecker@tugraz.at>
+
+	* c-common.cc (complete_array_type): Use build_index_type.
+	* c-ubsan.cc (ubsan_instrument_bounds_pointer_address): Likewise.
+
 2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
 
 	* c-attribs.cc (handle_optimize_attribute):
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index f2b33d19fd18..2572741a9201 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,23 @@
+2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/125629
+	* c-parser.cc (c_parser_postfix_expression) <case RID_BUILTIN_BSWAPG>:
+	Call c_fully_fold on the argument before calling
+	fold_build_builtin_bswapg_bitreverseg.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/122731
+	* c-parser.cc (c_parser_postfix_expression): Parse
+	__builtin_bswapg and __builtin_bitreverseg.
+
+2026-06-04  Martin Uecker  <uecker@tugraz.at>
+
+	* c-decl.cc (grokdeclarator): Likewise.
+	* c-typeck.cc (c_verify_type,c_build_array_type,
+	c_expr_countof_expr,comptypes_internal): Use top_array_vla_p.
+	(top_array_vla_p): Rename to use _p convention and simplify.
+
 2026-06-03  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/125252
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 62189efcfa7e..d038b5cc26da 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,45 @@
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125616
+	* lang.opt.urls: Regenerated.
+
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125616
+	* genapi.cc (parser_enter_file): New __gg__dialects variable.
+	(parser_division): Likewise.
+	* genutil.cc: Likewise.
+	* genutil.h: Likewise.
+	* lang.opt.urls: Updated.
+	* symbols.h (enum cbl_dialect_t): Move this enum to common-defs.h.
+
+2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+
+	* lang.opt.urls: Regenerate
+
+2026-06-04  Robert Dubner  <rdubner@symas.com>
+
+	* genapi.cc (handle_gg_trim): Provide an array of characters to the
+	library function.
+	(parser_trim): New function that handles the optional trim chars.
+	(parser_intrinsic_call_2): Remove __gg__handling from this routine.
+	* genapi.h (parser_trim): New declaration.
+	* parse.y: Calls parser_trim() with the list of trim chars.
+
+2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+
+	* Make-lang.in: Make $(libsubdir) available to cobol1.o.
+	* cobol1.cc (struct GTY): Add dir_separator.
+	(libcompat_copybook): New function.
+	(libposix_copybook): New function.
+	(append_copybook_prefix): New function.
+	(cobol_langhook_handle_option): New function.
+	(cobol_langhook_post_options): New function.
+	(LANG_HOOKS_POST_OPTIONS): New function.
+	* gcobolspec.cc (lang_specific_driver): Remove path searches.
+	* lang-specs.h: Honor %{B*} and %I.
+	* lang.opt: Support -B and -idirafter.
+
 2026-06-02  Robert Dubner  <rdubner@symas.com>
 
 	* compare.cc (cobol_compare_relop): Rename the cobol_compare_relop
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b32887ec9bbc..5457cc8d594b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,70 @@
+2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	* call.cc (build_op_delete_call_1): Add missing auto_diagnostic_group
+	sentinel.  Formatting fix.
+	(complain_about_access): Add missing auto_diagnostic_group sentinels.
+	(convert_like_internal): Likewise.
+	(build_over_call): Likewise.
+	(maybe_warn_class_memaccess): Likewise.
+	* constexpr.cc (maybe_warn_about_constant_value): Likewise.
+	(cxx_eval_outermost_constant_expr): Likewise.
+	* contracts.cc (check_param_in_postcondition): Likewise.
+	(check_postconditions_in_redecl): Likewise.  Formatting fixes.
+	* decl.cc (identify_goto): Add missing auto_diagnostic_group
+	sentinels.
+	(omp_declare_variant_finalize_one): Likewise.
+	* method.cc (walk_field_subobs): Likewise.
+	* semantics.cc (finish_omp_clauses): Likewise.
+	* tree.cc (validate_trivial_abi_attribute): Likewise.
+	* typeck2.cc (digest_init_r): Likewise.
+
+2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* semantics.cc (cxx_omp_map_array_section): Allow ARRAY_TYPE
+	expressions, not just pointers.
+
+2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125334
+	* module.cc (depset::hash::add_dependent_adl_entities):
+	Disable when inside a header unit.
+
+2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	* module.cc (dep_adl_info::args): Initializer to nullptr
+	instead of immediately allocating.
+	(depset::hash::add_dependent_adl_entities): Exit early
+	for non-type-dependent calls and operator expressions.
+	Only allocate dep_adl_info::args if we're not exiting early.
+	Correct all-type-dependent args test.
+	* name-lookup.cc (name_lookup::preserve_state): Replace
+	propagation of tentative flag with assert that it's not
+	set.
+
+2026-06-05  Marek Polacek  <polacek@redhat.com>
+
+	* pt.cc (check_explicit_inst_of_var_template): Add
+	auto_diagnostic_group.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/122731
+	* parser.cc (cp_parser_postfix_expression): Parse
+	__builtin_bswapg and __builtin_bitreverseg.
+	* typeck.cc (build_x_bswapg_bitreverseg): New function.
+	* cp-tree.h (build_x_bswapg_bitreverseg): Declare.
+	* pt.cc (tsubst_expr): Handle IFN_BSWAP and IFN_BITREVERSE.
+	* constexpr.cc (cxx_eval_internal_function): Likewise.
+	(potential_constant_expression_1): Likewise.
+	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
+
+2026-06-04  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125575
+	PR c++/98524
+	* pt.cc (check_explicit_inst_of_var_template): New.
+	(check_explicit_specialization): Use it.
+
 2026-06-03  Patrick Palka  <ppalka@redhat.com>
 
 	PR c++/125378
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ed14567a7b14..71be30d59e16 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,173 @@
+2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125669
+	* decl.cc (gfc_get_pdt_instance): If the bound expressions for
+	and array component, of the length expression for a character
+	component, gave simplified to a constant, do not set attributes
+	pdt_array and pdt_string respectively.
+
+2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125535
+	* trans-expr.cc (gfc_conv_procedure_call): Move post block append
+	to after the deep copy of allocatable components for transformational
+	intrinsics, so that argument temporaries are not freed before the
+	result components are copied.
+
+2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125534
+	* trans-stmt.cc (gfc_trans_allocate): Use GFC_TYPE_ARRAY_RANK from
+	the GFC descriptor type when se.expr is a descriptor, rather than
+	expr->rank, for the rank passed to gfc_allocate_pdt_comp.  Apply
+	the same fix to the CLASS path.
+	(gfc_trans_deallocate): Likewise for gfc_deallocate_pdt_comp.
+
+2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125527
+	* class.cc (gfc_find_derived_vtab): Stash module namespace and
+	use it as the last place to search for the vtab before building
+	a new one.
+
+2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+	    Claude Sonnet 4.6  <noreply@anthropic.com>
+
+	PR fortran/121379
+	* decl.cc (get_proc_name): Use module_procedure attr. instead
+	of external to guard the missing-MODULE-prefix diagnostic. Use
+	gfc_error_now and do not return, so that an error cascade does
+	not occur.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs   <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
+	OMP_LIST_TO and OMP_LIST_FROM.
+	* match.cc (gfc_free_omp_namelist): Free namespace for OMP_LIST_TO
+	and OMP_LIST_FROM.
+	* openmp.cc (gfc_match_motion_var_list): Parse 'iterator' modifier.
+	(resolve_omp_clauses): Resolve iterators for OMP_LIST_TO and
+	OMP_LIST_FROM.
+	* trans-openmp.cc (gfc_trans_omp_clauses): Handle iterators in
+	OMP_LIST_TO and OMP_LIST_FROM clauses.  Add expressions to
+	iter_block rather than block.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs  <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
+	OMP_LIST_MAP.
+	* match.cc (gfc_free_omp_namelist): Free namespace in namelist for
+	OMP_LIST_MAP.
+	* openmp.cc (gfc_match_omp_clauses): Parse 'iterator' modifier for
+	'map' clause.
+	(resolve_omp_clauses): Resolve iterators for OMP_LIST_MAP.
+	* trans-openmp.cc: Include tree-ssa-loop-niter.h.
+	(gfc_trans_omp_array_section): Add iterator argument.  Replace
+	instances of iterator variables with the initial value when
+	computing biases.
+	(gfc_trans_omp_clauses): Handle iterators in OMP_LIST_MAP clauses.
+	Add expressions to iter_block rather than block.  Do not apply
+	iterators to firstprivate maps.  Pass iterator to
+	gfc_trans_omp_array_section.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gfortran.h (struct gfc_omp_namelist): Move udm field into a new
+	union u3.
+	* match.cc (gfc_free_omp_namelist): Change reference to u2.udm to
+	u3.udm.
+	* openmp.cc (gfc_match_omp_clauses): Likewise.
+
+2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125606
+	* trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument
+	of LOC() is not scalar or known to be simply contiguous, simply
+	take the address of the argument array's first element.
+
+2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	* resolve.cc (replace_in_code_recursive): Add EXEC_BLOCK case to
+	replace shadow iterator references in ASSOCIATE selector expressions
+	and the ASSOCIATE body namespace.
+
+2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125531
+	* primary.cc (gfc_match_varspec): Before erroring on a zero-argument
+	COMPCALL, check for a same-named data component and fall back to the
+	data-component path.  For inferred-type ASSOCIATE names, retry
+	gfc_find_component with noaccess=true when the normal search fails.
+
+2026-06-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/60576
+	* trans-array.cc (gfc_resize_assumed_rank_dim_field): New
+	function extracted from gfc_conv_array_parameter.
+	(gfc_conv_array_parameter): Use the new function.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125529
+	* resolve.cc (check_default_none_expr): Use d->code instead of
+	sym->ns->code to locate the DO CONCURRENT forall_iterator list,
+	avoiding a wrong-union-member read when the symbol's namespace is
+	an ASSOCIATE body.  Skip leading underscore when comparing iterator
+	names for shadow iterators.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125528
+	* class.cc (find_typebound_proc_uop): Set root = NULL instead of
+	returning NULL when derived type lacks f2k_derived, so parent-type
+	type-bound procedures and operators are still found via inheritance.
+	* match.cc (resolve_assoc_operand): New helper.
+	(infer_typebound_uop_type): New helper.
+	(extend_assoc_op): New helper.
+	(match_association_list): Handle ASSOCIATE selectors that are
+	type-bound user-defined operator expressions, including nested cases.
+	* resolve.cc (resolve_typebound_procedures): Move resolve_symbol
+	call for the parent type before the early return so inherited
+	type-bound bindings are resolved even when the child type has none
+	of its own.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/60576
+	PR fortran/60576
+	* trans-array.cc (gfc_conv_array_parameter): For an assumed-rank
+	actual argument passed to a CLASS assumed-rank formal, use a
+	runtime-sized memcpy for the dim[] entries instead of a full
+	GFC_MAX_DIMENSIONS static copy.  For a fixed-rank actual to a
+	CLASS assumed-rank formal, pass lhs_type=false to
+	gfc_class_array_data_assign so the dim[] copy is sized by the
+	RHS descriptor type (dim_t[rank]).  Fixed-rank class formals
+	retain lhs_type=true.
+	* trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank
+	actual, use a runtime-sized memcpy for the derived_array descriptor
+	dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy.
+
+2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+	    Claude Sonnet 4.6  <noreply@anthropic.com>
+
+	PR fortran/121204
+	* symbol.cc (gfc_copy_attr): Copy the always_explicit attribute.
+
+2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/93424
+	* decl.cc (variable_decl): Do not commit the symbol if it is
+	the implicit result of a module procedure being declared in a
+	function, used in a submodule.
+
 2026-06-03  Henri Menke  <henri@henrimenke.de>
 
 	* gfortran.h (enum ext_attr_id_t): Add EXT_ATTR_INLINE and
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f788725d53b1..bb7d59977cd5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,471 @@
+2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125669
+	* gfortran.dg/pdt_92.f03: New test.
+
+2026-06-09  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* gcc.target/powerpc/amo8.c: New test.
+	* gcc.target/powerpc/amo9.c: New test.
+
+2026-06-08  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/compile/error-attr-format-token-1.a68: New test.
+
+2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/125629
+	* c-c++-common/builtin-bswapg-4.c: New test.
+	* c-c++-common/builtin-bitreverseg-3.c: New test.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* gcc.target/aarch64/acle/rprfm.c: New test.
+	* gcc.target/aarch64/acle/rprfm_error.c: New test.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* gcc.target/aarch64/acle/fprcvt.c: New test.
+	* gcc.target/aarch64/fprcvt.c: New test.
+	* gcc.target/aarch64/fprcvt.x: New test.
+	* gcc.target/aarch64/fprcvt_float32_int32.c: New test.
+	* gcc.target/aarch64/fprcvt_float32_int64.c: New test.
+	* gcc.target/aarch64/fprcvt_float32_uint32.c: New test.
+	* gcc.target/aarch64/fprcvt_float32_uint64.c: New test.
+	* gcc.target/aarch64/fprcvt_float64_int32.c: New test.
+	* gcc.target/aarch64/fprcvt_float64_int64.c: New test.
+	* gcc.target/aarch64/fprcvt_float64_uint32.c: New test.
+	* gcc.target/aarch64/fprcvt_float64_uint64.c: New test.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* gcc.target/aarch64/acle/fcvt_intrinsics.c: New test.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add
+	__ARM_FEATURE_SSVE_FEXPA test.
+	* gcc.target/aarch64/sve/acle/asm/expa_f16.c: Add streaming mode
+	test.
+	* gcc.target/aarch64/sve/acle/asm/expa_f32.c: Likewise.
+	* gcc.target/aarch64/sve/acle/asm/expa_f64.c: Likewise.
+	* lib/target-supports.exp (sve_ext): Add ssve-fexpa support test.
+	* g++.target/aarch64/sve/aarch64-ssve.exp (GCC target pragma):
+	Add ssve-fexpa.
+	(streaming_ok): Add svexpa.
+	(nonstreaming_only) Remove svexpa.
+
+2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+
+	* lib/target-supports.exp (exts): Add dg conditions for ssve-bitperm.
+	* g++.target/aarch64/sve/aarch64-ssve.exp: Update test for ssve-bitperm.
+	* gcc.target/aarch64/pragma_cpp_predefs_5.c: Update test.
+	* gcc.target/aarch64/sve2/acle/asm/bdep_u16.c: Update for ssve-bitperm.
+	* gcc.target/aarch64/sve2/acle/asm/bdep_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bdep_u64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bdep_u8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bext_u16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bext_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bext_u64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bext_u8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bdep_u16.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bdep_u32.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bdep_u64.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bdep_u8.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bext_u16.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bext_u32.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bext_u64.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bext_u8.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c: Likewise.
+	* gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c: Likewise.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125668
+	* gcc.dg/pr125668.c: New testcase.
+
+2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125653
+	* gcc.dg/torture/pr125653.c: New test.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125652
+	* gcc.dg/torture/pr125652.c: New testcase.
+
+2026-06-08  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125646
+	* gcc.dg/vect/pr125646.c: New testcase.
+
+2026-06-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* g++.dg/modules/test-p1689.py: Make arrays have predictable
+	order.
+
+2026-06-08  Haochen Jiang  <haochen.jiang@intel.com>
+
+	* g++.dg/modules/modules.exp (module_cmi_p): Add std parameter
+	and include it in test report.  Update call site.
+	* lib/lto.exp (lto_handle_diagnostics_for_file): Add optstr
+	parameter and append it to the test report.
+	(lto_handle_diagnostics): Add optstr parameter.
+	(lto-link-and-maybe-run): Update lto_handle_diagnostics call site.
+
+2026-06-08  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	* gcc.dg/tree-ssa/pr118680.c: New test.
+	* gcc.dg/vect/pr113281-5.c: Drop MIN_EXPR and MAX_EXPR narrowing
+	dump checks that are optimized away before vectorization.
+
+2026-06-08  Zhou Qiankang  <wszqkzqk@qq.com>
+
+	PR c++/125642
+	* g++.dg/pr125642.C: New test.
+
+2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125535
+	* gfortran.dg/implied_do_alloc_comp_1.f90: New test.
+
+2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125534
+	* gfortran.dg/pdt_array_alloc_1.f90: New test.
+
+2026-06-07  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* lib/gcc-dg.exp (dg-final): Add check_function_bodies options
+	for check-function-bodies directives.
+	* g++.target/i386/cf_check-3.C: Remove explicit
+	{ dg-add-options check_function_bodies }.
+	* g++.target/i386/cf_check-4.C: Likewise.
+	* g++.target/i386/memset-pr101366-1.C: Likewise.
+	* g++.target/i386/memset-pr101366-2.C: Likewise.
+	* g++.target/i386/memset-pr108585-1a.C: Likewise.
+	* g++.target/i386/memset-pr108585-1b.C: Likewise.
+	* g++.target/i386/memset-pr118276-1a.C: Likewise.
+	* g++.target/i386/memset-pr118276-1b.C: Likewise.
+	* g++.target/i386/memset-pr118276-1c.C: Likewise.
+	* gcc.target/i386/20040112-1.c: Likewise.
+	* gcc.target/i386/builtin-copysign-2.c: Likewise.
+	* gcc.target/i386/builtin-copysign-3.c: Likewise.
+	* gcc.target/i386/builtin-copysign-4.c: Likewise.
+	* gcc.target/i386/builtin-copysign-5.c: Likewise.
+	* gcc.target/i386/builtin-copysign-6.c: Likewise.
+	* gcc.target/i386/builtin-copysign-7.c: Likewise.
+	* gcc.target/i386/builtin-copysign-8a.c: Likewise.
+	* gcc.target/i386/builtin-copysign-8b.c: Likewise.
+	* gcc.target/i386/builtin-fabs-1.c: Likewise.
+	* gcc.target/i386/builtin-memmove-10.c: Likewise.
+	* gcc.target/i386/builtin-memmove-11a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-11b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-11c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-12.c: Likewise.
+	* gcc.target/i386/builtin-memmove-13.c: Likewise.
+	* gcc.target/i386/builtin-memmove-14.c: Likewise.
+	* gcc.target/i386/builtin-memmove-15.c: Likewise.
+	* gcc.target/i386/builtin-memmove-1a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-1b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-1c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-1d.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-2d.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-3c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-4c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-5a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-5b.c: Likewise.
+	* gcc.target/i386/builtin-memmove-5c.c: Likewise.
+	* gcc.target/i386/builtin-memmove-6.c: Likewise.
+	* gcc.target/i386/builtin-memmove-7.c: Likewise.
+	* gcc.target/i386/builtin-memmove-8.c: Likewise.
+	* gcc.target/i386/builtin-memmove-9.c: Likewise.
+	* gcc.target/i386/cf_check-11.c: Likewise.
+	* gcc.target/i386/cf_check-7.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-1.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-2.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-3.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-4.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-5.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-6.c: Likewise.
+	* gcc.target/i386/memcpy-pr120683-7.c: Likewise.
+	* gcc.target/i386/memcpy-strategy-12.c: Likewise.
+	* gcc.target/i386/memset-pr120683-1.c: Likewise.
+	* gcc.target/i386/memset-pr120683-10.c: Likewise.
+	* gcc.target/i386/memset-pr120683-11.c: Likewise.
+	* gcc.target/i386/memset-pr120683-12.c: Likewise.
+	* gcc.target/i386/memset-pr120683-13.c: Likewise.
+	* gcc.target/i386/memset-pr120683-14.c: Likewise.
+	* gcc.target/i386/memset-pr120683-15.c: Likewise.
+	* gcc.target/i386/memset-pr120683-16.c: Likewise.
+	* gcc.target/i386/memset-pr120683-17.c: Likewise.
+	* gcc.target/i386/memset-pr120683-18.c: Likewise.
+	* gcc.target/i386/memset-pr120683-19.c: Likewise.
+	* gcc.target/i386/memset-pr120683-2.c: Likewise.
+	* gcc.target/i386/memset-pr120683-20.c: Likewise.
+	* gcc.target/i386/memset-pr120683-21.c: Likewise.
+	* gcc.target/i386/memset-pr120683-22.c: Likewise.
+	* gcc.target/i386/memset-pr120683-23.c: Likewise.
+	* gcc.target/i386/memset-pr120683-3.c: Likewise.
+	* gcc.target/i386/memset-pr120683-4.c: Likewise.
+	* gcc.target/i386/memset-pr120683-5.c: Likewise.
+	* gcc.target/i386/memset-pr120683-6.c: Likewise.
+	* gcc.target/i386/memset-pr120683-7.c: Likewise.
+	* gcc.target/i386/memset-pr120683-8.c: Likewise.
+	* gcc.target/i386/memset-pr120683-9.c: Likewise.
+	* gcc.target/i386/memset-pr70308-1a.c: Likewise.
+	* gcc.target/i386/memset-pr70308-1b.c: Likewise.
+	* gcc.target/i386/memset-strategy-10.c: Likewise.
+	* gcc.target/i386/memset-strategy-13.c: Likewise.
+	* gcc.target/i386/memset-strategy-25.c: Likewise.
+	* gcc.target/i386/memset-strategy-28.c: Likewise.
+	* gcc.target/i386/memset-strategy-29.c: Likewise.
+	* gcc.target/i386/memset-strategy-30.c: Likewise.
+	* gcc.target/i386/pr111673.c: Likewise.
+	* gcc.target/i386/pr120936-1.c: Likewise.
+	* gcc.target/i386/pr120936-11.c: Likewise.
+	* gcc.target/i386/pr120936-2.c: Likewise.
+	* gcc.target/i386/pr120936-4.c: Likewise.
+	* gcc.target/i386/pr120936-5.c: Likewise.
+	* gcc.target/i386/pr120936-9.c: Likewise.
+	* gcc.target/i386/pr122343-1a.c: Likewise.
+	* gcc.target/i386/pr122343-1b.c: Likewise.
+	* gcc.target/i386/pr122343-2a.c: Likewise.
+	* gcc.target/i386/pr122343-2b.c: Likewise.
+	* gcc.target/i386/pr122343-3.c: Likewise.
+	* gcc.target/i386/pr122343-4a.c: Likewise.
+	* gcc.target/i386/pr122343-4b.c: Likewise.
+	* gcc.target/i386/pr122343-5a.c: Likewise.
+	* gcc.target/i386/pr122343-5b.c: Likewise.
+	* gcc.target/i386/pr122343-6a.c: Likewise.
+	* gcc.target/i386/pr122343-6b.c: Likewise.
+	* gcc.target/i386/pr122343-7.c: Likewise.
+	* gcc.target/i386/pr122675-1.c: Likewise.
+	* gcc.target/i386/pr125100-4.c: Likewise.
+	* gcc.target/i386/pr125355-2.c: Likewise.
+	* gcc.target/i386/pr125355.c: Likewise.
+	* gcc.target/i386/pr82142a.c: Likewise.
+	* gcc.target/i386/pr82142b.c: Likewise.
+	* gcc.target/i386/pr92080-17.c: Likewise.
+
+2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+	    Claude Sonnet 4.6  <noreply@anthropic.com>
+
+	PR fortran/121379
+	* gfortran.dg/pdt_59.f03: Add module attribute as required.
+	* gfortran.dg/pr87907.f90: Ditto.
+	* gfortran.dg/pr93461.f90: Ditto.
+	* gfortran.dg/submodule_10.f08: Ditto.
+	* gfortran.dg/submodule_33.f08: Ditto.
+	* gfortran.dg/submodule_36.f90: New test.
+	* gfortran.dg/submodule_37.f90: Add module attribute.
+
+2026-06-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125612
+	* gcc.dg/tree-ssa/pr125612-1.c: New test.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs   <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gfortran.dg/gomp/target-update-iterators-1.f90: New.
+	* gfortran.dg/gomp/target-update-iterators-2.f90: New.
+	* gfortran.dg/gomp/target-update-iterators-3.f90: New.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs  <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gfortran.dg/gomp/target-map-iterators-1.f90: New.
+	* gfortran.dg/gomp/target-map-iterators-2.f90: New.
+	* gfortran.dg/gomp/target-map-iterators-3.f90: New.
+	* gfortran.dg/gomp/target-map-iterators-4.f90: New.
+	* gfortran.dg/gomp/target-map-iterators-6.f90: New.
+
+2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125606
+	* gfortran.dg/loc_3.f90: New test.
+
+2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	* gfortran.dg/do_concurrent_assoc_iter_1.f90: New test.
+
+2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125531
+	* gfortran.dg/associate_infer_program_type.f90: New test.
+
+2026-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* g++.dg/asan/deep-thread-stack-1.C: Omit duplicate libraries
+	for Darwin.
+
+2026-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* gcc.dg/analyzer/mkdtemp-1.c: Add unistd header.
+	* gcc.dg/analyzer/mkstemps-1.c: Likewise.
+	* gcc.dg/analyzer/mktemp-1.c: Handle deprecation warnings.
+
+2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125611
+	* gcc.target/i386/ssse3-pr125611.c: New test.
+
+2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* c-c++-common/gomp/target-map-iterators-2.c: Don't expect warnings
+	about unused iterator variables.
+	* c-c++-common/gomp/target-update-iterators-2.c: Likewise.
+
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob:
+	Tests for "DISPLAY 1.23" as ".123 01".
+	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out:
+	Likewise.
+
+2026-06-05  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/125501
+	* gcc.dg/pr125501.c: New.
+
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125616
+	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob: New test.
+	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out: New test.
+
+2026-06-05  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR rtl-optimization/124713
+	* gcc.target/aarch64/pr124713.c: New test.
+
+2026-06-05  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR target/125538
+	* gcc.target/aarch64/sve/vec_init_5.c: Add new 8/16-bit testcases.
+	* gcc.target/aarch64/vec-init-23.c: Likewise.
+	* gcc.target/aarch64/pr125538.c: New test.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-c++-common/builtin-bswapg-2.c: Add further enum related tests.
+	* c-c++-common/builtin-bitreverseg-2.c: Likewise.
+	* c-c++-common/pr111309-2.c: Likewise.
+	* c-c++-common/pr111309-3.c: New test.
+
+2026-06-05  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125602
+	* gcc.dg/torture/pr125602.c: New testcase.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/bitint-137.c: New test.
+
+2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/122731
+	* c-c++-common/builtin-bswapg-1.c: New test.
+	* c-c++-common/builtin-bswapg-2.c: New test.
+	* c-c++-common/builtin-bswapg-3.c: New test.
+	* c-c++-common/builtin-bitreverseg-1.c: New test.
+	* c-c++-common/builtin-bitreverseg-2.c: New test.
+
+2026-06-05  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	PR tree-optimization/125599
+	* g++.dg/torture/pr125599.C: New test.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125529
+	* gfortran.dg/do_concurrent_assoc_default_none.f90: New test.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125528
+	* gfortran.dg/associate_80.f90: New test.
+
+2026-06-04  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125575
+	PR c++/98524
+	* g++.dg/cpp1y/var-templ90.C: New test.
+	* g++.dg/cpp1y/var-templ91.C: New test.
+	* g++.dg/cpp1y/var-templ92.C: New test.
+	* g++.dg/cpp1y/var-templ93.C: New test.
+
+2026-06-04  Martin Uecker  <uecker@tugraz.at>
+
+	PR c/125072
+	* gcc.dg/pr125072.c: New test.
+	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c: Avoid heap
+	corruption.
+	* gcc.dg/ubsan/pointer-counted-by-bounds-124230.c: Likewise.
+
+2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/60576
+	PR fortran/60576
+	* gfortran.dg/asan/assumed_rank_26.f90: New test covering both
+	assumed-rank and fixed-rank type actuals passed to a CLASS
+	assumed-rank dummy.
+
+2026-06-04  Robert Dubner  <rdubner@symas.com>
+
+	* cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob: New test.
+	* cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out: New test.
+
+2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+
+	* cobol.dg/group2/cbltypes.cpy: Removed.
+
+2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+	    Claude Sonnet 4.6  <noreply@anthropic.com>
+
+	PR fortran/121204
+	* gfortran.dg/submodule_38.f90: New test.
+
+2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/93424
+	* gfortran.dg/submodule_37.f90: New test.
+
+2026-06-04  Raphael Zinsly  <raphael.zinsly@oss.qualcomm.com>
+	    Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	PR target/125387
+	* gcc.target/riscv/pr125387.c: New test.
+
+2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* lib/target-supports.exp
+	(check_effective_target_powerpc_future_compile_ok): New target support
+	procedure.
+	(check_effective_target_powerpc_future_assemble_ok): Likewise.
+	(check_powerpc_future_hw_available): Likewise.
+	(is-effective-target): Register powerpc_future_hw.
+	(is-effective-target-keyword): Likewise.
+
 2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
 
 	PR target/106895
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 6edcc6375131..c2d1b3cab35a 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,34 @@
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125616
+	* libgcobol.cc (format_for_display_internal): Format matches the
+	description in the PR.
+
+2026-06-05  Robert Dubner  <rdubner@symas.com>
+
+	PR cobol/125616
+	* common-defs.h (enum cbl_dialect_t): Move cbl_dialect_t here.
+	* intrinsic.cc (__gg__trim_1): Make a formal parameter const.
+	* libgcobol.cc (format_for_display_internal): Change the formatting
+	of COMP-1/COMP2 when "-dialect ibm" is in force.
+	(default_exception_handler): Whitespace formatting.
+	(ec_type_disposition): Likewise.
+	(ec_is_fatal): Likewise.
+
+2026-06-04  Robert Dubner  <rdubner@symas.com>
+
+	* intrinsic.cc (__gg__formatted_date): Formatting change.
+	(change_case): Likewise.
+	(__gg__trim): Rename as __gg__trim_1.
+	(__gg__trim_1): Reworked to handle an array of single-byte chars.
+	(__gg__trim_a): Reworked to handle an array of multi-byte chars.
+	(iscasematch): Formatting change.
+
+2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+
+	* Makefile.am: Install posix copybooks to build tree.
+	* Makefile.in: Likewise.
+
 2026-06-02  Robert Dubner  <rdubner@symas.com>
 
 	* intrinsic.cc (__gg__trim): Eliminate useless comment.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index c25009c25344..d8f15a614510 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,28 @@
+2026-06-09  Tobias Burnus  <tburnus@baylibre.com>
+
+	* libgomp.texi (GCN): Mention ROCR_VISIBLE_DEVICES.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs   <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* testsuite/libgomp.fortran/target-update-iterators-1.f90: New.
+	* testsuite/libgomp.fortran/target-update-iterators-2.f90: New.
+	* testsuite/libgomp.fortran/target-update-iterators-3.f90: New.
+
+2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Andrew Stubbs  <ams@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* target.c (kind_to_name): Handle GOMP_MAP_STRUCT and
+	GOMP_MAP_STRUCT_UNORD.
+	(gomp_add_map): New.
+	(gomp_merge_iterator_maps): Expand fields of a struct mapping
+	breadth-first.
+	* testsuite/libgomp.fortran/target-map-iterators-1.f90: New.
+	* testsuite/libgomp.fortran/target-map-iterators-2.f90: New.
+	* testsuite/libgomp.fortran/target-map-iterators-3.f90: New.
+
 2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* oacc-parallel.c (GOACC_parallel_keyed): Use gomp_alloca instead
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 3147d8b93fb9..e60b5951ea40 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,20 @@
+2026-06-07  Andrew Burgess  <aburgess@redhat.com>
+
+	* d-demangle.c (struct dlang_info::options): New field,
+	carries options passed to the demangler.
+	(struct dlang_info::num_backrefs): Count total number of back
+	referenced types that have been processed.
+	(struct dlang_info::backref_depth): Count the depth of
+	recursive back references.
+	(dlang_type_backref): Track recursive back reference depth,
+	and the total number of back references encountered.  Bail out
+	early if the total number gets too high.
+	(dlang_demangle_init_info): Initialise new 'struct dlang_info'
+	fields.
+	(dlang_demangle): Pass demangler options to
+	dlang_demangle_init_info.
+	* testsuite/d-demangle-expected: Add new test.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	* configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 6ee4bc4b3b79..841359ac23dd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,24 @@
+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

From gccadmin@gcc.gnu.org  Tue Jun  9 08:57:05 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  9 Jun 2026 08:57:05 +0000 (GMT)
Subject: [gcc r15-11267] Daily bump.
Message-ID: <20260609085705.12BAD4B7A1D8@sourceware.org>

https://gcc.gnu.org/g:ff1385a8a0ce9cc48fc71a320e6d94800f50b3ea

commit r15-11267-gff1385a8a0ce9cc48fc71a320e6d94800f50b3ea
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 9 08:56:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 21 ++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 19 +++++++++++++
 gcc/testsuite/ChangeLog | 52 +++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 73 +++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 166 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c53661ed6944..fe26da03605e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+
+	Backported from master:
+	2026-04-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR middle-end/124900
+	* gimple-crc-optimization.cc (crc_optimization::optimize_crc_loop): Do
+	not expand to table when compiling for size.
+	(class crc_optimization): Update prototype of optimize_crc_loop to
+	include loop.
+	(crc_optimization::execute): Pass loop to optimize_crc_loop.
+
+2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+
+	Backported from master:
+	2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125431
+	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches,
+	complex_fms_pattern::matches): Gate on FP contraction.
+
 2026-06-03  Richard Biener  <rguenther@suse.de>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index cf4a41146e2d..eed21ff12b80 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260604
+20260609
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 98d9c826fb3a..83129bdff5ed 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,22 @@
+2026-06-05  Jason Merrill  <jason@redhat.com>
+
+	Revert:
+	2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+	for an empty union member.
+
+2026-06-05  Jason Merrill  <jason@redhat.com>
+
+	Revert:
+	2026-05-15  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125315
+	* constexpr.cc (init_subob_ctx): Allow both ctor and object
+	to be null for an empty subobject.
+
 2026-06-03  Nathaniel Shead  <nathanieloshead@gmail.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 668dd6e0a3ee..3e89fec85efa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,55 @@
+2026-06-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	Backported from master:
+	2026-06-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* g++.dg/modules/test-p1689.py: Make arrays have predictable
+	order.
+
+2026-06-05  Jason Merrill  <jason@redhat.com>
+
+	Revert:
+	2026-06-05  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+		    Jason Merrill  <jason@redhat.com>
+
+	PR c++/123346
+	* g++.dg/cpp2a/constexpr-union10.C: New test.
+
+2026-06-05  Jason Merrill  <jason@redhat.com>
+
+	Revert:
+	2026-06-05  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125315
+	* g++.dg/cpp2a/no_unique_address16.C: New test.
+
+2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+
+	Backported from master:
+	2026-04-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR middle-end/124900
+	* gcc.target/aarch64/crc-1.c: New test.
+	* gcc.target/aarch64/crc-2.c: New test.
+	* gcc.target/aarch64/crc-3.c: New test.
+	* gcc.target/aarch64/crc-4.c: New test.
+
+2026-06-05  Tamar Christina  <tamar.christina@arm.com>
+
+	Backported from master:
+	2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125431
+	* gfortran.dg/vect/pr125431.f90: New test.
+
+2026-06-04  Richard Earnshaw  <rearnsha@arm.com>
+
+	Backported from master:
+	2026-03-06  Richard Earnshaw  <rearnsha@arm.com>
+
+	* gcc.target/arm/aes-fuse-1.c: Add _ok to the effective_target.
+	* gcc.target/arm/aes-fuse-2.c: Likewise.
+
 2026-06-03  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/125252
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e064ecec90b6..750cbe2ab98f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,76 @@
+2026-06-05  XU Kailiang  <xu2k3l4@outlook.com>
+
+	PR libstdc++/117214
+	* include/bits/chrono_io.h (__formatter_chrono::_M_a_A)
+	(__formatter_chrono::_M_b_B, __formatter_chrono::_M_p): Use
+	_M_locale_fmt to format %a/%A/%b/%B/%p.
+	* testsuite/std/time/format/pr117214_custom_timeput.cc: New
+	test.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-07-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR libstdc++/120789
+	* include/bits/ranges_algo.h (__remove_if_fn::operator()): Use
+	ranges::iter_move(iter) instead of std::move(*iter).
+	* testsuite/25_algorithms/remove_if/120789.cc: New test.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-07-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR libstdc++/120789
+	* include/bits/ranges_algo.h (__unique_fn::operator()): Use
+	ranges::iter_move(iter) instead of std::move(*iter).
+	* testsuite/25_algorithms/unique/120789.cc: New test.
+
+2026-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	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-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/debug/safe_iterator.h: Remove trailing whitespace.
+
+2026-06-04  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	Backported from master:
+	2025-12-19  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	* include/debug/helper_functions.h (__gnu_debug::__can_advance):
+	Declare as _GLIBCXX20_CONSTEXPR.
+	* include/debug/safe_iterator.h (__gnu_debug::__can_advance):
+	Define as _GLIBCXX20_CONSTEXPR, and return true for constexpr
+	evaluation.
+	(__gnu_debug::__base): Define as _GLIBCXX20_CONSTEXPR.
+
+2026-06-04  Fran?ois Dumont  <frs.dumont@gmail.com>
+
+	PR libstdc++/119163
+	* include/debug/functions.h (__check_valid_range): Add C++20 constexpr.
+	* include/debug/helper_functions.h (__valid_range): Likewise.
+	* include/debug/safe_iterator.h (__valid_range): Likewise.
+
+2026-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2025-10-22  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/122224
+	* include/bits/stl_iterator_base_funcs.h (prev): Compare
+	distance as n > 0 instead of n != 0.
+	* testsuite/24_iterators/range_operations/122224.cc: New test.
+
 2026-06-03  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Tue Jun  9 08:58:19 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue,  9 Jun 2026 08:58:19 +0000 (GMT)
Subject: [gcc r16-9077] Daily bump.
Message-ID: <20260609085819.66C8A4B19720@sourceware.org>

https://gcc.gnu.org/g:59d647197afc4c0a500cbef0eb78542f87210534

commit r16-9077-g59d647197afc4c0a500cbef0eb78542f87210534
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 9 08:57:48 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 616 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       |  56 +++++
 gcc/cp/ChangeLog        |  44 ++++
 gcc/fortran/ChangeLog   |  21 ++
 gcc/testsuite/ChangeLog |  64 +++++
 libstdc++-v3/ChangeLog  |  90 +++++++
 7 files changed, 892 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7fce418f9598..e81d9f5884a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,619 @@
+2026-06-09  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-06-08  Xi Ruoyao  <xry111@xry111.site>
+
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
+2026-06-09  Kewen Lin  <linkewen@hygon.cn>
+
+	Backported from master:
+	2026-05-28  Kewen Lin  <linkewen@hygon.cn>
+		    Xin Liu  <liulxx@hygon.cn>
+
+	* config/i386/c86-4g-m7.md (c86_4g_m7_fpu): Remove automaton.
+	(c86_4g_m7_fpu02): New automaton.
+	(c86_4g_m7_fpu13): Ditto.
+	(c86-4g-m7-fpu0): Move to c86_4g_m7_fpu02 automaton.
+	(c86-4g-m7-fpu1): Move to c86_4g_m7_fpu13 automaton.
+	(c86-4g-m7-fpu2): Move to c86_4g_m7_fpu02 automaton.
+	(c86-4g-m7-fpu3): Move to c86_4g_m7_fpu13 automaton.
+	(c86-4g-m7-fdiv): Remove cpu unit.
+	(c86-4g-m7-fdiv1): New cpu unit.
+	(c86-4g-m7-fdiv3): Ditto.
+	(c86-4g-m7-fpu_0_3): New reservation.
+	(c86-4g-m7-fpu_1_3x2): Ditto.
+	(c86-4g-m7-fpu_1_3x3): Ditto.
+	(c86-4g-m7-fpu_1_3x6): Ditto.
+	(c86-4g-m7-fpux2): Ditto.
+	(c86-4g-m7-fpux4): Ditto.
+	(c86-4g-m7-fpux6): Ditto.
+	(c86-4g-m7-fpux8): Ditto.
+	(c86-4g-m7-fpux16): Ditto.
+	(c86-4g-m7-fp1fdiv1x4): Ditto.
+	(c86-4g-m7-fp3fdiv3x4): Ditto.
+	(c86-4g-m7-fdiv13): Ditto.
+	(c86-4g-m7-fp13div13): Ditto.
+	(c86-4g-m7-fp13div13x4): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x8): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x9): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x11): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x15): Ditto.
+	(c86-4g-m7-fp1div1_fp3div3_x4x18): Ditto.
+	(c86_4g_m7_idiv): New reservation.
+	(c86_4g_m7_idiv_QI): Adjust reservation latency and unit occupancy.
+	(c86_4g_m7_idiv_load): New reservation.
+	(c86_4g_m7_idiv_QI_load): Adjust reservation latency and unit
+	occupancy.
+	(c86_4g_m7_idiv_DI): Remove reservation.
+	(c86_4g_m7_idiv_SI): Ditto.
+	(c86_4g_m7_idiv_HI): Ditto.
+	(c86_4g_m7_idiv_DI_load): Ditto.
+	(c86_4g_m7_idiv_SI_load): Ditto.
+	(c86_4g_m7_idiv_HI_load): Ditto.
+	(c86_4g_m7_sse_insertimm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_insert): Ditto.
+	(c86_4g_m7_fp_sqrt): Adjust reservation.
+	(c86_4g_m7_fp_div): Ditto.
+	(c86_4g_m7_fp_div_load): Ditto.
+	(c86_4g_m7_fp_idiv_load): Ditto.
+	(c86_4g_m7_sse_pinsr_reg): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_pinsr_reg_load): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg_load): Ditto.
+	(c86_4g_m7_avx512_perm_xmm): Delete the prefix condition.
+	(c86_4g_m7_avx512_perm_xmm_opload): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_permi2_zmm): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm_load): Ditto.
+	(c86_4g_m7_avx512_permi2_zmm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_noimm): Ditto.
+	(c86_4g_m7_sse_perm_zmm_noimm_load): Ditto.
+	(c86_4g_m7_avx_perm_ymm): Remove.
+	(c86_4g_m7_avx_perm_ymem): Ditto.
+	(c86_4g_m7_avx512_shuf_zmm): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_shuf_zmem): Ditto.
+	(c86_4g_m7_avx512_cmpestr): Ditto.
+	(c86_4g_m7_avx512_cmpestr_load): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmm): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmem): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi_load): Ditto.
+	(c86_4g_m7_avx512_expand): Ditto.
+	(c86_4g_m7_avx512_expand_load): Ditto.
+	(c86_4g_m7_avx512_expand_z): Ditto.
+	(c86_4g_m7_avx512_expand_z_load): Ditto.
+	(c86_4g_m7_sse_movnt_xy): Rename to c86_4g_m7_sse_movnt.
+	(c86_4g_m7_avx512_sseadd_xy): Adjust reservation units.
+	(c86_4g_m7_avx512_sseadd_xy_load): Ditto.
+	(c86_4g_m7_sse_sseiadd_hplus): Adjust reservation units and unit
+	occupancy.
+	(c86_4g_m7_sse_sseiadd_hplus_load): Ditto.
+	(c86_4g_m7_avx512_ssemul): Adjust reservation units.
+	(c86_4g_m7_avx512_ssemul_load): Ditto.
+	(c86_4g_m7_avx512_ssediv): Remove.
+	(c86_4g_m7_avx512_ssediv_mem): Remove.
+	(c86_4g_m7_avx512_ssediv_x): New.
+	(c86_4g_m7_avx512_ssediv_xmem): New.
+	(c86_4g_m7_avx512_ssediv_y): New.
+	(c86_4g_m7_avx512_ssediv_ymem): New.
+	(c86_4g_m7_avx512_ssediv_z): Adjust reservation units.
+	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+	(c86_4g_m7_avx512_ssecmp_z): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_ssecmp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_z): New reservation.
+	(c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_test_z): Remove reservation.
+	(c86_4g_m7_avx512_ssecmp_test_z_load): Ditto.
+	(c86_4g_m7_avx512_muladd): Broaden matching condition.
+	(c86_4g_m7_avx512_muladd_load): Ditto.
+	(c86_4g_m7_fma_muladd): Remove reservation.
+	(c86_4g_m7_fma_muladd_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_x): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_sse_conflict_x_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z_load): Ditto.
+	(c86_4g_m7_avx512_sse_class_z): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_sse_class_z_load): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt): Remove.
+	(c86_4g_m7_avx512_sse_sqrt_load): Remove.
+	(c86_4g_m7_avx512_sse_sqrt_sf_x): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_xload): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_y): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_yload): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_z): New.
+	(c86_4g_m7_avx512_sse_sqrt_sf_zload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_x): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_xload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_y): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_yload): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_z): New.
+	(c86_4g_m7_avx512_sse_sqrt_df_zload): New.
+	(c86_4g_m7_avx512_msklog_vector): Add reservation units and unit
+	occupancy.
+	(c86_4g_m7_avx512_mskmov_z_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_reg): Ditto.
+	* config/i386/c86-4g.md (c86_4g_fp): Remove automaton.
+	(c86_4g_fp024): New automaton.
+	(c86_4g_fp1): Ditto.
+	(c86-4g-fp0): Move to c86_4g_fp024 automaton.
+	(c86-4g-fp1): Move to c86_4g_fp1 automaton.
+	(c86-4g-fp2): Move to c86_4g_fp024 automaton.
+	(c86-4g-fp3): Ditto.
+	(c86-4g-fp1fdivx4): New reservation.
+	(c86_4g_fp_sqrt): Adjust reservation.
+	(c86_4g_sse_sqrt_sf): Ditto.
+	(c86_4g_sse_sqrt_sf_mem): Ditto.
+	(c86_4g_sse_sqrt_df): Ditto.
+	(c86_4g_sse_sqrt_df_mem): Ditto.
+	(c86_4g_fp_op_div): Ditto.
+	(c86_4g_fp_op_div_load): Ditto.
+	(c86_4g_fp_op_idiv_load): Adjust reservation latency.
+	(c86_4g_ssediv_ss_ps): Adjust reservation.
+	(c86_4g_ssediv_ss_ps_load): Ditto.
+	(c86_4g_ssediv_sd_pd): Ditto.
+	(c86_4g_ssediv_sd_pd_load): Ditto.
+	(c86_4g_ssediv_avx256_ps): Ditto.
+	(c86_4g_ssediv_avx256_ps_load): Ditto.
+	(c86_4g_ssediv_avx256_pd): Ditto.
+	(c86_4g_ssediv_avx256_pd_load): Ditto.
+
+2026-06-09  Kewen Lin  <linkewen@hygon.cn>
+
+	Backported from master:
+	2026-05-01  Kewen Lin  <linkewen@hygon.cn>
+
+	* config/i386/c86-4g-m7.md (c86_4g_m7_idiv): New automaton.
+	(c86_4g_m7_fdiv): Ditto.
+	(c86-4g-m7-idiv): New unit.
+	(c86-4g-m7-fdiv): Ditto.
+	(c86_4g_m7_idiv_DI): Adjust unit in the reservation.
+	(c86_4g_m7_idiv_SI): Ditto.
+	(c86_4g_m7_idiv_HI): Ditto.
+	(c86_4g_m7_idiv_QI): Ditto.
+	(c86_4g_m7_idiv_DI_load): Ditto.
+	(c86_4g_m7_idiv_SI_load): Ditto.
+	(c86_4g_m7_idiv_HI_load): Ditto.
+	(c86_4g_m7_idiv_QI_load): Ditto.
+	(c86_4g_m7_fp_div): Ditto.
+	(c86_4g_m7_fp_div_load): Ditto.
+	(c86_4g_m7_fp_idiv_load): Ditto.
+	(c86_4g_m7_avx512_ssediv): Ditto.
+	(c86_4g_m7_avx512_ssediv_mem): Ditto.
+	(c86_4g_m7_avx512_ssediv_z): Ditto.
+	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_load): Ditto.
+	(c86_4g_m7_fp_sqrt): Ditto.  Rename from ...
+	(c86_4g_m7fp_sqrt): ... here.
+	* config/i386/c86-4g.md (c86_4g_idiv): New automaton.
+	(c86_4g_fdiv): Ditto.
+	(c86-4g-idiv): New unit.
+	(c86-4g-fdiv): Ditto.
+	(c86_4g_idiv_DI): Ditto.
+	(c86_4g_idiv_SI): Ditto.
+	(c86_4g_idiv_HI): Ditto.
+	(c86_4g_idiv_QI): Ditto.
+	(c86_4g_idiv_mem_DI): Ditto.
+	(c86_4g_idiv_mem_SI): Ditto.
+	(c86_4g_idiv_mem_HI): Ditto.
+	(c86_4g_idiv_mem_QI): Ditto.
+	(c86_4g_fp_sqrt): Ditto.
+	(c86_4g_sse_sqrt_sf): Ditto.
+	(c86_4g_sse_sqrt_sf_mem): Ditto.
+	(c86_4g_sse_sqrt_df): Ditto.
+	(c86_4g_sse_sqrt_df_mem): Ditto.
+	(c86_4g_fp_op_div): Ditto.
+	(c86_4g_fp_op_div_load): Ditto.
+	(c86_4g_fp_op_idiv_load): Ditto.
+	(c86_4g_ssediv_ss_ps): Ditto.
+	(c86_4g_ssediv_ss_ps_load): Ditto.
+	(c86_4g_ssediv_ss_pd): Ditto.
+	(c86_4g_ssediv_ss_pd_load): Ditto.
+	(c86_4g_ssediv_avx256_ps): Ditto.
+	(c86_4g_ssediv_avx256_ps_load): Ditto.
+	(c86_4g_ssediv_avx256_pd): Ditto.
+	(c86_4g_ssediv_avx256_pd_load): Ditto.
+
+2026-06-09  Xin Liu  <liulxx@hygon.cn>
+
+	Backported from master:
+	2026-04-29  Xin Liu  <liulxx@hygon.cn>
+		    Zhaoling Bao  <baozhaoling@hygon.cn>
+
+	* common/config/i386/cpuinfo.h (get_hygon_cpu): Detect the specific
+	type of HYGON CPU and return HYGON CPU name.
+	(cpu_indicator_init): Handle HYGON CPU.
+	* common/config/i386/i386-common.cc (processor_names): Add HYGON
+	C86-4G processors c86-4g-m{4,6,7}.
+	(processor_alias_table): Add hygon, hygonfam18h and c86-4g-m{4,6,7}
+	entries.
+	(ARRAY_SIZE): Update as new entries added.
+	* common/config/i386/i386-cpuinfo.h (enum processor_vendor): Add
+	VENDOR_HYGON.
+	(enum processor_types): Add HYGONFAM18H.
+	(enum processor_subtypes): Add HYGONFAM18H_C86_4G_M{4,6,7}.
+	* config.gcc: Add support for c86_4g_m{4,6,7}.
+	* config/i386/cpuid.h (signature_HYGON_ebx):  Add signature for HYGON.
+	(signature_HYGON_ecx): Ditto.
+	(signature_HYGON_edx): Ditto.
+	* config/i386/driver-i386.cc (host_detect_local_cpu): Support HYGON
+	c86-4g-m4{4,6,7} processors.
+	* config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
+	* config/i386/i386-options.cc (m_C86_4G_M4): New definition.
+	(m_C86_4G_M6): Ditto.
+	(m_C86_4G_M7): Ditto.
+	(m_C86_4G): Ditto.
+	(processor_cost_table): Add cost entries for c86-4g-m4{4,6,7}.
+	* config/i386/i386.cc (ix86_reassociation_width): Add handlings for
+	PROCESSOR_C86_4G_M{4,6,7}.
+	* config/i386/i386.h (enum processor_type): Define
+	PROCESSOR_C86_4G_M{4,6,7}.
+	(PTA_C86_4G_M4): New define.
+	(PTA_C86_4G_M6): Ditto.
+	(PTA_C86_4G_M7): Ditto.
+	* config/i386/x86-tune-costs.h (c86_4g_m4_memcpy): New stringop_algs.
+	(c86_4g_m4_cost): New processor_costs.
+	(c86_4g_m6_cost): Ditto.
+	(c86_4g_m7_cost): Ditto.
+	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Handle
+	PROCESSOR_C86_4G_M{4,6,7}.
+	(ix86_adjust_cost): Ditto.
+	* config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Handle m_C86_4G.
+	(X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
+	(X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
+	(X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
+	(X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
+	(X86_TUNE_USE_LEAVE): Ditto.
+	(X86_TUNE_PUSH_MEMORY): Ditto.
+	(X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
+	(X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
+	(X86_TUNE_USE_SAHF): Ditto.
+	(X86_TUNE_USE_BT): Ditto.
+	(X86_TUNE_AVOID_MFENCE): Ditto.
+	(X86_TUNE_USE_FFREEP): Ditto.
+	(X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
+	(X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL): Ditto.
+	(X86_TUNE_SSE_TYPELESS_STORES): Ditto.
+	(X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
+	(X86_TUNE_USE_GATHER_2PARTS): Ditto.
+	(X86_TUNE_USE_GATHER_4PARTS): Ditto.
+	(X86_TUNE_USE_GATHER_8PARTS): Ditto.
+	(X86_TUNE_AVOID_128FMA_CHAINS): Ditto.
+	(X86_TUNE_AVOID_256FMA_CHAINS): Ditto.
+	(X86_TUNE_USE_RCR): Ditto.
+	(X86_TUNE_AVX256_MOVE_BY_PIECES): Handle m_C86_4G_M{4,6}.
+	(X86_TUNE_USE_SCATTER_2PARTS): Handle m_C86_4G_M7.
+	(X86_TUNE_USE_SCATTER_4PARTS): Ditto.
+	(X86_TUNE_USE_SCATTER_8PARTS): Ditto.
+	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Ditto.
+	(X86_TUNE_AVX512_SPLIT_REGS): Ditto.
+	(X86_TUNE_AVX512_MOVE_BY_PIECES): Ditto.
+	(X86_TUNE_AVX512_MASKED_EPILOGUES): Ditto.
+	* doc/extend.texi: Document about hygonfam18h and c86-4g-m{4,6,7}.
+	* doc/invoke.texi: Document about c86-4g-m{4,6,7}.
+	* config/i386/c86-4g-m7.md: New file for c86-4g-m7 scheduling model
+	information.
+	* config/i386/c86-4g.md: New file for c86-4g-m{4,6} scheduling model
+	information.
+	* config/i386/i386.md (cpu attr): Add c86_4g_m{4,6,7}.
+	(c86-4g.md): New include.
+	(c86-4g-m7.md): Ditto.
+	(*cmpi<unord>xf_i387): Set attr c86_decode.
+	(*cmpi<unord><MODEF:mode>): Ditto.
+	(swap<mode>): Ditto.
+	(*swap<mode>): Ditto.
+	(extendhisi2): Ditto.
+	(floathi<mode>2): Ditto.
+	(float<SWI48x:mode>xf2): Ditto.
+	(*float<SWI48:mode><MODEF:mode>2): Ditto.
+	(*floatdi<MODEF:mode>2_i387): Ditto.
+	(*anddi_1_bt): Ditto.
+	(*iordi_1_bts): Ditto.
+	(*xordi_1_btc): Ditto.
+	(*<btsc><mode>): Ditto.
+	(*btr<mode>): Ditto.
+	(*btsq_imm): Ditto.
+	(*btrq_imm): Ditto.
+	(*btcq_imm): Ditto.
+	(*tzcnt<mode>_1): Ditto.
+	(*tzcnt<mode>_1_falsedep): Ditto.
+	(*bsf<mode>_1): Ditto.
+	(*ctz<mode>2_falsedep): Ditto.
+	(*ctzsi2_zext): Ditto.
+	(*ctzsi2_zext_falsedep): Ditto.
+	(bsr_rex64): Ditto.
+	(bsr_rex64_1): Ditto.
+	(bsr_rex64_1_zext): Ditto.
+	(bsr): Ditto.
+	(bsr_1): Ditto.
+	(bsr_zext_1): Ditto.
+	(*bswaphi2_movbe): Ditto.
+	(*bswaphi2): Ditto.
+	(bswaphisi2_lowpart): Ditto.
+	(fpremxf4_i387): Ditto.
+	(fprem1xf4_i387): Ditto.
+	(<sincos>xf2): Ditto.
+	(sincosxf3): Ditto.
+	(fptanxf4_i387): Ditto.
+	(atan2xf3): Ditto.
+	(fyl2xxf3_i387): Ditto.
+	(fyl2xp1xf3_i387): Ditto.
+	(fxtractxf3_i387): Ditto.
+	(*f2xm1xf2_i387): Ditto.
+	(fscalexf4_i387): Ditto.
+	(rintxf2): Ditto.
+	(*movxi_internal_avx512f): Set attr c86_attr.
+	(*movoi_internal_avx): Ditto.
+	(*movti_internal): Ditto.
+	(*movdi_internal): Ditto.
+	(*movsi_internal): Ditto.
+	(*movhi_internal): Ditto.
+	(*movtf_internal): Ditto.
+	(*movdf_internal): Ditto.
+	(*movsf_internal): Ditto.
+	(*zero_extendsidi2): Ditto.
+	(sqrtxf2): Ditto.
+	(<smaxmin:code><mode>3): Ditto.
+	(*ieee_s<ieee_maxmin><mode>3): Ditto.
+	* config/i386/mmx.md (*mmx_maskmovq): Set attr c86_decode.
+	(*mmx_maskmovq): Ditto.
+	(sse_movntq): Set attr c86_attr.
+	(*mmx_blendps): Ditto.
+	(mmx_blendvps): Ditto.
+	(*mmx_pmaddwd): Ditto.
+	(mmx_pblendvb_v8qi): Ditto.
+	(mmx_pblendvb_<mode>): Ditto.
+	(sse4_1_<code>v4qiv4hi2): Ditto.
+	(sse4_1_<code>v2hiv2si2): Ditto.
+	(sse4_1_<code>v2qiv2si2): Ditto.
+	(sse4_1_<code>v2qiv2hi2): Ditto.
+	(*mmx_pinsrd): Ditto.
+	(*mmx_pinsrw): Ditto.
+	(*mmx_pinsrb): Ditto.
+	(*mmx_pextrw): Ditto.
+	(*mmx_pextrw<mode>): Ditto.
+	(*mmx_pextrw_zext): Ditto.
+	(*mmx_pextrb): Ditto.
+	(*mmx_pextrb_zext): Ditto.
+	(*mmx_pblendw64): Ditto.
+	(*mmx_pblendw32): Ditto.
+	(*vec_extractv2si_1): Ditto.
+	(*vec_extractv2si_1_zext): Ditto.
+	(*pinsrw): Ditto.
+	(*pinsrb): Ditto.
+	(*pextrw): Ditto.
+	(*pextrw<mode>): Ditto.
+	(*pextrw_zext): Ditto.
+	(*pextrb): Ditto.
+	(*pextrb_zext): Ditto.
+	(*mmx_psadbw): Ditto.
+	* config/i386/sse.md (ktest<mode>): Set attr c86_decode.
+	(*kortest<mode>): Ditto.
+	(sse_cvtsi2ss<rex64namesuffix><round_name>): Ditto.
+	(sse2_cvtsi2sd): Ditto.
+	(sse2_maskmovdqu): Ditto.
+	(*<sse>_dp<ssemodesuffix><avxsizesuffix>): Ditto.
+	(*<sse4_1_avx2>_mpsadbw): Ditto.
+	(pclmulqdq): Ditto.
+	(<mask_codefor>conflict<mode><mask_name>): Ditto.
+	(<avx512>_blendm<mode>): Set attr c86_attr.
+	(sse2_movnti<mode>): Ditto.
+	(<sse>_movnt<mode>): Ditto.
+	(<sse2>_movnt<mode>): Ditto.
+	(<sse>_rcp<mode>2): Ditto.
+	(sse_vmrcpv4sf2): Ditto.
+	(<mask_codefor>rcp14<mode><mask_name>): Ditto.
+	(srcp14<mode>): Ditto.
+	(srcp14<mode>_mask): Ditto.
+	(<sse>_sqrt<mode>2<mask_name><round_name>): Ditto.
+	(<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): Ditto.
+	(*<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): Ditto.
+	(<mask_codefor>rsqrt14<mode><mask_name>): Ditto.
+	(rsqrt14<mode>): Ditto.
+	(rsqrt14_<mode>_mask"): Ditto.
+	(*<code><mode>3<mask_name><round_saeonly_name>): Ditto.
+	(ieee_<ieee_maxmin><mode>3<mask_name><round_saeonly_name>): Ditto.
+	(*<sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>):
+	Ditto.
+	(<sse>_ieee_vm<ieee_maxmin><mode>3<mask_scalar_name>
+	<round_saeonly_scalar_name>): Ditto.
+	(*ieee_<ieee_maxmin><mode>3): Ditto.
+	(avx_h<insn>v4df3): Ditto.
+	(*sse3_haddv2df3): Ditto.
+	(sse3_hsubv2df3): Ditto.
+	(*sse3_haddv2df3_low): Ditto.
+	(*sse3_hsubv2df3_low): Ditto.
+	(avx_h<insn>v8sf3): Ditto.
+	(sse3_h<insn>v4sf3): Ditto.
+	(*<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): Ditto.
+	(reduces<mode><mask_scalar_name><round_saeonly_scalar_name>): Ditto.
+	(*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Ditto.
+	(<sse>_andnot<mode>3<mask_name>): Ditto.
+	(*<code><mode>3<mask_name>): Ditto.
+	(*andnot<mode>3): Ditto.
+	(<code><mode>3): Ditto.
+	(*<code>tf3): Ditto.
+	(vec_set<mode>_0): Ditto.
+	(@vec_set<mode>_0): Ditto.
+	(*sse4_1_extractps): Ditto.
+	(vec_extract<mode>): Ditto.
+	(<mask_codefor><avx512>_align<mode><mask_name>): Ditto.
+	(avx512bw_pmaddwd512<mode><mask_name>): Ditto.
+	(*avx2_pmaddw): Ditto.
+	(*sse2_pmaddwd): Ditto.
+	(*avx2_<code><mode>3): Ditto.
+	(*avx512f_<code><mode>3<mask_name>): Ditto.
+	(*avx512bw_<code><mode>3<mask_name>): Ditto.
+	(*sse4_1_<code><mode>3<mask_name>): Ditto.
+	(*<code>v8hi3): Ditto.
+	(*<code>v16qi3): Ditto.
+	(*andnot<mode>3_mask): Ditto.
+	(*<code><mode>3): Ditto.
+	(<code>v1ti3): Ditto.
+	(<sse2p4_1>_pinsr<ssemodesuffix>): Ditto.
+	(*<extract_type>_vinsert<shuffletype><extract_suf>_0): Ditto.
+	(<mask_codefor><extract_type>_vinsert<shuffletype><extract_suf>
+	_1<mask_name>): Ditto.
+	(vec_set_lo_<mode><mask_name>): Ditto.
+	(vec_set_hi_<mode><mask_name>): Ditto.
+	(<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Ditto.
+	(avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ditto.
+	(*avx512f_shuf_<shuffletype>64x2_1<mask_name>_1): Ditto.
+	(avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Ditto.
+	(avx512f_shuf_<shuffletype>32x4_1<mask_name>): Ditto.
+	(*avx512f_shuf_<shuffletype>32x4_1<mask_name>_1): Ditto.
+	(*vec_extract<mode>): Ditto.
+	(*vec_extract<PEXTR_MODE12:mode>_zext): Ditto.
+	(*vec_extractv16qi_zext): Ditto.
+	(*vec_extractv4si): Ditto.
+	(*vec_extractv4si_zext): Ditto.
+	(*vec_extractv2di_1): Ditto.
+	(*vec_concatv2si_sse4_1): Ditto.
+	(vec_concatv2di): Ditto.
+	(*<sse2_avx2>_uavg<mode>3<mask_name>): Ditto.
+	(*<sse2_avx2>_psadbw): Ditto.
+	(<sse>_movmsk<ssemodesuffix><avxsizesuffix>): Ditto.
+	(*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Ditto.
+	(<sse2_avx2>_pmovmskb): Ditto.
+	(*<sse2_avx2>_pmovmskb_zext): Ditto.
+	(*sse2_maskmovdqu): Ditto.
+	(avx2_ph<plusminus_mnemonic>wv16hi3): Ditto.
+	(ssse3_ph<plusminus_mnemonic>wv8hi3): Ditto.
+	(ssse3_ph<plusminus_mnemonic>dv4si3): Ditto.
+	(avx2_ph<plusminus_mnemonic>dv8si3): Ditto.
+	(avx2_pmaddubsw256): Ditto.
+	(avx512bw_pmaddubsw512<mode><mask_name>): Ditto.
+	(ssse3_pmaddubsw128): Ditto.
+	(<ssse3_avx2>_psign<mode>3): Ditto.
+	(ssse3_psign<mode>3): Ditto.
+	(*abs<mode>2): Ditto.
+	(abs<mode>2_mask): Ditto.
+	(abs<mode>2_mask): Ditto.
+	(sse4a_movnt<mode>): Ditto.
+	(sse4a_vmmovnt<mode>): Ditto.
+	(<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Ditto.
+	(<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Ditto.
+	(sse4_1_blendv<ssemodesuffix>): Ditto.
+	(<vi8_sse4_1_avx2_avx512>_movntdqa): Ditto.
+	(<sse4_1_avx2>_pblendvb): Ditto.
+	(sse4_1_pblend<ssemodesuffix>): Ditto.
+	(*avx2_pblend<ssemodesuffix>): Ditto.
+	(avx2_pblendd<mode>): Ditto.
+	(avx2_<code>v16qiv16hi2<mask_name>): Ditto.
+	(avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
+	(sse4_1_<code>v8qiv8hi2<mask_name>): Ditto.
+	(*sse4_1_<code>v8qiv8hi2<mask_name>_1): Ditto.
+	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
+	(avx2_<code>v8qiv8si2<mask_name>): Ditto.
+	(*avx2_<code>v8qiv8si2<mask_name>_1): Ditto.
+	(sse4_1_<code>v4qiv4si2<mask_name>): Ditto.
+	(*sse4_1_<code>v4qiv4si2<mask_name>_1): Ditto.
+	(avx512f_<code>v16hiv16si2<mask_name>): Ditto.
+	(avx2_<code>v8hiv8si2<mask_name>): Ditto.
+	(sse4_1_<code>v4hiv4si2<mask_name>): Ditto.
+	(*sse4_1_<code>v4hiv4si2<mask_name>_1): Ditto.
+	(avx512f_<code>v8qiv8di2<mask_name>): Ditto.
+	(*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
+	(avx2_<code>v4qiv4di2<mask_name>): Ditto.
+	(*avx2_<code>v4qiv4di2<mask_name>_1): Ditto.
+	(sse4_1_<code>v2qiv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2qiv2di2<mask_name>_1): Ditto.
+	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
+	(avx2_<code>v4hiv4di2<mask_name>): Ditto.
+	(*avx2_<code>v4hiv4di2<mask_name>_1): Ditto.
+	(sse4_1_<code>v2hiv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2hiv2di2<mask_name>_1): Ditto.
+	(avx512f_<code>v8siv8di2<mask_name>): Ditto.
+	(avx2_<code>v4siv4di2<mask_name>): Ditto.
+	(sse4_1_<code>v2siv2di2<mask_name>): Ditto.
+	(*sse4_1_<code>v2siv2di2<mask_name>_1): Ditto.
+	(sse4_1_round<ssescalarmodesuffix>): Ditto.
+	(*sse4_1_round<ssescalarmodesuffix>"): Ditto.
+	(sse4_2_pcmpestri): Ditto.
+	(sse4_2_pcmpestrm): Ditto.
+	(sse4_2_pcmpestr_cconly): Ditto.
+	(sse4_2_pcmpistri): Ditto.
+	(sse4_2_pcmpistrm): Ditto.
+	(sse4_2_pcmpistr_cconly): Ditto.
+	(xop_phadd<u>bw): Ditto.
+	(xop_phadd<u>bd): Ditto.
+	(xop_phadd<u>bq): Ditto.
+	(xop_phadd<u>wd): Ditto.
+	(xop_phadd<u>wq): Ditto.
+	(xop_phadd<u>dq): Ditto.
+	(xop_phsubbw): Ditto.
+	(xop_phsubwd): Ditto.
+	(xop_phsubdq): Ditto.
+	(aesenc): Ditto.
+	(aesenclast): Ditto.
+	(aesdec): Ditto.
+	(aesdeclast): Ditto.
+	(aesimc): Ditto.
+	(aeskeygenassist): Ditto.
+	(<avx2_avx512>_permvar<mode><mask_name>): Ditto.
+	(avx2_perm<mode>_1<mask_name>): Ditto.
+	(<avx512>_permvar<mode><mask_name>): Ditto.
+	(avx512f_perm<mode>_1<mask_name>): Ditto.
+	(<mask_codefor>avx512f_broadcast<mode><mask_name>): Ditto.
+	(avx_vbroadcastf128_<mode>): Ditto.
+	(<mask_codefor>avx512vl_broadcast<mode><mask_name>_1): Ditto.
+	(<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
+	(*<avx512>_vpermi2var<mode>3_mask): Ditto.
+	(<avx512>_vpermt2var<mode>3<sd_maskz_name>): Ditto.
+	(<avx512>_vpermt2var<mode>3_mask): Ditto.
+	(*avx_vperm2f128<mode>_nozero): Ditto.
+	(vec_set_lo_<mode><mask_name>): Ditto.
+	(vec_set_hi_<mode><mask_name>): Ditto.
+	(vec_set_lo_<mode>): Ditto.
+	(vec_set_hi_<mode>): Ditto.
+	(vec_set_lo_v32qi): Ditto.
+	(<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Ditto.
+	(<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
+	(avx_vec_concat<mode>): Ditto.
+	(<avx512>_compress<mode>_mask): Ditto.
+	(compress<mode>_mask): Ditto.
+	(<avx512>_compressstore<mode>_mask): Ditto.
+	(compressstore<mode>_mask): Ditto.
+	(expand<mode>_mask): Ditto.
+	(<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Ditto.
+	(clz<mode>2<mask_name>): Ditto.
+	(vpmadd52<vpmadd52type>v8di): Ditto.
+	(vpmadd52<vpmadd52type><mode>): Ditto.
+	(vpmadd52<vpmadd52type><mode>_maskz_1): Ditto.
+	(vpmadd52<vpmadd52type><mode>_mask): Ditto.
+	(vaesdec_<mode>): Ditto.
+	(vaesdeclast_<mode>): Ditto.
+	(vaesenc_<mode>): Ditto.
+	(vaesenclast_<mode>): Ditto.
+
+2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125611
+	* config/i386/sse.md (<ssse3_avx2>_pmulhrsw<mode>3, smulhrs<mode>3):
+	Use vector_operand instead of nonimmediate_operand.
+
 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	PR rtl-optimization/125375
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index cf4a41146e2d..eed21ff12b80 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260604
+20260609
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3238167626dc..7fbd6096375a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,59 @@
+2026-06-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Revert latest
+	change.
+	(Find_Type_Of_Subtype_Indic): Return Any_Type if Find_Type fails to
+	resolve the type.
+	* sem_ch12.adb (Analyze_Formal_Derived_Type): Restore more specific
+	error recovery path.
+
+2026-06-06  Ronan Desplanques  <desplanques@adacore.com>
+
+	* exp_ch6.adb (Needs_BIP_Collection): Fix condition.
+
+2026-06-06  Mathias Aparicio  <aparicio@adacore.com>
+
+	* libgnat/a-textio.adb
+	(Get_Upper_Half_Char, Get_Upper_Half_Char_Immed): Replace
+	Constraint_Error with Data_Error
+
+2026-06-06  Viljar Indus  <indus@adacore.com>
+
+	* sem_warn.adb (Warn_On_Suspicious_Index): Only check elements
+	that are coming from source.
+
+2026-06-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Be prepared
+	for Find_Type_Of_Subtype_Indic returning no type.
+	* sem_ch4.adb (Process_Generic_Instantiation): Give an error if the
+	generic instantation is referenced in a generic formal part.
+	* sem_ch12.adb (Analyze_Formal_Derived_Type): Return early in every
+	case of serious errors.
+
+2026-06-04  Artur Pietrek  <pietrek@adacore.com>
+
+	* exp_ch7.adb (Make_Address_For_Finalize): check
+	Has_Controlled_Component predicate before emitting the shift to be
+	consistant with what Is_Constr_Array_Subt_With_Bounds says.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch4.adb (Expand_Allocator_Expression): In the case of access
+	discriminants, pass Zero_On_Dynamic_Level to compute the static
+	accessibility level of the expression.
+	* sem_res.adb (Check_Aliased_Parameter): Pass Zero_On_Dynamic_Level
+	to compute the static accessibility level of actual parameters.
+
+2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch9.adb (Analyze_Requeue): Fix unbalanced parens.
+
+2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_util.ads (In_Reverse_Storage_Order_Object): Adjust.
+	* sem_util.adb (In_Reverse_Storage_Order_Object): Rewrite.
+
 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Validate
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 72507cc26e89..39ca5ff7ea8c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,47 @@
+2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125334
+	* module.cc (depset::hash::add_dependent_adl_entities):
+	Disable when inside a header unit.
+
+2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	* module.cc (dep_adl_info::args): Initializer to nullptr
+	instead of immediately allocating.
+	(depset::hash::add_dependent_adl_entities): Exit early
+	for non-type-dependent calls and operator expressions.
+	Only allocate dep_adl_info::args if we're not exiting early.
+	Correct all-type-dependent args test.
+	* name-lookup.cc (name_lookup::preserve_state): Replace
+	propagation of tentative flag with assert that it's not
+	set.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125378
+	* tree.cc (build_min_non_dep_op_overload): Handle comparison
+	operator expressions rewritten from a <=> that contain an
+	integer promotion.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125490
+	* parser.cc (cp_parser_constraint_expression): Pass
+	no_toplevel_fold_p=false instead of =true to
+	cp_parser_binary_expression.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 86701b414730..b612894de54e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125669
+	* decl.cc (gfc_get_pdt_instance): If the bound expressions for
+	and array component, of the length expression for a character
+	component, gave simplified to a constant, do not set attributes
+	pdt_array and pdt_string respectively.
+
+2026-06-08  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125606
+	* trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument
+	of LOC() is not scalar or known to be simply contiguous, simply
+	take the address of the argument array's first element.
+
 2026-06-01  Harald Anlauf  <anlauf@gmx.de>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 91a26c04d88c..36912c5a5ffb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,67 @@
+2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/125669
+	* gfortran.dg/pdt_92.f03: New test.
+
+2026-06-09  Xin Liu  <liulxx@hygon.cn>
+
+	Backported from master:
+	2026-04-29  Xin Liu  <liulxx@hygon.cn>
+		    Zhaoling Bao  <baozhaoling@hygon.cn>
+
+	* gcc.target/i386/builtin_target.c: Add handling for HYGON CPUs by
+	validating the vendor and invoking HYGON-specific CPU detection.
+	* gcc.target/i386/funcspec-56.inc: Test function target attribute on
+	{arch,tune}=c86-4g-m{4,6,7}.
+	* g++.target/i386/mv33.C: New test.
+
+2026-06-08  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125606
+	* gfortran.dg/loc_3.f90: New test.
+
+2026-06-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	Backported from master:
+	2026-06-08  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* g++.dg/modules/test-p1689.py: Make arrays have predictable
+	order.
+
+2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125611
+	* gcc.target/i386/ssse3-pr125611.c: New test.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125378
+	* g++.dg/lookup/operator-8b.C: New test.
+	* g++.dg/lookup/operator-8c.C: New test.
+	* g++.dg/lookup/operator-9a.C: New test.
+	* g++.dg/lookup/operator-9b.C: New test.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-06-03  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/125490
+	* g++.dg/cpp2a/concepts-pr125490.C: New test.
+	* g++.dg/cpp2a/concepts-pr125490a.C: New test.
+
 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* gcc.dg/pr125375.c: New test.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 10d64113f3e9..ff1d3ecc74d1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,93 @@
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-05-29  Patrick Palka  <ppalka@redhat.com>
+
+	* include/std/flat_set (_Flat_set_impl::swap): Swap _M_cont
+	first.
+
+2026-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-06-04  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	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-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-04  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/debug/safe_iterator.h: Remove trailing whitespace.
+
 2026-05-27  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From jakub@gcc.gnu.org  Thu Jun 11 00:02:37 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 11 Jun 2026 00:02:37 +0000 (GMT)
Subject: [gcc r14-12644] libstdc++: Uglify another variable name
Message-ID: <20260611000237.C3B7A4BA23DA@sourceware.org>

https://gcc.gnu.org/g:89e25b976998e42f7e90dea6be5c83eedfbdc3ed

commit r14-12644-g89e25b976998e42f7e90dea6be5c83eedfbdc3ed
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Mar 18 15:40:51 2026 +0100

    libstdc++: Uglify another variable name
    
    This is needed to make the latest version of the uglification plugin
    I'm about to send PASS.
    
    2026-03-18  Jakub Jelinek  <jakub@redhat.com>
    
            * include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
            variable name.
    
    (cherry picked from commit 1c73a21caf2dc83ced30f10076a682ea26e1ba71)

Diff:
---
 libstdc++-v3/include/bits/regex_compiler.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h
index c6aaf4408531..413952e7ab82 100644
--- a/libstdc++-v3/include/bits/regex_compiler.h
+++ b/libstdc++-v3/include/bits/regex_compiler.h
@@ -170,9 +170,9 @@ namespace __detail
       _StateSeqT
       _M_pop()
       {
-	auto ret = _M_stack.top();
+	auto __ret = _M_stack.top();
 	_M_stack.pop();
-	return ret;
+	return __ret;
       }
 
       static _FlagT

From gccadmin@gcc.gnu.org  Thu Jun 11 00:19:46 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 11 Jun 2026 00:19:46 +0000 (GMT)
Subject: [gcc r14-12656] Daily bump.
Message-ID: <20260611001946.1FBE04BA5435@sourceware.org>

https://gcc.gnu.org/g:e6a23eb7720a187c532380f458c649f7dcc96adb

commit r14-12656-ge6a23eb7720a187c532380f458c649f7dcc96adb
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 11 00:19:11 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 49 ++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/ada/ChangeLog       |  6 ++++
 gcc/cp/ChangeLog        | 26 +++++++++++++++
 gcc/testsuite/ChangeLog | 87 +++++++++++++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  8 +++++
 6 files changed, 177 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df3f6d7f5ecc..9bc7b843080c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,52 @@
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* tree-ssa-strlen.cc (get_string_length): Transform
+	__strcat_chk (x, y, z) when we need strlen (x) afterwards into
+	l1 = strlen (x); l = __stpcpy_chk (x + l1, y, z - l1) - x;
+	where l is the strlen (x), instead of using z as last __stpcpy_chk
+	argument.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* range-op-float.cc (operator_not_equal::fold_range): Call
+	empty_range_varying when not calling frelop_early_resolve.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* config/rs6000/rs6000-c.cc (c_fold_convert): New function.
+	(c_fold_build2_loc): Likewise.
+	(fully_fold_convert): Use c_fold_convert instead of fold_convert.
+	(altivec_build_resolved_builtin): Likewise.  Use c_fold_build2_loc
+	instead of fold_build2.
+	(resolve_vec_mul, resolve_vec_adde_sube, resolve_vec_addec_subec):
+	Use c_fold_build2_loc instead of fold_build2_loc.
+	(resolve_vec_splats, resolve_vec_extract): Use c_fold_convert instead
+	of fold_convert.
+	(resolve_vec_insert): Use c_fold_build2_loc instead of fold_build2.
+	(altivec_resolve_overloaded_builtin): Use c_fold_convert instead
+	of fold_convert.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gimple-lower-bitint.cc (bitint_large_huge::handle_load): Look through
+	BIT_FIELD_REF with zero bit offset.
+
 2026-06-03  Xi Ruoyao  <xry111@xry111.site>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 06405ca1d832..df3fd44ac7da 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260610
+20260611
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 7cd11d896b7c..0deba0118a15 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ada/125695
+	* libgnat/s-genbig.adb ("**"): Do not drop the sign on the floor.
+	(Big_Exp): Take into account the parity of the exponent for -2.
+
 2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/125044
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d6ffb436a9c9..e5440358c8f0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,29 @@
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* coroutines.cc (register_local_var_uses): Ignore DECL_NAME for
+	name independent decls.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* typeck.cc (cxx_mark_addressable): For DECL_ANON_UNION_VAR_P vars
+	also mark their DECL_VALUE_EXPR.
+
+2026-06-10  Yang Kun  <yangkun@disroot.org>
+
+	Backported from master:
+	2026-04-08  Yang Kun  <yangkun@disroot.org>
+
+	* parser.cc (cp_parser_omp_clause_proc_bind): Fix error message
+	(cp_parser_omp_clause_device_type): Likewise.
+
 2026-06-08  Jason Merrill  <jason@redhat.com>
 
 	Revert:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 335da0235280..c2f6e07c4ad0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,90 @@
+2026-06-11  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2024-10-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* gcc.dg/vec-perm-lower.c: Add -Wno-psabi to dg-options.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125376
+	* g++.dg/coroutines/pr125376.C: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-05-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125079
+	* gcc.dg/strlenopt-97.c: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/125039
+	* gcc.c-torture/compile/pr125039.c: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/124133
+	* g++.target/powerpc/pr124133-1.C: New test.
+	* g++.target/powerpc/pr124133-2.C: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-21  Jakub Jelinek  <jakub@redhat.com>
+
+	PR testsuite/124682
+	* gcc.dg/torture/builtin-math-6.c (TESTIT_COMPLEX_R2_ISZ): Define.
+	(TESTIT_COMPLEX_R2_ALLNEG): Use TESTIT_COMPLEX_R2_ISZ instead of
+	TESTIT_COMPLEX_R2.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	* go.test/go-test.exp (errchk): Use -translation binary instead of
+	-encoding binary for TCL 9 compatibility.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/124850
+	* g++.dg/other/anon-union8.C: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/124826
+	* gcc.dg/bitint-128.c: New test.
+
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-03-26  Jakub Jelinek  <jakub@redhat.com>
+
+	* lib/mike-gcc.exp (postbase): Use switch instead of case for
+	TCL 9 compatibility.
+	* lib/mike-g++.exp (postbase): Likewise.
+
+2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gnat.dg/bigint1.adb: New  test.
+
 2026-06-08  Jason Merrill  <jason@redhat.com>
 
 	Revert:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e4cd106b492a..ee8fd327b415 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	* include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
+	variable name.
+
 2026-05-21  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From rguenth@gcc.gnu.org  Fri Jun 12 06:10:11 2026
From: rguenth@gcc.gnu.org (Richard Biener)
Date: Fri, 12 Jun 2026 06:10:11 +0000 (GMT)
Subject: [gcc r15-11272] Update ChangeLog and version files for release
Message-ID: <20260612061011.ECBD34BA2E09@sourceware.org>

https://gcc.gnu.org/g:4db0e8df15bef836558857c291c323add11d035c

commit r15-11272-g4db0e8df15bef836558857c291c323add11d035c
Author: Richard Biener <rguenther@suse.de>
Date:   Fri Jun 12 06:10:03 2026 +0000

    Update ChangeLog and version files for release

Diff:
---
 ChangeLog                         | 4 ++++
 c++tools/ChangeLog                | 4 ++++
 config/ChangeLog                  | 4 ++++
 contrib/ChangeLog                 | 4 ++++
 contrib/header-tools/ChangeLog    | 4 ++++
 contrib/reghunt/ChangeLog         | 4 ++++
 contrib/regression/ChangeLog      | 4 ++++
 fixincludes/ChangeLog             | 4 ++++
 gcc/BASE-VER                      | 2 +-
 gcc/ChangeLog                     | 4 ++++
 gcc/ada/ChangeLog                 | 4 ++++
 gcc/analyzer/ChangeLog            | 4 ++++
 gcc/c-family/ChangeLog            | 4 ++++
 gcc/c/ChangeLog                   | 4 ++++
 gcc/cobol/ChangeLog               | 4 ++++
 gcc/cp/ChangeLog                  | 4 ++++
 gcc/d/ChangeLog                   | 4 ++++
 gcc/fortran/ChangeLog             | 4 ++++
 gcc/go/ChangeLog                  | 4 ++++
 gcc/jit/ChangeLog                 | 4 ++++
 gcc/lto/ChangeLog                 | 4 ++++
 gcc/m2/ChangeLog                  | 4 ++++
 gcc/objc/ChangeLog                | 4 ++++
 gcc/objcp/ChangeLog               | 4 ++++
 gcc/po/ChangeLog                  | 4 ++++
 gcc/rust/ChangeLog                | 4 ++++
 gcc/testsuite/ChangeLog           | 4 ++++
 gnattools/ChangeLog               | 4 ++++
 gotools/ChangeLog                 | 4 ++++
 include/ChangeLog                 | 4 ++++
 libada/ChangeLog                  | 4 ++++
 libatomic/ChangeLog               | 4 ++++
 libbacktrace/ChangeLog            | 4 ++++
 libcc1/ChangeLog                  | 4 ++++
 libcody/ChangeLog                 | 4 ++++
 libcpp/ChangeLog                  | 4 ++++
 libcpp/po/ChangeLog               | 4 ++++
 libdecnumber/ChangeLog            | 4 ++++
 libffi/ChangeLog                  | 4 ++++
 libgcc/ChangeLog                  | 4 ++++
 libgcc/config/avr/libf7/ChangeLog | 4 ++++
 libgcc/config/libbid/ChangeLog    | 4 ++++
 libgcobol/ChangeLog               | 4 ++++
 libgfortran/ChangeLog             | 4 ++++
 libgm2/ChangeLog                  | 4 ++++
 libgomp/ChangeLog                 | 4 ++++
 libgrust/ChangeLog                | 4 ++++
 libiberty/ChangeLog               | 4 ++++
 libitm/ChangeLog                  | 4 ++++
 libobjc/ChangeLog                 | 4 ++++
 libphobos/ChangeLog               | 4 ++++
 libquadmath/ChangeLog             | 4 ++++
 libsanitizer/ChangeLog            | 4 ++++
 libssp/ChangeLog                  | 4 ++++
 libstdc++-v3/ChangeLog            | 4 ++++
 libvtv/ChangeLog                  | 4 ++++
 lto-plugin/ChangeLog              | 4 ++++
 maintainer-scripts/ChangeLog      | 4 ++++
 zlib/ChangeLog                    | 4 ++++
 59 files changed, 233 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index d8d0a1863073..eee98106edec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/c++tools/ChangeLog b/c++tools/ChangeLog
index 679aef90cc0b..e1b059df3a54 100644
--- a/c++tools/ChangeLog
+++ b/c++tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/config/ChangeLog b/config/ChangeLog
index 25f085417d6c..bef43566ace7 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-04-15  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	Backported from master:
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 6625f06a30b9..5b082a730d13 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
 
 	Backported from master:
diff --git a/contrib/header-tools/ChangeLog b/contrib/header-tools/ChangeLog
index d48bc3caf1b1..6bff25400340 100644
--- a/contrib/header-tools/ChangeLog
+++ b/contrib/header-tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/contrib/reghunt/ChangeLog b/contrib/reghunt/ChangeLog
index e211588425f4..0e8811b587c2 100644
--- a/contrib/reghunt/ChangeLog
+++ b/contrib/reghunt/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/contrib/regression/ChangeLog b/contrib/regression/ChangeLog
index 5721a7285df6..97da8f31d896 100644
--- a/contrib/regression/ChangeLog
+++ b/contrib/regression/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 76573f62f6b3..71825719211c 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-31  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:
diff --git a/gcc/BASE-VER b/gcc/BASE-VER
index 2054e837bc56..5ff58dbcd684 100644
--- a/gcc/BASE-VER
+++ b/gcc/BASE-VER
@@ -1 +1 @@
-15.2.1
+15.3.0
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fe26da03605e..db75c7af9946 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-05  Tamar Christina  <tamar.christina@arm.com>
 
 	Backported from master:
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a1c376bad4d6..ce63e3e362a3 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/125695
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index 85ea932e4295..037f6ef8b7c9 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-01-14  David Malcolm  <dmalcolm@redhat.com>
 
 	Backported from master:
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 969bd2fb44c9..bbb9b9a53acd 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-05-06  Martin Uecker  <uecker@tugraz.at>
 
 	Backported from master:
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 895c50d8b11f..0bc042d46a93 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-03  Martin Uecker  <uecker@tugraz.at>
 
 	PR c/125252
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 9ac5910ba97b..c4781c8bdbd0 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 83129bdff5ed..b9da49702e53 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-05  Jason Merrill  <jason@redhat.com>
 
 	Revert:
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index 01c7cd0b8c20..d2409f16c8ce 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d99093eed33a..42675e6f8ebf 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index f499fad08482..8c1acf11b0b1 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index d64c340cb86b..4d3562b3b00d 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 09cfd4e4ffd2..9c510a64902b 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-02-26  Michal Jires  <mjires@suse.cz>
 
 	Backported from master:
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index 0e4792a572fd..245248dde1ab 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 21d7926aad17..3f0d7e170485 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index 717a3ef176d1..2674e505602b 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index be58f9fd9dbe..a1f974db3e3c 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-02-05  Joseph Myers  <josmyers@redhat.com>
 
 	* es.po: Update.
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 9e3923fa2b6d..b3870fb1814f 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 52e5d1d8a93f..1245896f4d70 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gnat.dg/bigint1.adb: New  test.
diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog
index 70c8c343af2f..7991c29469a5 100644
--- a/gnattools/ChangeLog
+++ b/gnattools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/gotools/ChangeLog b/gotools/ChangeLog
index 36642d2b4c1f..80e7fb7e9bfb 100644
--- a/gotools/ChangeLog
+++ b/gotools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/include/ChangeLog b/include/ChangeLog
index f339f5e35630..afffe84b6977 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libada/ChangeLog b/libada/ChangeLog
index 73b0c58b414f..2e27aa82a68e 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 092dde71a3ee..6b6cf1c49afb 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index 478f37a50aba..e28b84e51592 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog
index 4b5bffcc3571..6788ffc8cf6c 100644
--- a/libcc1/ChangeLog
+++ b/libcc1/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libcody/ChangeLog b/libcody/ChangeLog
index 5d0ccb4f30e9..14349040286b 100644
--- a/libcody/ChangeLog
+++ b/libcody/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-12-08  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 76ccbee67a15..8bfbb19d1ed6 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-03-14  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 8d4c660e8542..bc599fa4ee5b 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-01-05  Joseph Myers  <josmyers@redhat.com>
 
 	* ka.po: Update.
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 7f67235b7b73..d39fcd1e9888 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 908cbb284744..d19a7593cead 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index ae527692ae3c..c65f32de0961 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-18  Christophe Lyon  <christophe.lyon@linaro.org>
 
 	Backported from master:
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index 2f7fdc355fd8..9d260bf54afb 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
 
 	Backported from master:
diff --git a/libgcc/config/libbid/ChangeLog b/libgcc/config/libbid/ChangeLog
index 3fa2c5da8b9c..4b73d716934f 100644
--- a/libgcc/config/libbid/ChangeLog
+++ b/libgcc/config/libbid/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-30  liuhongt  <hongtao.liu@intel.com>
 
 	Revert:
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 068fcf6540b7..13302e048268 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index e0dda9e1837a..70dfb7e49857 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-05-16  Harald Anlauf  <anlauf@gmx.de>
 
 	Backported from master:
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 6a39b5428d87..fbfb72d8c767 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index b3020d6e052d..9e580d32ec66 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-03-18  Christopher Albert  <albert@tugraz.at>
 
 	Backported from master:
diff --git a/libgrust/ChangeLog b/libgrust/ChangeLog
index 916971811974..f179355a413d 100644
--- a/libgrust/ChangeLog
+++ b/libgrust/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 2547176c1323..5a7e8e961916 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-03-08  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 30b044ec76f0..e466dc10d2fc 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 54d0709a70e3..ca4c94528cf4 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 7bd75007d92b..197593320426 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-02-06  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	PR d/123633
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index e18286d27d1e..d20a3af8a6bd 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 97493abd3646..0cdd9885e792 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-05-03  Marian Buschsieweke  <maribu@users.noreply.github.com>
 
 	Backported from master:
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index 3d90ebc239ce..e832c37d52bd 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 750cbe2ab98f..ba3ed1d4d0d4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2026-06-05  XU Kailiang  <xu2k3l4@outlook.com>
 
 	PR libstdc++/117214
diff --git a/libvtv/ChangeLog b/libvtv/ChangeLog
index 3d4eb1edc9af..704c2ec068e2 100644
--- a/libvtv/ChangeLog
+++ b/libvtv/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index 70bef5c8f62d..100b1314b79c 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
index 4fabf7928ffe..f94a1031c6d1 100644
--- a/maintainer-scripts/ChangeLog
+++ b/maintainer-scripts/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.
diff --git a/zlib/ChangeLog b/zlib/ChangeLog
index 394d49193241..64338450aab0 100644
--- a/zlib/ChangeLog
+++ b/zlib/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-12  Release Manager
+
+	* GCC 15.3.0 released.
+
 2025-08-08  Release Manager
 
 	* GCC 15.2.0 released.

From tkaminsk@gcc.gnu.org  Sat Jun 13 20:17:42 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Sat, 13 Jun 2026 20:17:42 +0000 (GMT)
Subject: [gcc r17-1536] libstdc++: Implement P4206R0: Revert string support in
 std::constant_wrapper.
Message-ID: <20260613201742.317FB4BA2E0C@sourceware.org>

https://gcc.gnu.org/g:4e3139439f9cda78f9ce9c079895d8d0f2dc2a0a

commit r17-1536-g4e3139439f9cda78f9ce9c079895d8d0f2dc2a0a
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 30 20:07:14 2026 +0200

    libstdc++: Implement P4206R0: Revert string support in std::constant_wrapper.
    
    We need to apply remove_cvref_t on decltype(_Xv) for default template argument
    due PR115314. The constant_wrapper::value is declared as decltype((__Xv)) due
    PR125188.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/funcref_impl.h           | 15 ++---
 libstdc++-v3/include/bits/funcwrap.h               |  8 +--
 libstdc++-v3/include/bits/utility.h                | 50 +++------------
 libstdc++-v3/include/bits/version.def              |  5 +-
 libstdc++-v3/include/bits/version.h                |  4 +-
 .../testsuite/20_util/constant_wrapper/generic.cc  | 72 +++++++---------------
 .../20_util/constant_wrapper/other_wrappers.cc     | 14 -----
 .../20_util/constant_wrapper/type_param_neg.cc     |  9 +++
 8 files changed, 55 insertions(+), 122 deletions(-)

diff --git a/libstdc++-v3/include/bits/funcref_impl.h b/libstdc++-v3/include/bits/funcref_impl.h
index db85f173aab9..8a00fde1b8e5 100644
--- a/libstdc++-v3/include/bits/funcref_impl.h
+++ b/libstdc++-v3/include/bits/funcref_impl.h
@@ -132,12 +132,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 4256. Incorrect constrains for function_ref constructors from nontype
       /// Target object is __fn. There is no bound object.
-      template<auto __cwfn, typename _Fn>
+      template<auto __fn, typename _Fn>
 	requires __is_invocable_using<const _Fn&>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (sizeof...(_ArgTypes) > 0)
 	    if constexpr ((... && _ConstExprParam<remove_cvref_t<_ArgTypes>>))
 	      static_assert(!requires {
@@ -153,14 +152,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
       /// Bound object is object referenced by second parameter.
-      template<auto __cwfn, typename _Fn, typename _Up,
+      template<auto __fn, typename _Fn, typename _Up,
 	       typename _Td = remove_reference_t<_Up>>
 	requires (!is_rvalue_reference_v<_Up&&>)
 		 && __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV&>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>, _Up&& __ref) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>, _Up&& __ref) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 
@@ -176,12 +174,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(__ptr).
       /// Bound object is object pointed by second parameter (if any).
-      template< auto __cwfn, typename _Fn, typename _Td>
+      template<auto __fn, typename _Fn, typename _Td>
 	requires __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV*>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 	  if constexpr (is_member_pointer_v<_Fn>)
diff --git a/libstdc++-v3/include/bits/funcwrap.h b/libstdc++-v3/include/bits/funcwrap.h
index 07163f3a5a32..670efa63b4a2 100644
--- a/libstdc++-v3/include/bits/funcwrap.h
+++ b/libstdc++-v3/include/bits/funcwrap.h
@@ -592,16 +592,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     requires is_function_v<_Fn>
     function_ref(_Fn*) -> function_ref<_Fn>;
 
-  template<auto __cwfn, typename _Fn>
+  template<auto __fn, typename _Fn>
     requires is_function_v<remove_pointer_t<_Fn>>
-    function_ref(constant_wrapper<__cwfn, _Fn>)
+    function_ref(constant_wrapper<__fn, _Fn>)
       -> function_ref<remove_pointer_t<_Fn>>;
 
-  template<auto __cwfn, typename _Fn, typename _Tp,
+  template<auto __fn, typename _Fn, typename _Tp,
 	   typename _SignaturePtr =
 	     decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>
     requires (!is_void_v<_SignaturePtr>)
-    function_ref(constant_wrapper<__cwfn, _Fn>, _Tp&&)
+    function_ref(constant_wrapper<__fn, _Fn>, _Tp&&)
       -> function_ref<remove_pointer_t<_SignaturePtr>>;
 
   /// @cond undocumented
diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index dac02e4a479d..320dd507b43d 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -141,42 +141,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
 
 #ifdef __glibcxx_constant_wrapper // C++ >= 26
-  template<typename _Tp>
-    struct _CwFixedValue
-    {
-      using __type = _Tp;
-
-      constexpr
-      _CwFixedValue(__type __v) noexcept
-      : _M_data(__v) { }
-
-      __type _M_data;
-    };
-
-  template<typename _Tp, size_t _Extent>
-    struct _CwFixedValue<_Tp[_Extent]>
-    {
-      using __type = _Tp[_Extent];
-
-      constexpr
-      _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
-        : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
-      { }
-
-      template<size_t... _Indices>
-	constexpr
-	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
-	  : _M_data{__arr[_Indices]...}
-	{ }
-
-      _Tp _M_data[_Extent];
-    };
-
-  template<typename _Tp, size_t _Extent>
-    _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
-
-  template<_CwFixedValue _Xv,
-	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
+  // remove_cvref_t needed due PR115314
+  template<auto _Xv, typename _Vt = remove_cvref_t<decltype(_Xv)>>
     struct constant_wrapper;
 
   template<typename _Tp>
@@ -430,12 +396,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return {}; }
   };
 
-  template<_CwFixedValue _Xv, typename>
+  template<auto _Xv, typename _Vt>
   struct constant_wrapper : _CwOperators
   {
-    static constexpr const auto& value = _Xv._M_data;
+    // Use decltype((_Xv)) instead of decltype(auto) due PR125188
+    static constexpr decltype((_Xv)) value = (_Xv);
     using type = constant_wrapper;
-    using value_type = typename decltype(_Xv)::__type;
+    using value_type = decltype(_Xv);
+    static_assert(is_same_v<value_type, _Vt>);
 
     template<_ConstExprParam _Right>
       constexpr auto
@@ -490,8 +458,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<auto __cw, typename _Fn>
     constexpr bool __is_constant_wrapper_v<constant_wrapper<__cw, _Fn>> = true;
 
-  template<_CwFixedValue _Tp>
-    constexpr auto cw = constant_wrapper<_Tp>{};
+  template<auto _Xv>
+    constexpr auto cw = constant_wrapper<_Xv>{};
 #endif
 
 #ifdef __glibcxx_integer_sequence // C++ >= 14
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 5dddf4cf3452..40baefab4e4c 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -410,9 +410,10 @@ ftms = {
   name = constant_wrapper;
   // 202506 P2781R9 std::constexpr_wrapper 
   // 202603 P3978R3 constant_wrapper should unwrap on call and subscript
+  // 202606 P4206R0 Revert string support in std::constant_wrapper
   values = {
-    v = 202603;
-    cxxmin = 26;
+    v = 202606;
+    cxxmin = 26; // P4206R0 accepted as DR for C++26
   };
 };
 
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 787315033bb8..de1d71fa935b 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -447,9 +447,9 @@
 
 #if !defined(__cpp_lib_constant_wrapper)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_constant_wrapper 202603L
+#  define __glibcxx_constant_wrapper 202606L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
-#   define __cpp_lib_constant_wrapper 202603L
+#   define __cpp_lib_constant_wrapper 202606L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_constant_wrapper) */
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
index bd41fc4ca3a1..eb0a86d9095d 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
@@ -12,54 +12,6 @@ check_same(auto actual, auto expected)
   static_assert(std::same_as<decltype(actual), decltype(expected)>);
 };
 
-
-constexpr void
-test_c_arrays()
-{
-  constexpr double x[] = {1.1, 2.2, 3.3};
-  auto cx = std::cw<x>;
-  auto access = [](auto x, size_t i)
-  { return x[i]; };
-
-  check_same(std::cw<x>[0], x[0]);
-  check_same(std::cw<x>[1], x[1]);
-  check_same(std::cw<x>[2], x[2]);
-
-  check_same(cx[std::cw<0>], std::cw<x[0]>);
-  check_same(cx[std::cw<1>], std::cw<x[1]>);
-  check_same(cx[std::cw<2>], std::cw<x[2]>);
-}
-
-constexpr size_t
-deduce_cstr_size(auto str)
-{
-  size_t sz = 0;
-  while(str[sz++] != '\0') { }
-  return sz;
-}
-
-constexpr void
-test_string_literals()
-{
-  auto foo = std::cw<"foo">;
-  constexpr const typename decltype(foo)::value_type & cstr = foo;
-  constexpr size_t N = std::size(cstr);
-  constexpr auto foo_view = std::string_view(cstr, N-1);
-
-  constexpr const char (&cstr1)[deduce_cstr_size(foo)] = foo;
-  constexpr size_t N1 = std::size(cstr);
-
-  static_assert(static_cast<char const*>(cstr) ==
-		static_cast<char const*>(cstr1));
-  static_assert(N1 == N);
-
-  static_assert(foo[0] == 'f');
-  static_assert(foo[1] == 'o');
-  static_assert(foo[2] == 'o');
-  static_assert(foo[3] == '\0');
-  static_assert(static_cast<char const *>(foo) == foo_view);
-}
-
 constexpr bool
 convert_constexpr(auto c)
 {
@@ -93,6 +45,27 @@ test_ints()
   VERIFY(two + 3 == std::cw<5>);
 }
 
+constexpr void
+test_objects()
+{
+  if consteval {
+    return;
+  }
+
+  auto check = []<auto V>
+  {
+    VERIFY(&V == &std::constant_wrapper<V>::value);
+    std::constant_wrapper<V> cw;
+    VERIFY(&V == &cw.value);
+  };
+
+  struct Obj
+  { int x; };
+
+  check.operator()<Obj{10}>();
+  check.operator()<Obj{20}>();
+}
+
 constexpr int
 add(int i, int j)
 { return i + j; }
@@ -586,12 +559,11 @@ test_assignment()
 	     std::cw<ConstAssignable{2}>);
 }
 
-
 constexpr bool
 test_all()
 {
-  test_c_arrays();
   test_ints();
+  test_objects();
   test_function_object();
   test_function_pointer();
   test_indexable1();
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
index fe45c5a85162..a5e2189ef80a 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
@@ -30,19 +30,6 @@ test_mix_integer_constant()
   check_same(w2 + c3, std::cw<5>);
 }
 
-constexpr void
-test_array()
-{
-  constexpr double x[] = {1.1, 2.2, 3.3};
-  auto cx = std::cw<x>;
-  auto i2 = std::integral_constant<int, 2>{};
-  auto w2 = ConstWrapper<int, 2>{};
-
-  check_same(x[i2], x[2]);
-  check_same(cx[i2], std::cw<x[2]>);
-  check_same(cx[w2], std::cw<x[2]>);
-}
-
 constexpr void
 test_function_object()
 {
@@ -61,7 +48,6 @@ constexpr bool
 test_all()
 {
   test_mix_integer_constant();
-  test_array();
   test_function_object();
   return true;
 }
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
new file mode 100644
index 000000000000..1548e0789e11
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++26 } }
+#include <utility>
+
+std::constant_wrapper<1, float> c1;      // { dg-error "from here" }
+std::constant_wrapper<1.0, int> c2;      // { dg-error "from here" }
+std::constant_wrapper<1, int const> c3;  // { dg-error "from here" }
+std::constant_wrapper<1, int const&> c4; // { dg-error "from here" }
+
+// { dg-prune-output "static assertion failed" }

From gccadmin@gcc.gnu.org  Sun Jun 14 00:16:58 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 14 Jun 2026 00:16:58 +0000 (GMT)
Subject: [gcc r17-1541] Daily bump.
Message-ID: <20260614001658.F19AF4B9DB48@sourceware.org>

https://gcc.gnu.org/g:b19b7037ab294d16b981b23b68e34b7b32830246

commit r17-1541-gb19b7037ab294d16b981b23b68e34b7b32830246
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun Jun 14 00:16:28 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog                     | 67 +++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP                     |  2 +-
 gcc/algol68/ChangeLog             | 28 ++++++++++++++++
 gcc/testsuite/ChangeLog           | 43 +++++++++++++++++++++++++
 include/ChangeLog                 |  5 +++
 libgcc/config/avr/libf7/ChangeLog |  6 ++++
 libiberty/ChangeLog               |  5 +++
 libstdc++-v3/ChangeLog            | 17 ++++++++++
 lto-plugin/ChangeLog              |  6 ++++
 9 files changed, 178 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 96b1db6aaa4e..c5d149f9c436 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,70 @@
+2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125776
+	* tree-ssa-phiopt.cc (is_factor_profitable): An
+	usage in a debug stmt should be ignored.
+
+2026-06-13  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.cc (find_a_program): Implement the new behavior described
+	above.
+	(driver::set_up_specs): Initilize variable. It would be nice to
+	have less spooky-action-at-a-distince using C++ features, but I
+	just matched how the corresponding suffix variable worked for
+	now for uniformity.
+
+2026-06-13  John Ericson  <git@JohnEricson.me>
+
+	* gcc.cc (for_each_path): Pass an additional boolean argument to
+	the callback specifying whether the current directly being
+	searched is machine-specific, as described above.
+	(build_search_list): Add unused parameter to lambda match new
+	callback type.
+	(find_a_file): Add unused parameter to lambda match new callback
+	type.
+	(find_a_program): Add unused parameter to lambda match new
+	callback type.
+	(spec_path::operator()): Add unused parameter to match new
+	callback type.
+
+2026-06-13  panciyan@eswincomputing.com  <panciyan@eswincomputing.com>
+
+	* config/riscv/crypto.md (riscv_pack): Change HISI iterator to
+	HX as we must match half a target word for pack.
+
+2026-06-13  Gerald Pfeifer  <gerald@pfeifer.com>
+
+	* doc/install.texi (Configuration): Use AE spelling for "behavior".
+
+2026-06-13  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR tree-optimization/125750
+	* match.pd (mult of a 0/1 value by a negated 0/1 value): New
+	simplification.
+
+2026-06-13  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125707
+	PR tree-optimization/125707
+	* match.pd: Add (~a) >> a to -1 for signed a.
+
+2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+
+	PR driver/111527
+	* defaults.h (COLLECT2_OPTIONS_MAX_LENGTH): New macro.
+	* collect-utils.cc (read_collect_gcc_options): New function.
+	* collect-utils.h (read_collect_gcc_options): Declare.
+	* collect2.cc (main): Use read_collect_gcc_options instead
+	of getenv.
+	* doc/hostconfig.texi (Host Misc): Document
+	COLLECT2_OPTIONS_MAX_LENGTH.
+	* doc/invoke.texi (Environment Variables): Document the
+	@file form of COLLECT_GCC_OPTIONS.
+	* gcc.cc (xsetenv_collect_gcc_options): New function.
+	(set_collect_gcc_options): Use xsetenv_collect_gcc_options.
+	* lto-wrapper.cc (run_gcc): Use read_collect_gcc_options
+	instead of getenv.
+
 2026-06-12  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
 
 	* config/aarch64/aarch64-cores.def (cortex-a320): Update core.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 18e7cc602f5c..fefc6e3dcfd4 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260613
+20260614
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index 9c2f97769268..706295726251 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,31 @@
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-parser-brackets.cc: Include <string>.
+	(bracket_check_error): Get additional argument `item'.
+	(bracket_check_diagnose): Likewise.
+	(bracket_check_parse): Fix call to a68_error passing the `item'.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-low.cc (a68_demangle_symbol): Fix typo, 'p' is the mangling
+	of '%', not of '+'.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-low-generator.cc (a68_low_generator): Wrap the resulting
+	stmt_list into a nop_expr.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-low-clauses.cc (a68_lower_collateral_clause): Check that
+	a68_lower_tree on the units list return NULL_TREE.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-low-units.cc (a68_lower_formula): Consolidate operands of
+	formula before call.
+	(a68_lower_monadic_formula): Likewise.
+
 2026-06-12  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* a68-imports.cc (a68_try_suffixes): Use .dylib suffix on Darwin.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0ab92e99e51f..4c946cb4b937 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,46 @@
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/execute/modules/program-1.a68: Fix test.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/execute/modules/module1.a68: Add an operator %.
+	* algol68/execute/modules/program-1.a68: Use operator %.
+
+2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125776
+	* gcc.dg/torture/pr125776-1.c: New test.
+	* gcc.dg/torture/pr125776-2.c: New test.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/execute/gen-in-constructor-1.a68: New test.
+	* algol68/execute/gen-in-constructor-2.a68: Likewise.
+
+2026-06-13  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR tree-optimization/125750
+	* g++.dg/tree-ssa/mult-negate-zeroone-1.C: New test.
+	* g++.dg/tree-ssa/mult-negate-zeroone-2.C: New test.
+
+2026-06-13  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125707
+	PR tree-optimization/125707
+	* gcc.dg/pr125707.c: New test.
+
+2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+
+	PR driver/111527
+	* gcc.misc-tests/pr111527.exp: New test.
+
+2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/execute/formula-3.a68: New test.
+	* algol68/execute/formula-4.a68: Likewise.
+	* algol68/execute/formula-5.a68: Likewise.
+
 2026-06-12  Tobias Burnus  <tburnus@baylibre.com>
 
 	* gfortran.dg/gomp/declare-mapper-6.f90: New test.
diff --git a/include/ChangeLog b/include/ChangeLog
index d14b8a036ef9..67a0fadfdc23 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+
+	PR driver/111527
+	* libiberty.h (expandargstr): Declare.
+
 2026-06-01  Arsen Arsenovi?  <aarsenovic@baylibre.com>
 
 	* gomp-constants.h (GOMP_VERSION): Bump.  Signature of
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index 8626809eb001..952fbe90e03c 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-13  Georg-Johann Lay  <avr@gjlay.de>
+
+	* asm-defs.h (REGNO): New .macro.
+	(wmov): Use it.
+	(do_epilogue_restores) <\n_frame>: Put in () where needed.
+
 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
 
 	* libf7.c (__floatdidf, __floatundidf): Minor tweak.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 73a9092dcacf..e99d32cf7a62 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+
+	PR driver/111527
+	* argv.c (expandargstr): New function.
+
 2026-06-10  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* simple-object-mach-o.c (MACH_O_MH_DYLIB): New definition.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 841359ac23dd..80ac7502de4b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,20 @@
+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.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index 54f09705f9c5..1d3c2fa66d8c 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+
+	PR driver/111527
+	* lto-plugin.c (read_collect_gcc_options): New function.
+	(onload): Use read_collect_gcc_options instead of getenv.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* lto-plugin.c (startswith): Fix typos.

From gerald@gcc.gnu.org  Mon Jun 15 21:00:23 2026
From: gerald@gcc.gnu.org (Gerald Pfeifer)
Date: Mon, 15 Jun 2026 21:00:23 +0000 (GMT)
Subject: [gcc r17-1578] libstdc++: Switch link to www.opengroup.org to https
Message-ID: <20260615210023.ADCF34B9DB7C@sourceware.org>

https://gcc.gnu.org/g:12002f4ca2426f0f9f2736917dae898decd147c7

commit r17-1578-g12002f4ca2426f0f9f2736917dae898decd147c7
Author: Gerald Pfeifer <gerald@pfeifer.com>
Date:   Mon Jun 15 22:59:18 2026 +0200

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

Diff:
---
 libstdc++-v3/doc/html/manual/using_exceptions.html | 2 +-
 libstdc++-v3/doc/xml/manual/using_exceptions.xml   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html
index a810a3499ad9..57164e6ed565 100644
--- a/libstdc++-v3/doc/html/manual/using_exceptions.html
+++ b/libstdc++-v3/doc/html/manual/using_exceptions.html
@@ -321,7 +321,7 @@ is called.
   catch(...)
   { this-&gt;_M_setstate(ios_base::badbit); }
 </pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.2"></a><p><span class="title"><em>
-	<a class="link" href="http://www.opengroup.org/austin/" target="_top">
+	<a class="link" href="https://www.opengroup.org/austin/" target="_top">
 	System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
 	</a>
       </em>. </span><span class="pagenums">
diff --git a/libstdc++-v3/doc/xml/manual/using_exceptions.xml b/libstdc++-v3/doc/xml/manual/using_exceptions.xml
index fbcc679bd4d4..5129554f44fd 100644
--- a/libstdc++-v3/doc/xml/manual/using_exceptions.xml
+++ b/libstdc++-v3/doc/xml/manual/using_exceptions.xml
@@ -507,7 +507,7 @@ is called.
   <biblioentry>
       <title>
 	<link xmlns:xlink="http://www.w3.org/1999/xlink"
-	      xlink:href="http://www.opengroup.org/austin/">
+	      xlink:href="https://www.opengroup.org/austin/">
 	System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
 	</link>
       </title>

From gccadmin@gcc.gnu.org  Tue Jun 16 00:17:01 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 16 Jun 2026 00:17:01 +0000 (GMT)
Subject: [gcc r17-1579] Daily bump.
Message-ID: <20260616001701.EE9DA48FDC86@sourceware.org>

https://gcc.gnu.org/g:d701ec2460d2b45511ca41af13d8f634751de587

commit r17-1579-gd701ec2460d2b45511ca41af13d8f634751de587
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 16 00:16:30 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 110 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/algol68/ChangeLog   |  17 ++++++++
 gcc/testsuite/ChangeLog |  82 ++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog        |   9 ++++
 libstdc++-v3/ChangeLog  |   6 +++
 6 files changed, 225 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4a1fd1802eec..5a81a23f5af7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,113 @@
+2026-06-15  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* config/i386/i386.cc (ix86_insn_cost): Add a suitable penalty
+	for USE of a MEM in a PARALLEL (for *<absneg>[sd]f2_1 splitter).
+
+2026-06-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/125795
+	* config/aarch64/aarch64-early-ra.cc (early_ra::allocate_colors):
+	Compute the allocated-FPR mask as
+	((1ULL << color->group->size) - 1) << best.
+
+2026-06-15  Kael Andrew Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125737
+	PR tree-optimization/125737
+	* match.pd: Use tree_expr_nonnegative_p for X % Y < Y to true.
+
+2026-06-15  Kael Andrew Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125756
+	* match.pd: Use tree_expr_nonnegative_p for X < (typeof X)(X != 0) to false.
+
+2026-06-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiopt.cc (factor_out_all): New function.
+	(pass_phiopt::execute): Call factor_out_all isntead
+	of factor_out_conditional_operation and
+	cond_if_else_store_replacement_limited.
+
+2026-06-15  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR rtl-optimization/123754
+	* expmed.cc (store_integral_bit_field): When the SUBREG
+	narrowing fails, defer to store_split_bit_field instead of
+	asserting.
+
+2026-06-15  Jim Tsung-Chun Lin  <jim@andestech.com>
+
+	* common/config/riscv/riscv-common.cc (riscv_select_multilib):
+	Don't set riscv_no_matched_multi_lib here; let the caller own
+	the flag.
+	(riscv_compute_multilib): Drop the early return that accepted
+	the generic-matched multilib_dir; always run the smart matcher
+	and set riscv_no_matched_multi_lib when it finds no candidate.
+
+2026-06-15  Filip Kastl  <fkastl@suse.cz>
+
+	PR sanitizer/124206
+	* gcc.cc (driver::global_initializations): Ask for 128MB stack
+	instead of just 64MB when __SANITIZE_ADDRESS__ is defined.
+	* toplev.cc (toplev::main): Ditto.
+
+2026-06-15  Richard Biener  <rguenther@suse.de>
+
+	* tree-ssa-reassoc.cc (ovce_extract_ops): Fixup
+	false value matching for the inverted comparison case.
+
+2026-06-15  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125786
+	* tree-ssa-reassoc.cc (optimize_vec_cond_expr): Create a new
+	stmt instead of rewriting an existing possibly multi-use one.
+
+2026-06-15  Georg-Johann Lay  <avr@gjlay.de>
+
+	* config/avr/avr-protos.h (avr_out_delay_loop): New proto.
+	* config/avr/avr.cc (avr_out_delay_loop): New function.
+	(avr_adjust_insn_length) [ADJUST_LEN_DELAY_LOOP]: Handle case.
+	(avr_expand_delay_cycles): Overhaul.  Allow loop counts of
+	zero; they represent a power of 2.
+	* config/avr/avr.md (adjust_len) [delay_loop]: Add.
+	(*delay_cycles_1): Use avr_out_delay_loop for asm out.
+	(*delay_cycles_4): Same.
+	(*delay_cycles_3): Same.
+	(*delay_cycles_2): Same.  Relax constraints to "d".
+	Use two QImode scratch regs instead of one HImode one.
+
+2026-06-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125790
+	* match.pd (`(~x)>>x`): Reject truncation of shifter.
+
+2026-06-15  Monk Chiang  <62004175+monkchiang@users.noreply.github.com>
+
+	* config/riscv/riscv-zicfilp.cc (rest_of_insert_landing_pad):
+	Remove gen_lpad_align before non-local goto labels; LABEL_ALIGN
+	now handles their alignment.  Simplify gpr_save handling: the
+	pattern now outputs the full CFI sequence itself.
+	* config/riscv/riscv.cc (riscv_output_mi_thunk): Add
+	gen_lpad_align before entry lpad.
+	* config/riscv/riscv.h (LABEL_ALIGN): New macro; ensures 4-byte
+	alignment for Zicfilp non-local goto target labels.
+	* config/riscv/riscv.md (gpr_save): When is_zicfilp_p, output
+	.p2align 2, .option push/norelax/norvc, call, .option pop, lpad 0.
+
+2026-06-15  Monk Chiang  <monk.chiang@sifive.com>
+
+	* config/riscv/riscv-protos.h (riscv_call_needs_lpad_p): Declare.
+	* config/riscv/riscv.cc (riscv_gnu_attributes): Register new
+	indirect_return attribute for function declarations.
+	(riscv_call_needs_lpad_p): New function.
+	* config/riscv/riscv.md (call_internal_cfi): New insn pattern with
+	length attribute.
+	(call_value_internal_cfi): Likewise for call-with-return-value,
+	with comment and length attribute.
+	(define_expand "call"): Emit call_internal_cfi when
+	riscv_call_needs_lpad_p returns true.
+	(define_expand "call_value"): Likewise.
+
 2026-06-14  Stafford Horne  <shorne@gmail.com>
 
 	* config/or1k/or1k.md (cbranchsi4): Add clobber clause.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 70de59d01254..a667d62b7762 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260615
+20260616
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index f7e24453051d..ad5d323cb72b 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,20 @@
+2026-06-15  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-parser-taxes.cc (attr_descr): New function.
+	(already_declared): Use attr_descr for diagnostic.
+	(already_declared_hidden): Likewise.
+
+2026-06-15  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-imports.cc (INCLUDE_VECTOR): Define.
+	(a68_open_packet): Deduplicate within-moif modes while importing.
+
+2026-06-15  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-parser-extract.cc (a68_extract_indicants): Set PUBLICIZED in
+	the new tags for mode indicants.
+	* a68-parser.cc (a68_new_tag): Initialize PUBLICIZED to false.
+
 2026-06-14  Jose E. Marchesi  <jemarch@gnu.org>
 
 	* a68-parser-brackets.cc (INCLUDE_STRING): Define.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 663cc9907905..617d43860dd7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,85 @@
+2026-06-15  Roger Sayle  <roger@nextmovesoftware.com>
+
+	* gcc.target/i386/fabsneg-2.c: New test case.
+
+2026-06-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/125795
+	* gcc.target/aarch64/pr125795.c: New test.
+
+2026-06-15  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* algol68/execute/modules/module26.a68: New file.
+	* algol68/execute/modules/program-26.a68: New test.
+
+2026-06-15  Kael Andrew Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125737
+	PR tree-optimization/125737
+	* gcc.dg/pr125737.c: New test.
+
+2026-06-15  Kael Andrew Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125756
+	* gcc.dg/pr125756.c: New test.
+
+2026-06-15  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR rtl-optimization/123754
+	* gcc.target/aarch64/pr123754.c: New test.
+	* gcc.target/aarch64/avoid-store-forwarding-be-2.c: New test.
+
+2026-06-15  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+	* gcc.target/riscv/sat/sat_u_mul-13-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-13-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-13-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-13-u8.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-13-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-13-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-13-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-13-u8.c: New test.
+
+2026-06-15  Jim Tsung-Chun Lin  <jim@andestech.com>
+
+	* gcc.target/riscv/multilib.exp: New test.
+
+2026-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* gcc.dg/lto/toplevel-extended-asm-1_0.c: Skip on 64-bit
+	Solaris/SPARC.
+	* gcc.dg/lto/toplevel-simple-asm-1_0.c: Likewise.
+
+2026-06-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR tree-optimization/125750
+	* g++.dg/tree-ssa/mult-negate-zeroone-1.C: Fix escaping.
+
+2026-06-15  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125786
+	* gcc.dg/torture/pr125786.c: New testcase.
+
+2026-06-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	PR tree-optimization/125790
+	* gcc.dg/pr125707.c: Move the long over to pr125707-1.c.
+	* gcc.dg/pr125707-1.c: New test; xfailed.
+	* gcc.dg/pr125790-1.c: New test.
+
+2026-06-15  Monk Chiang  <62004175+monkchiang@users.noreply.github.com>
+
+	* g++.target/riscv/zicfilp-thunk.C: New test.
+	* gcc.target/riscv/zicfilp-func-entry.c: New test.
+	* gcc.target/riscv/zicfilp-gpr-save.c: New test.
+	* gcc.target/riscv/zicfilp-nonlocal-goto.c: New test.
+
+2026-06-15  Monk Chiang  <monk.chiang@sifive.com>
+
+	* gcc.target/riscv/zicfilp-indirect-return.c: New test.
+	* gcc.target/riscv/zicfilp-setjmp.c: New test.
+
 2026-06-14  Robert Dubner  <rdubner@symas.com>
 
 	* cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob: New test.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 213bba691cbd..33482137bc2f 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR target/38239
+	* config/sol2/gmon.c [__i386__] (_mcount): Pass selfpc, frompc to
+	internal_mcount.
+	(internal_mcount): Remove already_setup.
+	Remove obsolete comment.
+	(moncontrol): Disable profil(2) deprecation warning.
+
 2026-06-14  Georg-Johann Lay  <avr@gjlay.de>
 
 	* config/avr/asm-defs.h (REGNO): Recognize: x, y, z, X, Y, Z.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 80ac7502de4b..0e484e7b9620 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+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.

From mpolacek@gcc.gnu.org  Wed Jun 17 15:01:36 2026
From: mpolacek@gcc.gnu.org (Marek Polacek)
Date: Wed, 17 Jun 2026 15:01:36 +0000 (GMT)
Subject: [gcc r17-1623] libstdc++: adjust explicit inst of
 std::basic_string::data()
Message-ID: <20260617150136.1C4924BAD16D@sourceware.org>

https://gcc.gnu.org/g:692c4cad4662c7672d05f8cad7fc075db20f53a0

commit r17-1623-g692c4cad4662c7672d05f8cad7fc075db20f53a0
Author: Marek Polacek <polacek@redhat.com>
Date:   Fri Jun 5 17:25:36 2026 -0400

    libstdc++: adjust explicit inst of std::basic_string::data()
    
    r15-2650 removed noexcept from non-const std::basic_string::data()
    in bits/cow_string.h, but the explicit instantiations in string-inst.cc
    kept their noexcept.  [except.spec] says that in an explicit instantiation
    a noexcept-specifier may be specified, but is not required, but when it
    is specified, it must be the same as the exception specification of all
    other declarations of that function.  So I think we should just remove it.
    
    libstdc++-v3/ChangeLog:
    
            * src/c++17/string-inst.cc (basic_string::data): Remove noexcept.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/src/c++17/string-inst.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++17/string-inst.cc b/libstdc++-v3/src/c++17/string-inst.cc
index ac52adaa7b5e..e9ef1bfd0dcc 100644
--- a/libstdc++-v3/src/c++17/string-inst.cc
+++ b/libstdc++-v3/src/c++17/string-inst.cc
@@ -42,14 +42,14 @@ template basic_string<char>::basic_string(__sv_wrapper, const allocator_type&);
 template basic_string<char>::__sv_wrapper::__sv_wrapper(string_view);
 template string_view basic_string<char>::_S_to_string_view(string_view);
 template basic_string<char>::operator string_view() const noexcept;
-template char* basic_string<char>::data() noexcept;
+template char* basic_string<char>::data();
 
 #ifdef _GLIBCXX_USE_WCHAR_T
 template basic_string<wchar_t>::basic_string(__sv_wrapper, const allocator_type&);
 template basic_string<wchar_t>::__sv_wrapper::__sv_wrapper(wstring_view);
 template wstring_view basic_string<wchar_t>::_S_to_string_view(wstring_view);
 template basic_string<wchar_t>::operator wstring_view() const noexcept;
-template wchar_t* basic_string<wchar_t>::data() noexcept;
+template wchar_t* basic_string<wchar_t>::data();
 #endif
 
 _GLIBCXX_END_NAMESPACE_VERSION

From gccadmin@gcc.gnu.org  Thu Jun 18 00:17:07 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 18 Jun 2026 00:17:07 +0000 (GMT)
Subject: [gcc r17-1632] Daily bump.
Message-ID: <20260618001707.41ABD4BA2E1A@sourceware.org>

https://gcc.gnu.org/g:6484a57276161d79c701eb39822e755b95a62d1e

commit r17-1632-g6484a57276161d79c701eb39822e755b95a62d1e
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 18 00:16:35 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 165 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |  34 ++++++++++
 gcc/fortran/ChangeLog   |  14 ++++
 gcc/jit/ChangeLog       |  25 ++++++++
 gcc/testsuite/ChangeLog | 106 +++++++++++++++++++++++++++++++
 libatomic/ChangeLog     |   6 ++
 libffi/ChangeLog        |  15 +++++
 libgcc/ChangeLog        |   6 ++
 libitm/ChangeLog        |   6 ++
 libstdc++-v3/ChangeLog  |   4 ++
 11 files changed, 382 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6343abf352c1..2ef7bbcb2b0d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,168 @@
+2026-06-17  James K. Lowden  <jklowden@cobolworx.com>
+
+	* doc/install.texi: COBOL requires Bison 3.8.2.
+
+2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125804
+	* tree-vect-loop-manip.cc (vect_do_peeling): Have
+	LOOP_VINFO_EARLY_BREAKS_VECT_PEELED require epilog.
+
+2026-06-17  Dhruv Chawla  <dhruvc@nvidia.com>
+
+	PR fortran/125717
+	* lto-streamer-in.cc (input_cfg): Stream loop->can_be_parallel in.
+	* lto-streamer-out.cc (output_cfg): Stream loop->can_be_parallel out.
+
+2026-06-17  Zhongjie Guo  <guozhongjie@hygon.cn>
+
+	* config/i386/x86-tune-costs.h (c86_4g_m7_cost): Increase
+	512-bit load/store and unaligned load/store costs.
+
+2026-06-17  Xin Liu  <liulxx@hygon.cn>
+
+	* config/i386/c86-4g-m7.md (c86_4g_m7_imov_xchg): Adjust
+	reservation units.
+	(c86_4g_m7_imov_xchg_load): Ditto.
+	(c86_4g_m7_call): Ditto.
+	(c86_4g_m7_branch): Ditto.
+	(c86_4g_m7_branch_load): Ditto.
+	(c86_4g_m7_fp_spc_direct): Add missing store unit.
+	(c86_4g_m7_sse_pinsr_reg): Adjust reservation units.
+	(c86_4g_m7_avx512_insertx_ymm): Ditto.
+	(c86_4g_m7_avx512_insertx_ymem): Ditto.
+	(c86_4g_m7_avx512_insertx_zxmm): Ditto.
+	(c86_4g_m7_avx512_insertx_zxmem): Ditto.
+	(c86_4g_m7_avx512_abs_load): Add missing store unit.
+	(c86_4g_m7_avx_sign): Use combined FPU reservation.
+	(c86_4g_m7_avx_sign_load): Ditto.
+	(c86_4g_m7_avx_aes): Ditto.
+	(c86_4g_m7_avx_aes_load): Ditto.
+	(c86_4g_m7_extr_load): Rename to ...
+	(c86_4g_m7_extr_store): ... this and restrict to store memory.
+	(c86_4g_m7_avx_imul): Use combined FPU reservation.
+	(c86_4g_m7_avx_imul_mem): Ditto.
+	(c86_4g_m7_avx512_vpmovx_y_load): Add missing store unit.
+	(c86_4g_m7_avx_vpmovx_xx_load): Ditto.
+	(c86_4g_m7_avx512_sseadd_maxmin_xy): Rename to ...
+	(c86_4g_m7_avx512_sseadd_maxmin): ... this and simplify
+	memory attribute check.
+	(c86_4g_m7_avx512_sseadd_maxmin_xy_load): Rename to ...
+	(c86_4g_m7_avx512_sseadd_maxmin_load): ... this and simplify
+	memory attribute check.
+	(c86_4g_m7_avx512_sseadd_xy): Rename to ...
+	(c86_4g_m7_avx512_sseadd): ... this.
+	(c86_4g_m7_avx512_sseadd_xy_load): Rename to ...
+	(c86_4g_m7_avx512_sseadd_load): ... this.
+	(c86_4g_m7_sse_sseiadd_sadbw): Use combined FPU reservation.
+	(c86_4g_m7_sse_sseiadd_sadbw_mem): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_z): Adjust reservation units.
+	(c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_test_load): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_m): Adjust latency.
+
+2026-06-17  Robin Dapp  <rdapp.gcc@gmail.com>
+
+	PR target/125478
+	* config/riscv/vector.md: Set widen-alu mode_idx to 3.
+
+2026-06-17  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	Revert:
+	2026-06-15  Jim Tsung-Chun Lin  <jim@andestech.com>
+
+	* common/config/riscv/riscv-common.cc (riscv_select_multilib):
+	Don't set riscv_no_matched_multi_lib here; let the caller own
+	the flag.
+	(riscv_compute_multilib): Drop the early return that accepted
+	the generic-matched multilib_dir; always run the smart matcher
+	and set riscv_no_matched_multi_lib when it finds no candidate.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* gimple-range-cache.cc (ranger_cache::set_global_range): Nonzero
+	pointer ranges are no longer invariant.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* Makefile.in (OBJS): Remove value-pointer-equiv.o.
+	* tree-vrp.cc (rvrp_folder::m_pta): Delete member.
+	(rvrp_folder::rvrp_folder): Remove m_pta allocation.
+	(rvrp_folder::~rvrp_folder): Delete.
+	(rvrp_folder::pre_fold_bb): Remove m_pta reference.
+	(rvrp_folder::post_fold_bb): Delete.
+	(rvrp_folder::pre_fold_stmt): Remove m_pta reference.
+	* value-pointer-equiv.cc: Delete.
+	* value-pointer-equiv.h: Delete.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* tree-vrp.cc (rvrp_folder::value_of_expr): Use prange PTA info.
+	(value_on_edge): Likewise.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* gimple-range-fold.cc (x_fold_context): New.
+	(pta_valueize): New.
+	(fold_using_range::fold_stmt): Set PTA fields.
+	(fold_using_range::range_of_phi): Ditto.
+	* ipa-prop.cc (ipa_vr::ipa_vr): Allocate unshared range.
+	* range-op-ptr.cc (pointer_plus_operator::fold_range): Handle PTA.
+	(pointer_plus_operator::op2_range): Ditto.
+	(operator_pointer_diff::fold_range): Ditto.
+	(operator_cast::fold_range): Ditto.
+	(operator_cast::lhs_op1_relation): Ditto.
+	(operator_equal::fold_range): Ditto.
+	(operator_not_equal::fold_range): Ditto.
+	* value-query.cc (range_query::get_tree_range): Ditto.
+	* value-range-pretty-print.cc (vrange_printer::print_pt): New.
+	(vrange_printer::visit): Add print support.
+	* value-range-pretty-print.h (vrange_printer::print_pt): New prototype.
+	* value-range-storage.cc (vrange_allocator::clone): Allow unshared
+	expression allocation.
+	(vrange_storage::alloc): Likewise.
+	(prange_storage::alloc): Likewise.
+	(prange_storage::prange_format): Copy PTA.
+	(prange_storage::set_prange): Ditto.
+	(prange_storage::get_prange): Ditto.
+	(prange_storage::equal_p): Compare points-to data.
+	(ggc_alloc_vrange_storage): Allow unshared expression.
+	* value-range-storage.h (clone): Adjust param list.
+	(prange_storage::m_pt, m_points_to_p): New.
+	* value-range.cc (inchash::add_vrange): Add points-to to hash value.
+	(prange::set_pt): New.
+	(prange::pt_base): New.
+	(prange::pt_offset): New.
+	(prange::pt_size): New.
+	(prange::set): Initialize PTA field.
+	(prange::union_): Handle PTA cases.
+	(prange::intersect): Ditto.
+	(prange::operator=): Ditto.
+	(prange::operator==): Ditto.
+	(prange::invert): Handle PTA cases.
+	(prange::verify_range): Ditto.
+	* value-range.h (set_pt, set_pt_unknown, pt_unknown_p,
+	pt_invariant, pt_invariant_away, pt_invariant_p, pt_invariant_away_p,
+	pt_invert, pt_inverted_p, pt_base, pt_offset, pt_size,
+	pt_equal_p): New prange prototypes.
+	(prange::m_pt, prange::m_points_to_p): New members.
+	(prange::set_undefined): Clear PTA fields.
+	(prange::set_varying): Ditto.
+	(prange::set_nonzero): Ditto.
+	(prange::set_zero): Ditto.
+	(prange::zero_p): Check PTA fields.
+	(varying_compatible_p): Ditto.
+	(prange::set_pt): New.
+	(prange::set_pt_unknown): New.
+	(prange::pt_unknown_p): New.
+	(prange::pt_equal_p): New prange prototypes.
+	(prange::pt_inverted_p): New.
+	(prange::pt_invert): New.
+	(prange::pt_invariant): New.
+	(prange::pt_invariant_away): New.
+	(prange::pt_invariant_p): New.
+	(prange::pt_invariant_away_p): New.
+
 2026-06-16  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR c/125226
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 600063a82e3c..f3e3b81b3d19 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260617
+20260618
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 127e5fb1d87b..38db140d560e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,37 @@
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125764
+	* reflect.cc (eval_can_substitute): Don't call
+	convert_from_reference on types.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125759
+	* reflect.cc (get_reflection): Do STRIP_REFERENCE_REF.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125492
+	* reflect.cc (eval_size_of): Add a separate throw_exception for
+	function types.
+
+2026-06-17  Wang Jinghao  <zheng.xianyuwang@gmail.com>
+
+	* reflect.cc (eval_is_explicit_object_parameter): Call
+	maybe_update_function_parm before checking the parameter
+	against DECL_ARGUMENTS.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125613
+	* pt.cc (check_explicit_specialization): Detect mismatches in
+	exception specifications in explicit instantiations.
+
+2026-06-17  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR c++/125851
+	* name-lookup.cc (get_cxx_dialect_name): Handle cxx29.
+
 2026-06-16  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125770
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2c406334a419..e4a28a9b4bf4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,17 @@
+2026-06-17  Tobias Burnus  <tburnus@baylibre.com>
+
+	* gfortran.h (struct gfc_omp_udm): Add comment.
+	(struct gfc_omp_namelist_udm): Likewise; rename members
+	mapper_id to requested_mapper_id and usm to resolved_usm.
+	* module.cc (load_omp_udms, write_omp_udm): Update accordingly.
+	* openmp.cc (gfc_match_omp_clauses, resolve_omp_clauses): Likewise.
+	* trans-openmp.cc (gfc_trans_omp_clauses): Likewise.
+
+2026-06-17  Tobias Burnus  <tburnus@baylibre.com>
+
+	* openmp.cc (match_udr_expr, gfc_match_omp_declare_reduction,
+	gfc_resolve_omp_udr): Improve diagnostic.
+
 2026-06-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/125782
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index 775ff0ec09f4..1c19a019e0c1 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,28 @@
+2026-06-17  Antoni Boucher  <bouanto@zoho.com>
+	    Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+
+	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_38): New ABI tag.
+	* docs/topics/types.rst: Document gcc_jit_type_is_floating_point.
+	* libgccjit.cc (gcc_jit_type_is_floating_point): New function.
+	* libgccjit.h (gcc_jit_type_is_floating_point): New function.
+	* libgccjit.map: New function.
+	* libgccjit.exports: New function.
+
+2026-06-17  Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+	    Antoni Boucher  <bouanto@zoho.com>
+
+	* jit-recording.h: Fix float comparison.
+	* libgccjit.cc: Fix type check in gcc_jit_context_new_comparison.
+
+2026-06-17  Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+	    Antoni Boucher  <bouanto@zoho.com>
+
+	* jit-recording.h: Fix type comparison.
+
+2026-06-17  Antoni Boucher  <bouanto@zoho.com>
+
+	* dummy-frontend.cc: Handle new types in jit_langhook_type_for_mode.
+
 2026-06-09  Antoni Boucher  <bouanto@zoho.com>
 
 	* libgccjit.cc: Allow cast between integers and pointers in
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dbf9787041b0..bbdf62d2c4e5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,109 @@
+2026-06-17  Robert Dubner  <rdubner@symas.com>
+
+	* cobol.dg/group2/258_Nested_PERFORM.cob: Removed.
+	* cobol.dg/group2/258_Nested_PERFORM.out: Removed.
+	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob: Removed.
+	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out: Removed.
+	* cobol.dg/group2/338_Default_Arithmetic__1_.cob: Removed.
+	* cobol.dg/group2/338_Default_Arithmetic__1_.out: Removed.
+	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob: Removed.
+	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out: Removed.
+	* cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob: Removed.
+	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob: Removed.
+	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.out: Removed.
+	* cobol.dg/group2/SORT__table_sort__2_.cob: Removed.
+	* cobol.dg/group2/SORT__table_sort__2_.out: Removed.
+	* cobol.dg/group2/_-static__compilation.cob: Removed.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125764
+	* g++.dg/reflect/can_substitute3.C: New test.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125759
+	* g++.dg/reflect/expr17.C: New test.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125492
+	* g++.dg/reflect/size_of2.C: New test.
+
+2026-06-17  Wang Jinghao  <zheng.xianyuwang@gmail.com>
+
+	* g++.dg/reflect/is_explicit_object_parameter2.C: New test.
+
+2026-06-17  Antoni Boucher  <bouanto@zoho.com>
+	    Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+
+	* jit.dg/test-reflection.c: Add test for
+	gcc_jit_type_is_floating_point.
+
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125613
+	* g++.dg/cpp0x/explicit-inst2.C: New test.
+
+2026-06-17  Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+	    Antoni Boucher  <bouanto@zoho.com>
+
+	* jit.dg/all-non-failing-tests.h: Mention new test.
+	* jit.dg/test-comparison.c: New test.
+
+2026-06-17  Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
+	    Antoni Boucher  <bouanto@zoho.com>
+
+	* jit.dg/test-types.c: Add vector type comparison in test.
+
+2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+
+	PR tree-optimization/125804
+	* gcc.dg/vect/vect-early-break_144-pr125804.c: New test.
+
+2026-06-17  Tobias Burnus  <tburnus@baylibre.com>
+
+	* gfortran.dg/gomp/declare-reduction-2.f90: Update dg-error.
+	* gfortran.dg/gomp/udr1.f90: Likewise.
+	* gfortran.dg/gomp/udr2.f90: Likewise.
+	* gfortran.dg/gomp/udr3.f90: Likewise.
+	* gfortran.dg/gomp/udr4.f90: Likewise.
+	* gfortran.dg/gomp/declare-reduction-5.f90: New test.
+
+2026-06-17  Zhongjie Guo  <guozhongjie@hygon.cn>
+
+	* gcc.target/i386/c86-4g-m7-vect-load-cost-reduc.c: New test.
+
+2026-06-17  Robin Dapp  <rdapp.gcc@gmail.com>
+
+	PR target/125478
+	* gcc.target/riscv/rvv/autovec/pr125478.c: New test.
+
+2026-06-17  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	Revert:
+	2026-06-17  Jim Tsung-Chun Lin  <jim@andestech.com>
+
+	* gcc.target/riscv/multilib.exp: New test.
+
+2026-06-17  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/pr120811.c: Add missing escapes and xfail.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* gcc.c-torture/execute/builtins/memcpy-chk.c: Adjust.
+	* gcc.c-torture/execute/builtins/memmove-chk.c: Adjust.
+	* gcc.dg/builtin-object-size-4.c: XFAIL until pr123160 is fixed.
+	* gcc.dg/builtin-dynamic-object-size-4.c: Likewise.
+	* gcc.misc-tests/gcov-14.c: Add noipa.
+
+2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+
+	* gcc.dg/Wreturn-local-addr-9.c: Remove xfail.
+	* gcc.c-torture/execute/builtins/strncat-chk.c: Adjust for new
+	prange points_to capabilities.
+
 2026-06-16  Iain Sandoe  <iain@sandoe.co.uk>
 
 	* gcc.target/i386/fabsneg-2.c: Allow for lC* in Mach-O.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 07b435e63dcb..6bb2c2315d9b 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* config/linux/aarch64/atomic_16.S (FEATURE_1_AND_MARK): Define.
+	Use AArch64 build attributes when __ARM_BUILDATTR64_FV is
+	available, otherwise emit a GNU property note.
+
 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* config/mingw/lock.c: Fix typos.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 9047e335db35..59271672d0c9 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,18 @@
+2026-06-17  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+	* LOCAL_PATCHES: Add commit 94c5f47d21aa5f144a690189222cc08b86a00505.
+
+2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* src/aarch64/internal.h (AARCH64_POINTER_AUTH): Rename from
+	GNU_PROPERTY_AARCH64_POINTER_AUTH.
+	* src/aarch64/sysv.S (AARCH64_BTI): Rename from
+	GNU_PROPERTY_AARCH64_BTI.
+	(GNU_PROPERTY): New macro.
+	(FEATURE_1_AND_MARK): Likewise.
+	Emit BTI and PAC feature build attributes when
+	__ARM_BUILDATTR64_FV is defined.
+
 2026-05-26  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	PR libffi/125417
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 33482137bc2f..72df7114beca 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* config/aarch64/aarch64-asm.h (FEATURE_1_AND_MARK): Define.
+	Use AArch64 build attributes when __ARM_BUILDATTR64_FV is
+	available, otherwise emit a GNU property note.
+
 2026-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	PR target/38239
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 532fbfac17f0..4571602231ef 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
+
+	* config/aarch64/sjlj.S (FEATURE_1_AND_MARK): Define.  Use
+	AArch64 build attributes when __ARM_BUILDATTR64_FV is available,
+	otherwise emit a GNU property note.
+
 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* config/linux/futex_bits.h: Fix typo.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0e484e7b9620..e891aa180a6c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-17  Marek Polacek  <polacek@redhat.com>
+
+	* src/c++17/string-inst.cc (basic_string::data): Remove noexcept.
+
 2026-06-15  Gerald Pfeifer  <gerald@pfeifer.com>
 
 	* doc/xml/manual/using_exceptions.xml: Switch link to

From aoliva@gcc.gnu.org  Fri Jun 19 06:07:29 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Fri, 19 Jun 2026 06:07:29 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] libstdc++: vxworks: enable
 gthread_yield
Message-ID: <20260619060729.EE5474BAD17A@sourceware.org>

https://gcc.gnu.org/g:0da22d7f603866a97acf4b3048507cff240227ba

commit 0da22d7f603866a97acf4b3048507cff240227ba
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Fri Jun 19 03:02:53 2026 -0300

    libstdc++: vxworks: enable gthread_yield
    
    ac_has_sched_yield is a bit of a misnomer in libstdc++-v3, as it
    guards the __gthread_yield call.  That call is implemented on VxWorks,
    even where it doesn't support POSIX sched_yield() proper.  So enable
    it.
    
    
    for  libstdc++-v3/ChangeLog
    
            * acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
            Enable __gthread_yield.
            * configure: Rebuilt.

Diff:
---
 libstdc++-v3/acinclude.m4 | 1 +
 libstdc++-v3/configure    | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 13fb32af1e30..f8899119d18d 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1788,6 +1788,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
         ac_has_clock_monotonic=yes
         ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
+        ac_has_sched_yield=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
         # Don't use link test for freestanding library, in case gcc_no_link=yes
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 7c921ed282a2..acdec9253140 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -21487,6 +21487,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
         ac_has_clock_monotonic=yes
         ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
+        ac_has_sched_yield=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
         # Don't use link test for freestanding library, in case gcc_no_link=yes
@@ -54158,7 +54159,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54161 "configure"
+#line 54162 "configure"
 #include <stddef.h>
 int main()
 {

From aoliva@gcc.gnu.org  Fri Jun 19 06:07:35 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Fri, 19 Jun 2026 06:07:35 +0000 (GMT)
Subject: [gcc(refs/users/aoliva/heads/testme)] work around ppc-vx6 make
 limitations
Message-ID: <20260619060735.135884BAE7C2@sourceware.org>

https://gcc.gnu.org/g:7aa4639374ff7954d1f1f84025cf81ff48ea4ae5

commit 7aa4639374ff7954d1f1f84025cf81ff48ea4ae5
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Fri Jun 19 03:03:04 2026 -0300

    work around ppc-vx6 make limitations
    
    libstdc++-v3 in gcc-15 gained uses of a make function that was added
    in GNU make 3.81, but ppc-vx6 is GNU make 3.80, so calling the
    function returns an empty string, and the build fails.
    
    gcc/doc/install.texi states GCC requires make 3.80 to build, so
    rewrite those bits to avoid the new function.
    
    Install locations don't need abspath because they're already supposed
    to be absolute, since installation can't work with relative paths and
    DESTDIR is supposed to be prependable.
    
    $? may gain the srcdir VPATH, which would complicate dropping abspath,
    so iterate over the two filenames.
    
    
    for  libstdc++-v3/ChangeLog
    
            * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
            without abspath make function.
            (stamp-modules-bits): Likewise.
            * src/c++23/Makefile.in: Rebuilt.

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 8 +++++---
 libstdc++-v3/src/c++23/Makefile.in | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index 5b2812abd228..a1acf3eb5b4a 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -37,8 +37,8 @@ includebits_DATA = std.cc std.compat.cc
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index 75da9c008ab6..c1407d250b1d 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -845,8 +845,8 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -865,7 +865,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits

From tkaminsk@gcc.gnu.org  Tue Jun 23 10:03:20 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Tue, 23 Jun 2026 10:03:20 +0000 (GMT)
Subject: [gcc r16-9153] libstdc++: Implement P4206R0: Revert string support in
 std::constant_wrapper.
Message-ID: <20260623100320.37A964BA2E25@sourceware.org>

https://gcc.gnu.org/g:b7e3a1b99909091e83aab66622015bbe87c57264

commit r16-9153-gb7e3a1b99909091e83aab66622015bbe87c57264
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Apr 30 20:07:14 2026 +0200

    libstdc++: Implement P4206R0: Revert string support in std::constant_wrapper.
    
    We need to apply remove_cvref_t on decltype(_Xv) for default template argument
    due PR115314. The constant_wrapper::value is declared as decltype((__Xv)) due
    PR125188.
    
    libstdc++-v3/ChangeLog:
    
            * 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.
            * include/std/mdspan (__mdspan::__is_constant_wrapper):
            Use auto as non-type template parameter.
            * 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.
    
    Reviewed-by: Patrick Palka <ppalka@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    (cherry picked from commit 4e3139439f9cda78f9ce9c079895d8d0f2dc2a0a)

Diff:
---
 libstdc++-v3/include/bits/funcref_impl.h           | 15 ++---
 libstdc++-v3/include/bits/funcwrap.h               |  8 +--
 libstdc++-v3/include/bits/utility.h                | 50 +++------------
 libstdc++-v3/include/bits/version.def              |  5 +-
 libstdc++-v3/include/bits/version.h                |  4 +-
 libstdc++-v3/include/std/mdspan                    |  2 +-
 .../testsuite/20_util/constant_wrapper/generic.cc  | 72 +++++++---------------
 .../20_util/constant_wrapper/other_wrappers.cc     | 14 -----
 .../20_util/constant_wrapper/type_param_neg.cc     |  9 +++
 9 files changed, 56 insertions(+), 123 deletions(-)

diff --git a/libstdc++-v3/include/bits/funcref_impl.h b/libstdc++-v3/include/bits/funcref_impl.h
index 9fcab570803f..af4313b07197 100644
--- a/libstdc++-v3/include/bits/funcref_impl.h
+++ b/libstdc++-v3/include/bits/funcref_impl.h
@@ -129,12 +129,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 4256. Incorrect constrains for function_ref constructors from nontype
       /// Target object is __fn. There is no bound object.
-      template<auto __cwfn, typename _Fn>
+      template<auto __fn, typename _Fn>
 	requires __is_invocable_using<const _Fn&>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (sizeof...(_ArgTypes) > 0)
 	    if constexpr ((... && _ConstExprParam<remove_cvref_t<_ArgTypes>>))
 	      static_assert(!requires {
@@ -151,14 +150,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
       /// Bound object is object referenced by second parameter.
-      template<auto __cwfn, typename _Fn, typename _Up,
+      template<auto __fn, typename _Fn, typename _Up,
 	       typename _Td = remove_reference_t<_Up>>
 	requires (!is_rvalue_reference_v<_Up&&>)
 		 && __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV&>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>, _Up&& __ref) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>, _Up&& __ref) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 
@@ -174,12 +172,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       /// Target object is equivalent to std::bind_front<_fn>(__ptr).
       /// Bound object is object pointed by second parameter (if any).
-      template< auto __cwfn, typename _Fn, typename _Td>
+      template<auto __fn, typename _Fn, typename _Td>
 	requires __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV*>
 	constexpr
-	function_ref(constant_wrapper<__cwfn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
+	function_ref(constant_wrapper<__fn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
 	{
-	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
 	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
 	    static_assert(__fn != nullptr);
 	  if constexpr (is_member_pointer_v<_Fn>)
diff --git a/libstdc++-v3/include/bits/funcwrap.h b/libstdc++-v3/include/bits/funcwrap.h
index b835e075295b..a7f274f98bdd 100644
--- a/libstdc++-v3/include/bits/funcwrap.h
+++ b/libstdc++-v3/include/bits/funcwrap.h
@@ -573,16 +573,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     requires is_function_v<_Fn>
     function_ref(_Fn*) -> function_ref<_Fn>;
 
-  template<auto __cwfn, typename _Fn>
+  template<auto __fn, typename _Fn>
     requires is_function_v<remove_pointer_t<_Fn>>
-    function_ref(constant_wrapper<__cwfn, _Fn>)
+    function_ref(constant_wrapper<__fn, _Fn>)
       -> function_ref<remove_pointer_t<_Fn>>;
 
-  template<auto __cwfn, typename _Fn, typename _Tp,
+  template<auto __fn, typename _Fn, typename _Tp,
 	   typename _SignaturePtr =
 	     decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>
     requires (!is_void_v<_SignaturePtr>)
-    function_ref(constant_wrapper<__cwfn, _Fn>, _Tp&&)
+    function_ref(constant_wrapper<__fn, _Fn>, _Tp&&)
       -> function_ref<remove_pointer_t<_SignaturePtr>>;
 
 #endif // __glibcxx_function_ref
diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index dac02e4a479d..320dd507b43d 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -141,42 +141,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
 
 #ifdef __glibcxx_constant_wrapper // C++ >= 26
-  template<typename _Tp>
-    struct _CwFixedValue
-    {
-      using __type = _Tp;
-
-      constexpr
-      _CwFixedValue(__type __v) noexcept
-      : _M_data(__v) { }
-
-      __type _M_data;
-    };
-
-  template<typename _Tp, size_t _Extent>
-    struct _CwFixedValue<_Tp[_Extent]>
-    {
-      using __type = _Tp[_Extent];
-
-      constexpr
-      _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
-        : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
-      { }
-
-      template<size_t... _Indices>
-	constexpr
-	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
-	  : _M_data{__arr[_Indices]...}
-	{ }
-
-      _Tp _M_data[_Extent];
-    };
-
-  template<typename _Tp, size_t _Extent>
-    _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
-
-  template<_CwFixedValue _Xv,
-	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
+  // remove_cvref_t needed due PR115314
+  template<auto _Xv, typename _Vt = remove_cvref_t<decltype(_Xv)>>
     struct constant_wrapper;
 
   template<typename _Tp>
@@ -430,12 +396,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return {}; }
   };
 
-  template<_CwFixedValue _Xv, typename>
+  template<auto _Xv, typename _Vt>
   struct constant_wrapper : _CwOperators
   {
-    static constexpr const auto& value = _Xv._M_data;
+    // Use decltype((_Xv)) instead of decltype(auto) due PR125188
+    static constexpr decltype((_Xv)) value = (_Xv);
     using type = constant_wrapper;
-    using value_type = typename decltype(_Xv)::__type;
+    using value_type = decltype(_Xv);
+    static_assert(is_same_v<value_type, _Vt>);
 
     template<_ConstExprParam _Right>
       constexpr auto
@@ -490,8 +458,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<auto __cw, typename _Fn>
     constexpr bool __is_constant_wrapper_v<constant_wrapper<__cw, _Fn>> = true;
 
-  template<_CwFixedValue _Tp>
-    constexpr auto cw = constant_wrapper<_Tp>{};
+  template<auto _Xv>
+    constexpr auto cw = constant_wrapper<_Xv>{};
 #endif
 
 #ifdef __glibcxx_integer_sequence // C++ >= 14
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 276bd3b9057a..44099eccd036 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -410,9 +410,10 @@ ftms = {
   name = constant_wrapper;
   // 202506 P2781R9 std::constexpr_wrapper 
   // 202603 P3978R3 constant_wrapper should unwrap on call and subscript
+  // 202606 P4206R0 Revert string support in std::constant_wrapper
   values = {
-    v = 202603;
-    cxxmin = 26;
+    v = 202606;
+    cxxmin = 26; // P4206R0 accepted as DR for C++26
   };
 };
 
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index 5337ab79b38d..68f9a5d0b570 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -447,9 +447,9 @@
 
 #if !defined(__cpp_lib_constant_wrapper)
 # if (__cplusplus >  202302L)
-#  define __glibcxx_constant_wrapper 202603L
+#  define __glibcxx_constant_wrapper 202606L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
-#   define __cpp_lib_constant_wrapper 202603L
+#   define __cpp_lib_constant_wrapper 202606L
 #  endif
 # endif
 #endif /* !defined(__cpp_lib_constant_wrapper) */
diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 5310fbbb956d..7ee0c351ad96 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -907,7 +907,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     template<typename _Tp>
       constexpr bool __is_constant_wrapper = false;
 
-    template<_CwFixedValue _Xv, typename _Tp>
+    template<auto _Xv, typename _Tp>
       constexpr bool __is_constant_wrapper<constant_wrapper<_Xv, _Tp>>
 	= true;
 
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
index bd41fc4ca3a1..eb0a86d9095d 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
@@ -12,54 +12,6 @@ check_same(auto actual, auto expected)
   static_assert(std::same_as<decltype(actual), decltype(expected)>);
 };
 
-
-constexpr void
-test_c_arrays()
-{
-  constexpr double x[] = {1.1, 2.2, 3.3};
-  auto cx = std::cw<x>;
-  auto access = [](auto x, size_t i)
-  { return x[i]; };
-
-  check_same(std::cw<x>[0], x[0]);
-  check_same(std::cw<x>[1], x[1]);
-  check_same(std::cw<x>[2], x[2]);
-
-  check_same(cx[std::cw<0>], std::cw<x[0]>);
-  check_same(cx[std::cw<1>], std::cw<x[1]>);
-  check_same(cx[std::cw<2>], std::cw<x[2]>);
-}
-
-constexpr size_t
-deduce_cstr_size(auto str)
-{
-  size_t sz = 0;
-  while(str[sz++] != '\0') { }
-  return sz;
-}
-
-constexpr void
-test_string_literals()
-{
-  auto foo = std::cw<"foo">;
-  constexpr const typename decltype(foo)::value_type & cstr = foo;
-  constexpr size_t N = std::size(cstr);
-  constexpr auto foo_view = std::string_view(cstr, N-1);
-
-  constexpr const char (&cstr1)[deduce_cstr_size(foo)] = foo;
-  constexpr size_t N1 = std::size(cstr);
-
-  static_assert(static_cast<char const*>(cstr) ==
-		static_cast<char const*>(cstr1));
-  static_assert(N1 == N);
-
-  static_assert(foo[0] == 'f');
-  static_assert(foo[1] == 'o');
-  static_assert(foo[2] == 'o');
-  static_assert(foo[3] == '\0');
-  static_assert(static_cast<char const *>(foo) == foo_view);
-}
-
 constexpr bool
 convert_constexpr(auto c)
 {
@@ -93,6 +45,27 @@ test_ints()
   VERIFY(two + 3 == std::cw<5>);
 }
 
+constexpr void
+test_objects()
+{
+  if consteval {
+    return;
+  }
+
+  auto check = []<auto V>
+  {
+    VERIFY(&V == &std::constant_wrapper<V>::value);
+    std::constant_wrapper<V> cw;
+    VERIFY(&V == &cw.value);
+  };
+
+  struct Obj
+  { int x; };
+
+  check.operator()<Obj{10}>();
+  check.operator()<Obj{20}>();
+}
+
 constexpr int
 add(int i, int j)
 { return i + j; }
@@ -586,12 +559,11 @@ test_assignment()
 	     std::cw<ConstAssignable{2}>);
 }
 
-
 constexpr bool
 test_all()
 {
-  test_c_arrays();
   test_ints();
+  test_objects();
   test_function_object();
   test_function_pointer();
   test_indexable1();
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
index fe45c5a85162..a5e2189ef80a 100644
--- a/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
@@ -30,19 +30,6 @@ test_mix_integer_constant()
   check_same(w2 + c3, std::cw<5>);
 }
 
-constexpr void
-test_array()
-{
-  constexpr double x[] = {1.1, 2.2, 3.3};
-  auto cx = std::cw<x>;
-  auto i2 = std::integral_constant<int, 2>{};
-  auto w2 = ConstWrapper<int, 2>{};
-
-  check_same(x[i2], x[2]);
-  check_same(cx[i2], std::cw<x[2]>);
-  check_same(cx[w2], std::cw<x[2]>);
-}
-
 constexpr void
 test_function_object()
 {
@@ -61,7 +48,6 @@ constexpr bool
 test_all()
 {
   test_mix_integer_constant();
-  test_array();
   test_function_object();
   return true;
 }
diff --git a/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc b/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
new file mode 100644
index 000000000000..1548e0789e11
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++26 } }
+#include <utility>
+
+std::constant_wrapper<1, float> c1;      // { dg-error "from here" }
+std::constant_wrapper<1.0, int> c2;      // { dg-error "from here" }
+std::constant_wrapper<1, int const> c3;  // { dg-error "from here" }
+std::constant_wrapper<1, int const&> c4; // { dg-error "from here" }
+
+// { dg-prune-output "static assertion failed" }

From ncm@gcc.gnu.org  Tue Jun 23 10:55:26 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Tue, 23 Jun 2026 10:55:26 +0000 (GMT)
Subject: [gcc r17-1770] libstdc: check pmr traits allocate_at_least (P0401)
 [PR125890]
Message-ID: <20260623105526.523E14BA23D3@sourceware.org>

https://gcc.gnu.org/g:372ff3c0613e11b9fdeaaaa49bc3a40bda8e224b

commit r17-1770-g372ff3c0613e11b9fdeaaaa49bc3a40bda8e224b
Author: Nathan Myers <ncm@cantrip.org>
Date:   Mon Jun 22 19:03:31 2026 -0400

    libstdc: check pmr traits allocate_at_least (P0401) [PR125890]
    
    Add check that the specialization of std::allocator_traits on
    pmr::polymorphic_allocator<T> defines allocate_at_least.
    
    libstdc++-v3/Changelog:
            PR libstdc++/125890
            * testsuite/20_util/polymorphic_allocator/at_least.cc: New test.

Diff:
---
 .../20_util/polymorphic_allocator/at_least.cc      | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc b/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc
new file mode 100644
index 000000000000..4384645dde5a
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc
@@ -0,0 +1,24 @@
+// { dg-do run { target c++23 } }
+
+#include <memory_resource>
+#include <testsuite_hooks.h>
+
+void
+alloc_at_least()
+{
+  struct A { char a; };
+  using alloc_A = std::pmr::polymorphic_allocator<A>;
+  using traits_A = std::allocator_traits<alloc_A>;
+  alloc_A alloc_a;
+  // This just forwards to alloc_a::allocate:
+  std::allocation_result result = traits_A::allocate_at_least(alloc_a, 1);
+  VERIFY(result.count == 1);
+  VERIFY(result.ptr != nullptr);
+  auto [pointer, count] = result;
+  traits_A::deallocate(alloc_a, pointer, count);
+}
+
+int main()
+{
+  alloc_at_least();
+}

From ncm@gcc.gnu.org  Tue Jun 23 13:29:21 2026
From: ncm@gcc.gnu.org (Nathan Myers)
Date: Tue, 23 Jun 2026 13:29:21 +0000 (GMT)
Subject: [gcc r16-9156] libstdc++: allocator traits on pmr gets
 allocate_at_least (P0401) [PR125890]
Message-ID: <20260623132921.59D6B4BA5434@sourceware.org>

https://gcc.gnu.org/g:b99c6da50262bb8e2f45c7e8f4b9d15ad29eb7d8

commit r16-9156-gb99c6da50262bb8e2f45c7e8f4b9d15ad29eb7d8
Author: Nathan Myers <ncm@cantrip.org>
Date:   Mon Jun 22 18:36:12 2026 -0400

    libstdc++: allocator traits on pmr gets allocate_at_least (P0401) [PR125890]
    
    GCC 16.1's explicit specialization of std::allocator_traits on
    std::pmr::polymorphic_allocator<T> lacks the required
    definition of allocate_at_least. This patch provides it, and
    tests for its presence in C++23 and up.
    
    (Partly cherry-picked from r17-603-gacfdad706.)
    
    libstdc++-v3/Changelog:
            PR libstdc++/125890
            * include/bits/memory_resource.h (allocate_at_least): Add to
            allocator_traits<pmr::polymorphic_allocator> specialization.
            * testsuite/20_util/polymorphic_allocator/at_least.cc: New test.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/memory_resource.h        | 17 +++++++++++++++
 .../20_util/polymorphic_allocator/at_least.cc      | 24 ++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/libstdc++-v3/include/bits/memory_resource.h b/libstdc++-v3/include/bits/memory_resource.h
index e5c6697b07e3..a9db58b76a34 100644
--- a/libstdc++-v3/include/bits/memory_resource.h
+++ b/libstdc++-v3/include/bits/memory_resource.h
@@ -48,6 +48,7 @@
 # include <bits/utility.h>		// index_sequence
 # include <tuple>			// tuple, forward_as_tuple
 #endif
+#include <bits/memoryfwd.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -468,6 +469,22 @@ namespace pmr
       allocate(allocator_type& __a, size_type __n, const_void_pointer)
       { return __a.allocate(__n); }
 
+#ifdef __glibcxx_allocate_at_least
+      /**
+       *  @brief  Allocate memory.
+       *  @param  __a  An allocator.
+       *  @param  __n  The number of objects to allocate space for.
+       *  @return Memory of suitable size and alignment for `n` objects
+       *          of type `value_type`.
+       *
+       *  Just returns `{ a.allocate(n), n }`: `polymorphic_allocator`
+       *  cannot be extended without breaking ABI.
+      */
+      [[nodiscard]] static std::allocation_result<pointer, size_type>
+      allocate_at_least(allocator_type& __a, size_type __n)
+      { return { __a.allocate(__n), __n }; }
+#endif
+
       /**
        *  @brief  Deallocate memory.
        *  @param  __a  An allocator.
diff --git a/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc b/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc
new file mode 100644
index 000000000000..4384645dde5a
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/polymorphic_allocator/at_least.cc
@@ -0,0 +1,24 @@
+// { dg-do run { target c++23 } }
+
+#include <memory_resource>
+#include <testsuite_hooks.h>
+
+void
+alloc_at_least()
+{
+  struct A { char a; };
+  using alloc_A = std::pmr::polymorphic_allocator<A>;
+  using traits_A = std::allocator_traits<alloc_A>;
+  alloc_A alloc_a;
+  // This just forwards to alloc_a::allocate:
+  std::allocation_result result = traits_A::allocate_at_least(alloc_a, 1);
+  VERIFY(result.count == 1);
+  VERIFY(result.ptr != nullptr);
+  auto [pointer, count] = result;
+  traits_A::deallocate(alloc_a, pointer, count);
+}
+
+int main()
+{
+  alloc_at_least();
+}

From redi@gcc.gnu.org  Tue Jun 23 13:36:32 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:36:32 +0000 (GMT)
Subject: [gcc r17-1774] libstdc++: Remove STLport link from docs
Message-ID: <20260623133632.7EC724BA2E08@sourceware.org>

https://gcc.gnu.org/g:301253871835f0637e88c544da6370678e14856a

commit r17-1774-g301253871835f0637e88c544da6370678e14856a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Jun 6 21:44:37 2026 +0100

    libstdc++: Remove STLport link from docs
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
            website and modernise some text about debug modes in other
            implementations.
            * doc/html/manual/debug_mode_design.html: Regenerate.

Diff:
---
 libstdc++-v3/doc/html/manual/debug_mode_design.html | 16 +++++++++-------
 libstdc++-v3/doc/xml/manual/debug_mode.xml          | 16 ++++++++++------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/debug_mode_design.html b/libstdc++-v3/doc/html/manual/debug_mode_design.html
index 03f72ae96fe5..04fa7151aeba 100644
--- a/libstdc++-v3/doc/html/manual/debug_mode_design.html
+++ b/libstdc++-v3/doc/html/manual/debug_mode_design.html
@@ -390,16 +390,18 @@ test02()
   Library (STL), implemented by Cay S. Horstmann on top of the
   Hewlett-Packard STL. Though it inspired much work in this area, it
   has not been kept up-to-date for use with modern compilers or C++
-  standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="_top">STLport</a>: STLport is a free
+  standard library implementations.</p></li><li class="listitem"><p>STLport: STLport was a free
   implementation of the C++ standard library derived from the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</p></li><li class="listitem"><p>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
-  guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
+  guarantee.</p></li><li class="listitem"><p>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml
index a12158fa03ea..6f79602ff702 100644
--- a/libstdc++-v3/doc/xml/manual/debug_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml
@@ -883,21 +883,25 @@ test02()
   has not been kept up-to-date for use with modern compilers or C++
   standard library implementations.</para></listitem>
 
-  <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free
+  <listitem><para>STLport: STLport was a free
   implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/">SGI implementation</link>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</para></listitem>
 
   <listitem><para>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
   guarantee.</para></listitem>
+
+  <listitem><para>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </para></listitem>
 </itemizedlist>
 
   </section>

From redi@gcc.gnu.org  Tue Jun 23 13:36:37 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:36:37 +0000 (GMT)
Subject: [gcc r17-1775] libstdc++: Fix comment typo in <bits/chrono.h>
Message-ID: <20260623133637.9F0C04BA2E27@sourceware.org>

https://gcc.gnu.org/g:1b13ddd7e84a1b14d33b8adcdbb02553c80748b7

commit r17-1775-g1b13ddd7e84a1b14d33b8adcdbb02553c80748b7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 16 14:51:06 2026 +0100

    libstdc++: Fix comment typo in <bits/chrono.h>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono.h (std::chrono_literals): Fix typo in
            comment.

Diff:
---
 libstdc++-v3/include/bits/chrono.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index cf8e7e84321d..8b62047f378c 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1356,7 +1356,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    * for example `1.5e2ms` might be equivalent to
    * `chrono::duration<long double, chrono::milli>(1.5e2)`.
    *
-   * @since C+14
+   * @since C++14
    * @ingroup chrono
    */
   inline namespace chrono_literals

From redi@gcc.gnu.org  Tue Jun 23 13:36:42 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:36:42 +0000 (GMT)
Subject: [gcc r17-1776] libstdc++: Use const void* for parameters of some
 internal helpers [PR125684]
Message-ID: <20260623133642.C56F54BA2E13@sourceware.org>

https://gcc.gnu.org/g:d5cd0663e80ccdff2c82652a0aa559efc8bf3859

commit r17-1776-gd5cd0663e80ccdff2c82652a0aa559efc8bf3859
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 16 14:51:53 2026 +0100

    libstdc++: Use const void* for parameters of some internal helpers [PR125684]
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125684
            * src/c++11/random.cc (bad_seed, which_source): Change void*
            parameters to const void *.

Diff:
---
 libstdc++-v3/src/c++11/random.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++11/random.cc b/libstdc++-v3/src/c++11/random.cc
index 2f37fd5b88ea..5390f05a4a56 100644
--- a/libstdc++-v3/src/c++11/random.cc
+++ b/libstdc++-v3/src/c++11/random.cc
@@ -197,7 +197,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
 #ifdef USE_LCG
     // TODO: use this to seed std::mt19937 engine too.
     unsigned
-    bad_seed(void* p) noexcept
+    bad_seed(const void* p) noexcept
     {
       // Poor quality seed based on hash of the current time and the address
       // of the object being seeded. Better than using the same default seed
@@ -253,7 +253,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
 
     inline Which
     which_source(random_device::result_type (*func [[maybe_unused]])(void*),
-		 void* file [[maybe_unused]])
+		 const void* file [[maybe_unused]])
     {
 #ifdef _GLIBCXX_USE_CRT_RAND_S
       if (func == &__winxp_rand_s)

From redi@gcc.gnu.org  Tue Jun 23 13:39:02 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:39:02 +0000 (GMT)
Subject: [gcc r16-9157] libstdc++: Remove STLport link from docs
Message-ID: <20260623133902.9FFA64BA2E3B@sourceware.org>

https://gcc.gnu.org/g:d80ca228c5ffb2892fb9c3736033d1b724a351c0

commit r16-9157-gd80ca228c5ffb2892fb9c3736033d1b724a351c0
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Jun 6 21:44:37 2026 +0100

    libstdc++: Remove STLport link from docs
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
            website and modernise some text about debug modes in other
            implementations.
            * doc/html/manual/debug_mode_design.html: Regenerate.
    
    (cherry picked from commit 301253871835f0637e88c544da6370678e14856a)

Diff:
---
 libstdc++-v3/doc/html/manual/debug_mode_design.html | 16 +++++++++-------
 libstdc++-v3/doc/xml/manual/debug_mode.xml          | 16 ++++++++++------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/debug_mode_design.html b/libstdc++-v3/doc/html/manual/debug_mode_design.html
index 03f72ae96fe5..04fa7151aeba 100644
--- a/libstdc++-v3/doc/html/manual/debug_mode_design.html
+++ b/libstdc++-v3/doc/html/manual/debug_mode_design.html
@@ -390,16 +390,18 @@ test02()
   Library (STL), implemented by Cay S. Horstmann on top of the
   Hewlett-Packard STL. Though it inspired much work in this area, it
   has not been kept up-to-date for use with modern compilers or C++
-  standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="_top">STLport</a>: STLport is a free
+  standard library implementations.</p></li><li class="listitem"><p>STLport: STLport was a free
   implementation of the C++ standard library derived from the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</p></li><li class="listitem"><p>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
-  guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
+  guarantee.</p></li><li class="listitem"><p>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml
index a12158fa03ea..6f79602ff702 100644
--- a/libstdc++-v3/doc/xml/manual/debug_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml
@@ -883,21 +883,25 @@ test02()
   has not been kept up-to-date for use with modern compilers or C++
   standard library implementations.</para></listitem>
 
-  <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free
+  <listitem><para>STLport: STLport was a free
   implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/">SGI implementation</link>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</para></listitem>
 
   <listitem><para>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
   guarantee.</para></listitem>
+
+  <listitem><para>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </para></listitem>
 </itemizedlist>
 
   </section>

From redi@gcc.gnu.org  Tue Jun 23 13:39:07 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:39:07 +0000 (GMT)
Subject: [gcc r16-9158] libstdc++: Fix comment typo in <bits/chrono.h>
Message-ID: <20260623133907.C7E1D4BA2E30@sourceware.org>

https://gcc.gnu.org/g:27f9e3bfc9b44ca73d4e3204508d69c91bcf0fa7

commit r16-9158-g27f9e3bfc9b44ca73d4e3204508d69c91bcf0fa7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 16 14:51:06 2026 +0100

    libstdc++: Fix comment typo in <bits/chrono.h>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono.h (std::chrono_literals): Fix typo in
            comment.
    
    (cherry picked from commit 1b13ddd7e84a1b14d33b8adcdbb02553c80748b7)

Diff:
---
 libstdc++-v3/include/bits/chrono.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index fd91505c16f4..9846aecc1a28 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1352,7 +1352,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    * for example `1.5e2ms` might be equivalent to
    * `chrono::duration<long double, chrono::milli>(1.5e2)`.
    *
-   * @since C+14
+   * @since C++14
    * @ingroup chrono
    */
   inline namespace chrono_literals

From redi@gcc.gnu.org  Tue Jun 23 13:39:52 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:39:52 +0000 (GMT)
Subject: [gcc r15-11312] libstdc++: Remove STLport link from docs
Message-ID: <20260623133952.83F074BA5434@sourceware.org>

https://gcc.gnu.org/g:fe3ed83ce318f6fca929cc7444b715043779fe7a

commit r15-11312-gfe3ed83ce318f6fca929cc7444b715043779fe7a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Jun 6 21:44:37 2026 +0100

    libstdc++: Remove STLport link from docs
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
            website and modernise some text about debug modes in other
            implementations.
            * doc/html/manual/debug_mode_design.html: Regenerate.
    
    (cherry picked from commit 301253871835f0637e88c544da6370678e14856a)

Diff:
---
 libstdc++-v3/doc/html/manual/debug_mode_design.html | 16 +++++++++-------
 libstdc++-v3/doc/xml/manual/debug_mode.xml          | 16 ++++++++++------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/debug_mode_design.html b/libstdc++-v3/doc/html/manual/debug_mode_design.html
index 03f72ae96fe5..04fa7151aeba 100644
--- a/libstdc++-v3/doc/html/manual/debug_mode_design.html
+++ b/libstdc++-v3/doc/html/manual/debug_mode_design.html
@@ -390,16 +390,18 @@ test02()
   Library (STL), implemented by Cay S. Horstmann on top of the
   Hewlett-Packard STL. Though it inspired much work in this area, it
   has not been kept up-to-date for use with modern compilers or C++
-  standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="_top">STLport</a>: STLport is a free
+  standard library implementations.</p></li><li class="listitem"><p>STLport: STLport was a free
   implementation of the C++ standard library derived from the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</p></li><li class="listitem"><p>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
-  guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
+  guarantee.</p></li><li class="listitem"><p>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml
index a12158fa03ea..6f79602ff702 100644
--- a/libstdc++-v3/doc/xml/manual/debug_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml
@@ -883,21 +883,25 @@ test02()
   has not been kept up-to-date for use with modern compilers or C++
   standard library implementations.</para></listitem>
 
-  <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free
+  <listitem><para>STLport: STLport was a free
   implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/">SGI implementation</link>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</para></listitem>
 
   <listitem><para>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
   guarantee.</para></listitem>
+
+  <listitem><para>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </para></listitem>
 </itemizedlist>
 
   </section>

From redi@gcc.gnu.org  Tue Jun 23 13:39:57 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 13:39:57 +0000 (GMT)
Subject: [gcc r15-11313] libstdc++: Fix comment typo in <bits/chrono.h>
Message-ID: <20260623133957.A8FCD4BA2E32@sourceware.org>

https://gcc.gnu.org/g:d6d1691d8e523b70fdb594481f68ba74599bd4bb

commit r15-11313-gd6d1691d8e523b70fdb594481f68ba74599bd4bb
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 16 14:51:06 2026 +0100

    libstdc++: Fix comment typo in <bits/chrono.h>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono.h (std::chrono_literals): Fix typo in
            comment.
    
    (cherry picked from commit 1b13ddd7e84a1b14d33b8adcdbb02553c80748b7)

Diff:
---
 libstdc++-v3/include/bits/chrono.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index 8de8e756c714..9fc847189a0f 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1352,7 +1352,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    * for example `1.5e2ms` might be equivalent to
    * `chrono::duration<long double, chrono::milli>(1.5e2)`.
    *
-   * @since C+14
+   * @since C++14
    * @ingroup chrono
    */
   inline namespace chrono_literals

From redi@gcc.gnu.org  Tue Jun 23 14:06:17 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 14:06:17 +0000 (GMT)
Subject: [gcc r14-12692] libstdc++: Remove STLport link from docs
Message-ID: <20260623140617.EAC2B4BA2E32@sourceware.org>

https://gcc.gnu.org/g:923a9d6a9bfd172f0deee4d16add04f04b210e97

commit r14-12692-g923a9d6a9bfd172f0deee4d16add04f04b210e97
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Jun 6 21:44:37 2026 +0100

    libstdc++: Remove STLport link from docs
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
            website and modernise some text about debug modes in other
            implementations.
            * doc/html/manual/debug_mode_design.html: Regenerate.
    
    (cherry picked from commit 301253871835f0637e88c544da6370678e14856a)

Diff:
---
 libstdc++-v3/doc/html/manual/debug_mode_design.html | 16 +++++++++-------
 libstdc++-v3/doc/xml/manual/debug_mode.xml          | 16 ++++++++++------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/debug_mode_design.html b/libstdc++-v3/doc/html/manual/debug_mode_design.html
index 03f72ae96fe5..04fa7151aeba 100644
--- a/libstdc++-v3/doc/html/manual/debug_mode_design.html
+++ b/libstdc++-v3/doc/html/manual/debug_mode_design.html
@@ -390,16 +390,18 @@ test02()
   Library (STL), implemented by Cay S. Horstmann on top of the
   Hewlett-Packard STL. Though it inspired much work in this area, it
   has not been kept up-to-date for use with modern compilers or C++
-  standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="_top">STLport</a>: STLport is a free
+  standard library implementations.</p></li><li class="listitem"><p>STLport: STLport was a free
   implementation of the C++ standard library derived from the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</p></li><li class="listitem"><p>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
-  guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
+  guarantee.</p></li><li class="listitem"><p>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a>?</td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right">?<a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using?</td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">?Chapter?18.?Parallel Mode</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml
index a12158fa03ea..6f79602ff702 100644
--- a/libstdc++-v3/doc/xml/manual/debug_mode.xml
+++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml
@@ -883,21 +883,25 @@ test02()
   has not been kept up-to-date for use with modern compilers or C++
   standard library implementations.</para></listitem>
 
-  <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free
+  <listitem><para>STLport: STLport was a free
   implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/">SGI implementation</link>, and
-  ported to many other platforms. It includes a debug mode that uses a
+  ported to many other platforms. It included a debug mode that used a
   wrapper model (that in some ways inspired the libstdc++ debug mode
-  design), although at the time of this writing the debug mode is
-  somewhat incomplete and meets only the "Full user recompilation" (2)
+  design), although its debug mode was
+  somewhat incomplete and met only the "Full user recompilation" (2)
   recompilation guarantee by requiring the user to link against a
   different library in debug mode vs. release mode.</para></listitem>
 
   <listitem><para>Metrowerks CodeWarrior: The C++ standard library
-  that ships with Metrowerks CodeWarrior includes a debug mode. It is
+  that shipped with Metrowerks CodeWarrior included a debug mode. It was
   a full debug-mode implementation (including debugging for
-  CodeWarrior extensions) and is easy to use, although it meets only
+  CodeWarrior extensions) and was easy to use, although it met only
   the "Full recompilation" (1) recompilation
   guarantee.</para></listitem>
+
+  <listitem><para>The MSVC STL and LLVM libc++ implementations of the
+  C++ Standard Library both include some form of debug mode.
+  </para></listitem>
 </itemizedlist>
 
   </section>

From redi@gcc.gnu.org  Tue Jun 23 14:06:23 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 23 Jun 2026 14:06:23 +0000 (GMT)
Subject: [gcc r14-12693] libstdc++: Fix comment typo in <bits/chrono.h>
Message-ID: <20260623140623.1C4604BA5435@sourceware.org>

https://gcc.gnu.org/g:29de9e1144a63a9a2cc5cc941a1bf0bea7b0c45c

commit r14-12693-g29de9e1144a63a9a2cc5cc941a1bf0bea7b0c45c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jun 16 14:51:06 2026 +0100

    libstdc++: Fix comment typo in <bits/chrono.h>
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono.h (std::chrono_literals): Fix typo in
            comment.
    
    (cherry picked from commit 1b13ddd7e84a1b14d33b8adcdbb02553c80748b7)

Diff:
---
 libstdc++-v3/include/bits/chrono.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index a7157628a0a9..db9992b27896 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -1338,7 +1338,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    * for example `1.5e2ms` might be equivalent to
    * `chrono::duration<long double, chrono::milli>(1.5e2)`.
    *
-   * @since C+14
+   * @since C++14
    * @ingroup chrono
    */
   inline namespace chrono_literals

From gccadmin@gcc.gnu.org  Wed Jun 24 00:17:06 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 24 Jun 2026 00:17:06 +0000 (GMT)
Subject: [gcc r17-1792] Daily bump.
Message-ID: <20260624001706.DC1784BA2E04@sourceware.org>

https://gcc.gnu.org/g:c9ee2c5ab6ca88703f366abe23bb77fa27ddf4d9

commit r17-1792-gc9ee2c5ab6ca88703f366abe23bb77fa27ddf4d9
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Jun 24 00:16:38 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |   6 +
 gcc/ChangeLog           | 508 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/c/ChangeLog         |  11 ++
 gcc/cobol/ChangeLog     |  18 ++
 gcc/cp/ChangeLog        |  29 +++
 gcc/fortran/ChangeLog   |  40 ++++
 gcc/testsuite/ChangeLog |  94 +++++++++
 libstdc++-v3/ChangeLog  |  23 +++
 9 files changed, 730 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 6de7c25dec47..04cf573b2d03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-23  Richard Earnshaw  <rearnsha@arm.com>
+
+	* MAINTAINERS (Write After): Add details for Robert Dubner,
+	Ben Kosnik, James Lowden, Yunhai Shang and Andrew Waterman.
+	(CPU Ports, nds32): Remove Shiva Chen - stepped down.
+
 2026-06-10  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
 
 	* MAINTAINERS (Write After Approval): Add myself.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 18cf102f5406..8a471034d7bc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,511 @@
+2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* gimplify.cc (gimplify_omp_affinity): Use macros for accessing
+	iterator elements.
+	(compute_omp_iterator_count): Likewise.
+	(build_omp_iterator_loop): Likewise.
+	(copy_omp_iterator): Use a boolean to force creation of an
+	expanded iterator vector, instead of specifying the length explicitly.
+	(remove_unused_omp_iterator_vars): Use accessor macros.
+	(build_omp_iterators_loops): Likewise.
+	(enter_omp_iterator_loop_context_1): Likewise.
+	(extract_base_bit_offset): Likewise.
+	* omp-low.cc (lower_omp_map_iterator_expr): Likewise.
+	(lower_omp_map_iterator_size): Likewise.
+	* tree-inline.cc (copy_tree_body_r): Likewise.
+	* tree-pretty-print.cc (dump_omp_iterators): Likewise.
+	* tree.h (OMP_ITERATOR_VAR, OMP_ITERATOR_BEGIN, OMP_ITERATOR_END,
+	OMP_ITERATOR_STEP, OMP_ITERATOR_ORIG_STEP, OMP_ITERATOR_BLOCK,
+	OMP_ITERATOR_LABEL, OMP_ITERATOR_INDEX, OMP_ITERATOR_ELEMS,
+	OMP_ITERATOR_COUNT, OMP_ITERATOR_EXPANDED_P): New macros.
+	(make_omp_iterator, make_expanded_omp_iterator): New constructor
+	functions.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* ira-build.cc (ira_create_allocno): Initialize dependent
+	filters.
+	(copy_dependent_filters): New function to copy filters.
+	(create_cap_allocno): Use new function.
+	(propagate_allocno_info): Ditto.
+	(propagate_some_info_from_allocno): Ditto.
+	* ira-color.cc (ira_dependent_filter): New function that
+	calls lra_get_dependent_filter.
+	(assign_hard_reg): Use new function.
+	(improve_allocation): Ditto.
+	(fast_allocation): Ditto.
+	* ira-conflicts.cc (dependent_filter_same_reg_ok_p): New
+	function to check if a dependent filter allows the same reg.
+	(can_use_same_reg_p): Use new function.
+	* ira-int.h (struct ira_dependent_filter): New struct holding
+	allocno-specific dependent-filter properties.
+	(ALLOCNO_DEPENDENT_FILTERS): New accessor.
+	(ira_add_dependent_filter): Declare.
+	* ira-lives.cc (ira_add_dependent_filter): New function.
+	(process_dependent_filters): New function.
+	(process_bb_node_lives): Call new function.
+	* ira.cc (ira): Reset filters.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS):
+	Add widen overlap dependent constraint.
+	* config/riscv/riscv-protos.h (riscv_widen_overlap_ok): Declare.
+	* config/riscv/riscv.cc (riscv_widen_operand_ok): New function.
+	* config/riscv/vector.md: Use new constraint.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* lra-assigns.cc (find_hard_regno_for_1): Query dependent
+	filter of current pseudo.
+	* lra-constraints.cc (struct dependent_filter_cache_hasher): New
+	hasher.
+	(lra_init_dependent_filter_cache): New function.
+	(lra_finish_dependent_filter_cache): Ditto.
+	(lra_reset_dependent_filters): Ditto.
+	(lra_get_dependent_filter): New function to query (and add)
+	a dependent filter from/to the cache.
+	(lra_add_dependent_filter): New function to add a dependent
+	filter to an lra_reg.
+	(get_dependent_filter): New function to get a dependent filter
+	from a constraint.
+	(process_dependent_filters): New function to get all dependent
+	filters from the current insn's constraints.
+	(process_alt_operands): Initialize dependent-filter regset.
+	(curr_insn_transform): Fill lra_reg dependent filters.
+	* lra-int.h (struct dependent_filter): Declare.
+	(struct dependent_filter_entry): Ditto.
+	(lra_init_dependent_filter_cache): Ditto.
+	(lra_finish_dependent_filter_cache): Ditto.
+	* lra.cc (initialize_lra_reg_info_element): New function.
+	(finish_reg_info): Release dependent-filter vector.
+	(lra_init_once): Init hash table.
+	(lra_finish_once): Clear hash table.
+	* lra.h (lra_reset_dependent_filters): Declare.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* recog.cc (preprocess_constraints): Initialize dependent
+	filter.
+	(test_dependent_filter): New function wrapping
+	eval_dependent_filter.
+	(constrain_operands): Test dependent filter in strict mode.
+	* recog.h (struct operand_alternative): Declare
+	dependent_filters.
+	(alternative_dependent_filters): New function.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* doc/md.texi: Document dependent filters.
+	* doc/tm.texi: Ditto.
+	* doc/tm.texi.in: Ditto.
+	* genconfig.cc (main): Add number of dependent filters.
+	* genpreds.cc (add_constraint): Add dependent-filter reference
+	operand.
+	(process_define_register_constraint): Handle dependent filter.
+	(write_get_register_filter): Ditto.
+	(write_get_register_filter_id): Ditto.
+	(write_dependent_filter_helpers_h): Ditto.
+	(write_dependent_filter_functions_c): Ditto.
+	(write_tm_preds_h): Ditto.
+	(write_insn_preds_c): Ditto.
+	(main): Ditto.
+	* gensupport.cc (process_define_register_constraint): Ditto.
+	* gensupport.h (get_register_filter_id): Declare.
+	* rtl.def (DEFINE_REGISTER_CONSTRAINT): Adjust for dependent
+	filter.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* tree-vect-stmts.cc (vect_use_grouped_gather): Only use when
+	there are at least two pieces.
+
+2026-06-23  Xi Ruoyao  <xry111@xry111.site>
+
+	Revert:
+	2026-06-08  Xi Ruoyao  <xry111@xry111.site>
+
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
+2026-06-23  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+	    Yuke Tang  <tang.yuke@zte.com.cn>
+
+	* config/riscv/autovec.md: Add auto-vectorization patterns for
+	Zvabd instructions.
+	* config/riscv/autovec-opt.md: Add widening absolute-difference
+	accumulate combine patterns.
+	* config/riscv/riscv-ext.def: Add Zvabd extension entry.
+	* config/riscv/riscv-ext.opt: Add Zvabd option.
+	* config/riscv/vector-iterators.md: Update for Zvabd.
+	* config/riscv/vector.md: Add Zvabd patterns.
+	* doc/riscv-ext.texi: Document zvabd extension.
+
+2026-06-23  Alex Coplan  <alex.coplan@arm.com>
+
+	PR target/125818
+	* config/aarch64/aarch64-sve-builtins-base.cc (svset_impl::fold): Fix
+	unsharing to ensure the returned stmt has the exact same lhs as the
+	original.
+
+2026-06-23  Sarvesh Chandra  <Sarvesh.Chandra@amd.com>
+	    Ashwin Godbole  <Ashwin.Godbole@amd.com>
+
+	PR target/107057
+	* config/i386/sse.md (avx512f_movddup512<mask_name>): Add a
+	register source alternative that emits vunpcklpd.
+	(avx_movddup256<mask_name>): Likewise.
+
+2026-06-23  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125893
+	* config/i386/i386-expand.cc (ix86_expand_lcp_stall_peephole): New.
+	* config/i386/i386-protos.h (ix86_expand_lcp_stall_peephole):
+	Likewise.
+	* config/i386/i386.md (TARGET_LCP_STALL peepholes): Call
+	ix86_expand_lcp_stall_peephole.
+
+2026-06-23  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/110743
+	* tree-ssa-uninit.cc (maybe_warn_operand): Suppress diagnostics
+	on RMW cycles setting/clearing bits.
+
+2026-06-23  Hu, Lin1  <lin1.hu@intel.com>
+
+	* config/i386/sse.md (V_ANY_CBRANCH): New mode iterator.
+	(cond_vec_cbranch_any<mode>): New define_expand.
+	(cond_vec_cbranch_all<mode>): Ditto.
+
+2026-06-23  Hu, Lin1  <lin1.hu@intel.com>
+
+	* dojump.cc (do_compare_rtx_and_jump): Use simplify_expand_binop
+	instead of expand_binop.
+
+2026-06-23  Hu, Lin1  <lin1.hu@intel.com>
+
+	* doc/md.texi (vec_cbranch_all<mode>): Clarify how the
+	middle-end invoke the pattern.
+	(cond_vec_cbranch_all<mode>): Ditto.
+	(cond_len_vec_cbranch_all<mode>): Ditto.
+
+2026-06-23  Kishan Parmar  <kishan@linux.ibm.com>
+
+	* config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Handle
+	ENB_FUTURE_ALTIVEC and issue a diagnostic requiring -mcpu=future
+	and -maltivec.
+	(rs6000_builtin_is_supported): Check TARGET_FUTURE && TARGET_ALTIVEC
+	for ENB_FUTURE_ALTIVEC built-ins.
+	* config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Add
+	BSTZ_FUTURE_ALTIVEC entry.
+	(stanza_map): Add future-altivec stanza mapping.
+	(enable_string): Add ENB_FUTURE_ALTIVEC.
+	(write_decls): Add ENB_FUTURE_ALTIVEC to the bif_enable enum in the
+	generated header file.
+
+2026-06-23  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+
+	* tree-ssa-phiopt.cc (pass_cselim::execute): Don't
+	return TODO_TODO_update_ssa_only_virtuals.
+
+2026-06-23  Xin Liu  <liulxx@hygon.cn>
+
+	* common/config/i386/cpuinfo.h (get_hygon_cpu): Detect HYGON
+	Family 18h model 8 as c86-4g-m8.
+	* common/config/i386/i386-common.cc (processor_names): Add
+	c86-4g-m8.
+	(processor_alias_table): Likewise.
+	* common/config/i386/i386-cpuinfo.h (enum processor_subtypes): Add
+	HYGONFAM18H_C86_4G_M8.
+	* config.gcc: Add c86-4g-m8 to supported x86 CPUs and handle
+	c86_4g_m8 target triples.
+	* config/i386/c86-4g-m7.md: Rename to ...
+	* config/i386/c86-4g-m7m8.md: ... this and extend shared c86-4g-m7
+	scheduling reservations to c86-4g-m8.
+	(c86_4g_m8_imovx_cwde): New reservation.
+	(c86_4g_m7_imov_xchg): Add c86_4g_m8 to CPU attribute.
+	(c86_4g_m7_imov_xchg_load): Ditto.
+	(c86_4g_m7_imov): Ditto.
+	(c86_4g_m7_imov_load): Ditto.
+	(c86_4g_m7_imov_store): Ditto.
+	(c86_4g_m7_push): Ditto.
+	(c86_4g_m7_push_mem): Ditto.
+	(c86_4g_m7_pop): Ditto.
+	(c86_4g_m7_pop_mem): Ditto.
+	(c86_4g_m7_imul): Ditto.
+	(c86_4g_m7_imul_load): Ditto.
+	(c86_4g_m7_idiv): Ditto.
+	(c86_4g_m7_idiv_QI): Ditto.
+	(c86_4g_m7_idiv_load): Ditto.
+	(c86_4g_m7_idiv_QI_load): Ditto.
+	(c86_4g_m7_insn): Ditto.
+	(c86_4g_m7_insn_load): Ditto.
+	(c86_4g_m7_insn_store): Ditto.
+	(c86_4g_m7_insn2_store): Ditto.
+	(c86_4g_m7_insn_both): Ditto.
+	(c86_4g_m7_setcc): Ditto.
+	(c86_4g_m7_setcc_load): Ditto.
+	(c86_4g_m7_setcc_store): Ditto.
+	(c86_4g_m7_alu1_double): Ditto.
+	(c86_4g_m7_alu1_double_load): Ditto.
+	(c86_4g_m7_alu1_vector): Ditto.
+	(c86_4g_m7_alu1_vector_load): Ditto.
+	(c86_4g_m7_alu1_direct): Ditto.
+	(c86_4g_m7_alu1_direct_load): Ditto.
+	(c86_4g_m7_call): Ditto.
+	(c86_4g_m7_branch): Ditto.
+	(c86_4g_m7_branch_load): Ditto.
+	(c86_4g_m7_lea): Ditto.
+	(c86_4g_m7_leave): Ditto.
+	(c86_4g_m7_str): Ditto.
+	(c86_4g_m7_str_load): Ditto.
+	(c86_4g_m7_ieu_vector): Ditto.
+	(c86_4g_m7_ieu_vector_load): Ditto.
+	(c86_4g_m7_sse_insertimm): Ditto.
+	(c86_4g_m7_sse_insert): Ditto.
+	(c86_4g_m7_fp_cmov): Ditto.
+	(c86_4g_m7_fp_mov_direct_load): Ditto.
+	(c86_4g_m7_fp_mov_direct_store): Ditto.
+	(c86_4g_m7_fp_mov_double_load): Ditto.
+	(c86_4g_m7_fp_mov_double_store): Ditto.
+	(c86_4g_m7_fp_mov_direct): Ditto.
+	(c86_4g_m7_fp_sqrt): Ditto.
+	(c86_4g_m7_fp_spc_direct): Ditto.
+	(c86_4g_m7_fp_spc): Ditto.
+	(c86_4g_m7_fp_op_mul): Ditto.
+	(c86_4g_m7_fp_op_mul_load): Ditto.
+	(c86_4g_m7_fp_op_imul_load): Ditto.
+	(c86_4g_m7_fp_div): Ditto.
+	(c86_4g_m7_fp_div_load): Ditto.
+	(c86_4g_m7_fp_idiv_load): Ditto.
+	(c86_4g_m7_fp_fsgn): Ditto.
+	(c86_4g_m7_fp_fcmp): Ditto.
+	(c86_4g_m7_fp_fcmp_load): Ditto.
+	(c86_4g_m7_fp_mmx): Ditto.
+	(c86_4g_m7_mmx_add_cmp): Ditto.
+	(c86_4g_m7_mmx_add_cmp_load): Ditto.
+	(c86_4g_m7_mmx_cvt): Ditto.
+	(c86_4g_m7_mmx_cvt_load): Ditto.
+	(c86_4g_m7_mmx_shift): Ditto.
+	(c86_4g_m7_mmx_shift_load): Ditto.
+	(c86_4g_m7_mmx_shift_avg): Ditto.
+	(c86_4g_m7_mmx_shift_avg_load): Ditto.
+	(c86_4g_m7_mmx_shift_sadbw): Ditto.
+	(c86_4g_m7_mmx_shift_sadbw_load): Ditto.
+	(c86_4g_m7_mmx_mov): Ditto.
+	(c86_4g_m7_mmx_mov_store): Ditto.
+	(c86_4g_m7_mmx_mov_load): Ditto.
+	(c86_4g_m7_mmx_mul): Ditto.
+	(c86_4g_m7_mmx_mul_load): Ditto.
+	(c86_4g_m7_sse_pinsr_reg): Ditto.
+	(c86_4g_m7_sse_pinsr_reg_load): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg): Ditto.
+	(c86_4g_m7_avx_vpinsr_reg_load): Ditto.
+	(c86_4g_m7_avx512_perm_xmm): Ditto.
+	(c86_4g_m7_avx512_perm_xmm_opload): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm): Ditto.
+	(c86_4g_m7_avx512_permi2_zmm): Ditto.
+	(c86_4g_m7_avx512_permi2_ymm_load): Ditto.
+	(c86_4g_m7_avx512_permi2_zmm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_imm_load): Ditto.
+	(c86_4g_m7_avx512_perm_zmm_noimm): Ditto.
+	(c86_4g_m7_sse_perm_zmm_noimm_load): Ditto.
+	(c86_4g_m7_avx512_insertx_ymm): Ditto.
+	(c86_4g_m7_avx512_insertx_ymem): Ditto.
+	(c86_4g_m7_avx512_insertx_zxmm): Ditto.
+	(c86_4g_m7_avx512_insertx_zxmem): Ditto.
+	(c86_4g_m7_avx512_insertx_zymm): Ditto.
+	(c86_4g_m7_avx512_insertx_zymem): Ditto.
+	(c86_4g_m7_avx_insertx_ymm): Ditto.
+	(c86_4g_m7_avx_insertx_ymem): Ditto.
+	(c86_4g_m7_avx512_shuf_xymm): Ditto.
+	(c86_4g_m7_avx512_shuf_zmm): Ditto.
+	(c86_4g_m7_avx512_shuf_xymem): Ditto.
+	(c86_4g_m7_avx512_shuf_zmem): Ditto.
+	(c86_4g_m7_sselogic_xymm): Ditto.
+	(c86_4g_m7_sselogic_xymm_load): Ditto.
+	(c86_4g_m7_avx512_cmpestr): Ditto.
+	(c86_4g_m7_avx512_cmpestr_load): Ditto.
+	(c86_4g_m7_avx512_log): Ditto.
+	(c86_4g_m7_avx512_log_load): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_xymm): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_xymem): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmm): Ditto.
+	(c86_4g_m7_avx512_vdbpsadbw_zmem): Ditto.
+	(c86_4g_m7_avx512_abs): Ditto.
+	(c86_4g_m7_avx512_abs_load): Ditto.
+	(c86_4g_m7_avx_sign): Ditto.
+	(c86_4g_m7_avx_sign_load): Ditto.
+	(c86_4g_m7_avx_blend): Ditto.
+	(c86_4g_m7_avx_blend_load): Ditto.
+	(c86_4g_m7_avx512_aes): Ditto.
+	(c86_4g_m7_avx512_aes_load): Ditto.
+	(c86_4g_m7_avx_aes): Ditto.
+	(c86_4g_m7_avx_aes_load): Ditto.
+	(c86_4g_m7_extr): Ditto.
+	(c86_4g_m7_extr_store): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi): Ditto.
+	(c86_4g_m7_avx_ssecomi_comi_load): Ditto.
+	(c86_4g_m7_avx_ssecomi_test): Ditto.
+	(c86_4g_m7_avx_ssecomi_test_load): Ditto.
+	(c86_4g_m7_avx512_imul): Ditto.
+	(c86_4g_m7_avx512_imul_mem): Ditto.
+	(c86_4g_m7_avx_imul): Ditto.
+	(c86_4g_m7_avx_imul_mem): Ditto.
+	(c86_4g_m7_avx512_mov_vmov): Ditto.
+	(c86_4g_m7_avx512_mov_vmov_store): Ditto.
+	(c86_4g_m7_avx512_mov_vmov_load): Ditto.
+	(c86_4g_m7_avx512_vpmovx_y): Ditto.
+	(c86_4g_m7_avx512_vpmovx_y_load): Ditto.
+	(c86_4g_m7_avx512_vpmovx_z): Ditto.
+	(c86_4g_m7_avx512_vpmovx_z_load): Ditto.
+	(c86_4g_m7_avx512_vpmovx_x): Ditto.
+	(c86_4g_m7_avx512_vpmovx_x_load): Ditto.
+	(c86_4g_m7_avx_vpmovx_xx): Ditto.
+	(c86_4g_m7_avx_vpmovx_xx_load): Ditto.
+	(c86_4g_m7_avx512_expand): Ditto.
+	(c86_4g_m7_avx512_expand_load): Ditto.
+	(c86_4g_m7_avx512_expand_z): Ditto.
+	(c86_4g_m7_avx512_expand_z_load): Ditto.
+	(c86_4g_m7_avx512_movnt_load): Ditto.
+	(c86_4g_m7_avx512_movnt_store): Ditto.
+	(c86_4g_m7_sse_movnt_store): Ditto.
+	(c86_4g_m7_sse_movnt): Ditto.
+	(c86_4g_m7_avx512_blendv): Ditto.
+	(c86_4g_m7_avx512_blendv_load): Ditto.
+	(c86_4g_m7_sse_mov2): Ditto.
+	(c86_4g_m7_sse_mov2_load): Ditto.
+	(c86_4g_m7_avx512_sseishft_aligr): Ditto.
+	(c86_4g_m7_avx512_sseishft_aligr_load): Ditto.
+	(c86_4g_m7_avx512_sseishft_vshift): Ditto.
+	(c86_4g_m7_avx512_sseishft_vshift_load): Ditto.
+	(c86_4g_m7_avx512_sseadd_maxmin): Ditto.
+	(c86_4g_m7_avx512_sseadd_maxmin_load): Ditto.
+	(c86_4g_m7_avx_sseadd_maxmin): Ditto.
+	(c86_4g_m7_avx_sseadd_maxmin_load): Ditto.
+	(c86_4g_m7_sse_sseadd_maxmin): Ditto.
+	(c86_4g_m7_sse_sseadd_maxmin_load): Ditto.
+	(c86_4g_m7_avx512_sseadd): Ditto.
+	(c86_4g_m7_avx512_sseadd_load): Ditto.
+	(c86_4g_m7_avx_sseadd_hplus): Ditto.
+	(c86_4g_m7_avx_sseadd_hplus_load): Ditto.
+	(c86_4g_m7_avx512_sseiadd_madd): Ditto.
+	(c86_4g_m7_avx512_sseiadd_madd_mem): Ditto.
+	(c86_4g_m7_avx_sseiadd_sadbw): Ditto.
+	(c86_4g_m7_avx_sseiadd_sadbw_mem): Ditto.
+	(c86_4g_m7_sse_sseiadd_sadbw): Ditto.
+	(c86_4g_m7_sse_sseiadd_sadbw_mem): Ditto.
+	(c86_4g_m7_sse_sseiadd_madd): Ditto.
+	(c86_4g_m7_sse_sseiadd_madd_mem): Ditto.
+	(c86_4g_m7_avx512_sseiadd_avg): Ditto.
+	(c86_4g_m7_avx512_sseiadd_avg_load): Ditto.
+	(c86_4g_m7_avx_sseiadd_hplus): Ditto.
+	(c86_4g_m7_avx_sseiadd_hplus_load): Ditto.
+	(c86_4g_m7_sse_sseiadd_hplus): Ditto.
+	(c86_4g_m7_sse_sseiadd_hplus_load): Ditto.
+	(c86_4g_m8_avx512_ssemul): New reservation.
+	(c86_4g_m8_avx512_ssemul_load): Ditto.
+	(c86_4g_m7_avx512_ssediv_x): Add c86_4g_m8 to CPU attribute.
+	(c86_4g_m7_avx512_ssediv_xmem): Ditto.
+	(c86_4g_m7_avx512_ssediv_y): Ditto.
+	(c86_4g_m7_avx512_ssediv_ymem): Ditto.
+	(c86_4g_m7_avx512_ssediv_z): Ditto.
+	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+	(c86_4g_m7_avx512_ssecmp): Ditto.
+	(c86_4g_m7_avx512_ssecmp_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_z): Ditto.
+	(c86_4g_m7_avx512_ssecmp_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_z): Ditto.
+	(c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto.
+	(c86_4g_m7_avx_ssecmp_vp): Ditto.
+	(c86_4g_m7_avx_ssecmp_vp_load): Ditto.
+	(c86_4g_m7_avx512_ssecmp_test): Ditto.
+	(c86_4g_m7_avx512_ssecmp_test_load): Ditto.
+	(c86_4g_m7_avx512_ssecvt_xy): Ditto.
+	(c86_4g_m7_avx512_ssecvt_xy_load): Ditto.
+	(c86_4g_m7_avx512_ssecvt_y_z): Ditto.
+	(c86_4g_m7_avx512_ssecvt_y_z_load): Ditto.
+	(c86_4g_m7_avx512_ssecvt_z): Ditto.
+	(c86_4g_m7_avx512_ssecvt_z_load): Ditto.
+	(c86_4g_m7_avx_ssecvt): Ditto.
+	(c86_4g_m7_avx_ssecvt_load): Ditto.
+	(c86_4g_m7_sse_ssecvt_pspi): Ditto.
+	(c86_4g_m7_sse_ssecvt_pspi_load): Ditto.
+	(c86_4g_m7_sse_ssecvt_pi): Ditto.
+	(c86_4g_m7_sse_ssecvt_pi_load): Ditto.
+	(c86_4g_m8_avx512_muladd): New reservation.
+	(c86_4g_m8_avx512_muladd_load): Ditto.
+	(c86_4g_m7_avx512_muladd_madd): Add c86_4g_m8 to CPU attribute.
+	(c86_4g_m7_avx512_muladd_madd_load): Ditto.
+	(c86_4g_m7_avx512_sse_range): Ditto.
+	(c86_4g_m7_avx512_sse_range_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_x): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_x_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_y_load): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z): Ditto.
+	(c86_4g_m7_avx512_sse_conflict_z_load): Ditto.
+	(c86_4g_m7_avx512_sse_class): Ditto.
+	(c86_4g_m7_avx512_sse_class_load): Ditto.
+	(c86_4g_m7_avx512_sse_class_z): Ditto.
+	(c86_4g_m7_avx512_sse_class_z_load): Ditto.
+	(c86_4g_m7_avx_sse): Ditto.
+	(c86_4g_m7_avx_sse_load): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_x): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_xload): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_y): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_yload): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_z): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_sf_zload): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_x): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_xload): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_y): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_yload): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_z): Ditto.
+	(c86_4g_m7_avx512_sse_sqrt_df_zload): Ditto.
+	(c86_4g_m7_avx512_msklog): Ditto.
+	(c86_4g_m7_avx512_msklog_vector): Ditto.
+	(c86_4g_m7_avx512_mskmov_reg_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_xy_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_z_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_k): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_reg): Ditto.
+	(c86_4g_m7_avx512_mskmov_k_m): Ditto.
+	* config/i386/driver-i386.cc (host_detect_local_cpu): Detect
+	c86-4g-m8.
+	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+	c86-4g-m8 arch and tune macros.
+	* config/i386/i386-options.cc (m_C86_4G_M8): New macro.
+	(m_C86_4G): Include m_C86_4G_M8.
+	(processor_cost_table): Add c86_4g_m8_cost.
+	* config/i386/i386.cc (ix86_reassociation_width): Handle
+	PROCESSOR_C86_4G_M8.
+	* config/i386/i386.h (enum processor_type): Add
+	PROCESSOR_C86_4G_M8.
+	(PTA_C86_4G_M8): New.
+	* config/i386/i386.md: Add c86_4g_m8 to cpu attribute.
+	* config/i386/x86-tune-costs.h (c86_4g_m8_cost): New.
+	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Handle
+	PROCESSOR_C86_4G_M8.
+	(ix86_adjust_cost): Likewise.
+	* config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Include
+	m_C86_4G_M8.
+	(X86_TUNE_USE_SCATTER_4PARTS): Likewise.
+	(X86_TUNE_USE_SCATTER_8PARTS): Likewise.
+	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Likewise.
+	(X86_TUNE_AVX512_SPLIT_REGS): Likewise.
+	(X86_TUNE_AVX512_AVOID_VEC_PERM): Likewise.
+	(X86_TUNE_AVX512_MOVE_BY_PIECES): Likewise.
+	(X86_TUNE_AVX512_MASKED_EPILOGUES): Likewise.
+	* doc/extend.texi: Document c86-4g-m8 for __builtin_cpu_is.
+	* doc/invoke.texi: Document c86-4g-m8.
+
 2026-06-22  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125697
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 921b7eeb5f0d..c4827740d110 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260623
+20260624
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 7f3fd1bf9e03..e42e6f805cb7 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,14 @@
+2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* c-parser.cc (c_parser_omp_iterators): Use iterator constructors
+	and macros for accessing iterator elements.
+	(c_parser_omp_clause_affinity): Likewise.
+	(c_parser_omp_clause_depend): Likewise.
+	(c_parser_omp_clause_map): Likewise.
+	(c_parser_omp_clause_from_to): Likewise.
+	* c-typeck.cc (c_omp_finish_iterators): Likewise.
+
 2026-06-19  Kees Cook  <kees@kernel.org>
 
 	PR c/125604
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index eabeb7160ad6..b9e27ef73d2e 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,21 @@
+2026-06-23  James K. Lowden  <jklowden@cobolworx.com>
+
+	* cbldiag.h (enum cbl_diag_id_t): Add IbmCdf.
+	* cdf.y: Renumber tokens.
+	* cobol1.cc (cobol_langhook_handle_option): Accept -Wibm-cdf.
+	* gcobol.1: Document Wibm-cdf
+	* lang-specs.h: Add Wno-ibm-cdf to spec string.
+	* lang.opt: Add Wibm-cdf.
+	* messages.cc (cobol_warning_suppress): Add IbmCdf to cbl_diagnostics.
+	* parse.y: Handle PROCESS token.
+	* scan.l: Return PROCESS token.
+	* token_names.h: Update.
+
+2026-06-23  James K. Lowden  <jklowden@cobolworx.com>
+
+	* parse.y: Restrict Program-ID as name to top-level.
+	* scan.l: Elevate keyword priority in lexer.
+
 2026-06-22  Xavier Del Campo Romero  <xdelcampo@symas.com>
 
 	* gcobol.1: Document -B.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index cdf222457bf4..5a7a514c5a6f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,32 @@
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125334
+	* module.cc (depset::hash::find_dependencies): Don't add_dependency
+	dependent ADL functions.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125768
+	* module.cc (trees_out::decl_node): When not streaming,
+	recurse into DECL_ORIGINAL_TYPE of an imported typedef.
+
+2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* parser.cc (cp_parser_omp_iterators): Use iterator constructors
+	and macros for accessing iterator elements.
+	(cp_parser_omp_clause_affinity): Likewise.
+	(cp_parser_omp_clause_depend): Likewise.
+	(cp_parser_omp_clause_from_to): Likewise.
+	(cp_parser_omp_clause_map): Likewise.
+	* pt.cc (tsubst_omp_clause_decl): Likewise.
+	* semantics.cc (cp_omp_finish_iterators): Likewise.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125745
+	* cp-ubsan.cc (cp_ubsan_instrument_vptr): Use build_vfield_ref.
+
 2026-06-22  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125697
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4e7ac9963688..15c3a08032c1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,43 @@
+2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+	    Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* trans-openmp.cc (gfc_trans_omp_array_section): Use macros for
+	accessing iterator elements.
+	(handle_iterator): Likewise, plus the iterator constructor.
+	(gfc_trans_omp_clauses): Likewise.
+
+2026-06-23  Sandra Loosemore  <sloosemore@baylibre.com>
+
+	* trans-openmp.cc (gfc_trans_omp_array_section): Add comments and
+	use a more descriptive variable name.
+
+2026-06-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/121972
+	* trans-array.cc (has_class_alloc_comp): New helper; returns true if
+	derived type DER has any CLASS component.
+	(gfc_trans_array_ctor_element): Also free allocatable components when
+	the element expression is EXPR_STRUCTURE, skipping types that contain
+	CLASS components to avoid freeing stack-allocated _data pointers.
+	(gfc_constructor_is_owned_alloc_comp): Likewise treat EXPR_STRUCTURE
+	elements as owned only when the derived type has no CLASS components.
+	* trans-expr.cc (gfc_trans_alloc_subarray_assign): Free allocatable
+	components of the component's temporary descriptor before nulling its
+	data pointer, for non-variable source expressions.
+
+2026-06-23  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* dump-parse-tree.cc (get_c_type_name): Use CFI_cdesc_t also for
+	deferred shape and deferred length dummies, as well as for
+	assumed-length scalar character dummies.
+
+2026-06-23  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/121972
+	* decl.cc (build_struct): Convert the PDT template before the
+	call to gfc_build_class_symbol.
+
 2026-06-22  Tobias Burnus  <tburnus@baylibre.com>
 
 	* openmp.cc (resolve_omp_clauses_aff_dep_map_cache): Split off
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c69208aec873..62d1579009c9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,97 @@
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125334
+	* g++.dg/modules/adl-12_b.C: Check for lazy loading.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125768
+	* g++.dg/modules/alias-3_a.C: New test.
+	* g++.dg/modules/alias-3_b.C: New test.
+	* g++.dg/modules/alias-3_c.C: New test.
+
+2026-06-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/121972
+	* gfortran.dg/class_array_15.f03: Adjust expected free count.
+	* gfortran.dg/derived_constructor_comps_6.f90: Adjust expected free count.
+	* gfortran.dg/asan/structure_constructor_alloc_comp_leak_1.f90: New test.
+
+2026-06-23  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* gfortran.dg/c-prototypes_1.F90: New test.
+
+2026-06-23  Robin Dapp  <robin.dapp@oss.qualcomm.com>
+
+	* gcc.target/riscv/rvv/base/pr112431-4.c: Un-xfail.
+	* gcc.target/riscv/rvv/base/pr112431-5.c: Ditto.
+	* gcc.target/riscv/rvv/base/pr112431-6.c: Ditto.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125745
+	* g++.dg/ubsan/vptr-19.C: New test.
+
+2026-06-23  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+	    Yuke Tang  <tang.yuke@zte.com.cn>
+
+	* gcc.target/riscv/rvv/autovec/zvabd-1.c: New tests for Zvabd.
+
+2026-06-23  Alex Coplan  <alex.coplan@arm.com>
+
+	PR target/125818
+	* gcc.target/aarch64/torture/pr125818.c: New test.
+
+2026-06-23  Sarvesh Chandra  <Sarvesh.Chandra@amd.com>
+	    Ashwin Godbole  <Ashwin.Godbole@amd.com>
+
+	PR target/107057
+	* gcc.target/i386/avx512-movedup.c: New test.
+
+2026-06-23  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/121972
+	* gfortran.dg/pdt_77.f03: Add 'finalalize_navier_stokes', which
+	tests that the 'navier_stokes' component 'p' is pointed to the
+	correct vtable in both tests. Check that VIEW_CONVERT_EXPR does
+	not appear in the tree dump.
+
+2026-06-23  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125893
+	* gcc.target/i386/pr125893-1.c: New test.
+	* gcc.target/i386/pr125893-2.c: Likewise.
+	* gcc.target/i386/pr125893-3.c: Likewise.
+	* gcc.target/i386/pr125893-4.c: Likewise.
+	* gcc.target/i386/pr125893-5.c: Likewise.
+	* gcc.target/i386/pr125893-6.c: Likewise.
+	* gcc.target/i386/pr125893-7.c: Likewise.
+	* gcc.target/i386/pr125893-8.c: Likewise.
+	* gcc.target/i386/pr125893-9.c: Likewise.
+	* gcc.target/i386/pr125893-10.c: Likewise.
+	* gcc.target/i386/pr125893-11.c: Likewise.
+
+2026-06-23  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/110743
+	* gcc.dg/uninit-pr110743.c: New testcase.
+
+2026-06-23  Hu, Lin1  <lin1.hu@intel.com>
+
+	* gcc.target/i386/vect-cbranch-cond-any-128.c: New test.
+	* gcc.target/i386/vect-cbranch-cond-any-256.c: Ditto.
+	* gcc.target/i386/vect-cbranch-cond-any-run.c: Ditto.
+	* gcc.target/i386/vect-cbranch-cond-all-128.c: Ditto.
+	* gcc.target/i386/vect-cbranch-cond-all-256.c: Ditto.
+	* gcc.target/i386/vect-cbranch-cond-all-run.c: Ditto.
+
+2026-06-23  Xin Liu  <liulxx@hygon.cn>
+
+	* g++.target/i386/mv33.C: Add c86-4g-m8 target clone test.
+	* gcc.target/i386/funcspec-56.inc: Add c86-4g-m8 arch and tune
+	target attribute tests.
+
 2026-06-22  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125697
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e891aa180a6c..e36c2ce387c1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,26 @@
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/125684
+	* src/c++11/random.cc (bad_seed, which_source): Change void*
+	parameters to const void *.
+
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono.h (std::chrono_literals): Fix typo in
+	comment.
+
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
+	website and modernise some text about debug modes in other
+	implementations.
+	* doc/html/manual/debug_mode_design.html: Regenerate.
+
+2026-06-23  Nathan Myers  <ncm@cantrip.org>
+
+	PR libstdc++/125890
+	* testsuite/20_util/polymorphic_allocator/at_least.cc: New test.
+
 2026-06-17  Marek Polacek  <polacek@redhat.com>
 
 	* src/c++17/string-inst.cc (basic_string::data): Remove noexcept.

From gccadmin@gcc.gnu.org  Wed Jun 24 00:19:24 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 24 Jun 2026 00:19:24 +0000 (GMT)
Subject: [gcc r14-12694] Daily bump.
Message-ID: <20260624001924.5D3F34BA2E04@sourceware.org>

https://gcc.gnu.org/g:3eb6307d5407cc84c0ea454d32fc8abf51d3ca5c

commit r14-12694-g3eb6307d5407cc84c0ea454d32fc8abf51d3ca5c
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Jun 24 00:18:52 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          |  2 +-
 libstdc++-v3/ChangeLog | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 921b7eeb5f0d..c4827740d110 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260623
+20260624
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ee8fd327b415..2ad98f0d478d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,21 @@
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono.h (std::chrono_literals): Fix typo in
+	comment.
+
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
+	website and modernise some text about debug modes in other
+	implementations.
+	* doc/html/manual/debug_mode_design.html: Regenerate.
+
 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Wed Jun 24 00:20:58 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 24 Jun 2026 00:20:58 +0000 (GMT)
Subject: [gcc r15-11314] Daily bump.
Message-ID: <20260624002058.2C9A74BA2E04@sourceware.org>

https://gcc.gnu.org/g:2a84d041dbcf216420a2160e23515cba6ffb97e4

commit r15-11314-g2a84d041dbcf216420a2160e23515cba6ffb97e4
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Jun 24 00:20:27 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          |  2 +-
 libstdc++-v3/ChangeLog | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 921b7eeb5f0d..c4827740d110 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260623
+20260624
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ba3ed1d4d0d4..469cfbf89219 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,21 @@
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono.h (std::chrono_literals): Fix typo in
+	comment.
+
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
+	website and modernise some text about debug modes in other
+	implementations.
+	* doc/html/manual/debug_mode_design.html: Regenerate.
+
 2026-06-12  Release Manager
 
 	* GCC 15.3.0 released.

From gccadmin@gcc.gnu.org  Wed Jun 24 00:21:49 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Wed, 24 Jun 2026 00:21:49 +0000 (GMT)
Subject: [gcc r16-9161] Daily bump.
Message-ID: <20260624002149.136754BA2E04@sourceware.org>

https://gcc.gnu.org/g:c7d390945f4ca3df424d11c0d7c48c95caed80d2

commit r16-9161-gc7d390945f4ca3df424d11c0d7c48c95caed80d2
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Wed Jun 24 00:21:17 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 10 ++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 25 +++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 24 ++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 107 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e363d35baefb..8c43a0a127bc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-23  Xi Ruoyao  <xry111@xry111.site>
+
+	Revert:
+	2026-06-09  Xi Ruoyao  <xry111@xry111.site>
+
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
 2026-06-22  Robin Dapp  <rdapp.gcc@gmail.com>
 
 	Backported from master:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 921b7eeb5f0d..c4827740d110 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260623
+20260624
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1ebaf91df6bb..917d465975cb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,28 @@
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125745
+	* cp-ubsan.cc (cp_ubsan_instrument_vptr): Use build_vfield_ref.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125408
+	* expr.cc (mark_use): Fix condition for changing rvalue to lvalue.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125408
+	* tree.cc (cp_walk_subtrees): Walk into the DECL_ORIGINAL_TYPE of a
+	typedef DECL_EXPR.
+
 2026-06-22  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 989238b8751f..2d687a339676 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,27 @@
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125745
+	* g++.dg/ubsan/vptr-19.C: New test.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125408
+	* g++.dg/cpp2a/lambda-targ34.C: New test.
+
+2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-21  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125408
+	* g++.dg/cpp2a/lambda-targ33.C: New test.
+
 2026-06-22  Robin Dapp  <rdapp.gcc@gmail.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ff1d3ecc74d1..dee8e5acdecf 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,50 @@
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono.h (std::chrono_literals): Fix typo in
+	comment.
+
+2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/xml/manual/debug_mode.xml: Remove 404 link to stlport
+	website and modernise some text about debug modes in other
+	implementations.
+	* doc/html/manual/debug_mode_design.html: Regenerate.
+
+2026-06-23  Nathan Myers  <ncm@cantrip.org>
+
+	PR libstdc++/125890
+	* include/bits/memory_resource.h (allocate_at_least): Add to
+	allocator_traits<pmr::polymorphic_allocator> specialization.
+	* testsuite/20_util/polymorphic_allocator/at_least.cc: New test.
+
+2026-06-23  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	Backported from master:
+	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.
+	* include/std/mdspan (__mdspan::__is_constant_wrapper):
+	Use auto as non-type template parameter.
+	* 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-04  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:

From meissner@gcc.gnu.org  Wed Jun 24 02:16:13 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Wed, 24 Jun 2026 02:16:13 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work248)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260624021613.04AD14BA2E08@sourceware.org>

https://gcc.gnu.org/g:c077ddb3fffe2195a2b3d92ce9e823434789a7dc

commit c077ddb3fffe2195a2b3d92ce9e823434789a7dc
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Jun 23 22:15:55 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..27b204d406f9
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work248 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From aoliva@gcc.gnu.org  Wed Jun 24 13:55:28 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 24 Jun 2026 13:55:28 +0000 (GMT)
Subject: [gcc r17-1807] libstdc++: vxworks: enable gthread_yield
Message-ID: <20260624135528.5F7F34BA5435@sourceware.org>

https://gcc.gnu.org/g:8c495de017cfe7b212eb4124cd902f68b306f1ec

commit r17-1807-g8c495de017cfe7b212eb4124cd902f68b306f1ec
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Jun 24 10:47:22 2026 -0300

    libstdc++: vxworks: enable gthread_yield
    
    ac_has_sched_yield is a bit of a misnomer in libstdc++-v3, as it
    guards the __gthread_yield call.  That call is implemented on VxWorks,
    even where it doesn't support POSIX sched_yield() proper.  So enable
    it.
    
    
    for  libstdc++-v3/ChangeLog
    
            * acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
            Enable __gthread_yield.
            * configure: Rebuilt.

Diff:
---
 libstdc++-v3/acinclude.m4 | 1 +
 libstdc++-v3/configure    | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 13fb32af1e30..f8899119d18d 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1788,6 +1788,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
         ac_has_clock_monotonic=yes
         ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
+        ac_has_sched_yield=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
         # Don't use link test for freestanding library, in case gcc_no_link=yes
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 7c921ed282a2..acdec9253140 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -21487,6 +21487,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
         ac_has_clock_monotonic=yes
         ac_has_clock_realtime=yes
         ac_has_nanosleep=yes
+        ac_has_sched_yield=yes
         ;;
       gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
         # Don't use link test for freestanding library, in case gcc_no_link=yes
@@ -54158,7 +54159,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54161 "configure"
+#line 54162 "configure"
 #include <stddef.h>
 int main()
 {

From aoliva@gcc.gnu.org  Wed Jun 24 13:55:33 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 24 Jun 2026 13:55:33 +0000 (GMT)
Subject: [gcc r17-1808] work around ppc-vx6 make limitations
Message-ID: <20260624135533.8AC0A4BA2E05@sourceware.org>

https://gcc.gnu.org/g:b0812255e4212f14d07e2d9077d70ba491666e66

commit r17-1808-gb0812255e4212f14d07e2d9077d70ba491666e66
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Jun 24 10:47:25 2026 -0300

    work around ppc-vx6 make limitations
    
    libstdc++-v3 in gcc-15 gained uses of a make function that was added
    in GNU make 3.81, but ppc-vx6 is GNU make 3.80, so calling the
    function returns an empty string, and the build fails.
    
    gcc/doc/install.texi states GCC requires make 3.80 to build, so
    rewrite those bits to avoid the new function.
    
    Install locations don't need abspath because they're already supposed
    to be absolute, since installation can't work with relative paths and
    DESTDIR is supposed to be prependable.
    
    $? may gain the srcdir VPATH, which would complicate dropping abspath,
    so iterate over the two filenames.
    
    
    for  libstdc++-v3/ChangeLog
    
            * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
            without abspath make function.
            (stamp-modules-bits): Likewise.
            * src/c++23/Makefile.in: Rebuilt.

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 8 +++++---
 libstdc++-v3/src/c++23/Makefile.in | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index 5b2812abd228..a1acf3eb5b4a 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -37,8 +37,8 @@ includebits_DATA = std.cc std.compat.cc
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index 75da9c008ab6..c1407d250b1d 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -845,8 +845,8 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -865,7 +865,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits

From aoliva@gcc.gnu.org  Wed Jun 24 14:24:07 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 24 Jun 2026 14:24:07 +0000 (GMT)
Subject: [gcc r16-9164] work around ppc-vx6 make limitations
Message-ID: <20260624142407.07C6F4BA2E1C@sourceware.org>

https://gcc.gnu.org/g:431fec6c5ddaaa1e5921ca427b58e1d47d276ffa

commit r16-9164-g431fec6c5ddaaa1e5921ca427b58e1d47d276ffa
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Jun 24 11:20:08 2026 -0300

    work around ppc-vx6 make limitations
    
    libstdc++-v3 in gcc-15 gained uses of a make function that was added
    in GNU make 3.81, but ppc-vx6 is GNU make 3.80, so calling the
    function returns an empty string, and the build fails.
    
    gcc/doc/install.texi states GCC requires make 3.80 to build, so
    rewrite those bits to avoid the new function.
    
    Install locations don't need abspath because they're already supposed
    to be absolute, since installation can't work with relative paths and
    DESTDIR is supposed to be prependable.
    
    $? may gain the srcdir VPATH, which would complicate dropping abspath,
    so iterate over the two filenames.
    
    
    for  libstdc++-v3/ChangeLog
    
            * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
            without abspath make function.
            (stamp-modules-bits): Likewise.
            * src/c++23/Makefile.in: Rebuilt.
    (cherry picked from commit b0812255e4212f14d07e2d9077d70ba491666e66)

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 8 +++++---
 libstdc++-v3/src/c++23/Makefile.in | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index 5b2812abd228..a1acf3eb5b4a 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -37,8 +37,8 @@ includebits_DATA = std.cc std.compat.cc
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index 75da9c008ab6..c1407d250b1d 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -845,8 +845,8 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -865,7 +865,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits

From aoliva@gcc.gnu.org  Wed Jun 24 14:36:39 2026
From: aoliva@gcc.gnu.org (Alexandre Oliva)
Date: Wed, 24 Jun 2026 14:36:39 +0000 (GMT)
Subject: [gcc r15-11315] work around ppc-vx6 make limitations
Message-ID: <20260624143639.4205C4BA5439@sourceware.org>

https://gcc.gnu.org/g:5594fe352e6acf4391bda94ce69fdeb27ba0f4a0

commit r15-11315-g5594fe352e6acf4391bda94ce69fdeb27ba0f4a0
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Wed Jun 24 11:33:14 2026 -0300

    work around ppc-vx6 make limitations
    
    libstdc++-v3 in gcc-15 gained uses of a make function that was added
    in GNU make 3.81, but ppc-vx6 is GNU make 3.80, so calling the
    function returns an empty string, and the build fails.
    
    gcc/doc/install.texi states GCC requires make 3.80 to build, so
    rewrite those bits to avoid the new function.
    
    Install locations don't need abspath because they're already supposed
    to be absolute, since installation can't work with relative paths and
    DESTDIR is supposed to be prependable.
    
    $? may gain the srcdir VPATH, which would complicate dropping abspath,
    so iterate over the two filenames.
    
    
    for  libstdc++-v3/ChangeLog
    
            * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
            without abspath make function.
            (stamp-modules-bits): Likewise.
            * src/c++23/Makefile.in: Rebuilt.
    (cherry picked from commit b0812255e4212f14d07e2d9077d70ba491666e66)

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 8 +++++---
 libstdc++-v3/src/c++23/Makefile.in | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index b506a7be7590..bd7c9f65907e 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -34,8 +34,8 @@ includebits_DATA = std.cc std.compat.cc
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -54,7 +54,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index 715c14c6b815..bd603fd1adfd 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -827,8 +827,8 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA
 # The manifest to be installed uses the relative path between install dirs.
 libstdc++.modules.json: libstdc++.modules.json.in
 	relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \
-		   $(abspath $(toolexeclibdir)) \
-		   $(abspath $(includebitsdir))) && \
+		    $(toolexeclibdir) \
+		    $(includebitsdir)) && \
 	sed "s,@MODPATH@,$$relpath," $< > $@
 
 # The uninstalled manifest uses the relative path to builddir.
@@ -847,7 +847,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 # Also put the interface units in the build-includes bits directory.
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
-	-cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
+	-for f in $(includebits_DATA); do \
+	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	done 2>/dev/null
 	@$(STAMP) $@
 
 all-local: stamp-module-manifest stamp-modules-bits

From tkaminsk@gcc.gnu.org  Wed Jun 24 15:03:48 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Wed, 24 Jun 2026 15:03:48 +0000 (GMT)
Subject: [gcc r17-1809] libstdc++: Correct export checks for
 _GLIBCXX_EXTERN_TEMPLATE
Message-ID: <20260624150348.A44F14BA2E05@sourceware.org>

https://gcc.gnu.org/g:6ac3a6c8aa22dc78f68eb3c99e2c600ca3e57904

commit r17-1809-g6ac3a6c8aa22dc78f68eb3c99e2c600ca3e57904
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Tue Jun 23 19:12:01 2026 +0200

    libstdc++: Correct export checks for _GLIBCXX_EXTERN_TEMPLATE
    
    Replace a basic_string specific _GLIBCXX_EXTERN_TEMPLATE > 0 with
    simple check for _GLIBCXX_EXTERN_TEMPLATE. This make sure that
    extern definition is also use for -O0 (default).
    Exported declarations are also important for future extensibility,
    as they always pick latest implementation.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/format (__do_vformat_to): Change the preprocessor
            check for __do_vformat_to.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/std/format | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 4a517b70889c..db226ecb0c84 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -5381,7 +5381,7 @@ namespace __format
 // instantiates formatters for types stored in basic_format_arg, we can
 // support only single encoding, in this case unicode. This should cover
 // most common use cases.
-#if __cplusplus <= 202002L && _GLIBCXX_EXTERN_TEMPLATE > 0
+#if __cplusplus <= 202002L && _GLIBCXX_EXTERN_TEMPLATE
     extern template _Sink_iter<char>
       __do_vformat_to<char, 1>(_Sink_iter<char>, string_view,
 			       format_context&);

From redi@gcc.gnu.org  Wed Jun 24 17:55:16 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 24 Jun 2026 17:55:16 +0000 (GMT)
Subject: [gcc r17-1815] libstdc++: Disable test on targets without mkfifo
 [PR118158]
Message-ID: <20260624175516.674D84BA2E24@sourceware.org>

https://gcc.gnu.org/g:acab34d515b49ef79dd1ddc519827f42e236e362

commit r17-1815-gacab34d515b49ef79dd1ddc519827f42e236e362
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jun 24 18:48:23 2026 +0100

    libstdc++: Disable test on targets without mkfifo [PR118158]
    
    This test fails to compile using mingw-w64 so disable it using the
    dg-require-mkfifo directive.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/118158
            * testsuite/27_io/filesystem/operations/pr118158.cc: Add
            dg-require-mkfifo.

Diff:
---
 libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc
index b57a2d184f41..43b8442bd203 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
+// { dg-require-mkfifo "" }
 
 #include <filesystem>
 #include <testsuite_fs.h>

From redi@gcc.gnu.org  Wed Jun 24 20:54:29 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Wed, 24 Jun 2026 20:54:29 +0000 (GMT)
Subject: [gcc r17-1817] libstdc++: Disable tests for targets without symlink
 support
Message-ID: <20260624205429.ABDB94BA2E3B@sourceware.org>

https://gcc.gnu.org/g:98780ab014cf074fff21765dfd5435151a58805d

commit r17-1817-g98780ab014cf074fff21765dfd5435151a58805d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jun 24 19:02:35 2026 +0100

    libstdc++: Disable tests for targets without symlink support
    
    These tests for filesystem::copy_symlink should be disabled on targets
    that don't support symlinks (or where the target does, but our
    std::filesystem doesn't, such as mingw-w64).
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/27_io/filesystem/operations/copy_symlink/1.cc: Add
            dg-require-target-fs-symlinks.
            * testsuite/27_io/filesystem/operations/copy_symlink/2.cc:
            Likewise.
            * testsuite/27_io/filesystem/operations/copy_symlink/3.cc:
            Likewise.
            * testsuite/27_io/filesystem/operations/copy_symlink/4.cc:
            Likewise.

Diff:
---
 libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc | 1 +
 libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc | 1 +
 libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc | 1 +
 libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc | 1 +
 4 files changed, 4 insertions(+)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
index e04b2672e6dd..fbb2e66c440d 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
+// { dg-require-target-fs-symlinks "" }
 
 #include <filesystem>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
index 27caf4a1d4a0..6200fcb0b577 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
+// { dg-require-target-fs-symlinks "" }
 
 #include <filesystem>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc
index 13e9dad20fcb..bf4049591ae1 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
+// { dg-require-target-fs-symlinks "" }
 
 #include <filesystem>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc
index 2e4f300194ba..64f15f762974 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-require-filesystem-ts "" }
+// { dg-require-target-fs-symlinks "" }
 
 #include <filesystem>
 #include <testsuite_hooks.h>

From gccadmin@gcc.gnu.org  Thu Jun 25 00:17:09 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 25 Jun 2026 00:17:09 +0000 (GMT)
Subject: [gcc r17-1823] Daily bump.
Message-ID: <20260625001709.157C34BA2E18@sourceware.org>

https://gcc.gnu.org/g:3e7b6ef6bca0173902e9f3d81ec51581f0e81846

commit r17-1823-g3e7b6ef6bca0173902e9f3d81ec51581f0e81846
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 25 00:16:38 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 143 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/algol68/ChangeLog   |  10 ++++
 gcc/c-family/ChangeLog  |   5 ++
 gcc/cobol/ChangeLog     |  21 +++++++
 gcc/cp/ChangeLog        |  21 +++++++
 gcc/fortran/ChangeLog   |  25 +++++++++
 gcc/testsuite/ChangeLog |  82 +++++++++++++++++++++++++++
 include/ChangeLog       |   6 ++
 libgomp/ChangeLog       |  57 +++++++++++++++++++
 libstdc++-v3/ChangeLog  |  35 ++++++++++++
 11 files changed, 406 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a471034d7bc..fdda11dc95d2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,146 @@
+2026-06-24  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* config/i386/prfchwintrin.h (_m_prefetchw): Take
+	volatile const void * instead of void *.
+
+2026-06-24  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/125910
+	* value-range.cc (prange::set_pt): Do not set PT when zero.
+	(prange::intersect): If the result is zero_p, clear PT.
+	(prange::verify_range): Verify points-to range is valid.
+	* value-range.h (zero_p): Do not assert, move to verify range.
+	(prange::set_pt): Only set PT when the range valid.
+
+2026-06-24  Vineet Gupta  <vineet.gupta@linux.dev>
+
+	PR debug/125421
+	* dwarf2out.cc (modified_type_die): Handle qualified_type being
+	a variant of dtype as if they were identical to avoid peeling a
+	typdef.
+	For named types, use dentry unconditionally as that is valid for
+	both cases of qualified_type == and  != dentry.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* omp-builtins.def (BUILT_IN_GOMP_REDUCTION_START): New builtin.
+	(BUILT_IN_GOMP_REDUCTION_END): New builtin.
+	* omp-low.cc (lower_reduction_clauses): Replace
+	BUILT_IN_GOMP_ATOMIC_START / BUILT_IN_GOMP_ATOMIC_END with
+	BUILT_IN_GOMP_REDUCTION_START / BUILT_IN_GOMP_REDUCTION_END.
+	(lower_omp_sections): Likewise.
+	(lower_omp_scope): Likewise.
+	(lower_omp_for): Likewise.
+	* tree-ssa-alias.cc (check_fnspec): Handle
+	BUILT_IN_GOMP_REDUCTION_START and BUILT_IN_GOMP_REDUCTION_END as
+	memory barriers.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* omp-builtins.def (BUILT_IN_GOMP_BARRIER): Change function to
+	GOMP_barrier_ext and type to BT_FN_VOID_INT.
+	(BUILT_IN_GOMP_BARRIER_CANCEL): Change function to
+	GOMP_barrier_cancel_ext and type to BT_FN_VOID_INT.
+	* omp-expand.cc (expand_omp_for_static_nochunk): Pass
+	GOMP_BARRIER_IMPLICIT_WORKSHARE to omp_build_barrier.
+	(expand_omp_for_static_chunk): Likewise.
+	(expand_omp_single): Likewise.
+	* omp-general.cc (omp_build_barrier): Add kind parameter; pass it
+	to GOMP_barrier_ext or GOMP_barrier_cancel_ext.
+	* omp-general.h (omp_build_barrier): Update declaration to add
+	kind parameter.
+	* omp-low.cc (lower_rec_input_clauses): Determine barrier kind from
+	the enclosing gimple statement code and pass it to omp_build_barrier.
+	(lower_omp_for_scan): Pass GOMP_BARRIER_IMPLICIT_WORKSHARE to
+	omp_build_barrier.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* builtin-types.def (BT_COMPLEX_INT, BT_FN_COMPLEX_INT): New types.
+	* omp-builtins.def (BUILT_IN_GOMP_LOOP_STATIC_WORKSHARING): New
+	builtin.
+	(BUILT_IN_GOMP_DISTRIBUTE_STATIC_WORKSHARING): Likewise.
+	* omp-expand.cc (expand_omp_for_static_nochunk): Replace separate calls
+	to public API functions with a single call to
+	GOMP_loop_static_worksharing or GOMP_distribute_static_worksharing, then
+	unpack id and count.
+	(expand_omp_for_static_chunk): Likewise.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* omp-builtins.def (BUILT_IN_GOMP_HAS_MASKED_THREAD_NUM): New builtin.
+	* omp-low.cc (lower_omp_master): Call it.
+
+2026-06-24  Filip Kastl  <fkastl@suse.cz>
+
+	* gimple-ssa-pta-constraints.cc (handle_call_arg): Mention in
+	comment that the function can get called in IPA mode.
+
+2026-06-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/110743
+	* tree-ssa-uninit.cc (maybe_warn_operand): Also cover
+	VIEW_CONVERT_EXPR uses for RMW bit clear/set pattern
+	detection.
+
+2026-06-24  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* config/rs6000/altivec.md (V16QI_V2DI): New mode iterator.
+	(add<mode>3): Split into two patterns to support future ISA
+	alternatives.
+	(sub<mode>3): Likewise.
+	* config/rs6000/vsx.md (VIArith): New mode iterator.
+	(vsx_mul<mode>3): New insn pattern.
+	(smul<mode>3_highpart): Split into mode-specific patterns.
+	(umul<mode>3_highpart): Likewise.
+	(smulv8hi3_highpart): New insn pattern.
+	(smulv4si3_highpart): Likewise.
+	(smulv2di3_highpart): Likewise.
+	(umulv8hi3_highpart): Likewise.
+	(umulv4si3_highpart): Likewise.
+	(umulv2di3_highpart): Likewise.
+	* config/rs6000/rs6000-builtins.def (__builtin_vsx_xvmulhuh): New
+	builtin.
+	(__builtin_vsx_xvmulhsh): Likewise.
+	* config/rs6000/rs6000-overload.def (__builtin_vec_mulh): Add
+	overloads for vector multiply-high signed/unsigned halfword.
+	* config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Add entry for
+	BSTZ_FUTURE_VSX.
+	(stanza_map): Add future-vsx stanza mapping.
+	(enable_string): Add ENB_FUTURE_VSX.
+	(write_decls): Add ENB_FUTURE_VSX to the bif_enable enum in the
+	generated header file.
+	* config/rs6000/rs6000.md (define_attr "isa"): Add future to the list
+	of ISA values.
+	(define_attr "enabled"): Add check for future ISA.
+	* config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Handle
+	ENB_FUTURE_VSX and issue a diagnostic requiring -mcpu=future and -mvsx.
+	(rs6000_builtin_is_supported): Return TARGET_FUTURE && TARGET_VSX
+	for ENB_FUTURE_VSX built-ins.
+	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions Available
+	on Future ISA): Document new functions.
+
+2026-06-24  Christopher Bazley  <chris.bazley@arm.com>
+
+	* config/aarch64/aarch64-sve.md: Update
+	vec_init<mode><Vel> and vec_shl_insert_<mode> to
+	accept all SVE vector modes.
+
+2026-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125958
+	* config/i386/i386-expand.cc (ix86_expand_lcp_stall_peephole):
+	Replace !REG_P (dest) with !GENERAL_REG_P (dest).
+
+2026-06-24  Lili Cui  <lili.cui@intel.com>
+
+	* config/i386/x86-tune-costs.h (generic_cost): Increase branch
+	mispredict scale from COSTS_N_INSNS (2) to COSTS_N_INSNS (2) + 3.
+
+2026-06-24  Jan Beulich  <jbeulich@suse.com>
+
+	* doc/ifn.texi: Drop blanks after @code.
+
 2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
 	    Sandra Loosemore  <sloosemore@baylibre.com>
 
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index c4827740d110..155841997d62 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260624
+20260625
diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog
index a477dc7368e9..120d807e3311 100644
--- a/gcc/algol68/ChangeLog
+++ b/gcc/algol68/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-24  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-moids-sorting.cc (packs_ordering): Do not rely on pointer
+	comparison when comparing pack element names.
+
+2026-06-24  Jose E. Marchesi  <jemarch@gnu.org>
+
+	* a68-imports.cc (complete_encoded_mode): Fix comment on ordering
+	of union packs entries.
+
 2026-06-22  Kanishka Solanki  <kanishkasolanki456s@gmail.com>
 
 	* a68-lang.cc (a68_get_alias_set): New function.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 2222be79133a..a9acbf0ab83e 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* c-omp.cc (c_finish_omp_barrier): Pass GOMP_BARRIER_EXPLICIT to
+	GOMP_barrier_ext.
+
 2026-06-16  Jakub Jelinek  <jakub@redhat.com>
 
 	* c-common.h (enum cxx_dialect): Add cxx29.
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index b9e27ef73d2e..69da64703645 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-24  James K. Lowden  <jklowden@cobolworx.com>
+
+	* parse.y: Modify grammar to accept list of intrinic function tokens.
+	* parse_ante.h (in_procedure_division): Remove C-syntax (void).
+	(in_environment_division): Declare function.
+	* scan_ante.h (in_procedure_division): Whitespace.
+	(in_environment_division): Define function.
+	(typed_name): Return intrinsic function token in environment division.
+	* scan_post.h (in_procedure_division): Remove duplicate declaration.
+
+2026-06-24  James K. Lowden  <jklowden@cobolworx.com>
+
+	* lexio.cc (valid_sequence_area): Each character may be
+	ISDIGIT or ISBLANK.
+
+2026-06-24  James K. Lowden  <jklowden@cobolworx.com>
+
+	* parse.y: Introduce ast_relop to apply validation.
+	* parse_ante.h (ast_relop): Declare.
+	(class eval_subject_t): Use ast_relop.
+
 2026-06-23  James K. Lowden  <jklowden@cobolworx.com>
 
 	* cbldiag.h (enum cbl_diag_id_t): Add IbmCdf.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5a7a514c5a6f..6c57b618b4ab 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-24  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125939
+	* cp-tree.h (build_const_lref): Declare.
+	* method.cc (build_stub_type): Pass tf_ignore_bad_quals to
+	cp_build_qualified_type.
+	* reflect.cc (build_const_lref): New.
+	(get_range_elts): Use it.
+	(eval_is_copy_constructible_type): Likewise.
+	(eval_is_copy_assignable_type): Likewise.
+	(eval_is_trivially_copy_assignable_type): Likewise.
+	(eval_is_nothrow_copy_constructible_type): Likewise.
+	(eval_is_nothrow_copy_assignable_type): Likewise.
+	* tree.cc (trivially_copy_constructible_p): Likewise.
+	(handle_annotation_attribute): Likewise.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* semantics.cc (finish_omp_barrier): Push GOMP_BARRIER_EXPLICIT
+	onto the argument vector.
+
 2026-06-23  Jason Merrill  <jason@redhat.com>
 
 	PR c++/125334
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 15c3a08032c1..b516ec54916f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,28 @@
+2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125761
+	* trans-array.cc (build_array_ref): When the descriptor's
+	canonical type is a class type, pass the class container as
+	'decl' to gfc_build_array_ref for genuine array element
+	references (rank > 0), so the element size can be corrected
+	for an unlimited-polymorphic character payload.
+	* trans-types.cc (gfc_typenode_for_spec): Move setting the
+	GFC_CLASS_TYPE_P bit to..
+	(gfc_get_derived_type): .. and use attr.is_class.
+	(gfc_get_derived_type): Move setting the GFC_CLASS_TYPE_P bit
+	as the last step before returning the derived->backend_decl
+	if the derived->attr.is_class is true.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* trans-openmp.cc (gfc_trans_omp_barrier): Pass GOMP_BARRIER_EXPLICIT
+	to GOMP_barrier_ext.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* types.def (BT_COMPLEX_INT): New type.
+	(BT_FN_COMPLEX_INT): New function type.
+
 2026-06-23  Kwok Cheung Yeung  <kcyeung@baylibre.com>
 	    Sandra Loosemore  <sloosemore@baylibre.com>
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 62d1579009c9..7512afb5e028 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,85 @@
+2026-06-24  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* gcc.dg/autopar/runtime-auto.c: Adjust.
+
+2026-06-24  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* gcc.target/i386/prfchw-Wcast-qual-1.c: New test.
+
+2026-06-24  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/125910
+	* gcc.dg/pr125910.c: New.
+
+2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/125761
+	* gfortran.dg/select_type_53.f90: New test.
+
+2026-06-24  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125939
+	* g++.dg/reflect/type_trait15.C: New test.
+
+2026-06-24  Vineet Gupta  <vineet.gupta@linux.dev>
+
+	PR debug/125421
+	* gcc.dg/debug/dwarf2/pr125421.c: New Test.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* c-c++-common/gomp/atomic-builtins-1.c: New test.
+	* c-c++-common/gomp/reduction-builtins-1.c: New test.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* g++.dg/gomp/barrier-1.C: Update scan dump.
+	* g++.dg/gomp/tpl-barrier-1.C: Likewise.
+	* gcc.dg/gomp/barrier-1.c: Likewise.
+	* c-c++-common/gomp/implicit-barrier-1.c: New test.
+	* gfortran.dg/gomp/lastprivate-allocatable-barrier-1.f90: New test.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* c-c++-common/gomp/for-8.c: New test.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* c-c++-common/gomp/masked-1.c: Add scan directives verifying that
+	GOMP_has_masked_thread_num is emitted and omp_get_thread_num is not.
+	* g++.dg/gomp/master-3.C: Update scan-tree-dump-times to look for
+	GOMP_has_masked_thread_num instead of omp_get_thread_num.
+	* gcc.dg/gomp/master-3.c: Likewise.
+	* gfortran.dg/gomp/masked-1.f90: Add scan directive for
+	GOMP_has_masked_thread_num.
+
+2026-06-24  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/110743
+	* gcc.dg/uninit-pr110743-2.c: New testcase.
+
+2026-06-24  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+
+	* gcc.target/powerpc/vsx_arith_builtin-1.c: New test.
+	* gcc.target/powerpc/vsx_arith_builtin-2.c: Likewise.
+	* gcc.target/powerpc/vsx_arith_builtin-3.c: Likewise.
+	* gcc.target/powerpc/vsx_arith_builtin-4.c: Likewise.
+	* gcc.target/powerpc/vsx_arith_vect_1.c: Likewise.
+	* gcc.target/powerpc/vsx_arith_vect_2.c: Likewise.
+
+2026-06-24  Christopher Bazley  <chris.bazley@arm.com>
+
+	* gcc.target/aarch64/sve/slp_stack.c: New test.
+
+2026-06-24  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125958
+	* gcc.target/i386/pr125958.c: New test.
+
+2026-06-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* gcc.dg/vect/pr125567.c: Require vect_hw_misalign.
+
 2026-06-23  Jason Merrill  <jason@redhat.com>
 
 	PR c++/125334
diff --git a/include/ChangeLog b/include/ChangeLog
index 3feff810c6f2..9ea24ca9e961 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* gomp-constants.h (GOMP_BARRIER_IMPLICIT_PARALLEL): New macro.
+	(GOMP_BARRIER_IMPLICIT_WORKSHARE): New macro.
+	(GOMP_BARRIER_EXPLICIT): New macro.
+
 2026-06-19  Tobias Burnus  <tburnus@baylibre.com>
 
 	PR libgomp/125877
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 53391508a891..b854582a5b8b 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,60 @@
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* atomic.c (GOMP_reduction_start): New function.
+	(GOMP_reduction_end): New function.
+	* libgomp.map (GOMP_6.0.2): Export GOMP_reduction_start and
+	GOMP_reduction_end.
+	* libgomp_g.h (GOMP_reduction_start): New declaration.
+	(GOMP_reduction_end): New declaration.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* barrier.c (GOMP_barrier_ext): New function.
+	(GOMP_barrier_cancel_ext): Likewise.
+	* libgomp_g.h (GOMP_barrier_ext): Declare.
+	(GOMP_barrier_cancel_ext): Likewise.
+	* libgomp.map (GOMP_6.0.2): Add GOMP_barrier_ext and
+	GOMP_barrier_cancel_ext.
+	* testsuite/libgomp.c/barrier-1.c: Update GOMP_barrier_ext calls to pass
+	GOMP_BARRIER_EXPLICIT.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* config/gcn/teams.c (GOMP_distribute_static_worksharing): New
+	function.
+	* config/nvptx/teams.c (GOMP_distribute_static_worksharing): Likewise.
+	* libgomp.map (GOMP_6.0.2): Export GOMP_loop_static_worksharing and
+	GOMP_distribute_static_worksharing.
+	* libgomp_g.h (GOMP_loop_static_worksharing): New declaration.
+	(GOMP_distribute_static_worksharing): Likewise.
+	* parallel.c (GOMP_loop_static_worksharing): New function.
+	* teams.c (GOMP_distribute_static_worksharing): Likewise.
+
+2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* libgomp.map (GOMP_6.0.2): New symbol version. Export
+	GOMP_has_masked_thread_num.
+	* libgomp_g.h (GOMP_has_masked_thread_num): New declaration.
+	* parallel.c (GOMP_has_masked_thread_num): New function.
+
+2026-06-24  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR libgomp/125940
+	* Makefile.am (libgomp_la_SOURCES): Add numa.c.
+	* Makefile.in: Regenerate.
+	* affinity.c (gomp_get_current_numa_node,
+	gomp_get_numa_distance): Move to ...
+	* numa.c: ... this new file.
+	* config/linux/affinity.c (gomp_get_current_numa_node,
+	gomp_get_numa_distance): Move to ...
+	* config/linux/numa.c: ... this new file.
+
+2026-06-24  Tobias Burnus  <tburnus@baylibre.com>
+
+	PR libgomp/125951
+	* target.c (omp_get_device_distances): Handle omp_default_device
+	in the fallback code.
+
 2026-06-22  Tobias Burnus  <tburnus@baylibre.com>
 
 	* config/gcn/teams.c (omp_get_num_teams_dim,
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e36c2ce387c1..39e3a5afc2ce 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,38 @@
+2026-06-24  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/27_io/filesystem/operations/copy_symlink/1.cc: Add
+	dg-require-target-fs-symlinks.
+	* testsuite/27_io/filesystem/operations/copy_symlink/2.cc:
+	Likewise.
+	* testsuite/27_io/filesystem/operations/copy_symlink/3.cc:
+	Likewise.
+	* testsuite/27_io/filesystem/operations/copy_symlink/4.cc:
+	Likewise.
+
+2026-06-24  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/118158
+	* testsuite/27_io/filesystem/operations/pr118158.cc: Add
+	dg-require-mkfifo.
+
+2026-06-24  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	* include/std/format (__do_vformat_to): Change the preprocessor
+	check for __do_vformat_to.
+
+2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	* src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
+	without abspath make function.
+	(stamp-modules-bits): Likewise.
+	* src/c++23/Makefile.in: Rebuilt.
+
+2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	* acinclude.m4 (GLIBXX_ENABLE_LIBSTDCXX_TIME) [vxworks*]:
+	Enable __gthread_yield.
+	* configure: Rebuilt.
+
 2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR libstdc++/125684

From gccadmin@gcc.gnu.org  Thu Jun 25 00:21:08 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 25 Jun 2026 00:21:08 +0000 (GMT)
Subject: [gcc r15-11316] Daily bump.
Message-ID: <20260625002108.10B994BA2E2B@sourceware.org>

https://gcc.gnu.org/g:e0ab2205eb8d3c1472fd13932daf985b59cf267f

commit r15-11316-ge0ab2205eb8d3c1472fd13932daf985b59cf267f
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 25 00:20:37 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP          |  2 +-
 libstdc++-v3/ChangeLog | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index c4827740d110..155841997d62 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260624
+20260625
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 469cfbf89219..7f07a3ce796e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	Backported from master:
+	2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	* src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
+	without abspath make function.
+	(stamp-modules-bits): Likewise.
+	* src/c++23/Makefile.in: Rebuilt.
+
 2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Thu Jun 25 00:21:57 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Thu, 25 Jun 2026 00:21:57 +0000 (GMT)
Subject: [gcc r16-9167] Daily bump.
Message-ID: <20260625002157.ECACE4BA2E22@sourceware.org>

https://gcc.gnu.org/g:0f19fef79929e11610a2c2abb89b19fd20ebc025

commit r16-9167-g0f19fef79929e11610a2c2abb89b19fd20ebc025
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Thu Jun 25 00:21:25 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           |  4 ++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        |  6 ++++++
 gcc/fortran/ChangeLog   | 28 ++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 23 +++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 10 ++++++++++
 6 files changed, 72 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c43a0a127bc..bcbeaa143758 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-24  Jan Beulich  <jbeulich@suse.com>
+
+	* doc/ifn.texi: Drop blanks after @code.
+
 2026-06-23  Xi Ruoyao  <xry111@xry111.site>
 
 	Revert:
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index c4827740d110..155841997d62 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260624
+20260625
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 917d465975cb..be433e9b5d8e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-24  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125939
+	* method.cc (build_stub_type): Pass tf_ignore_bad_quals to
+	cp_build_qualified_type.
+
 2026-06-23  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b74b7d2f1684..eec852499176 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,31 @@
+2026-06-24  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-06-23  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* dump-parse-tree.cc (get_c_type_name): Use CFI_cdesc_t also for
+	deferred shape and deferred length dummies, as well as for
+	assumed-length scalar character dummies.
+
+2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/60576
+	* trans-array.cc (gfc_conv_array_parameter): For an assumed-rank
+	actual argument passed to a CLASS assumed-rank formal, use a
+	runtime-sized memcpy for the dim[] entries instead of a full
+	GFC_MAX_DIMENSIONS static copy.  For a fixed-rank actual to a
+	CLASS assumed-rank formal, pass lhs_type=false to
+	gfc_class_array_data_assign so the dim[] copy is sized by the
+	RHS descriptor type (dim_t[rank]).  Fixed-rank class formals
+	retain lhs_type=true.
+	* trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank
+	actual, use a runtime-sized memcpy for the derived_array descriptor
+	dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy.
+
 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2d687a339676..19cfe744e0ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,26 @@
+2026-06-24  Harald Anlauf  <anlauf@gmx.de>
+
+	Backported from master:
+	2026-06-23  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* gfortran.dg/c-prototypes_1.F90: New test.
+
+2026-06-24  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125939
+	* g++.dg/reflect/type_trait15.C: New test.
+
+2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	Backported from master:
+	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/60576
+	* gfortran.dg/asan/assumed_rank_26.f90: New test covering both
+	assumed-rank and fixed-rank type actuals passed to a CLASS
+	assumed-rank dummy.
+
 2026-06-23  Jason Merrill  <jason@redhat.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index dee8e5acdecf..fd65ad9be616 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	Backported from master:
+	2026-06-24  Alexandre Oliva  <oliva@adacore.com>
+
+	* src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
+	without abspath make function.
+	(stamp-modules-bits): Likewise.
+	* src/c++23/Makefile.in: Rebuilt.
+
 2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:

From meissner@gcc.gnu.org  Thu Jun 25 03:25:09 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Thu, 25 Jun 2026 03:25:09 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work248)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260625032509.BA79C4BA7995@sourceware.org>

https://gcc.gnu.org/g:6580825aca7a138d582754172484f4b293d04192

commit 6580825aca7a138d582754172484f4b293d04192
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Jun 23 22:15:55 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..27b204d406f9
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work248 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..8bff6f98ef2e
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work248, baseline ====================
+
+2026-06-23   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-23  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From meissner@gcc.gnu.org  Thu Jun 25 03:44:57 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Thu, 25 Jun 2026 03:44:57 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work249)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260625034457.077B24BA23C2@sourceware.org>

https://gcc.gnu.org/g:73cb60340f7fb08d5e13d0cdccdd88add6a65df5

commit 73cb60340f7fb08d5e13d0cdccdd88add6a65df5
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Jun 24 23:44:29 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..0e98291ce7f2
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work249 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..d37cf82902d6
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work249, baseline ====================
+
+2026-06-24   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-24  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From meissner@gcc.gnu.org  Thu Jun 25 04:26:15 2026
From: meissner@gcc.gnu.org (Michael Meissner)
Date: Thu, 25 Jun 2026 04:26:15 +0000 (GMT)
Subject: [gcc(refs/users/meissner/heads/work250)] Add ChangeLog.meissner and
 REVISION.
Message-ID: <20260625042615.9BF354BA23E8@sourceware.org>

https://gcc.gnu.org/g:c6ef9f547084fdc8402ff18ae1f150acb23ffbfd

commit c6ef9f547084fdc8402ff18ae1f150acb23ffbfd
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Jun 25 00:23:35 2026 -0400

    Add ChangeLog.meissner and REVISION.
    
    2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * REVISION: New file for branch.
            * ChangeLog.meissner: New file.
    
    gcc/c-family/
    
            * ChangeLog.meissner: New file.
    
    gcc/c/
    
            * ChangeLog.meissner: New file.
    
    gcc/cp/
    
            * ChangeLog.meissner: New file.
    
    gcc/fortran/
    
            * ChangeLog.meissner: New file.
    
    gcc/testsuite/
    
            * ChangeLog.meissner: New file.
    
    libgcc/
    
            * ChangeLog.meissner: New file.

Diff:
---
 gcc/ChangeLog.meissner           | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/REVISION                     |  1 +
 gcc/c-family/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/c/ChangeLog.meissner         | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/fortran/ChangeLog.meissner   | 38 ++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog.meissner | 38 ++++++++++++++++++++++++++++++++++++++
 libgcc/ChangeLog.meissner        | 38 ++++++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog.meissner  | 38 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 305 insertions(+)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/REVISION b/gcc/REVISION
new file mode 100644
index 000000000000..819d60d1550c
--- /dev/null
+++ b/gcc/REVISION
@@ -0,0 +1 @@
+work250 branch
diff --git a/gcc/c-family/ChangeLog.meissner b/gcc/c-family/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/c-family/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/c/ChangeLog.meissner b/gcc/c/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/c/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/cp/ChangeLog.meissner b/gcc/cp/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/cp/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/fortran/ChangeLog.meissner b/gcc/fortran/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/fortran/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/gcc/testsuite/ChangeLog.meissner b/gcc/testsuite/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/gcc/testsuite/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libgcc/ChangeLog.meissner b/libgcc/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/libgcc/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch
diff --git a/libstdc++-v3/ChangeLog.meissner b/libstdc++-v3/ChangeLog.meissner
new file mode 100644
index 000000000000..a3fc4a5b83bf
--- /dev/null
+++ b/libstdc++-v3/ChangeLog.meissner
@@ -0,0 +1,38 @@
+==================== Branch work250, baseline ====================
+
+2026-06-25   Michael Meissner  <meissner@linux.ibm.com>
+
+Add ChangeLog.meissner and REVISION.
+
+2026-06-25  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* REVISION: New file for branch.
+	* ChangeLog.meissner: New file.
+
+gcc/c-family/
+
+	* ChangeLog.meissner: New file.
+
+gcc/c/
+
+	* ChangeLog.meissner: New file.
+
+gcc/cp/
+
+	* ChangeLog.meissner: New file.
+
+gcc/fortran/
+
+	* ChangeLog.meissner: New file.
+
+gcc/testsuite/
+
+	* ChangeLog.meissner: New file.
+
+libgcc/
+
+	* ChangeLog.meissner: New file.
+
+	Clone branch

From jakub@gcc.gnu.org  Thu Jun 25 09:08:09 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 25 Jun 2026 09:08:09 +0000 (GMT)
Subject: [gcc r17-1838] libstdc++: Fix up bits/std.cc symlink installation
Message-ID: <20260625090809.EAFD84BA2E21@sourceware.org>

https://gcc.gnu.org/g:9274edef95ab1b74b82f4a9cf14baa9004e03c0d

commit r17-1838-g9274edef95ab1b74b82f4a9cf14baa9004e03c0d
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Jun 25 11:06:37 2026 +0200

    libstdc++: Fix up bits/std.cc symlink installation
    
    >       * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
    >       without abspath make function.
    >       (stamp-modules-bits): Likewise.
    >       * src/c++23/Makefile.in: Rebuilt.
    
    This change broke various module tests (and got backported even to 15 :( ).
    I'm using objdir as a subdirectory of the gcc tree, so ../configure ...
    
    > @@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
    >  # Also put the interface units in the build-includes bits directory.
    >  stamp-modules-bits: $(includebits_DATA)
    >       @-mkdir -p $(top_builddir)/include/bits
    > -     -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
    > +     -for f in $(includebits_DATA); do \
    > +       $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
    > +     done 2>/dev/null
    >       @$(STAMP) $@
    >
    >  all-local: stamp-module-manifest stamp-modules-bits
    
    Before this change, the
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/include/bits
    std.cc symlink used to point to
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/src/c++23/std.cc
    Now it points to
    /home/jakub/src/gcc/obj40/x86_64-pc-linux-g~-v3/../../../libstdc++-v3/src/c++23/std.cc
    which doesn't exist, the source directory only has std.cc.in file from which
    the std.cc file is generated in the build directory.
    
    The following patch fixes it by using abs_builddir instead of abs_srcdir.
    
    Fixes up
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 (test for excess errors)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std (gcm.cache/std.gcm)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std.compat (gcm.cache/std.compat.gcm)
    -FAIL: g++.dg/plugin/std-module-exports-c++20.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++23.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++26.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    
    2026-06-25  Jakub Jelinek  <jakub@redhat.com>
    
            * src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
            of abs_srcdir.
            * src/c++23/Makefile.in: Regenerate.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 2 +-
 libstdc++-v3/src/c++23/Makefile.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index a1acf3eb5b4a..92691c502a94 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -58,7 +58,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@
 
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index c1407d250b1d..0ce93f812d25 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -866,7 +866,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@

From jakub@gcc.gnu.org  Thu Jun 25 09:10:52 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 25 Jun 2026 09:10:52 +0000 (GMT)
Subject: [gcc r16-9171] libstdc++: Fix up bits/std.cc symlink installation
Message-ID: <20260625091052.E873D4BA540B@sourceware.org>

https://gcc.gnu.org/g:4e03491b401dce0658543dd90524ddb92063836e

commit r16-9171-g4e03491b401dce0658543dd90524ddb92063836e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Jun 25 11:06:37 2026 +0200

    libstdc++: Fix up bits/std.cc symlink installation
    
    >       * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
    >       without abspath make function.
    >       (stamp-modules-bits): Likewise.
    >       * src/c++23/Makefile.in: Rebuilt.
    
    This change broke various module tests (and got backported even to 15 :( ).
    I'm using objdir as a subdirectory of the gcc tree, so ../configure ...
    
    > @@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
    >  # Also put the interface units in the build-includes bits directory.
    >  stamp-modules-bits: $(includebits_DATA)
    >       @-mkdir -p $(top_builddir)/include/bits
    > -     -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
    > +     -for f in $(includebits_DATA); do \
    > +       $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
    > +     done 2>/dev/null
    >       @$(STAMP) $@
    >
    >  all-local: stamp-module-manifest stamp-modules-bits
    
    Before this change, the
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/include/bits
    std.cc symlink used to point to
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/src/c++23/std.cc
    Now it points to
    /home/jakub/src/gcc/obj40/x86_64-pc-linux-g~-v3/../../../libstdc++-v3/src/c++23/std.cc
    which doesn't exist, the source directory only has std.cc.in file from which
    the std.cc file is generated in the build directory.
    
    The following patch fixes it by using abs_builddir instead of abs_srcdir.
    
    Fixes up
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 (test for excess errors)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std (gcm.cache/std.gcm)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std.compat (gcm.cache/std.compat.gcm)
    -FAIL: g++.dg/plugin/std-module-exports-c++20.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++23.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++26.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    
    2026-06-25  Jakub Jelinek  <jakub@redhat.com>
    
            * src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
            of abs_srcdir.
            * src/c++23/Makefile.in: Regenerate.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 9274edef95ab1b74b82f4a9cf14baa9004e03c0d)

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 2 +-
 libstdc++-v3/src/c++23/Makefile.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index a1acf3eb5b4a..92691c502a94 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -58,7 +58,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@
 
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index c1407d250b1d..0ce93f812d25 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -866,7 +866,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@

From jakub@gcc.gnu.org  Thu Jun 25 09:15:19 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Thu, 25 Jun 2026 09:15:19 +0000 (GMT)
Subject: [gcc r15-11318] libstdc++: Fix up bits/std.cc symlink installation
Message-ID: <20260625091519.DF3514BA2E11@sourceware.org>

https://gcc.gnu.org/g:cd73c738b2cf1b0a42a52e0838c06b24f0f514df

commit r15-11318-gcd73c738b2cf1b0a42a52e0838c06b24f0f514df
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Jun 25 11:06:37 2026 +0200

    libstdc++: Fix up bits/std.cc symlink installation
    
    >       * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite
    >       without abspath make function.
    >       (stamp-modules-bits): Likewise.
    >       * src/c++23/Makefile.in: Rebuilt.
    
    This change broke various module tests (and got backported even to 15 :( ).
    I'm using objdir as a subdirectory of the gcc tree, so ../configure ...
    
    > @@ -57,7 +57,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
    >  # Also put the interface units in the build-includes bits directory.
    >  stamp-modules-bits: $(includebits_DATA)
    >       @-mkdir -p $(top_builddir)/include/bits
    > -     -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null
    > +     -for f in $(includebits_DATA); do \
    > +       $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
    > +     done 2>/dev/null
    >       @$(STAMP) $@
    >
    >  all-local: stamp-module-manifest stamp-modules-bits
    
    Before this change, the
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/include/bits
    std.cc symlink used to point to
    /home/jakub/src/gcc/obj38/x86_64-pc-linux-gnu/libstdc++-v3/src/c++23/std.cc
    Now it points to
    /home/jakub/src/gcc/obj40/x86_64-pc-linux-g~-v3/../../../libstdc++-v3/src/c++23/std.cc
    which doesn't exist, the source directory only has std.cc.in file from which
    the std.cc file is generated in the build directory.
    
    The following patch fixes it by using abs_builddir instead of abs_srcdir.
    
    Fixes up
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 (test for excess errors)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std (gcm.cache/std.gcm)
    -FAIL: g++.dg/modules/compile-std1.C -std=c++29 module-cmi std.compat (gcm.cache/std.compat.gcm)
    -FAIL: g++.dg/plugin/std-module-exports-c++20.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++23.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    -FAIL: g++.dg/plugin/std-module-exports-c++26.C -fplugin=./std_module_exports_plugin.so (test for excess errors)
    
    2026-06-25  Jakub Jelinek  <jakub@redhat.com>
    
            * src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
            of abs_srcdir.
            * src/c++23/Makefile.in: Regenerate.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 9274edef95ab1b74b82f4a9cf14baa9004e03c0d)

Diff:
---
 libstdc++-v3/src/c++23/Makefile.am | 2 +-
 libstdc++-v3/src/c++23/Makefile.in | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am
index bd7c9f65907e..0a1a9d7b1535 100644
--- a/libstdc++-v3/src/c++23/Makefile.am
+++ b/libstdc++-v3/src/c++23/Makefile.am
@@ -55,7 +55,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@
 
diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in
index bd603fd1adfd..dc4feb701f9e 100644
--- a/libstdc++-v3/src/c++23/Makefile.in
+++ b/libstdc++-v3/src/c++23/Makefile.in
@@ -848,7 +848,7 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in
 stamp-modules-bits: $(includebits_DATA)
 	@-mkdir -p $(top_builddir)/include/bits
 	-for f in $(includebits_DATA); do \
-	  $(LN_S) $(abs_srcdir)/$$f $(top_builddir)/include/bits; \
+	  $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \
 	done 2>/dev/null
 	@$(STAMP) $@

From redi@gcc.gnu.org  Thu Jun 25 11:25:13 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 25 Jun 2026 11:25:13 +0000 (GMT)
Subject: [gcc r17-1846] libstdc++: Workaround legacy iconv signature [PR125956]
Message-ID: <20260625112513.A71F84BA2E08@sourceware.org>

https://gcc.gnu.org/g:83f0ad40a472d98bf1ed38b7d1c4865fdcb5e068

commit r17-1846-g83f0ad40a472d98bf1ed38b7d1c4865fdcb5e068
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jun 24 16:56:25 2026 +0100

    libstdc++: Workaround legacy iconv signature [PR125956]
    
    The signature of iconv in SUSv2 and legacy systems used const char** for
    the second parameter. We already have a workaround for this in the
    <ext/codecvt_specializations.h> header, but were not handling this when
    using iconv in src/c++20/format.cc.
    
    Define a concept to check that we can call iconv with a char** and then
    use that to decide which type we cast the input pointer to.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/125956
            * src/c++20/format.cc [_GLIBCXX_HAVE_ICONV] (iconv_input): New
            concept.
            (__encoding::conv) [_GLIBCXX_HAVE_ICONV]: Use iconv_input to
            decide which type to cast the input pointer to.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/src/c++20/format.cc | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++20/format.cc b/libstdc++-v3/src/c++20/format.cc
index 6967d53259da..719d019bc91f 100644
--- a/libstdc++-v3/src/c++20/format.cc
+++ b/libstdc++-v3/src/c++20/format.cc
@@ -58,6 +58,15 @@ struct mutex
 };
 #endif
 
+#ifdef _GLIBCXX_HAVE_ICONV
+// Detect whether type T* can be used as the second argument to iconv.
+// SUSv2 used 'const char**', but POSIX.1-2003 uses 'char**'.
+template<typename T>
+  concept iconv_input = requires (::iconv_t cd, T in, size_t n, char** out) {
+    ::iconv(cd, &in, &n, out, &n);
+  };
+#endif
+
 // A non-standard locale::facet that caches the locale's std::text_encoding
 // and an iconv descriptor for converting from that encoding to UTF-8.
 struct __encoding : locale::facet
@@ -111,8 +120,9 @@ struct __encoding : locale::facet
     bool done = false;
 
     auto overwrite = [&](char* p, size_t n) {
+      using input_t = __conditional_t<iconv_input<char*>, char*, const char*>;
       auto inbytes
-	= const_cast<char*>(input.data()) + input.size() - inbytesleft;
+	= const_cast<input_t>(input.data()) + input.size() - inbytesleft;
       char* outbytes = p + written;
       size_t outbytesleft = n - written;
       size_t res = ::iconv(_M_cd, &inbytes, &inbytesleft,

From pietro@gcc.gnu.org  Thu Jun 25 12:30:03 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:03 +0000 (GMT)
Subject: [gcc r17-1847] libstdc++: Update AC_HELP_STRING to AS_HELP_STRING
 [PR103459]
Message-ID: <20260625123003.8D5F04BA23CE@sourceware.org>

https://gcc.gnu.org/g:a2c18c31fbd508133e62df3d1f66d1dc825cdb2c

commit r17-1847-ga2c18c31fbd508133e62df3d1f66d1dc825cdb2c
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AC_HELP_STRING to AS_HELP_STRING [PR103459]
    
    AC_HELP_STRING has been deprecated by Autoconf.  Update to
    AS_HELP_STRING.  No changes to generated files.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_EXPORT_INSTALL_INFO): Update
            AC_HELP_STRING to AS_HELP_STRING.
            (GLIBCXX_ENABLE): Likewise.
            (GLIBCXX_ENABLE_CLOCALE): Likewise.
            (GLIBCXX_ENABLE_HOSTED): Likewise.
            (GLIBCXX_ENABLE_VERBOSE): Likewise.
            (GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
            (GLIBCXX_EMERGENCY_EH_ALLOC): Likewise.
            (GLIBCXX_ZONEINFO_DIR): Likewise.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/acinclude.m4 | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index f8899119d18d..6a06464d0411 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -70,19 +70,19 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [
   # We use these options to decide which functions to include.  They are
   # set from the top level.
   AC_ARG_WITH([target-subdir],
-    AC_HELP_STRING([--with-target-subdir=SUBDIR],
+    AS_HELP_STRING([--with-target-subdir=SUBDIR],
 		   [configuring in a subdirectory]))
 
   AC_ARG_WITH([cross-host],
-    AC_HELP_STRING([--with-cross-host=HOST],
+    AS_HELP_STRING([--with-cross-host=HOST],
 		   [configuring with a cross compiler]))
 
   AC_ARG_WITH([newlib],
-    AC_HELP_STRING([--with-newlib],
+    AS_HELP_STRING([--with-newlib],
 		   [assume newlib as a system C library]))
 
   AC_ARG_WITH([picolibc],
-    AC_HELP_STRING([--with-picolibc],
+    AS_HELP_STRING([--with-picolibc],
 		   [assume picolibc as a system C library]))
 
   # Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't
@@ -741,7 +741,7 @@ AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
 
   AC_MSG_CHECKING([for gxx-include-dir])
   AC_ARG_WITH([gxx-include-dir],
-    AC_HELP_STRING([--with-gxx-include-dir=DIR],
+    AS_HELP_STRING([--with-gxx-include-dir=DIR],
 		   [installation directory for include files]),
     [case "$withval" in
       yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;;
@@ -753,7 +753,7 @@ AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
 
   AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
   AC_ARG_ENABLE([version-specific-runtime-libs],
-    AC_HELP_STRING([--enable-version-specific-runtime-libs],
+    AS_HELP_STRING([--enable-version-specific-runtime-libs],
 		   [Specify that runtime libraries should be installed in a compiler-specific directory]),
     [case "$enableval" in
       yes) version_specific_libs=yes ;;
@@ -835,7 +835,7 @@ dnl documentation.
 dnl
 m4_define([GLIBCXX_ENABLE],[dnl
 m4_define([_g_switch],[--enable-$1])dnl
-m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl
+m4_define([_g_help],[AS_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl
  AC_ARG_ENABLE([$1],m4_dquote(_g_help),
   m4_bmatch([$5],
    [^permit ],
@@ -2792,7 +2792,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
   # default to on for easier handling.
   USE_NLS=no
   AC_ARG_ENABLE(nls,
-    AC_HELP_STRING([--enable-nls],[use Native Language Support (default)]),
+    AS_HELP_STRING([--enable-nls],[use Native Language Support (default)]),
     [],
     [enable_nls=yes])
 
@@ -3373,7 +3373,7 @@ dnl  _GLIBCXX_HOSTED   (always defined, either to 1 or 0)
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
   AC_ARG_ENABLE([hosted-libstdcxx],
-    AC_HELP_STRING([--disable-hosted-libstdcxx],
+    AS_HELP_STRING([--disable-hosted-libstdcxx],
 		   [only build freestanding C++ runtime support]),
     [enable_hosted_libstdcxx_was_given=yes],
     [case "$host" in
@@ -3391,7 +3391,7 @@ AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
   # Because most configure args are --enable-libstdcxx-foo add an alias
   # of that form for --enable-hosted-libstdcxx.
   AC_ARG_ENABLE([libstdcxx-hosted],
-    AC_HELP_STRING([--disable-libstdcxx-hosted],
+    AS_HELP_STRING([--disable-libstdcxx-hosted],
 		   [alias for --disable-hosted-libstdcxx]),
     [if test "$enable_hosted_libstdcxx_was_given" = yes; then
       if test "$enable_hosted_libstdcxx" != "$enableval"; then
@@ -3435,7 +3435,7 @@ dnl  _GLIBCXX_VERBOSE (always defined, either to 1 or 0)
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_VERBOSE], [
   AC_ARG_ENABLE([libstdcxx-verbose],
-    AC_HELP_STRING([--disable-libstdcxx-verbose],
+    AS_HELP_STRING([--disable-libstdcxx-verbose],
 		   [disable termination messages to standard error]),,
 		   [enable_libstdcxx_verbose=yes])
   if test x"$enable_libstdcxx_verbose" = xyes; then
@@ -3867,7 +3867,7 @@ dnl
 AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [
 
   AC_ARG_WITH([libstdcxx-lock-policy],
-    AC_HELP_STRING([--with-libstdcxx-lock-policy={atomic,mutex,auto}],
+    AS_HELP_STRING([--with-libstdcxx-lock-policy={atomic,mutex,auto}],
       [synchronization policy for shared_ptr reference counting [default=auto]]),
               [libstdcxx_atomic_lock_policy=$withval],
               [libstdcxx_atomic_lock_policy=auto])
@@ -5527,7 +5527,7 @@ AC_DEFUN([GLIBCXX_EMERGENCY_EH_ALLOC], [
   eh_pool_static=
   eh_pool_nobjs=
   AC_ARG_ENABLE([libstdcxx-static-eh-pool],
-    AC_HELP_STRING([--enable-libstdcxx-static-eh-pool],
+    AS_HELP_STRING([--enable-libstdcxx-static-eh-pool],
 		   [use a fixed-size static buffer for allocating exceptions if malloc fails]),
     [if test "${enableval}" = yes; then
       eh_pool_static="-D_GLIBCXX_EH_POOL_STATIC"
@@ -5535,7 +5535,7 @@ AC_DEFUN([GLIBCXX_EMERGENCY_EH_ALLOC], [
     fi],)
 
   AC_ARG_WITH([libstdcxx-eh-pool-obj-count],
-    AC_HELP_STRING([--with-libstdcxx-eh-pool-obj-count],
+    AS_HELP_STRING([--with-libstdcxx-eh-pool-obj-count],
 		   [the number of exceptions that can be allocated from the pool if malloc fails]),
     [if test "${withval}" -ge 0 2>/dev/null; then
       eh_pool_obj_count="-D_GLIBCXX_EH_POOL_NOBJS=${withval}"
@@ -5566,7 +5566,7 @@ dnl    static copy of the tzdata.zi file.
 dnl
 AC_DEFUN([GLIBCXX_ZONEINFO_DIR], [
   AC_ARG_WITH([libstdcxx-zoneinfo],
-    AC_HELP_STRING([--with-libstdcxx-zoneinfo],
+    AS_HELP_STRING([--with-libstdcxx-zoneinfo],
 		   [the location to use for tzdata]),
     [],[with_libstdcxx_zoneinfo=yes])

From pietro@gcc.gnu.org  Thu Jun 25 12:30:08 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:08 +0000 (GMT)
Subject: [gcc r17-1848] libstdc++: Update AC_TRY_LINK to AC_LINK_IFELSE
 [PR103459]
Message-ID: <20260625123008.CF97A4BA23EA@sourceware.org>

https://gcc.gnu.org/g:7626f7250fd05dab18f4f6a05a92571855f68241

commit r17-1848-g7626f7250fd05dab18f4f6a05a92571855f68241
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AC_TRY_LINK to AC_LINK_IFELSE [PR103459]
    
    AC_TRY_LINK has been deprecated by Autoconf.  Update to
    AC_LINK_IFELSE.  No changes to generated files.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Update
            AC_TRY_LINK to AC_LINK_IFELSE.
            (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
            (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
            (GLIBCXX_ENABLE_BACKTRACE): Likewise.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/acinclude.m4 | 52 +++++++++++++++++++++++++----------------------
 1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 6a06464d0411..7afd6a50c969 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -254,9 +254,9 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
 
     # Check for -Wl,--gc-sections
     AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
-    AC_TRY_LINK([ int one(void) { return 1; }
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[ int one(void) { return 1; }
      int two(void) { return 2; }
-	], [ two(); ] , [ac_gcsections=yes], [ac_gcsections=no])
+	]], [[ two(); ]])] , [ac_gcsections=yes], [ac_gcsections=no])
     if test "$ac_gcsections" = "yes"; then
       rm -f conftest.c
       touch conftest.c
@@ -1862,41 +1862,41 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
 
     if test x"$ac_has_unistd_h" = x"yes"; then
       AC_MSG_CHECKING([for monotonic clock])
-      AC_TRY_LINK(
-	[#include <unistd.h>
+      AC_LINK_IFELSE([AC_LANG_PROGRAM(
+	[[#include <unistd.h>
 	 #include <time.h>
-	],
-	[#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
+	]],
+	[[#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
 	  timespec tp;
 	 #endif
 	  clock_gettime(CLOCK_MONOTONIC, &tp);
-	], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no])
+	]])], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no])
 
       AC_MSG_RESULT($ac_has_clock_monotonic)
 
       AC_MSG_CHECKING([for realtime clock])
-      AC_TRY_LINK(
-	[#include <unistd.h>
+      AC_LINK_IFELSE([AC_LANG_PROGRAM(
+	[[#include <unistd.h>
 	 #include <time.h>
-	],
-	[#if _POSIX_TIMERS > 0
+	]],
+	[[#if _POSIX_TIMERS > 0
 	  timespec tp;
 	 #endif
 	  clock_gettime(CLOCK_REALTIME, &tp);
-	], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no])
+	]])], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no])
 
       AC_MSG_RESULT($ac_has_clock_realtime)
 
       AC_MSG_CHECKING([for nanosleep])
-      AC_TRY_LINK(
-	[#include <unistd.h>
+      AC_LINK_IFELSE([AC_LANG_PROGRAM(
+	[[#include <unistd.h>
 	 #include <time.h>
-	],
-	[#if _POSIX_TIMERS > 0
+	]],
+	[[#if _POSIX_TIMERS > 0
 	  timespec tp;
 	 #endif
 	  nanosleep(&tp, 0);
-	], [ac_has_nanosleep=yes], [ac_has_nanosleep=no])
+	]])], [ac_has_nanosleep=yes], [ac_has_nanosleep=no])
 
       AC_MSG_RESULT($ac_has_nanosleep)
     fi
@@ -3775,9 +3775,9 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
 
     AC_CACHE_CHECK([for atomic builtins for _Atomic_word],
 	glibcxx_cv_atomic_word,
-	[AC_TRY_LINK([#include "atomic_word.h"],
-		     [_Atomic_word a = 0, b;
-		      b = __atomic_fetch_add(&a, 1, __ATOMIC_ACQ_REL);],
+	[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "atomic_word.h"]],
+		     [[_Atomic_word a = 0, b;
+		      b = __atomic_fetch_add(&a, 1, __ATOMIC_ACQ_REL);]])],
 		     [glibcxx_cv_atomic_word=yes],
 		     [glibcxx_cv_atomic_word=no])])
 
@@ -4042,7 +4042,11 @@ if test $enable_symvers = gnu ||
   AC_MSG_CHECKING([for shared libgcc])
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=' -lgcc_s'
-  AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes, glibcxx_shared_libgcc=no)
+  AC_LINK_IFELSE([AC_LANG_PROGRAM(
+    [[]],
+    [[return 0;]])],
+    [glibcxx_shared_libgcc=yes],
+    [glibcxx_shared_libgcc=no])
   CFLAGS="$ac_save_CFLAGS"
   if test $glibcxx_shared_libgcc = no; then
     cat > conftest.c <<EOF
@@ -4057,7 +4061,7 @@ changequote([,])dnl
     rm -f conftest.c conftest.so
     if test x${glibcxx_libgcc_s_suffix+set} = xset; then
       CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix"
-      AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes)
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])], [glibcxx_shared_libgcc=yes])
       CFLAGS="$ac_save_CFLAGS"
     fi
   fi
@@ -5286,7 +5290,7 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [
 
     AC_CACHE_CHECK([for atomic builtins for libbacktrace],
 	glibcxx_cv_libbacktrace_atomics,
-	[AC_TRY_LINK([], [
+	[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
 	    int i = 0;
 	    int* p = &i;
 	    __SIZE_TYPE__ s = 0;
@@ -5300,7 +5304,7 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [
 	    __atomic_store_n(&s, s, __ATOMIC_RELEASE);
 	    // backtrace_atomic_store_int
 	    __atomic_store_n(&i, i, __ATOMIC_RELEASE);
-			 ],
+			 ]])],
 		     [glibcxx_cv_libbacktrace_atomics=yes],
 		     [glibcxx_cv_libbacktrace_atomics=no])])

From pietro@gcc.gnu.org  Thu Jun 25 12:30:14 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:14 +0000 (GMT)
Subject: [gcc r17-1849] libstdc++: Update AC_TRY_COMPILE to AC_COMPILE_IFELSE
 [PR103459]
Message-ID: <20260625123014.2DBF94BA23C7@sourceware.org>

https://gcc.gnu.org/g:3df443cd50832d915246d65d4bce883442b8e2fd

commit r17-1849-g3df443cd50832d915246d65d4bce883442b8e2fd
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AC_TRY_COMPILE to AC_COMPILE_IFELSE [PR103459]
    
    AC_TRY_COMPILE has been deprecated by Autoconf.  Update to
    AC_COMPILE_IFELSE.  Delete unused macro
    GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Update
            AC_TRY_COMPILE to AC_COMPILE_IFELSE.
            (GLIBCXX_CHECK_SETRLIMIT_ancilliary): Likewise.
            (GLIBCXX_CHECK_SETRLIMIT): Likewise.
            (GLIBCXX_ENABLE_C99): Likewise.
            (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
            (GLIBCXX_CHECK_C99_TR1): Likewise.
            (GLIBCXX_CHECK_UCHAR_H): Likewise.
            (GLIBCXX_ENABLE_CLOCALE): Likewise.
            (GLIBCXX_ENABLE_WCHAR_T): Likewise.
            (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
            (GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
            (GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY): Likewise.
            (GLIBCXX_ENABLE_SYMVERS): Likewise.
            (GLIBCXX_CHECK_GTHREADS): Likewise.
            (GLIBCXX_CHECK_X86_RDRAND): Likewise.
            (GLIBCXX_CHECK_X86_RDSEED): Likewise.
            (GLIBCXX_CHECK_SIZE_T_MANGLING): Likewise.
            (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Likewise.
            (GLIBCXX_CHECK_ALIGNAS_CACHELINE): Likewise.
            (GLIBCXX_CHECK_INIT_PRIORITY): Likewise.
            (GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES): Likewise.
            (GLIBCXX_CHECK_TEXT_ENCODING): Likewise.
            (GLIBCXX_CHECK_DEBUGGING): Likewise.
            (GLIBCXX_CHECK_STDIO_LOCKING): Likewise.
            * configure: Regenerate.
            * configure.ac: Update AC_TRY_COMPILE to AC_COMPILE_IFELSE.
            * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Likewise.
            * linkage.m4 (GLIBCXX_CHECK_MATH_DECL_1): Likewise.
            (GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1): Likewise.
            (GLIBCXX_CHECK_MATH_DECL_2): Likewise.
            (GLIBCXX_CHECK_MATH_DECL_3): Likewise.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0): Delete.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1): Update
            AC_TRY_COMPILE to AC_COMPILE_IFELSE.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2): Likewise.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3): Likewise.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/acinclude.m4   | 403 ++++++++++++++++++++++----------------------
 libstdc++-v3/configure      |  21 +--
 libstdc++-v3/configure.ac   |  20 +--
 libstdc++-v3/crossconfig.m4 |   6 +-
 libstdc++-v3/linkage.m4     |  59 ++-----
 5 files changed, 242 insertions(+), 267 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 7afd6a50c969..878921992594 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -147,7 +147,9 @@ AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
   # Check for -ffunction-sections -fdata-sections
   AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
   CXXFLAGS='-g -Werror -ffunction-sections -fdata-sections'
-  AC_TRY_COMPILE([int foo; void bar() { };],, [ac_fdsections=yes], [ac_fdsections=no])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo; void bar() { };]],[[]])],
+    [ac_fdsections=yes],
+    [ac_fdsections=no])
   if test "$ac_test_CXXFLAGS" = set; then
     CXXFLAGS="$ac_save_CXXFLAGS"
   else
@@ -323,12 +325,12 @@ dnl  various HAVE_LIMIT_* for individual limit names
 dnl
 AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [
   AC_MSG_CHECKING([for RLIMIT_$1])
-  AC_TRY_COMPILE(
-    [#include <unistd.h>
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+    [[#include <unistd.h>
      #include <sys/time.h>
      #include <sys/resource.h>
-    ],
-    [ int f = RLIMIT_$1 ; ],
+    ]],
+    [[ int f = RLIMIT_$1 ; ]])],
     [glibcxx_mresult=1], [glibcxx_mresult=0])
   AC_DEFINE_UNQUOTED(HAVE_LIMIT_$1, $glibcxx_mresult,
 		     [Only used in build directory testsuite_hooks.h.])
@@ -356,13 +358,13 @@ AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
     # Check for rlimit, setrlimit.
     AC_CACHE_CHECK([for testsuite resource limits support],
       glibcxx_cv_setrlimit, [
-      AC_TRY_COMPILE(
-	[#include <unistd.h>
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+	[[#include <unistd.h>
 	 #include <sys/time.h>
 	 #include <sys/resource.h>
-	],
-	[struct rlimit r;
-	 setrlimit(0, &r);],
+	]],
+	[[struct rlimit r;
+	 setrlimit(0, &r);]])],
 	[glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no])
     ])
 
@@ -1048,38 +1050,38 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
        test x"$ac_has_wctype_h" = xyes; then
       AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++98],
 	glibcxx_cv_c99_wchar_cxx98, [
-        AC_TRY_COMPILE([#include <wchar.h>
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
           namespace test
           {
             using ::wcstold;
             using ::wcstoll;
             using ::wcstoull;
           }
-        ], [], [glibcxx_cv_c99_wchar_cxx98=yes], [glibcxx_cv_c99_wchar_cxx98=no])
+        ]], [[]])], [glibcxx_cv_c99_wchar_cxx98=yes], [glibcxx_cv_c99_wchar_cxx98=no])
       ])
 
       # Checks for wide character functions that may not be present.
       # Injection of these is wrapped with guard macros.
       # NB: only put functions here, instead of immediately above, if
       # absolutely necessary.
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vfwscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vfwscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vswscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vswscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vwscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vwscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::wcstof; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::wcstof; }]], [[]])],
         [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], [])
 
-      AC_TRY_COMPILE([#include <wctype.h>],
-        [wint_t t; int i = iswblank(t);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wctype.h>]],
+        [[wint_t t; int i = iswblank(t);]])],
         [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], [])
 
       if test x"$glibcxx_cv_c99_wchar_cxx98" = x"yes"; then
@@ -1130,10 +1132,10 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     # Check for the existence of <stdint.h> types.
     AC_CACHE_CHECK([for ISO C99 support in <stdint.h> for C++11],
     glibcxx_cv_c99_stdint, [
-    AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define __STDC_LIMIT_MACROS
 		    #define __STDC_CONSTANT_MACROS
-		    #include <stdint.h>],
-		   [typedef int8_t          my_int8_t;
+		    #include <stdint.h>]],
+		   [[typedef int8_t          my_int8_t;
 		    my_int8_t               i8 = INT8_MIN;
 		    i8 = INT8_MAX;
 		    typedef int16_t         my_int16_t;
@@ -1217,8 +1219,8 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
 		    typedef uintptr_t       my_uintptr_t;
 		    my_uintptr_t            uip = UINTPTR_MAX;
 		    uip = UINTPTR_MAX;
-		   ],[glibcxx_cv_c99_stdint=yes],
-		     [glibcxx_cv_c99_stdint=no])
+		   ]])],[glibcxx_cv_c99_stdint=yes],
+		        [glibcxx_cv_c99_stdint=no])
     ])
     if test x"$glibcxx_cv_c99_stdint" = x"yes"; then
       AC_DEFINE(_GLIBCXX_USE_C99_STDINT, 1,
@@ -1231,15 +1233,15 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     ac_c99_inttypes=no;
     if test x"$glibcxx_cv_c99_stdint" = x"yes"; then
       AC_MSG_CHECKING([for ISO C99 support for C++11 in <inttypes.h>])
-      AC_TRY_COMPILE([#include <inttypes.h>],
-		     [intmax_t i, numer, denom, base;
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <inttypes.h>]],
+		     [[intmax_t i, numer, denom, base;
 		      const char* s;
 		      char** endptr;
 		      intmax_t ret = imaxabs(i);
 		      imaxdiv_t dret = imaxdiv(numer, denom);
 		      ret = strtoimax(s, endptr, base);
 		      uintmax_t uret = strtoumax(s, endptr, base);
-		     ],[ac_c99_inttypes=yes], [ac_c99_inttypes=no])
+		     ]])],[ac_c99_inttypes=yes], [ac_c99_inttypes=no])
       AC_MSG_RESULT($ac_c99_inttypes)
     fi
     if test x"$ac_c99_inttypes" = x"yes"; then
@@ -1253,14 +1255,14 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     ac_c99_inttypes_wchar_t=no;
     if test x"$glibcxx_cv_c99_stdint" = x"yes"; then
       AC_MSG_CHECKING([for wchar_t ISO C99 support for C++11 in <inttypes.h>])
-      AC_TRY_COMPILE([#include <inttypes.h>],
-		     [intmax_t base;
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <inttypes.h>]],
+		     [[intmax_t base;
 		      const wchar_t* s;
 		      wchar_t** endptr;
 		      intmax_t ret = wcstoimax(s, endptr, base);
 		      uintmax_t uret = wcstoumax(s, endptr, base);
-		     ],[ac_c99_inttypes_wchar_t=yes],
-		       [ac_c99_inttypes_wchar_t=no])
+		     ]])],[ac_c99_inttypes_wchar_t=yes],
+		          [ac_c99_inttypes_wchar_t=no])
       AC_MSG_RESULT($ac_c99_inttypes_wchar_t)
     fi
     if test x"$ac_c99_inttypes_wchar_t" = x"yes"; then
@@ -1300,11 +1302,11 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     # Check for the existence of <math.h> typedefs.
     AC_CACHE_CHECK([for ISO C99 float types for C++11 in <math.h>],
     glibcxx_cv_c99_flt_eval_types, [
-    AC_TRY_COMPILE([#include <math.h>],
-		   [// Types
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+		   [[// Types
 		    typedef double_t  my_double_t;
 		    typedef float_t   my_float_t;
-		   ],
+		   ]])],
 		   [glibcxx_cv_c99_flt_eval_types=yes],
 		   [glibcxx_cv_c99_flt_eval_types=no])
     ])
@@ -1317,8 +1319,8 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     # Check for the existence of <math.h> functions.
     AC_CACHE_CHECK([for ISO C99 function support for C++11 in <math.h>],
     glibcxx_cv_c99_math_funcs, [
-    AC_TRY_COMPILE([#include <math.h>],
-		   [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+		   [[
 		    // Hyperbolic
 		    acosh(0.0);
 		    acoshf(0.0f);
@@ -1435,7 +1437,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
 		    fma(0.0, 0.0, 0.0);
 		    fmaf(0.0f, 0.0f, 0.0f);
 		    fmal(0.0l, 0.0l, 0.0l);
-		   ],
+		   ]])],
 		   [glibcxx_cv_c99_math_funcs=yes],
 		   [glibcxx_cv_c99_math_funcs=no])
     ])
@@ -1448,14 +1450,14 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
 	darwin*)
 	  AC_CACHE_CHECK([for ISO C99 rounding functions in <math.h>],
 	    glibcxx_cv_c99_math_llround, [
-	    AC_TRY_COMPILE([#include <math.h>],
-		   [llrint(0.0);
+	    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+		   [[llrint(0.0);
 		    llrintf(0.0f);
 		    llrintl(0.0l);
 		    llround(0.0);
 		    llroundf(0.0f);
 		    llroundl(0.0l);
-		   ],
+		   ]])],
 		   [glibcxx_cv_c99_math_llround=yes],
 		   [glibcxx_cv_c99_math_llround=no])
 	    ])
@@ -1541,8 +1543,8 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     ac_c99_complex_arc=no;
     if test x"$ac_has_complex_h" = x"yes"; then
       AC_MSG_CHECKING([for ISO C99 support for inverse trig functions in <complex.h>])
-      AC_TRY_COMPILE([#include <complex.h>],
-		     [typedef __complex__ float float_type; float_type tmpf;
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <complex.h>]],
+		     [[typedef __complex__ float float_type; float_type tmpf;
 		      cacosf(tmpf);
 		      casinf(tmpf);
 		      catanf(tmpf);
@@ -1563,7 +1565,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
 		      cacoshl(tmpld);
 		      casinhl(tmpld);
 		      catanhl(tmpld);
-		     ],[ac_c99_complex_arc=yes], [ac_c99_complex_arc=no])
+		     ]])],[ac_c99_complex_arc=yes], [ac_c99_complex_arc=no])
     fi
     AC_MSG_RESULT($ac_c99_complex_arc)
     if test x"$ac_c99_complex_arc" = x"yes"; then
@@ -1629,38 +1631,38 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
        test x"$ac_has_wctype_h" = xyes; then
       AC_CACHE_CHECK([for ISO C99 support in <wchar.h> for C++11],
 	glibcxx_cv_c99_wchar_cxx11, [
-        AC_TRY_COMPILE([#include <wchar.h>
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
           namespace test
           {
             using ::wcstold;
             using ::wcstoll;
             using ::wcstoull;
           }
-        ], [], [glibcxx_cv_c99_wchar_cxx11=yes], [glibcxx_cv_c99_wchar_cxx11=no])
+        ]], [[]])], [glibcxx_cv_c99_wchar_cxx11=yes], [glibcxx_cv_c99_wchar_cxx11=no])
       ])
 
       # Checks for wide character functions that may not be present.
       # Injection of these is wrapped with guard macros.
       # NB: only put functions here, instead of immediately above, if
       # absolutely necessary.
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vfwscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vfwscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vswscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vswscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::vwscanf; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::vwscanf; }]], [[]])],
         [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], [])
 
-      AC_TRY_COMPILE([#include <wchar.h>
-        namespace test { using ::wcstof; }], [],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
+        namespace test { using ::wcstof; }]], [[]])],
         [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], [])
 
-      AC_TRY_COMPILE([#include <wctype.h>],
-        [wint_t t; int i = iswblank(t);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wctype.h>]],
+        [[wint_t t; int i = iswblank(t);]])],
         [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], [])
 
       if test x"$glibcxx_cv_c99_wchar_cxx11" = x"yes"; then
@@ -1673,12 +1675,12 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     # Check for the existence of <ctype.h> functions.
     AC_CACHE_CHECK([for ISO C99 support for C++11 in <ctype.h>],
     glibcxx_cv_c99_ctype, [
-    AC_TRY_COMPILE([#include <ctype.h>],
-		   [int ch;
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <ctype.h>]],
+		   [[int ch;
 		    int ret;
 		    ret = isblank(ch);
-		   ],[glibcxx_cv_c99_ctype=yes],
-		     [glibcxx_cv_c99_ctype=no])
+		   ]])],[glibcxx_cv_c99_ctype=yes],
+		        [glibcxx_cv_c99_ctype=no])
     ])
     if test x"$glibcxx_cv_c99_ctype" = x"yes"; then
       AC_DEFINE(_GLIBCXX_USE_C99_CTYPE, 1,
@@ -1691,8 +1693,8 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     ac_c99_fenv=no;
     if test x"$ac_has_fenv_h" = x"yes"; then
       AC_MSG_CHECKING([for ISO C99 support for C++11 in <fenv.h>])
-      AC_TRY_COMPILE([#include <fenv.h>],
-		     [int except, mode;
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <fenv.h>]],
+		     [[int except, mode;
 		      fexcept_t* pflag;
 		      fenv_t* penv;
 		      int ret;
@@ -1707,7 +1709,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
 		      ret = feholdexcept(penv);
 		      ret = fesetenv(penv);
 		      ret = feupdateenv(penv);
-		     ],[ac_c99_fenv=yes], [ac_c99_fenv=no])
+		     ]])],[ac_c99_fenv=yes], [ac_c99_fenv=no])
       AC_MSG_RESULT($ac_c99_fenv)
     fi
     if test x"$ac_c99_fenv" = x"yes"; then
@@ -1906,17 +1908,17 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
     case ${target_os} in
       linux* | uclinux*)
 	AC_MSG_CHECKING([for clock_gettime syscall])
-	AC_TRY_COMPILE(
-	  [#include <unistd.h>
+	AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+	  [[#include <unistd.h>
 	   #include <time.h>
 	   #include <sys/syscall.h>
-	  ],
-	  [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
+	  ]],
+	  [[#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
 	    timespec tp;
 	   #endif
 	   syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp);
 	   syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp);
-	  ], [ac_has_clock_gettime_syscall=yes], [ac_has_clock_gettime_syscall=no])
+	  ]])], [ac_has_clock_gettime_syscall=yes], [ac_has_clock_gettime_syscall=no])
 	AC_MSG_RESULT($ac_has_clock_gettime_syscall)
 	if test x"$ac_has_clock_gettime_syscall" = x"yes"; then
 	  AC_DEFINE(_GLIBCXX_USE_CLOCK_GETTIME_SYSCALL, 1,
@@ -1924,11 +1926,11 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
 	  ac_has_clock_monotonic=yes
 	  ac_has_clock_realtime=yes
 	  AC_MSG_CHECKING([for struct timespec that matches syscall])
-	  AC_TRY_COMPILE(
-	    [#include <time.h>
+	  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+	    [[#include <time.h>
 	     #include <sys/syscall.h>
-	    ],
-	    [#ifdef SYS_clock_gettime64
+	    ]],
+	    [[#ifdef SYS_clock_gettime64
 	     #if SYS_clock_gettime64 != SYS_clock_gettime
 	     // We need to use SYS_clock_gettime and libc appears to
 	     // also know about the SYS_clock_gettime64 syscall.
@@ -1937,7 +1939,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
 	       "struct timespec must be compatible with SYS_clock_gettime");
 	     #endif
 	     #endif
-	    ],
+	    ]])],
 	    [ac_timespec_matches_syscall=yes],
 	    [ac_timespec_matches_syscall=no])
 	  AC_MSG_RESULT($ac_timespec_matches_syscall)
@@ -1971,17 +1973,17 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
       [Defined if Sleep exists.])
   else
       AC_MSG_CHECKING([for sleep])
-      AC_TRY_COMPILE([#include <unistd.h>],
-                     [sleep(1)],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
+                     [[sleep(1)]])],
                      [ac_has_sleep=yes],[ac_has_sleep=no])
       if test x"$ac_has_sleep" = x"yes"; then
         AC_DEFINE(HAVE_SLEEP,1, [Defined if sleep exists.])
       fi
       AC_MSG_RESULT($ac_has_sleep)
       AC_MSG_CHECKING([for usleep])
-      AC_TRY_COMPILE([#include <unistd.h>],
-                     [sleep(1);
-                      usleep(100);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
+                     [[sleep(1);
+                      usleep(100);]])],
                      [ac_has_usleep=yes],[ac_has_usleep=no])
       if test x"$ac_has_usleep" = x"yes"; then
         AC_DEFINE(HAVE_USLEEP,1, [Defined if usleep exists.])
@@ -2053,8 +2055,8 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   ac_c99_complex_tr1=no;
   if test x"$ac_has_complex_h" = x"yes"; then
     AC_MSG_CHECKING([for ISO C99 support to TR1 in <complex.h>])
-    AC_TRY_COMPILE([#include <complex.h>],
-		   [typedef __complex__ float float_type; float_type tmpf;
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <complex.h>]],
+		   [[typedef __complex__ float float_type; float_type tmpf;
 		    cacosf(tmpf);
 		    casinf(tmpf);
 		    catanf(tmpf);
@@ -2075,7 +2077,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
 		    cacoshl(tmpld);
 		    casinhl(tmpld);
 		    catanhl(tmpld);
-		   ],[ac_c99_complex_tr1=yes], [ac_c99_complex_tr1=no])
+		   ]])],[ac_c99_complex_tr1=yes], [ac_c99_complex_tr1=no])
   fi
   AC_MSG_RESULT($ac_c99_complex_tr1)
   if test x"$ac_c99_complex_tr1" = x"yes"; then
@@ -2088,12 +2090,12 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   # Check for the existence of <ctype.h> functions.
   AC_CACHE_CHECK([for ISO C99 support to TR1 in <ctype.h>],
   glibcxx_cv_c99_ctype_tr1, [
-  AC_TRY_COMPILE([#include <ctype.h>],
-		 [int ch;
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <ctype.h>]],
+		 [[int ch;
 		  int ret;
 		  ret = isblank(ch);
-		 ],[glibcxx_cv_c99_ctype_tr1=yes],
-		   [glibcxx_cv_c99_ctype_tr1=no])
+		 ]])],[glibcxx_cv_c99_ctype_tr1=yes],
+		      [glibcxx_cv_c99_ctype_tr1=no])
   ])
   if test x"$glibcxx_cv_c99_ctype_tr1" = x"yes"; then
     AC_DEFINE(_GLIBCXX_USE_C99_CTYPE_TR1, 1,
@@ -2106,8 +2108,8 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   ac_c99_fenv_tr1=no;
   if test x"$ac_has_fenv_h" = x"yes"; then
     AC_MSG_CHECKING([for ISO C99 support to TR1 in <fenv.h>])
-    AC_TRY_COMPILE([#include <fenv.h>],
-		   [int except, mode;
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <fenv.h>]],
+		   [[int except, mode;
 		    fexcept_t* pflag;
 		    fenv_t* penv;
 		    int ret;
@@ -2122,7 +2124,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
 		    ret = feholdexcept(penv);
 		    ret = fesetenv(penv);
 		    ret = feupdateenv(penv);
-		   ],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no])
+		   ]])],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no])
     AC_MSG_RESULT($ac_c99_fenv_tr1)
   fi
   if test x"$ac_c99_fenv_tr1" = x"yes"; then
@@ -2134,10 +2136,10 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   # Check for the existence of <stdint.h> types.
   AC_CACHE_CHECK([for ISO C99 support to TR1 in <stdint.h>],
   glibcxx_cv_c99_stdint_tr1, [
-  AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define __STDC_LIMIT_MACROS
 		  #define __STDC_CONSTANT_MACROS
-		  #include <stdint.h>],
-		 [typedef int8_t          my_int8_t;
+		  #include <stdint.h>]],
+		 [[typedef int8_t          my_int8_t;
 		  my_int8_t               i8 = INT8_MIN;
 		  i8 = INT8_MAX;
 		  typedef int16_t         my_int16_t;
@@ -2221,8 +2223,8 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
 		  typedef uintptr_t       my_uintptr_t;
 		  my_uintptr_t            uip = UINTPTR_MAX;
 		  uip = UINTPTR_MAX;
-		 ],[glibcxx_cv_c99_stdint_tr1=yes],
-		   [glibcxx_cv_c99_stdint_tr1=no])
+		 ]])],[glibcxx_cv_c99_stdint_tr1=yes],
+		      [glibcxx_cv_c99_stdint_tr1=no])
   ])
   if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
     AC_DEFINE(_GLIBCXX_USE_C99_STDINT_TR1, 1,
@@ -2233,8 +2235,8 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   # Check for the existence of <math.h> functions.
   AC_CACHE_CHECK([for ISO C99 support to TR1 in <math.h>],
   glibcxx_cv_c99_math_tr1, [
-  AC_TRY_COMPILE([#include <math.h>],
-		 [typedef double_t  my_double_t;
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+		 [[typedef double_t  my_double_t;
 		  typedef float_t   my_float_t;
 		  acosh(0.0);
 		  acoshf(0.0f);
@@ -2343,7 +2345,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
 		  trunc(0.0);
 		  truncf(0.0f);
 		  truncl(0.0l);
-		 ],[glibcxx_cv_c99_math_tr1=yes], [glibcxx_cv_c99_math_tr1=no])
+		 ]])],[glibcxx_cv_c99_math_tr1=yes], [glibcxx_cv_c99_math_tr1=no])
   ])
   if test x"$glibcxx_cv_c99_math_tr1" = x"yes"; then
     AC_DEFINE(_GLIBCXX_USE_C99_MATH_TR1, 1,
@@ -2356,15 +2358,15 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   ac_c99_inttypes_tr1=no;
   if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
     AC_MSG_CHECKING([for ISO C99 support to TR1 in <inttypes.h>])
-    AC_TRY_COMPILE([#include <inttypes.h>],
-		   [intmax_t i, numer, denom, base;
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <inttypes.h>]],
+		   [[intmax_t i, numer, denom, base;
 		    const char* s;
 		    char** endptr;
 		    intmax_t ret = imaxabs(i);
 		    imaxdiv_t dret = imaxdiv(numer, denom);
 		    ret = strtoimax(s, endptr, base);
 		    uintmax_t uret = strtoumax(s, endptr, base);
-		   ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no])
+		   ]])],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no])
     AC_MSG_RESULT($ac_c99_inttypes_tr1)
   fi
   if test x"$ac_c99_inttypes_tr1" = x"yes"; then
@@ -2378,14 +2380,14 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   ac_c99_inttypes_wchar_t_tr1=no;
   if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
     AC_MSG_CHECKING([for wchar_t ISO C99 support to TR1 in <inttypes.h>])
-    AC_TRY_COMPILE([#include <inttypes.h>],
-		   [intmax_t base;
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <inttypes.h>]],
+		   [[intmax_t base;
 		    const wchar_t* s;
 		    wchar_t** endptr;
 		    intmax_t ret = wcstoimax(s, endptr, base);
 		    uintmax_t uret = wcstoumax(s, endptr, base);
-		   ],[ac_c99_inttypes_wchar_t_tr1=yes],
-		     [ac_c99_inttypes_wchar_t_tr1=no])
+		   ]])],[ac_c99_inttypes_wchar_t_tr1=yes],
+		        [ac_c99_inttypes_wchar_t_tr1=no])
     AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1)
   fi
   if test x"$ac_c99_inttypes_wchar_t_tr1" = x"yes"; then
@@ -2419,7 +2421,7 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
 
   if test x"$ac_has_uchar_h" = x"yes"; then
     AC_MSG_CHECKING([for ISO C11 support for <uchar.h>])
-    AC_TRY_COMPILE([#include <uchar.h>
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uchar.h>
 		    #ifdef __STDC_UTF_16__
 		    long i = __STDC_UTF_16__;
 		    #endif
@@ -2433,8 +2435,8 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
 		      using ::mbrtoc16;
 		      using ::mbrtoc32;
 		    }
-		   ],
-		   [], [ac_c11_uchar_cxx11=yes], [ac_c11_uchar_cxx11=no])
+		   ]],
+		   [[]])], [ac_c11_uchar_cxx11=yes], [ac_c11_uchar_cxx11=no])
     AC_MSG_RESULT($ac_c11_uchar_cxx11)
   else
     ac_c11_uchar_cxx11=no
@@ -2448,15 +2450,15 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
   CXXFLAGS="$CXXFLAGS -fchar8_t"
   if test x"$ac_has_uchar_h" = x"yes"; then
     AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -fchar8_t])
-    AC_TRY_COMPILE([#include <uchar.h>
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uchar.h>
 		    namespace test
 		    {
 		      using ::c8rtomb;
 		      using ::mbrtoc8;
 		    }
-		   ],
-		   [], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=yes],
-		       [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no])
+		   ]],
+		   [[]])], [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=yes],
+		           [ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no])
     AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_fchar8_t)
   else
     ac_uchar_c8rtomb_mbrtoc8_fchar8_t=no
@@ -2470,15 +2472,15 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
   CXXFLAGS="$CXXFLAGS -std=c++20"
   if test x"$ac_has_uchar_h" = x"yes"; then
     AC_MSG_CHECKING([for c8rtomb and mbrtoc8 in <uchar.h> with -std=c++20])
-    AC_TRY_COMPILE([#include <uchar.h>
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <uchar.h>
 		    namespace test
 		    {
 		      using ::c8rtomb;
 		      using ::mbrtoc8;
 		    }
-		   ],
-		   [], [ac_uchar_c8rtomb_mbrtoc8_cxx20=yes],
-		       [ac_uchar_c8rtomb_mbrtoc8_cxx20=no])
+		   ]],
+		   [[]])], [ac_uchar_c8rtomb_mbrtoc8_cxx20=yes],
+		           [ac_uchar_c8rtomb_mbrtoc8_cxx20=no])
     AC_MSG_RESULT($ac_uchar_c8rtomb_mbrtoc8_cxx20)
   else
     ac_uchar_c8rtomb_mbrtoc8_cxx20=no
@@ -2845,18 +2847,18 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
     CFLAGS="-Wimplicit-function-declaration -Werror"
 
     # Use strxfrm_l if available.
-    AC_TRY_COMPILE([#define _GNU_SOURCE 1
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE 1
      		    #include <string.h>
-		    #include <locale.h>],
-		    [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);],
+		    #include <locale.h>]],
+		    [[char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);]])],
 		    AC_DEFINE(HAVE_STRXFRM_L, 1,
 		    [Define if strxfrm_l is available in <string.h>.]),)
 
     # Use strerror_l if available.
-    AC_TRY_COMPILE([#define _GNU_SOURCE 1
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE 1
 		    #include <string.h>
-		    #include <locale.h>],
-		    [__locale_t loc; strerror_l(5, loc);],
+		    #include <locale.h>]],
+		    [[__locale_t loc; strerror_l(5, loc);]])],
 		    AC_DEFINE(HAVE_STRERROR_L, 1,
 		    [Define if strerror_l is available in <string.h>.]),)
 
@@ -2866,10 +2868,10 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
   # Perhaps use strerror_r if available, and strerror_l isn't.
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS="-Wimplicit-function-declaration -Werror"
-  AC_TRY_COMPILE([#define _GNU_SOURCE 1
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE 1
 	     	  #include <string.h>
-		  #include <locale.h>],
-		  [char s[128]; strerror_r(5, s, 128);],
+		  #include <locale.h>]],
+		  [[char s[128]; strerror_r(5, s, 128);]])],
 		  AC_DEFINE(HAVE_STRERROR_R, 1,
 		  [Define if strerror_r is available in <string.h>.]),)
   CFLAGS="$ac_save_CFLAGS"
@@ -3482,7 +3484,7 @@ dnl  _GLIBCXX_USE_DECIMAL_FLOAT
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_DECIMAL_FLOAT], [
 
-  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # Fake what AC_COMPILE_IFELSE does, without linking as this is
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
@@ -3521,7 +3523,7 @@ AC_DEFUN([GLIBCXX_ENABLE_FLOAT128], [
   AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
 
-  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # Fake what AC_COMPILE_IFELSE does, without linking as this is
   # unnecessary for this test.
 
   cat > conftest.$ac_ext << EOF
@@ -3569,8 +3571,8 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
   # Test wchar.h for mbstate_t, which is needed for char_traits and fpos.
   AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
   AC_MSG_CHECKING([for mbstate_t])
-  AC_TRY_COMPILE([#include <wchar.h>],
-  [mbstate_t teststate;],
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>]],
+  [[mbstate_t teststate;]])],
   have_mbstate_t=yes, have_mbstate_t=no)
   AC_MSG_RESULT($have_mbstate_t)
   if test x"$have_mbstate_t" = xyes; then
@@ -3588,7 +3590,7 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
 
     if test x"$ac_has_wchar_h" = xyes &&
        test x"$ac_has_wctype_h" = xyes; then
-      AC_TRY_COMPILE([#include <wchar.h>
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wchar.h>
 		      #include <stddef.h>
 		      wint_t i;
 		      long l = WEOF;
@@ -3649,7 +3651,7 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
 			using ::wprintf;
 			using ::wscanf;
 		      }
-		     ],[],[], [enable_wchar_t=no])
+		     ]],[[]])],[], [enable_wchar_t=no])
     else
       enable_wchar_t=no
     fi
@@ -3787,7 +3789,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
     # Compile unoptimized.
     CXXFLAGS='-O0 -S'
 
-    # Fake what AC_TRY_COMPILE does.
+    # Fake what AC_COMPILE_IFELSE does.
 
     cat > conftest.$ac_ext << EOF
 [#]line __oline__ "configure"
@@ -3886,7 +3888,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [
     dnl Why do we care about 2-byte CAS on targets with 4-byte _Atomic_word?!
     dnl Why don't we check 8-byte CAS for sparc64, where _Atomic_word is long?!
     dnl New targets should only check for CAS for the _Atomic_word type.
-    AC_TRY_COMPILE([
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
     #if defined __AMDGCN__ || defined __nvptx__
     /* Yes, please.  */
     #elif defined __riscv
@@ -3896,7 +3898,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [
     #elif ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
     # error "No 4-byte compare-and-swap"
     #endif
-    ],,
+    ]],[])],
     [libstdcxx_atomic_lock_policy=atomic],
     [libstdcxx_atomic_lock_policy=mutex])
     AC_LANG_RESTORE
@@ -3931,9 +3933,10 @@ if test x$enable_libstdcxx_visibility = xyes ; then
 		 glibcxx_cv_have_attribute_visibility, [
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -Werror"
-  AC_TRY_COMPILE([void __attribute__((visibility("hidden"))) foo(void) { }],
-		 [], glibcxx_cv_have_attribute_visibility=yes,
-		 glibcxx_cv_have_attribute_visibility=no)
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void __attribute__((visibility("hidden"))) foo(void) { }]],
+		 [[]])],
+		 [glibcxx_cv_have_attribute_visibility=yes],
+		 [glibcxx_cv_have_attribute_visibility=no])
   CFLAGS="$save_CFLAGS"])
   if test $glibcxx_cv_have_attribute_visibility = no; then
     enable_libstdcxx_visibility=no
@@ -4140,9 +4143,11 @@ fi
 
 AC_CACHE_CHECK([whether the target supports .symver directive],
 	       glibcxx_cv_have_as_symver_directive, [
-  AC_TRY_COMPILE([void foo (void); __asm (".symver foo, bar@SYMVER");],
-		 [], glibcxx_cv_have_as_symver_directive=yes,
-		 glibcxx_cv_have_as_symver_directive=no)])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+		    [[void foo (void); __asm (".symver foo, bar@SYMVER");]],
+		    [[]])],
+		    [glibcxx_cv_have_as_symver_directive=yes],
+		    [glibcxx_cv_have_as_symver_directive=no])])
 if test $glibcxx_cv_have_as_symver_directive = yes; then
   AC_DEFINE(HAVE_AS_SYMVER_DIRECTIVE, 1,
     [Define to 1 if the target assembler supports .symver directive.])
@@ -4178,7 +4183,7 @@ fi
 AC_MSG_CHECKING([for size_t as unsigned int])
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS="-Werror"
-AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;],
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;]])],
 		 [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no])
 CFLAGS=$ac_save_CFLAGS
 if test "$glibcxx_size_t_is_i" = yes; then
@@ -4189,7 +4194,7 @@ AC_MSG_RESULT([$glibcxx_size_t_is_i])
 AC_MSG_CHECKING([for ptrdiff_t as int])
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS="-Werror"
-AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;],
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;]])],
 		 [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no])
 CFLAGS=$ac_save_CFLAGS
 if test "$glibcxx_ptrdiff_t_is_i" = yes; then
@@ -4257,8 +4262,8 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
 
   AC_MSG_CHECKING([whether it can be safely assumed that mutex_timedlock is available])
 
-  AC_TRY_COMPILE([#include <unistd.h>],
-    [
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
+    [[
       // In case of POSIX threads check _POSIX_TIMEOUTS.
       #if (defined(_PTHREADS) \
 	  && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
@@ -4267,7 +4272,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
       #elif defined(_WIN32_THREADS)
       #error
       #endif
-    ], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0])
+    ]])], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0])
 
   AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock,
 		     [Define to 1 if mutex_timedlock is available.])
@@ -4278,12 +4283,12 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
 
   AC_MSG_CHECKING([for gthreads library])
 
-  AC_TRY_COMPILE([#include "gthr.h"],
-    [
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include "gthr.h"]],
+    [[
       #ifndef __GTHREADS_CXX0X
       #error
       #endif
-    ], [ac_has_gthreads=yes], [ac_has_gthreads=no])
+    ]])], [ac_has_gthreads=yes], [ac_has_gthreads=no])
   else
     ac_has_gthreads=no
   fi
@@ -4299,12 +4304,12 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
     # On VxWorks for example, pthread_rwlock_t is defined in sys/types.h
     # but the pthread library is not there by default and the gthread library
     # does not use it.
-    AC_TRY_COMPILE([#include "gthr.h"],
-    [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include "gthr.h"]],
+    [[
       #if (!defined(_PTHREADS))
       #error
       #endif
-    ], [ac_gthread_use_pthreads=yes], [ac_gthread_use_pthreads=no])
+    ]])], [ac_gthread_use_pthreads=yes], [ac_gthread_use_pthreads=no])
     if test x"$ac_gthread_use_pthreads" = x"yes"; then
       AC_CHECK_TYPE([pthread_rwlock_t],
              [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1,
@@ -4334,8 +4339,9 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
 AC_DEFUN([AC_LC_MESSAGES], [
   AC_CHECK_HEADER(locale.h, [
     AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
-      [AC_TRY_COMPILE([#include <locale.h>], [return LC_MESSAGES],
-       ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
+      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[#include <locale.h>]], [[return LC_MESSAGES]])],
+       [ac_cv_val_LC_MESSAGES=yes], [ac_cv_val_LC_MESSAGES=no])])
     if test $ac_cv_val_LC_MESSAGES = yes; then
       AC_DEFINE(HAVE_LC_MESSAGES, 1,
 		[Define if LC_MESSAGES is available in <locale.h>.])
@@ -4352,7 +4358,7 @@ AC_DEFUN([GLIBCXX_CHECK_X86_RDRAND], [
   case "$target" in
     i?86-*-* | \
     x86_64-*-*)
-    AC_TRY_COMPILE(, [asm("rdrand %eax");],
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[asm("rdrand %eax");]])],
 		[ac_cv_x86_rdrand=yes], [ac_cv_x86_rdrand=no])
   esac
   ])
@@ -4371,7 +4377,7 @@ AC_DEFUN([GLIBCXX_CHECK_X86_RDSEED], [
   case "$target" in
     i?86-*-* | \
     x86_64-*-*)
-    AC_TRY_COMPILE(, [asm("rdseed %eax");],
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[asm("rdseed %eax");]])],
 		[ac_cv_x86_rdseed=yes], [ac_cv_x86_rdseed=no])
   esac
   ])
@@ -5160,26 +5166,28 @@ dnl Check how size_t is mangled.  Copied from libitm.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [
   AC_CACHE_CHECK([how size_t is mangled],
-                 glibcxx_cv_size_t_mangling, [
-    AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned long x;],
-                   [glibcxx_cv_size_t_mangling=m], [
-      AC_TRY_COMPILE([], [extern __SIZE_TYPE__ x; extern unsigned int x;],
-                     [glibcxx_cv_size_t_mangling=j], [
-        AC_TRY_COMPILE([],
-                       [extern __SIZE_TYPE__ x; extern unsigned long long x;],
-                       [glibcxx_cv_size_t_mangling=y], [
-          AC_TRY_COMPILE([],
-                         [extern __SIZE_TYPE__ x; extern unsigned short x;],
-                         [glibcxx_cv_size_t_mangling=t], [
-            AC_TRY_COMPILE([],
-                           [extern __SIZE_TYPE__ x; extern __int20 unsigned x;],
+                 glibcxx_cv_size_t_mangling,
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+    		   [[extern __SIZE_TYPE__ x; extern unsigned long x;]])],
+                   [glibcxx_cv_size_t_mangling=m],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+      		     [[extern __SIZE_TYPE__ x; extern unsigned int x;]])],
+                     [glibcxx_cv_size_t_mangling=j],
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+                       [[extern __SIZE_TYPE__ x; extern unsigned long long x;]])],
+                       [glibcxx_cv_size_t_mangling=y],
+          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+                         [[extern __SIZE_TYPE__ x; extern unsigned short x;]])],
+                         [glibcxx_cv_size_t_mangling=t],
+            AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+                           [[extern __SIZE_TYPE__ x; extern __int20 unsigned x;]])],
                            [glibcxx_cv_size_t_mangling=u6uint20],
                            [glibcxx_cv_size_t_mangling=x])
-          ])
-        ])
-      ])
-    ])
-  ])
+          )
+        )
+      )
+    )
+  )
   if test $glibcxx_cv_size_t_mangling = x; then
     AC_MSG_ERROR([Unknown underlying type for size_t])
   fi
@@ -5205,11 +5213,11 @@ AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [
       *)
         # If the value of this macro changes then we will need to hardcode
         # yes/no here for additional targets based on the original value.
-        AC_TRY_COMPILE([], [
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
           #if __GCC_ATOMIC_INT_LOCK_FREE <= 1
           # error atomic int not always lock free
           #endif
-          ],
+          ]])],
           [ac_exception_ptr_since_gcc46=yes],
           [ac_exception_ptr_since_gcc46=no])
         ;;
@@ -5692,9 +5700,10 @@ AC_DEFUN([GLIBCXX_CHECK_ALIGNAS_CACHELINE], [
   AC_LANG_CPLUSPLUS
 
   AC_MSG_CHECKING([whether static objects can be aligned to the cacheline size])
-  AC_TRY_COMPILE(, [struct alignas(__GCC_DESTRUCTIVE_SIZE) Aligned { };
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+		[[struct alignas(__GCC_DESTRUCTIVE_SIZE) Aligned { };
 		    alignas(Aligned) static char buf[sizeof(Aligned) * 16];
-		 ], [ac_alignas_cacheline=yes], [ac_alignas_cacheline=no])
+		 ]])], [ac_alignas_cacheline=yes], [ac_alignas_cacheline=no])
   if test "$ac_alignas_cacheline" = yes; then
     AC_DEFINE_UNQUOTED(_GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE, 1,
       [Define if global objects can be aligned to
@@ -5718,11 +5727,11 @@ AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
 
   AC_MSG_CHECKING([whether init_priority attribute is supported])
-  AC_TRY_COMPILE(, [
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
   #if ! __has_attribute(init_priority)
   #error init_priority not supported
   #endif
-		 ], [ac_init_priority=yes], [ac_init_priority=no])
+		 ]])], [ac_init_priority=yes], [ac_init_priority=no])
   if test "$ac_init_priority" = yes; then
     AC_DEFINE_UNQUOTED(_GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE, 1,
       [Define if init_priority should be used for iostream initialization.])
@@ -5743,18 +5752,18 @@ AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
 
   AC_MSG_CHECKING([whether _get_osfhandle is defined in <io.h>])
-  AC_TRY_COMPILE([
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   #if defined(_WIN32) && !defined(__CYGWIN__)
   # include <stdint.h>
   # include <stdio.h>
   # include <io.h>
   #endif
-  ],[
+  ]],[[
     FILE* file = 0;
     int fd = fileno(file);
     intptr_t crt_handle = _get_osfhandle(fd);
     void* win32_handle = reinterpret_cast<void*>(crt_handle);
-  ], [ac_get_osfhandle=yes], [ac_get_osfhandle=no])
+  ]])], [ac_get_osfhandle=yes], [ac_get_osfhandle=no])
   if test "$ac_get_osfhandle" = yes; then
     AC_DEFINE_UNQUOTED(_GLIBCXX_USE__GET_OSFHANDLE, 1,
       [Define if _get_osfhandle should be used for filebuf::native_handle().])
@@ -5775,17 +5784,17 @@ AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
 
   AC_MSG_CHECKING([whether nl_langinfo_l is defined in <langinfo.h>])
-  AC_TRY_COMPILE([
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   #include <locale.h>
   #if __has_include(<xlocale.h>)
   # include <xlocale.h>
   #endif
   #include <langinfo.h>
-  ],[
+  ]],[[
     locale_t loc = newlocale(LC_ALL_MASK, "", (locale_t)0);
     const char* enc = nl_langinfo_l(CODESET, loc);
     freelocale(loc);
-  ], [ac_nl_langinfo_l=yes], [ac_nl_langinfo_l=no])
+  ]])], [ac_nl_langinfo_l=yes], [ac_nl_langinfo_l=no])
   AC_MSG_RESULT($ac_nl_langinfo_l)
   if test "$ac_nl_langinfo_l" = yes; then
     AC_DEFINE_UNQUOTED(_GLIBCXX_USE_NL_LANGINFO_L, 1,
@@ -5816,11 +5825,11 @@ AC_DEFUN([GLIBCXX_CHECK_DEBUGGING], [
   esac
 
   AC_MSG_CHECKING([whether ptrace(int, pid_t, int, int) is in <sys/ptrace.h>])
-  AC_TRY_COMPILE([
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   #include <sys/ptrace.h>
-  ],[
+  ]],[[
     int i = ptrace(PTRACE_TRACEME, (pid_t)0, 1, 0);
-  ], [ac_ptrace=yes], [ac_ptrace=no])
+  ]])], [ac_ptrace=yes], [ac_ptrace=no])
   AC_MSG_RESULT($ac_ptrace)
   if test "$ac_ptrace" = yes; then
     AC_DEFINE_UNQUOTED(_GLIBCXX_USE_PTRACE, 1,
@@ -5842,7 +5851,7 @@ AC_LANG_SAVE
   AC_LANG_CPLUSPLUS
 
   AC_MSG_CHECKING([whether flockfile and putc_unlocked are defined in <stdio.h>])
-  AC_TRY_COMPILE([
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   #include <stdio.h>
   #if __has_include(<newlib.h>)
   # ifdef __CYGWIN__
@@ -5851,13 +5860,13 @@ AC_LANG_SAVE
   #  error No usable flockfile on most newlib targets
   # endif
   #endif
-  ],[
+  ]],[[
     FILE* f = ::fopen("", "");
     ::flockfile(f);
     ::putc_unlocked(' ', f);
     ::funlockfile(f);
     ::fclose(f);
-  ],[ac_stdio_locking=yes],[ac_stdio_locking=no])
+  ]])],[ac_stdio_locking=yes],[ac_stdio_locking=no])
   AC_MSG_RESULT($ac_stdio_locking)
 
   if test "$ac_stdio_locking" = yes; then
@@ -5866,15 +5875,15 @@ AC_LANG_SAVE
 
     # This is not defined in POSIX, but is present in glibc, musl, and Solaris.
     AC_MSG_CHECKING([whether fwrite_unlocked is defined in <stdio.h>])
-    AC_TRY_COMPILE([
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
     #include <stdio.h>
-    ],[
+    ]],[[
       FILE* f = ::fopen("", "");
       ::flockfile(f);
       ::fwrite_unlocked("", 1, 1, f);
       ::funlockfile(f);
       ::fclose(f);
-    ], [ac_fwrite_unlocked=yes], [ac_fwrite_unlocked=no])
+    ]])], [ac_fwrite_unlocked=yes], [ac_fwrite_unlocked=no])
     AC_MSG_RESULT($ac_fwrite_unlocked)
     if test "$ac_fwrite_unlocked" = yes; then
       AC_DEFINE(HAVE_FWRITE_UNLOCKED, 1,
@@ -5884,14 +5893,14 @@ AC_LANG_SAVE
       case "${target_os}" in
 	gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
 	  AC_MSG_CHECKING([for FILE::_IO_write_ptr and <stdio_ext.h>])
-	  AC_TRY_COMPILE([
+	  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 	  #include <stdio.h>
 	  #include <stdio_ext.h>
 	  extern "C" {
 	   using f1_type = int (*)(FILE*) noexcept;
 	   using f2_type = size_t (*)(FILE*) noexcept;
 	  }
-	  ],[
+	  ]],[[
 	  f1_type twritable = &::__fwritable;
 	  f1_type tblk = &::__flbf; 
 	  f2_type pbufsize = &::__fbufsize;
@@ -5904,7 +5913,7 @@ AC_LANG_SAVE
 	  char*& epptr = f->_IO_buf_end;
 	  ::fflush_unlocked(f);
 	  ::fclose(f);
-	  ], [ac_glibc_stdio=yes], [ac_glibc_stdio=no])
+	  ]])], [ac_glibc_stdio=yes], [ac_glibc_stdio=no])
 	  AC_MSG_RESULT($ac_glibc_stdio)
 	  if test "$ac_glibc_stdio" = yes; then
 	    AC_DEFINE_UNQUOTED(_GLIBCXX_USE_GLIBC_STDIO_EXT, 1,
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index acdec9253140..2d725c1bab98 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16474,7 +16474,7 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     # Compile unoptimized.
     CXXFLAGS='-O0 -S'
 
-    # Fake what AC_TRY_COMPILE does.
+    # Fake what AC_COMPILE_IFELSE does.
 
     cat > conftest.$ac_ext << EOF
 #line 16480 "configure"
@@ -16621,7 +16621,7 @@ $as_echo "mutex" >&6; }
 
 
 
-  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # Fake what AC_COMPILE_IFELSE does, without linking as this is
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
@@ -16663,7 +16663,7 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
-  # Fake what AC_TRY_COMPILE does, without linking as this is
+  # Fake what AC_COMPILE_IFELSE does, without linking as this is
   # unnecessary for this test.
 
   cat > conftest.$ac_ext << EOF
@@ -54564,8 +54564,7 @@ $as_echo_n "checking how size_t is mangled... " >&6; }
 if ${glibcxx_cv_size_t_mangling+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -54579,8 +54578,7 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   glibcxx_cv_size_t_mangling=m
 else
-
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -54594,8 +54592,7 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   glibcxx_cv_size_t_mangling=j
 else
-
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -54609,8 +54606,7 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   glibcxx_cv_size_t_mangling=y
 else
-
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -54624,8 +54620,7 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   glibcxx_cv_size_t_mangling=t
 else
-
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 2b1a6ff4193f..adfada8be4ba 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -378,10 +378,10 @@ dnl # rather than hardcoding that information.
       tanhl tanl])
 
     # Support for iconv in newlib is configurable.
-    AC_TRY_COMPILE([#include <newlib.h>], [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <newlib.h>]], [[
       #ifndef _ICONV_ENABLED
       #error
-      #endif], [ac_newlib_iconv_enabled=yes], [ac_newlib_iconv_enabled=no])
+      #endif]])], [ac_newlib_iconv_enabled=yes], [ac_newlib_iconv_enabled=no])
     if test "$ac_newlib_iconv_enabled" = yes; then
       AC_DEFINE(HAVE_ICONV)
     fi
@@ -461,10 +461,10 @@ dnl # rather than hardcoding that information.
     AC_DEFINE(HAVE_TANHF)
 
     # Support for iconv in picolibc is configurable.
-    AC_TRY_COMPILE([#include <picolibc.h>], [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <picolibc.h>]], [[
       #ifndef _ICONV_ENABLED
       #error
-      #endif], [ac_picolibc_iconv_enabled=yes], [ac_picolibc_iconv_enabled=no])
+      #endif]])], [ac_picolibc_iconv_enabled=yes], [ac_picolibc_iconv_enabled=no])
     if test "$ac_picolibc_iconv_enabled" = yes; then
       AC_DEFINE(HAVE_ICONV)
     fi
@@ -472,10 +472,10 @@ dnl # rather than hardcoding that information.
     AC_DEFINE(HAVE_MEMALIGN)
 
     # Check for TLS
-    AC_TRY_COMPILE([#include <picolibc.h>], [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <picolibc.h>]], [[
       #ifndef __THREAD_LOCAL_STORAGE
       #error
-      #endif], [ac_picolibc_tls_enabled=yes], [ac_picolibc_tls_enabled=no])
+      #endif]])], [ac_picolibc_tls_enabled=yes], [ac_picolibc_tls_enabled=no])
     if test "$ac_picolibc_tls_enabled" = yes; then
       AC_DEFINE(HAVE_TLS)
     fi
@@ -548,11 +548,11 @@ case "$target" in
   sparc*-*-linux* | \
   s390*-*-linux* | \
   alpha*-*-linux*)
-  AC_TRY_COMPILE(, [
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
 #if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
 #error no need for long double compatibility
 #endif
-  ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
+  ]])], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
   if test "$ac_ldbl_compat" = yes; then
     AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
 	      [Define if compatibility should be provided for -mlong-double-64.])
@@ -566,11 +566,11 @@ case "$target" in
                      [ac_ldbl_ieee128_in_libc=no])
         if test $ac_ldbl_ieee128_in_libc = yes; then
           # Determine which long double format is the compiler's default:
-          AC_TRY_COMPILE(, [
+          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
             #ifndef __LONG_DOUBLE_IEEE128__
             #error compiler defaults to ibm128
             #endif
-          ], [ac_ldbl_ieee128_default=yes], [ac_ldbl_ieee128_default=no])
+          ]])], [ac_ldbl_ieee128_default=yes], [ac_ldbl_ieee128_default=no])
           # Library objects should use default long double format.
           if test "$ac_ldbl_ieee128_default" = yes; then
             LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute"
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index b3269cb88e07..2f4a6c6da87b 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -322,15 +322,15 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
     [glibcxx_cv_func_$1_use], [
       AC_LANG_SAVE
       AC_LANG_C
-      AC_TRY_COMPILE([
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <math.h>
 #ifdef HAVE_IEEEFP_H
 # include <ieeefp.h>
 #endif
 #undef $1
-], [
+]], [[
   void (*f)(void) = (void (*)(void))$1;
-], [glibcxx_cv_func_$1_use=yes
+]])], [glibcxx_cv_func_$1_use=yes
 ], [glibcxx_cv_func_$1_use=no])])
   if test "x$glibcxx_cv_func_$1_use" = xyes; then
     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]))
diff --git a/libstdc++-v3/linkage.m4 b/libstdc++-v3/linkage.m4
index 29b31447c984..222cc080f3c9 100644
--- a/libstdc++-v3/linkage.m4
+++ b/libstdc++-v3/linkage.m4
@@ -14,12 +14,12 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <math.h>
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
 		      #ifdef HAVE_IEEEFP_H
 		      #include <ieeefp.h>
 		      #endif
-		     ],
-                     [ $1(0);],
+		     ]],
+                     [[ $1(0);]])],
                       [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])
@@ -59,8 +59,8 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
   AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
     AC_LANG_SAVE
     AC_LANG_CPLUSPLUS
-    AC_TRY_COMPILE([#include <math.h>],
-                   patsubst(funclist,[\w+],[\& (0);]),
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+                   patsubst(funclist,[\w+],[\& (0);]))],
                    [glibcxx_cv_func_$2_use=yes],
                    [glibcxx_cv_func_$2_use=no])
     AC_LANG_RESTORE])
@@ -83,8 +83,8 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <math.h>],
-                     [ $1(0, 0);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+                     [[ $1(0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])
@@ -124,8 +124,8 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <math.h>],
-                     [ $1(0, 0, 0);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
+                     [[ $1(0, 0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])
@@ -153,35 +153,6 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
 ])
 
 
-dnl
-dnl Check to see if the (stdlib function) argument passed is
-dnl 1) declared when using the c++ compiler
-dnl 2) has "C" linkage
-dnl
-dnl argument 1 is name of function to check
-dnl
-dnl ASSUMES argument is a stdlib function without parameters
-dnl
-dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0
-AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
-  AC_MSG_CHECKING([for $1 declaration])
-  if test x${glibcxx_cv_func_$1_use+set} != xset; then
-    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <stdlib.h>],
-                     [ $1();],
-                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
-    ])
-  fi
-  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
-  if test x$glibcxx_cv_func_$1_use = x"yes"; then
-    AC_CHECK_FUNCS($1)
-  fi
-])
-
-
 dnl
 dnl Check to see if the (stdlib function) argument passed is
 dnl 1) declared when using the c++ compiler
@@ -198,8 +169,8 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <stdlib.h>],
-                     [ $1(0);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
+                     [[ $1(0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])
@@ -227,8 +198,8 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <stdlib.h>],
-                     [ $1(0, 0);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
+                     [[ $1(0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])
@@ -256,8 +227,8 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
       AC_LANG_SAVE
       AC_LANG_CPLUSPLUS
-      AC_TRY_COMPILE([#include <stdlib.h>],
-                     [ $1(0, 0, 0);],
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
+                     [[ $1(0, 0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
       AC_LANG_RESTORE
     ])

From pietro@gcc.gnu.org  Thu Jun 25 12:30:19 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:19 +0000 (GMT)
Subject: [gcc r17-1850] libstdc++: Update AC_LANG_{SAVE,
 RESTORE} to AC_LANG_{PUSH, POP} [PR103459]
Message-ID: <20260625123019.7B7164BA23DB@sourceware.org>

https://gcc.gnu.org/g:a4da650e8c7eccd2131ae23404b92f195c4b58ee

commit r17-1850-ga4da650e8c7eccd2131ae23404b92f195c4b58ee
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AC_LANG_{SAVE,RESTORE} to AC_LANG_{PUSH,POP} [PR103459]
    
    AC_LANG_SAVE, AC_LANG_C, AC_LANG_CPLUSPLUS, and AC_LANG_RESTORE have
    been deprecated by Autoconf.  Update with AC_LANG_PUSH and
    AC_LANG_POP.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Replace
            AC_LANG_SAVE AC_LANG_CPLUSPLUS (...) AC_LANG_RESTORE with
            AC_LANG_PUSH([C++]) (...) AC_LANG_POP([C++]).
            (GLIBCXX_CHECK_SETRLIMIT): Likewise.
            (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Likewise.
            (GLIBCXX_CHECK_POLL): Likewise.
            (GLIBCXX_CHECK_WRITEV): Likewise.
            (GLIBCXX_CHECK_LFS): Likewise.
            (GLIBCXX_ENABLE_C99): Likewise.
            (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
            (GLIBCXX_CHECK_GETTIMEOFDAY): Likewise.
            (GLIBCXX_CHECK_C99_TR1): Likewise.
            (GLIBCXX_CHECK_UCHAR_H): Likewise.
            (GLIBCXX_CHECK_STDIO_PROTO): Likewise.
            (GLIBCXX_CHECK_MATH11_PROTO): Likewise.
            (GLIBCXX_ENABLE_FLOAT128): Likewise.
            (GLIBCXX_ENABLE_WCHAR_T): Likewise.
            (GLIBCXX_ENABLE_PCH): Likewise.
            (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
            (GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
            (GLIBCXX_CHECK_GTHREADS): Likewise.
            (GLIBCXX_CHECK_GET_NPROCS): Likewise.
            (GLIBCXX_CHECK_SC_NPROCESSORS_ONLN): Likewise.
            (GLIBCXX_CHECK_SC_NPROC_ONLN): Likewise.
            (GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Likewise.
            (GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Likewise.
            (GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK): Likewise.
            (GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK): Likewise.
            (GLIBCXX_CHECK_SYSCTL_HW_NCPU): Likewise.
            (GLIBCXX_CHECK_TMPNAM): Likewise.
            (GLIBCXX_CHECK_SDT_H): Likewise.
            (GLIBCXX_CHECK_FILESYSTEM_DEPS): Likewise.
            (GLIBCXX_CHECK_GETENTROPY): Likewise.
            (GLIBCXX_CHECK_ARC4RANDOM): Likewise.
            (GLIBCXX_ENABLE_BACKTRACE): Likewise.
            (GLIBCXX_STRUCT_TM_TM_ZONE): Likewise.
            (GLIBCXX_CHECK_ALIGNAS_CACHELINE): Likewise.
            (GLIBCXX_CHECK_INIT_PRIORITY): Likewise.
            (GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES): Likewise.
            (GLIBCXX_CHECK_TEXT_ENCODING): Likewise.
            (GLIBCXX_CHECK_DEBUGGING): Likewise.
            (GLIBCXX_CHECK_STDIO_LOCKING): Likewise.
            * configure: Regenerate.
            * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Replace
            AC_LANG_SAVE AC_LANG_C with AC_LANG_PUSH([C]).
            * linkage.m4 (GLIBCXX_CHECK_MATH_DECL_1): Replace
            AC_LANG_SAVE AC_LANG_CPLUSPLUS (...) AC_LANG_RESTORE with
            AC_LANG_PUSH([C++]) (...) AC_LANG_POP([C++]).
            (GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1) Likewise.
            (GLIBCXX_CHECK_MATH_DECL_2): Likewise.
            (GLIBCXX_CHECK_MATH_DECL_3): Likewise.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1): Likewise.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2): Likewise.
            (GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3): Likewise.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/acinclude.m4   | 205 +++++++++------------
 libstdc++-v3/configure      | 438 +-------------------------------------------
 libstdc++-v3/crossconfig.m4 |   3 +-
 libstdc++-v3/linkage.m4     |  35 ++--
 4 files changed, 101 insertions(+), 580 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 878921992594..a444a3b649ca 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -139,8 +139,7 @@ AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
   # All these tests are for C++; save the language and the compiler flags.
   # The CXXFLAGS thing is suspicious, but based on similar bits previously
   # found in GLIBCXX_CONFIGURE.
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_test_CXXFLAGS="${CXXFLAGS+set}"
   ac_save_CXXFLAGS="$CXXFLAGS"
 
@@ -161,7 +160,7 @@ AC_DEFUN([GLIBCXX_CHECK_COMPILER_FEATURES], [
   fi
   AC_MSG_RESULT($ac_fdsections)
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
   AC_SUBST(SECTION_FLAGS)
 ])
 
@@ -339,8 +338,7 @@ AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [
 ])
 
 AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   setrlimit_have_headers=yes
   AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
 		   [],
@@ -374,7 +372,7 @@ AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
 		"make check"])
     fi
   fi
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -384,8 +382,7 @@ dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -421,7 +418,7 @@ AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
   AC_MSG_RESULT($res)
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -430,8 +427,7 @@ dnl Check whether poll is available in <poll.h>, and define HAVE_POLL.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_POLL], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -449,7 +445,7 @@ AC_DEFUN([GLIBCXX_CHECK_POLL], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -458,8 +454,7 @@ dnl Check whether writev is available in <sys/uio.h>, and define HAVE_WRITEV.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -476,7 +471,7 @@ AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -484,8 +479,7 @@ dnl
 dnl Check whether LFS support is available.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_LFS], [
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
   AC_CACHE_CHECK([for LFS support], glibcxx_cv_LFS, [
@@ -524,7 +518,7 @@ AC_DEFUN([GLIBCXX_CHECK_LFS], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -876,8 +870,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
   GLIBCXX_ENABLE(c99,$1,,[turns on ISO/IEC 9899:1999 support])
 
   if test x"$enable_c99" = x"yes"; then
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
+    AC_LANG_PUSH([C++])
 
     # Use -std=c++98 (instead of -std=gnu++98) because leaving __STRICT_ANSI__
     # undefined may cause fake C99 facilities, like pre-standard snprintf,
@@ -1107,10 +1100,9 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     gcc_no_link="$ac_save_gcc_no_link"
     LIBS="$ac_save_LIBS"
     CXXFLAGS="$ac_save_CXXFLAGS"
-    AC_LANG_RESTORE
+    AC_LANG_POP([C++])
 
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
+    AC_LANG_PUSH([C++])
 
     # Use -std=c++11 and test again for C99 library feature in C++11 mode.
     # For the reasons given above we use -std=c++11 not -std=gnu++11.
@@ -1721,7 +1713,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [
     gcc_no_link="$ac_save_gcc_no_link"
     LIBS="$ac_save_LIBS"
     CXXFLAGS="$ac_save_CXXFLAGS"
-    AC_LANG_RESTORE
+    AC_LANG_POP([C++])
   fi
 
   AC_MSG_CHECKING([for fully enabled ISO C99 support])
@@ -1759,8 +1751,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
     [use KIND for check type],
     [permit yes|no|rt])
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
   ac_save_LIBS="$LIBS"
@@ -1999,7 +1990,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
 
   CXXFLAGS="$ac_save_CXXFLAGS"
   LIBS="$ac_save_LIBS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -2010,8 +2001,7 @@ AC_DEFUN([GLIBCXX_CHECK_GETTIMEOFDAY], [
 
   AC_MSG_CHECKING([for gettimeofday])
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -2032,7 +2022,7 @@ AC_DEFUN([GLIBCXX_CHECK_GETTIMEOFDAY], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -2041,8 +2031,7 @@ dnl facilities in Chapter 8, "C compatibility".
 dnl
 AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   # Use -std=c++98 because -std=gnu++98 leaves __STRICT_ANSI__
   # undefined and fake C99 facilities may be spuriously enabled.
@@ -2403,7 +2392,7 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
   AC_CHECK_HEADERS(stdalign.h)
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -2414,8 +2403,7 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
   # Test uchar.h.
   AC_CHECK_HEADERS(uchar.h, ac_has_uchar_h=yes, ac_has_uchar_h=no)
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -std=c++11"
 
@@ -2492,7 +2480,7 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -2565,8 +2553,7 @@ dnl Check whether required C++ overloads are present in <stdio.h>.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   # Use C++11 because a conforming <stdio.h> won't define gets for C++14,
   # and we don't need a declaration for C++14 anyway.
   ac_save_CXXFLAGS="$CXXFLAGS"
@@ -2589,7 +2576,7 @@ AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -2598,8 +2585,7 @@ dnl types are present in <math.h>.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -std=c++11"
 
@@ -2735,7 +2721,7 @@ AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [
   esac
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -3520,8 +3506,7 @@ dnl  ENABLE_FLOAT128
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_FLOAT128], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   # Fake what AC_COMPILE_IFELSE does, without linking as this is
   # unnecessary for this test.
@@ -3552,7 +3537,7 @@ EOF
     GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes)
     rm -f conftest*
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -3585,8 +3570,7 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
 
   if test x"$enable_wchar_t" = x"yes"; then
 
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
+    AC_LANG_PUSH([C++])
 
     if test x"$ac_has_wchar_h" = xyes &&
        test x"$ac_has_wctype_h" = xyes; then
@@ -3656,7 +3640,7 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
       enable_wchar_t=no
     fi
 
-    AC_LANG_RESTORE
+    AC_LANG_POP([C++])
   fi
 
   if test x"$enable_wchar_t" = x"yes"; then
@@ -3690,8 +3674,7 @@ AC_DEFUN([GLIBCXX_ENABLE_PCH], [
       [glibcxx_cv_prog_CXX_pch],
       [ac_save_CXXFLAGS="$CXXFLAGS"
        CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated"
-       AC_LANG_SAVE
-       AC_LANG_CPLUSPLUS
+       AC_LANG_PUSH([C++])
        echo '#include <math.h>' > conftest.h
        if $CXX $CXXFLAGS $CPPFLAGS -x c++-header conftest.h \
 			  -o conftest.h.gch 1>&5 2>&1 &&
@@ -3705,7 +3688,7 @@ AC_DEFUN([GLIBCXX_ENABLE_PCH], [
        fi
        rm -f conftest*
        CXXFLAGS=$ac_save_CXXFLAGS
-       AC_LANG_RESTORE
+       AC_LANG_POP([C++])
       ])
     enable_libstdcxx_pch=$glibcxx_cv_prog_CXX_pch
   fi
@@ -3743,8 +3726,7 @@ dnl Note:
 dnl libgomp and libgfortran use a link test, see CHECK_SYNC_FETCH_AND_ADD.
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   old_CXXFLAGS="$CXXFLAGS"
 
   # Do link tests if possible, otherwise asm tests. Limited to some platforms
@@ -3816,7 +3798,7 @@ EOF
   rm -f ./atomic_word.h
 
   CXXFLAGS="$old_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 
   # Set atomicity_dir to builtins if the test above passes,
   # or if the builtins were already chosen (e.g. by configure.host).
@@ -3881,8 +3863,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [
   AC_MSG_CHECKING([for lock policy for shared_ptr reference counts])
 
   if test x"$libstdcxx_atomic_lock_policy" = x"auto"; then
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
+    AC_LANG_PUSH([C++])
     ac_save_CXXFLAGS="$CXXFLAGS"
 
     dnl Why do we care about 2-byte CAS on targets with 4-byte _Atomic_word?!
@@ -3901,7 +3882,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [
     ]],[])],
     [libstdcxx_atomic_lock_policy=atomic],
     [libstdcxx_atomic_lock_policy=mutex])
-    AC_LANG_RESTORE
+    AC_LANG_POP([C++])
     CXXFLAGS="$ac_save_CXXFLAGS"
   fi
 
@@ -4239,8 +4220,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
   if test x$enable_libstdcxx_threads = xauto ||
      test x$enable_libstdcxx_threads = xyes; then
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions \
@@ -4325,7 +4305,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
@@ -4392,8 +4372,7 @@ dnl Check whether get_nprocs is available in <sys/sysinfo.h>, and define _GLIBCX
 dnl
 AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -4410,7 +4389,7 @@ AC_DEFUN([GLIBCXX_CHECK_GET_NPROCS], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4418,8 +4397,7 @@ dnl Check whether sysconf(_SC_NPROCESSORS_ONLN) is available in <unistd.h>, and
 dnl
 AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -4436,7 +4414,7 @@ AC_DEFUN([GLIBCXX_CHECK_SC_NPROCESSORS_ONLN], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4444,8 +4422,7 @@ dnl Check whether sysconf(_SC_NPROC_ONLN) is available in <unistd.h>, and define
 dnl
 AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -4462,7 +4439,7 @@ AC_DEFUN([GLIBCXX_CHECK_SC_NPROC_ONLN], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4470,8 +4447,7 @@ dnl Check whether pthread_num_processors_np is available in <pthread.h>, and def
 dnl
 AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -4488,7 +4464,7 @@ AC_DEFUN([GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4497,8 +4473,7 @@ dnl and define _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
   ac_save_LIBS="$LIBS"
@@ -4518,7 +4493,7 @@ AC_DEFUN([GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT], [
 
   CXXFLAGS="$ac_save_CXXFLAGS"
   LIBS="$ac_save_LIBS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4527,8 +4502,7 @@ dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
   ac_save_LIBS="$LIBS"
@@ -4548,7 +4522,7 @@ AC_DEFUN([GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK], [
 
   CXXFLAGS="$ac_save_CXXFLAGS"
   LIBS="$ac_save_LIBS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4557,8 +4531,7 @@ dnl and define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
   ac_save_LIBS="$LIBS"
@@ -4580,7 +4553,7 @@ AC_DEFUN([GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK], [
 
   CXXFLAGS="$ac_save_CXXFLAGS"
   LIBS="$ac_save_LIBS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4588,8 +4561,7 @@ dnl Check whether sysctl is available in <pthread.h>, and define _GLIBCXX_USE_SY
 dnl
 AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 
@@ -4614,7 +4586,7 @@ AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4654,8 +4626,7 @@ dnl and define _GLIBCXX_USE_TMPNAM.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_TMPNAM], [dnl
 dnl
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 dnl
@@ -4671,7 +4642,7 @@ dnl
   fi
 dnl
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -4682,8 +4653,7 @@ AC_DEFUN([GLIBCXX_CHECK_SDT_H], [
   # Note that this test has to be run with the C language.
   # Otherwise, sdt.h will try to include some headers from
   # libstdc++ itself.
-  AC_LANG_SAVE
-  AC_LANG_C
+  AC_LANG_PUSH([C])
   AC_CACHE_CHECK([for suitable sys/sdt.h],
     glibcxx_cv_sys_sdt_h, [
     # Because we have to run the test in C, we use grep rather
@@ -4696,7 +4666,7 @@ AC_DEFUN([GLIBCXX_CHECK_SDT_H], [
       int f() { STAP_PROBE(hi, bob); }
     ], [glibcxx_cv_sys_sdt_h=yes], [glibcxx_cv_sys_sdt_h=no])
   ])
-  AC_LANG_RESTORE
+  AC_LANG_POP([C])
   if test $glibcxx_cv_sys_sdt_h = yes; then
     AC_DEFINE(HAVE_SYS_SDT_H, 1,
               [Define to 1 if you have a suitable <sys/sdt.h> header file])
@@ -4819,8 +4789,7 @@ dnl  HAVE_SYMLINK
 dnl
 AC_DEFUN([GLIBCXX_CHECK_FILESYSTEM_DEPS], [dnl
 dnl
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -fno-exceptions"
 dnl
@@ -5158,7 +5127,7 @@ dnl
   fi
 dnl
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5237,8 +5206,7 @@ dnl Check whether getentropy is present in <unistd.h>.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_GETENTROPY], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   AC_CACHE_CHECK([for getentropy], glibcxx_cv_getentropy, [
       GCC_TRY_COMPILE_OR_LINK(
 	[#include <unistd.h>],
@@ -5250,7 +5218,7 @@ AC_DEFUN([GLIBCXX_CHECK_GETENTROPY], [
   if test $glibcxx_cv_getentropy = yes; then
     AC_DEFINE(HAVE_GETENTROPY, 1, [Define if getentropy is available in <unistd.h>.])
   fi
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5258,8 +5226,7 @@ dnl Check whether arc4random is present in <stdlib.h>.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_ARC4RANDOM], [
 
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   AC_CACHE_CHECK([for arc4random], glibcxx_cv_arc4random, [
       GCC_TRY_COMPILE_OR_LINK(
 	[#include <stdlib.h>],
@@ -5270,7 +5237,7 @@ AC_DEFUN([GLIBCXX_CHECK_ARC4RANDOM], [
   if test $glibcxx_cv_arc4random = yes; then
     AC_DEFINE(HAVE_ARC4RANDOM, 1, [Define if arc4random is available in <stdlib.h>.])
   fi
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5287,7 +5254,7 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [
 
   BACKTRACE_CPPFLAGS="-D_GNU_SOURCE"
 
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   old_CXXFLAGS="$CXXFLAGS"
 
   # libbacktrace's own configure.ac only tests atomics for int,
@@ -5355,7 +5322,7 @@ EOF
   fi
 
   CXXFLAGS="$old_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 
   if test "$glibcxx_cv_libbacktrace_atomics" = yes; then
     BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DHAVE_ATOMIC_FUNCTIONS=1"
@@ -5663,9 +5630,7 @@ dnl Defines:
 dnl  _GLIBCXX_USE_STRUCT_TM_TM_ZONE if struct tm has a tm_zone member.
 dnl
 AC_DEFUN([GLIBCXX_STRUCT_TM_TM_ZONE], [
-
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -std=c++20"
 
@@ -5685,7 +5650,7 @@ AC_DEFUN([GLIBCXX_STRUCT_TM_TM_ZONE], [
   fi
 
   CXXFLAGS="$ac_save_CXXFLAGS"
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5696,8 +5661,7 @@ dnl  _GLIBCXX_CAN_ALIGNAS_DESTRUCTIVE_SIZE if objects with static storage
 dnl    duration can be aligned to std::hardware_destructive_interference_size.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_ALIGNAS_CACHELINE], [
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_MSG_CHECKING([whether static objects can be aligned to the cacheline size])
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
@@ -5711,7 +5675,7 @@ AC_DEFUN([GLIBCXX_CHECK_ALIGNAS_CACHELINE], [
   fi
   AC_MSG_RESULT($ac_alignas_cacheline)
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5723,8 +5687,7 @@ dnl  _GLIBCXX_USE_INIT_PRIORITY_ATTRIBUTE if GCC supports the init_priority
 dnl    attribute for the target.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_INIT_PRIORITY], [
-AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_MSG_CHECKING([whether init_priority attribute is supported])
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
@@ -5738,7 +5701,7 @@ AC_LANG_SAVE
   fi
   AC_MSG_RESULT($ac_init_priority)
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5748,8 +5711,7 @@ dnl Defines:
 dnl   _GLIBCXX_USE__GET_OSFHANDLE if _get_osfhandle is in <io.h> for Windows.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES], [
-AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_MSG_CHECKING([whether _get_osfhandle is defined in <io.h>])
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -5770,7 +5732,7 @@ AC_LANG_SAVE
   fi
   AC_MSG_RESULT($ac_get_osfhandle)
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5780,8 +5742,7 @@ dnl Defines:
 dnl   _GLIBCXX_USE_NL_LANGINFO_L if nl_langinfo_l is in <langinfo.h>.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_TEXT_ENCODING], [
-AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_MSG_CHECKING([whether nl_langinfo_l is defined in <langinfo.h>])
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -5801,7 +5762,7 @@ AC_LANG_SAVE
       [Define if nl_langinfo_l should be used for std::text_encoding.])
   fi
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5812,8 +5773,7 @@ dnl   _GLIBCXX_USE_PTRACE if ptrace(int, pid_t, int, int) is in <sys/ptrace.h>.
 dnl   _GLIBCXX_USE_PROC_SELF_STATUS if /proc/self/status should be used.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_DEBUGGING], [
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_CHECK_HEADERS([sys/ptrace.h debugapi.h])
 
@@ -5836,7 +5796,7 @@ AC_DEFUN([GLIBCXX_CHECK_DEBUGGING], [
       [Define if ptrace should be used for std::is_debugger_present.])
   fi
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 dnl
@@ -5847,8 +5807,7 @@ dnl   _GLIBCXX_USE_STDIO_LOCKING if flockfile, putc_unlocked etc. are present.
 dnl   _GLIBCXX_USE_GLIBC_STDIO_EXT if FILE::_IO_write_ptr etc. are also present.
 dnl
 AC_DEFUN([GLIBCXX_CHECK_STDIO_LOCKING], [
-AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
+  AC_LANG_PUSH([C++])
 
   AC_MSG_CHECKING([whether flockfile and putc_unlocked are defined in <stdio.h>])
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -5926,7 +5885,7 @@ AC_LANG_SAVE
     fi
   fi
 
-  AC_LANG_RESTORE
+  AC_LANG_POP([C++])
 ])
 
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 2d725c1bab98..f3cc12329b0c 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16308,7 +16308,6 @@ if ${glibcxx_cv_prog_CXX_pch+:} false; then :
 else
   ac_save_CXXFLAGS="$CXXFLAGS"
        CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated"
-
        ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -16400,7 +16399,6 @@ esac
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -16477,7 +16475,7 @@ $as_echo "$glibcxx_cv_atomic_word" >&6; }
     # Fake what AC_COMPILE_IFELSE does.
 
     cat > conftest.$ac_ext << EOF
-#line 16480 "configure"
+#line 16478 "configure"
 #include "atomic_word.h"
 int main()
 {
@@ -16562,7 +16560,6 @@ fi
 $as_echo_n "checking for lock policy for shared_ptr reference counts... " >&6; }
 
   if test x"$libstdcxx_atomic_lock_policy" = x"auto"; then
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -16625,7 +16622,7 @@ $as_echo "mutex" >&6; }
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 16628 "configure"
+#line 16625 "configure"
 int main()
 {
   _Decimal32 d1;
@@ -16655,7 +16652,6 @@ $as_echo "$enable_dfp" >&6; }
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -16667,7 +16663,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   # unnecessary for this test.
 
   cat > conftest.$ac_ext << EOF
-#line 16670 "configure"
+#line 16666 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
@@ -16714,7 +16710,6 @@ fi
   # All these tests are for C++; save the language and the compiler flags.
   # The CXXFLAGS thing is suspicious, but based on similar bits previously
   # found in GLIBCXX_CONFIGURE.
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17463,7 +17458,6 @@ done
 
   if test x"$enable_wchar_t" = x"yes"; then
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17591,7 +17585,6 @@ fi
 
 
   if test x"$enable_c99" = x"yes"; then
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -18268,7 +18261,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19794,7 +19786,6 @@ fi
 # Checks for operating systems support that doesn't require linking.
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19848,7 +19839,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20063,7 +20053,6 @@ fi
 done
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20205,7 +20194,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For LFS support.
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20379,7 +20367,6 @@ done
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20460,7 +20447,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20615,7 +20601,6 @@ done
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -20714,7 +20699,6 @@ done
 # For C99 support to TR1.
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21345,7 +21329,6 @@ fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday" >&5
 $as_echo_n "checking for gettimeofday... " >&6; }
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -21451,7 +21434,6 @@ fi
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22092,7 +22074,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Check for tmpnam which is obsolescent in POSIX.1-2008
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22168,7 +22149,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # For pthread_cond_clockwait
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22250,7 +22230,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # For pthread_mutex_clocklock
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22332,7 +22311,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # For pthread_rwlock_clockrdlock and pthread_rwlock_clockwrlock
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22470,7 +22448,6 @@ done
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22559,7 +22536,6 @@ done
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22636,7 +22612,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22713,7 +22688,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22790,7 +22764,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -22885,7 +22858,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   # Note that this test has to be run with the C language.
   # Otherwise, sdt.h will try to include some headers from
   # libstdc++ itself.
-
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23314,7 +23286,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23378,7 +23349,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23442,7 +23412,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23506,7 +23475,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23566,7 +23534,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23630,7 +23597,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23694,7 +23660,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23753,7 +23718,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23810,7 +23774,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23869,7 +23832,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23933,7 +23895,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -23997,7 +23958,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24061,7 +24021,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24121,7 +24080,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24185,7 +24143,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24245,7 +24202,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24305,7 +24261,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24365,7 +24320,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24425,7 +24379,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24489,7 +24442,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24553,7 +24505,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24613,7 +24564,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24673,7 +24623,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24733,7 +24682,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24797,7 +24745,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24857,7 +24804,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24920,7 +24866,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24977,7 +24922,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25036,7 +24980,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25100,7 +25043,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25164,7 +25106,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25224,7 +25165,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25288,7 +25228,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25352,7 +25291,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25412,7 +25350,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25472,7 +25409,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25532,7 +25468,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25592,7 +25527,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25656,7 +25590,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25720,7 +25653,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25780,7 +25712,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25840,7 +25771,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25904,7 +25834,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -25964,7 +25893,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -26036,7 +25964,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -26094,7 +26021,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -26152,7 +26078,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -26210,7 +26135,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27593,7 +27517,6 @@ if ${glibcxx_cv_func_acosl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27644,7 +27567,6 @@ if ${glibcxx_cv_func_asinl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27695,7 +27617,6 @@ if ${glibcxx_cv_func_atan2l_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27746,7 +27667,6 @@ if ${glibcxx_cv_func_atanl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27797,7 +27717,6 @@ if ${glibcxx_cv_func_ceill_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27848,7 +27767,6 @@ if ${glibcxx_cv_func_coshl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27899,7 +27817,6 @@ if ${glibcxx_cv_func_cosl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -27950,7 +27867,6 @@ if ${glibcxx_cv_func_expl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28001,7 +27917,6 @@ if ${glibcxx_cv_func_fabsl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28052,7 +27967,6 @@ if ${glibcxx_cv_func_floorl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28103,7 +28017,6 @@ if ${glibcxx_cv_func_fmodl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28154,7 +28067,6 @@ if ${glibcxx_cv_func_frexpl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28205,7 +28117,6 @@ if ${glibcxx_cv_func_hypotl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28256,7 +28167,6 @@ if ${glibcxx_cv_func_ldexpl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28307,7 +28217,6 @@ if ${glibcxx_cv_func_log10l_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28358,7 +28267,6 @@ if ${glibcxx_cv_func_logl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28409,7 +28317,6 @@ if ${glibcxx_cv_func_modfl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28460,7 +28367,6 @@ if ${glibcxx_cv_func_powl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28511,7 +28417,6 @@ if ${glibcxx_cv_func_sinhl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28562,7 +28467,6 @@ if ${glibcxx_cv_func_sinl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28613,7 +28517,6 @@ if ${glibcxx_cv_func_sqrtl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28664,7 +28567,6 @@ if ${glibcxx_cv_func_tanhl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -28715,7 +28617,6 @@ if ${glibcxx_cv_func_tanl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29050,7 +28951,6 @@ case "${host}" in
   # All these tests are for C++; save the language and the compiler flags.
   # The CXXFLAGS thing is suspicious, but based on similar bits previously
   # found in GLIBCXX_CONFIGURE.
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29315,7 +29215,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29379,7 +29278,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29443,7 +29341,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29507,7 +29404,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29567,7 +29463,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29631,7 +29526,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29695,7 +29589,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29754,7 +29647,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29811,7 +29703,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29870,7 +29761,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29934,7 +29824,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -29998,7 +29887,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30062,7 +29950,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30122,7 +30009,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30186,7 +30072,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30246,7 +30131,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30306,7 +30190,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30366,7 +30249,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30426,7 +30308,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30490,7 +30371,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30554,7 +30434,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30614,7 +30493,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30674,7 +30552,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30734,7 +30611,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30798,7 +30674,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30858,7 +30733,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30921,7 +30795,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -30978,7 +30851,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31037,7 +30909,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31101,7 +30972,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31165,7 +31035,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31225,7 +31094,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31289,7 +31157,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31353,7 +31220,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31413,7 +31279,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31473,7 +31338,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31533,7 +31397,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31593,7 +31456,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31657,7 +31519,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31721,7 +31582,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31781,7 +31641,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31841,7 +31700,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31905,7 +31763,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -31965,7 +31822,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32037,7 +31893,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32095,7 +31950,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32153,7 +32007,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32211,7 +32064,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32497,7 +32349,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32561,7 +32412,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32625,7 +32475,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32689,7 +32538,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32749,7 +32597,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32813,7 +32660,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32877,7 +32723,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32936,7 +32781,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32993,7 +32837,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33052,7 +32895,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33116,7 +32958,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33180,7 +33021,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33244,7 +33084,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33304,7 +33143,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33368,7 +33206,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33428,7 +33265,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33488,7 +33324,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33548,7 +33383,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33608,7 +33442,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33672,7 +33505,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33736,7 +33568,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33796,7 +33627,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33856,7 +33686,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33916,7 +33745,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -33980,7 +33808,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34040,7 +33867,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34103,7 +33929,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34160,7 +33985,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34219,7 +34043,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34283,7 +34106,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34347,7 +34169,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34407,7 +34228,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34471,7 +34291,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34535,7 +34354,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34595,7 +34413,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34655,7 +34472,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34715,7 +34531,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34775,7 +34590,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34839,7 +34653,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34903,7 +34716,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -34963,7 +34775,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35023,7 +34834,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35087,7 +34897,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35147,7 +34956,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35219,7 +35027,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35277,7 +35084,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35335,7 +35141,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35393,7 +35198,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35524,7 +35328,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35588,7 +35391,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35652,7 +35454,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35716,7 +35517,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35776,7 +35576,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35840,7 +35639,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35904,7 +35702,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -35963,7 +35760,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36020,7 +35816,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36079,7 +35874,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36143,7 +35937,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36207,7 +36000,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36271,7 +36063,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36331,7 +36122,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36395,7 +36185,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36455,7 +36244,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36515,7 +36303,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36575,7 +36362,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36635,7 +36421,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36699,7 +36484,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36763,7 +36547,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36823,7 +36606,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36883,7 +36665,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -36943,7 +36724,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37007,7 +36787,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37067,7 +36846,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37130,7 +36908,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37187,7 +36964,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37246,7 +37022,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37310,7 +37085,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37374,7 +37148,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37434,7 +37207,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37498,7 +37270,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37562,7 +37333,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37622,7 +37392,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37682,7 +37451,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37742,7 +37510,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37802,7 +37569,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37866,7 +37632,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37930,7 +37695,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -37990,7 +37754,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38050,7 +37813,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38114,7 +37876,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38174,7 +37935,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38246,7 +38006,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38304,7 +38063,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38362,7 +38120,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -38420,7 +38177,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39212,7 +38968,6 @@ $as_echo "#define HAVE_TLS 1" >>confdefs.h
   # All these tests are for C++; save the language and the compiler flags.
   # The CXXFLAGS thing is suspicious, but based on similar bits previously
   # found in GLIBCXX_CONFIGURE.
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39477,7 +39232,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39541,7 +39295,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39605,7 +39358,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39669,7 +39421,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39729,7 +39480,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39793,7 +39543,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39857,7 +39606,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39916,7 +39664,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -39973,7 +39720,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40032,7 +39778,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40096,7 +39841,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40160,7 +39904,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40224,7 +39967,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40284,7 +40026,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40348,7 +40089,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40408,7 +40148,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40468,7 +40207,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40528,7 +40266,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40588,7 +40325,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40652,7 +40388,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40716,7 +40451,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40776,7 +40510,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40836,7 +40569,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40896,7 +40628,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -40960,7 +40691,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41020,7 +40750,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41083,7 +40812,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41140,7 +40868,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41199,7 +40926,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41263,7 +40989,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41327,7 +41052,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41387,7 +41111,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41451,7 +41174,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41515,7 +41237,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41575,7 +41296,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41635,7 +41355,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41695,7 +41414,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41755,7 +41473,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41819,7 +41536,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41883,7 +41599,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -41943,7 +41658,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42003,7 +41717,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42067,7 +41780,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42127,7 +41839,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42199,7 +41910,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42257,7 +41967,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42315,7 +42024,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42373,7 +42081,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42922,7 +42629,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -42986,7 +42692,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43050,7 +42755,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43114,7 +42818,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43174,7 +42877,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43238,7 +42940,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43302,7 +43003,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43361,7 +43061,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43418,7 +43117,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43477,7 +43175,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43541,7 +43238,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43605,7 +43301,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43669,7 +43364,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43729,7 +43423,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43793,7 +43486,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43853,7 +43545,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43913,7 +43604,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -43973,7 +43663,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44033,7 +43722,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44097,7 +43785,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44161,7 +43848,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44221,7 +43907,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44281,7 +43966,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44341,7 +44025,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44405,7 +44088,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44465,7 +44147,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44528,7 +44209,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44585,7 +44265,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44644,7 +44323,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44708,7 +44386,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44772,7 +44449,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44832,7 +44508,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44896,7 +44571,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44960,7 +44634,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45020,7 +44693,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45080,7 +44752,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45140,7 +44811,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45200,7 +44870,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45264,7 +44933,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45328,7 +44996,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45388,7 +45055,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45448,7 +45114,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45512,7 +45177,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45572,7 +45236,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45644,7 +45307,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45702,7 +45364,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45760,7 +45421,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -45818,7 +45478,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46599,7 +46258,6 @@ $as_echo_n "checking for isinf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46663,7 +46321,6 @@ $as_echo_n "checking for isnan declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46727,7 +46384,6 @@ $as_echo_n "checking for finite declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46791,7 +46447,6 @@ $as_echo_n "checking for sincos declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46851,7 +46506,6 @@ $as_echo_n "checking for fpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46915,7 +46569,6 @@ $as_echo_n "checking for qfpclass declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -46979,7 +46632,6 @@ $as_echo_n "checking for hypot declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47038,7 +46690,6 @@ $as_echo_n "checking for float trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47095,7 +46746,6 @@ $as_echo_n "checking for float round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47154,7 +46804,6 @@ $as_echo_n "checking for expf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47218,7 +46867,6 @@ $as_echo_n "checking for isnanf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47282,7 +46930,6 @@ $as_echo_n "checking for isinff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47346,7 +46993,6 @@ $as_echo_n "checking for atan2f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47406,7 +47052,6 @@ $as_echo_n "checking for fabsf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47470,7 +47115,6 @@ $as_echo_n "checking for fmodf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47530,7 +47174,6 @@ $as_echo_n "checking for frexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47590,7 +47233,6 @@ $as_echo_n "checking for hypotf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47650,7 +47292,6 @@ $as_echo_n "checking for ldexpf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47710,7 +47351,6 @@ $as_echo_n "checking for logf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47774,7 +47414,6 @@ $as_echo_n "checking for log10f declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47838,7 +47477,6 @@ $as_echo_n "checking for modff declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47898,7 +47536,6 @@ $as_echo_n "checking for modf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -47958,7 +47595,6 @@ $as_echo_n "checking for powf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48018,7 +47654,6 @@ $as_echo_n "checking for sqrtf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48082,7 +47717,6 @@ $as_echo_n "checking for sincosf declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48142,7 +47776,6 @@ $as_echo_n "checking for finitef declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48205,7 +47838,6 @@ $as_echo_n "checking for long double trig functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48262,7 +47894,6 @@ $as_echo_n "checking for long double round functions... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
     ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48321,7 +47952,6 @@ $as_echo_n "checking for isnanl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48385,7 +48015,6 @@ $as_echo_n "checking for isinfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48449,7 +48078,6 @@ $as_echo_n "checking for atan2l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48509,7 +48137,6 @@ $as_echo_n "checking for expl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48573,7 +48200,6 @@ $as_echo_n "checking for fabsl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48637,7 +48263,6 @@ $as_echo_n "checking for fmodl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48697,7 +48322,6 @@ $as_echo_n "checking for frexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48757,7 +48381,6 @@ $as_echo_n "checking for hypotl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48817,7 +48440,6 @@ $as_echo_n "checking for ldexpl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48877,7 +48499,6 @@ $as_echo_n "checking for logl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -48941,7 +48562,6 @@ $as_echo_n "checking for log10l declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49005,7 +48625,6 @@ $as_echo_n "checking for modfl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49065,7 +48684,6 @@ $as_echo_n "checking for powl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49125,7 +48743,6 @@ $as_echo_n "checking for sqrtl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49189,7 +48806,6 @@ $as_echo_n "checking for sincosl declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49249,7 +48865,6 @@ $as_echo_n "checking for finitel declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49321,7 +48936,6 @@ $as_echo_n "checking for at_quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49379,7 +48993,6 @@ $as_echo_n "checking for quick_exit declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49437,7 +49050,6 @@ $as_echo_n "checking for strtold declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49495,7 +49107,6 @@ $as_echo_n "checking for strtof declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49600,7 +49211,6 @@ if ${glibcxx_cv_func_acosl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49651,7 +49261,6 @@ if ${glibcxx_cv_func_asinl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49702,7 +49311,6 @@ if ${glibcxx_cv_func_atan2l_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49753,7 +49361,6 @@ if ${glibcxx_cv_func_atanl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49804,7 +49411,6 @@ if ${glibcxx_cv_func_ceill_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49855,7 +49461,6 @@ if ${glibcxx_cv_func_cosl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49906,7 +49511,6 @@ if ${glibcxx_cv_func_coshl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -49957,7 +49561,6 @@ if ${glibcxx_cv_func_expl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50008,7 +49611,6 @@ if ${glibcxx_cv_func_fabsl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50059,7 +49661,6 @@ if ${glibcxx_cv_func_floorl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50110,7 +49711,6 @@ if ${glibcxx_cv_func_fmodl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50161,7 +49761,6 @@ if ${glibcxx_cv_func_frexpl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50212,7 +49811,6 @@ if ${glibcxx_cv_func_ldexpl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50263,7 +49861,6 @@ if ${glibcxx_cv_func_log10l_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50314,7 +49911,6 @@ if ${glibcxx_cv_func_logl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50365,7 +49961,6 @@ if ${glibcxx_cv_func_modfl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50416,7 +50011,6 @@ if ${glibcxx_cv_func_powl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50467,7 +50061,6 @@ if ${glibcxx_cv_func_sinl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50518,7 +50111,6 @@ if ${glibcxx_cv_func_sinhl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50569,7 +50161,6 @@ if ${glibcxx_cv_func_sqrtl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50620,7 +50211,6 @@ if ${glibcxx_cv_func_tanl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50671,7 +50261,6 @@ if ${glibcxx_cv_func_tanhl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50722,7 +50311,6 @@ if ${glibcxx_cv_func_hypotl_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50773,7 +50361,6 @@ if ${glibcxx_cv_func_ldexpf_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50824,7 +50411,6 @@ if ${glibcxx_cv_func_modff_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50875,7 +50461,6 @@ if ${glibcxx_cv_func_hypotf_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -50926,7 +50511,6 @@ if ${glibcxx_cv_func_frexpf_use+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -51971,7 +51555,6 @@ $as_echo "#define _GLIBCXX_X86_RDSEED 1" >>confdefs.h
 # Check for other random number APIs
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -52046,7 +51629,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -52122,7 +51704,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
   # Do checks for resource limit functions.
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -52367,7 +51948,6 @@ $as_echo_n "checking for setenv declaration... " >&6; }
   $as_echo_n "(cached) " >&6
 else
 
-
       ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -52460,7 +52040,6 @@ fi
   if test x$enable_libstdcxx_threads = xauto ||
      test x$enable_libstdcxx_threads = xyes; then
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -52675,7 +52254,6 @@ $as_echo_n "checking whether to build Filesystem TS support... " >&6; }
 $as_echo "$enable_libstdcxx_filesystem_ts" >&6; }
 
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -54159,7 +53737,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 54162 "configure"
+#line 53740 "configure"
 #include <stddef.h>
 int main()
 {
@@ -54839,8 +54417,6 @@ _ACEOF
 
 # For std::chrono formatters to use tm::tm_zone
 
-
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -54898,7 +54474,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For src/c++11/shared_ptr.cc alignment.
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -54947,7 +54522,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For using init_priority in ios_init.cc
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -54998,7 +54572,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For __basic_file::native_handle()
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -55056,7 +54629,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For std::text_encoding
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -55113,7 +54685,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For std::is_debugger_present
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -55186,7 +54757,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # For std::print
 
-
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 2f4a6c6da87b..c94f5719075b 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -320,8 +320,7 @@ dnl GLIBCXX_CHECK_MATH_DECL
 AC_DEFUN([GLIBCXX_CHECK_MATH_DECL], [
   AC_CACHE_CHECK([for $1 declaration],
     [glibcxx_cv_func_$1_use], [
-      AC_LANG_SAVE
-      AC_LANG_C
+      AC_LANG_PUSH([C])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <math.h>
 #ifdef HAVE_IEEEFP_H
diff --git a/libstdc++-v3/linkage.m4 b/libstdc++-v3/linkage.m4
index 222cc080f3c9..8cce2dac70a3 100644
--- a/libstdc++-v3/linkage.m4
+++ b/libstdc++-v3/linkage.m4
@@ -12,8 +12,7 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
 		      #ifdef HAVE_IEEEFP_H
 		      #include <ieeefp.h>
@@ -21,7 +20,7 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
 		     ]],
                      [[ $1(0);]])],
                       [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
@@ -57,13 +56,12 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
   define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnl
   AC_MSG_CHECKING([for $1 functions])
   AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
+    AC_LANG_PUSH([C++])
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
                    patsubst(funclist,[\w+],[\& (0);]))],
                    [glibcxx_cv_func_$2_use=yes],
                    [glibcxx_cv_func_$2_use=no])
-    AC_LANG_RESTORE])
+    AC_LANG_POP([C++])])
   AC_MSG_RESULT($glibcxx_cv_func_$2_use)
   if test x$glibcxx_cv_func_$2_use = x"yes"; then
     AC_CHECK_FUNCS(funclist)
@@ -81,12 +79,11 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
                      [[ $1(0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
@@ -122,12 +119,11 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
                      [[ $1(0, 0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
@@ -167,12 +163,11 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
                      [[ $1(0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
@@ -196,12 +191,11 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
                      [[ $1(0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
@@ -225,12 +219,11 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
   AC_MSG_CHECKING([for $1 declaration])
   if test x${glibcxx_cv_func_$1_use+set} != xset; then
     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
-      AC_LANG_SAVE
-      AC_LANG_CPLUSPLUS
+      AC_LANG_PUSH([C++])
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
                      [[ $1(0, 0, 0);]])],
                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
-      AC_LANG_RESTORE
+      AC_LANG_POP([C++])
     ])
   fi
   AC_MSG_RESULT($glibcxx_cv_func_$1_use)

From pietro@gcc.gnu.org  Thu Jun 25 12:30:24 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:24 +0000 (GMT)
Subject: [gcc r17-1851] libstdc++: Update AM_PROG_LIBTOOL to LT_INIT [PR103459]
Message-ID: <20260625123024.D984B4BA23D9@sourceware.org>

https://gcc.gnu.org/g:16756fcc9f6bd1e8876e7f48fb20e1729a9b3529

commit r17-1851-g16756fcc9f6bd1e8876e7f48fb20e1729a9b3529
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AM_PROG_LIBTOOL to LT_INIT [PR103459]
    
    AM_PROG_LIBTOOL has been deprecated by libtool. Update to LT_INIT.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * configure: Regenerate.
            * configure.ac: Update AM_PROG_LIBTOOL to LT_INIT.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/configure    | 2 +-
 libstdc++-v3/configure.ac | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index f3cc12329b0c..101212d06a81 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16192,7 +16192,7 @@ fi
 
 
 # Override the libtool's pic_flag and pic_mode.
-# Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT.
+# Do this step after LT_INIT, but before AC_OUTPUT.
 # NB: this impacts --with-pic and --without-pic.
 lt_prog_compiler_pic_CXX="$glibcxx_compiler_pic_flag $glibcxx_compiler_shared_flag"
 pic_mode='default'
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index adfada8be4ba..c442d068e7a7 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -105,7 +105,7 @@ if test "x${with_newlib}" != "xyes" &&
     test "x$with_headers" != "xno"; then
   AC_LIBTOOL_DLOPEN
 fi
-AM_PROG_LIBTOOL
+LT_INIT
 ACX_LT_HOST_FLAGS
 AC_SUBST(enable_shared)
 AC_SUBST(enable_static)
@@ -150,7 +150,7 @@ AC_SUBST(glibcxx_compiler_pic_flag)
 AC_SUBST(glibcxx_compiler_shared_flag)
 
 # Override the libtool's pic_flag and pic_mode.
-# Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT.
+# Do this step after LT_INIT, but before AC_OUTPUT.
 # NB: this impacts --with-pic and --without-pic.
 lt_prog_compiler_pic_CXX="$glibcxx_compiler_pic_flag $glibcxx_compiler_shared_flag"
 pic_mode='default'

From pietro@gcc.gnu.org  Thu Jun 25 12:30:30 2026
From: pietro@gcc.gnu.org (Pietro Monteiro)
Date: Thu, 25 Jun 2026 12:30:30 +0000 (GMT)
Subject: [gcc r17-1852] libstdc++: Update AC_FOREACH to m4_foreach_w [PR103459]
Message-ID: <20260625123030.36AA74BA798A@sourceware.org>

https://gcc.gnu.org/g:0623f27940353f4cf6da1cccf8a37637a4febecc

commit r17-1852-g0623f27940353f4cf6da1cccf8a37637a4febecc
Author: Pietro Monteiro <pietro@sociotechnical.xyz>
Date:   Thu Jun 25 08:29:18 2026 -0400

    libstdc++: Update AC_FOREACH to m4_foreach_w [PR103459]
    
    AC_FOREACH has been deprecated by Autoconf.  Update to
    m4_foreach_w.  No changes to generated files.
    
            PR bootstrap/103459
    
    libstdc++-v3/ChangeLog:
    
            * configure.ac: Update AC_FOREACH to m4_foreach_w.
    
    Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>

Diff:
---
 libstdc++-v3/configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index c442d068e7a7..db08de7735e4 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -802,7 +802,7 @@ AC_CONFIG_FILES([src/libbacktrace/backtrace-supported.h])
 # append it here.  Only modify Makefiles that have just been created.
 #
 # Also, get rid of this simulated-VPATH thing that automake does.
-AC_CONFIG_FILES(AC_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ]),
+AC_CONFIG_FILES(m4_foreach_w([DIR], glibcxx_SUBDIRS, [DIR/Makefile ]),
   [cat > vpsed$$ << \_EOF
 s!`test -f '$<' || echo '$(srcdir)/'`!!
 _EOF

From redi@gcc.gnu.org  Thu Jun 25 12:53:08 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 25 Jun 2026 12:53:08 +0000 (GMT)
Subject: [gcc r17-1853] libstdc++: Remove trailing whitespace in acinclude.m4
Message-ID: <20260625125308.0993A4BA23C9@sourceware.org>

https://gcc.gnu.org/g:3a87b1bffd9887a7970b9a49c48c54a209d5ce30

commit r17-1853-g3a87b1bffd9887a7970b9a49c48c54a209d5ce30
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jun 25 12:23:54 2026 +0100

    libstdc++: Remove trailing whitespace in acinclude.m4
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (GLIBCXX_CHECK_STDIO_LOCKING): Remove trailing
            whitespace.

Diff:
---
 libstdc++-v3/acinclude.m4 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index a444a3b649ca..c064b1271ece 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -5861,7 +5861,7 @@ AC_DEFUN([GLIBCXX_CHECK_STDIO_LOCKING], [
 	  }
 	  ]],[[
 	  f1_type twritable = &::__fwritable;
-	  f1_type tblk = &::__flbf; 
+	  f1_type tblk = &::__flbf;
 	  f2_type pbufsize = &::__fbufsize;
 	  FILE* f = ::fopen("", "");
 	  int i = ::__overflow(f, EOF);

From redi@gcc.gnu.org  Thu Jun 25 18:01:24 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Thu, 25 Jun 2026 18:01:24 +0000 (GMT)
Subject: [gcc r17-1905] libstdc++: Update feature test macros and tests for
 C++29
Message-ID: <20260625180124.D9BD74BA2E15@sourceware.org>

https://gcc.gnu.org/g:70e630b6d29b750173920d19bd87c3930b7be532

commit r17-1905-g70e630b6d29b750173920d19bd87c3930b7be532
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jun 25 12:59:04 2026 +0100

    libstdc++: Update feature test macros and tests for C++29
    
    With r17-1595-g0c5c6249a2e9a7 G++ supports -std=c++29 so update our
    feature test macro generation and testsuite to know about it.
    
    For the stds map in bits/version.def we can just use '> 20YYMM' for the
    date of the previous standard, instead of '>= 20YYMM' with some
    arbitrary value that's greater than the previous standard. For example
    for C++23 we can use '> 202002L' instead of '>= 202100L'. This means we
    won't need to update the values again in future, we can just add new
    rows to the end.
    
    For the testsuite, we bump the v3_max_std value to 29 which means that
    tests that require c++23 or c++26 will be run with that standard and
    also c++29.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/version.def (stds): Add C++29 value and adjust
            C++23 and C++26 values.
            * include/bits/version.h: Regenerate.
            * testsuite/lib/libstdc++.exp (v3_max_std): Update to 29.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/version.def    |   5 +-
 libstdc++-v3/include/bits/version.h      | 128 +++++++++++++++----------------
 libstdc++-v3/testsuite/lib/libstdc++.exp |   2 +-
 3 files changed, 68 insertions(+), 67 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index 40baefab4e4c..cb48380e2fa8 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2616,8 +2616,9 @@ stds[11] = ">= 201103L";
 stds[14] = ">= 201402L";
 stds[17] = ">= 201703L";
 stds[20] = ">= 202002L";
-stds[23] = ">= 202100L"; // Should be 202302L but Clang 16 uses 202101L
-stds[26] = ">  202302L"; // TODO: update when finalized
+stds[23] = ">  202002L"; // >= 202302L but Clang 16 uses 202101L
+stds[26] = ">  202302L"; // >= 202603L but Clang 21 uses 202400L
+stds[29] = ">  202603L"; // GCC 17 uses 202700
 
 // Local Variables:
 // compile-command: "autogen version.def"
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index de1d71fa935b..c20c3d185359 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -81,7 +81,7 @@
 #undef __glibcxx_want_allocator_traits_is_always_equal
 
 #if !defined(__cpp_lib_allocate_at_least)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_allocate_at_least 202302L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_allocate_at_least)
 #   define __cpp_lib_allocate_at_least 202302L
@@ -959,7 +959,7 @@
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_bind_back)
 #   define __cpp_lib_bind_back 202306L
 #  endif
-# elif (__cplusplus >= 202100L) && (__cpp_explicit_this_parameter)
+# elif (__cplusplus >  202002L) && (__cpp_explicit_this_parameter)
 #  define __glibcxx_bind_back 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_bind_back)
 #   define __cpp_lib_bind_back 202202L
@@ -1024,7 +1024,7 @@
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional)
 #   define __cpp_lib_optional 202506L
 #  endif
-# elif (__cplusplus >= 202100L) && (__glibcxx_concepts)
+# elif (__cplusplus >  202002L) && (__glibcxx_concepts)
 #  define __glibcxx_optional 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional)
 #   define __cpp_lib_optional 202110L
@@ -1218,7 +1218,7 @@
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_mdspan)
 #   define __cpp_lib_mdspan 202406L
 #  endif
-# elif (__cplusplus >= 202100L)
+# elif (__cplusplus >  202002L)
 #  define __glibcxx_mdspan 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_mdspan)
 #   define __cpp_lib_mdspan 202207L
@@ -1347,7 +1347,7 @@
 #undef __glibcxx_want_constexpr_utility
 
 #if !defined(__cpp_lib_shift)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_shift 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_shift)
 #   define __cpp_lib_shift 202202L
@@ -1367,7 +1367,7 @@
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges)
 #   define __cpp_lib_ranges 202406L
 #  endif
-# elif (__cplusplus >= 202100L) && (__glibcxx_concepts)
+# elif (__cplusplus >  202002L) && (__glibcxx_concepts)
 #  define __glibcxx_ranges 202302L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges)
 #   define __cpp_lib_ranges 202302L
@@ -1427,7 +1427,7 @@
 #undef __glibcxx_want_constexpr_tuple
 
 #if !defined(__cpp_lib_constexpr_memory)
-# if (__cplusplus >= 202100L) && (__cpp_constexpr_dynamic_alloc)
+# if (__cplusplus >  202002L) && (__cpp_constexpr_dynamic_alloc)
 #  define __glibcxx_constexpr_memory 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_memory)
 #   define __cpp_lib_constexpr_memory 202202L
@@ -1597,7 +1597,7 @@
 #undef __glibcxx_want_constexpr_vector
 
 #if !defined(__cpp_lib_constrained_equality)
-# if (__cplusplus >= 202100L) && (__glibcxx_three_way_comparison)
+# if (__cplusplus >  202002L) && (__glibcxx_three_way_comparison)
 #  define __glibcxx_constrained_equality 202411L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constrained_equality)
 #   define __cpp_lib_constrained_equality 202411L
@@ -1712,7 +1712,7 @@
 #undef __glibcxx_want_syncbuf
 
 #if !defined(__cpp_lib_byteswap)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_byteswap 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_byteswap)
 #   define __cpp_lib_byteswap 202110L
@@ -1722,7 +1722,7 @@
 #undef __glibcxx_want_byteswap
 
 #if !defined(__cpp_lib_constexpr_charconv)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_constexpr_charconv 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_charconv)
 #   define __cpp_lib_constexpr_charconv 202207L
@@ -1732,7 +1732,7 @@
 #undef __glibcxx_want_constexpr_charconv
 
 #if !defined(__cpp_lib_constexpr_typeinfo)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_constexpr_typeinfo 202106L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_typeinfo)
 #   define __cpp_lib_constexpr_typeinfo 202106L
@@ -1742,7 +1742,7 @@
 #undef __glibcxx_want_constexpr_typeinfo
 
 #if !defined(__cpp_lib_expected)
-# if (__cplusplus >= 202100L) && (__cpp_concepts >= 202002L)
+# if (__cplusplus >  202002L) && (__cpp_concepts >= 202002L)
 #  define __glibcxx_expected 202211L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_expected)
 #   define __cpp_lib_expected 202211L
@@ -1752,7 +1752,7 @@
 #undef __glibcxx_want_expected
 
 #if !defined(__cpp_lib_format_ranges)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_format_ranges 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_ranges)
 #   define __cpp_lib_format_ranges 202207L
@@ -1772,7 +1772,7 @@
 #undef __glibcxx_want_format_path
 
 #if !defined(__cpp_lib_freestanding_algorithm)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_algorithm 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_algorithm)
 #   define __cpp_lib_freestanding_algorithm 202311L
@@ -1782,7 +1782,7 @@
 #undef __glibcxx_want_freestanding_algorithm
 
 #if !defined(__cpp_lib_freestanding_array)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_array 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_array)
 #   define __cpp_lib_freestanding_array 202311L
@@ -1792,7 +1792,7 @@
 #undef __glibcxx_want_freestanding_array
 
 #if !defined(__cpp_lib_freestanding_cstring)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_cstring 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_cstring)
 #   define __cpp_lib_freestanding_cstring 202311L
@@ -1802,7 +1802,7 @@
 #undef __glibcxx_want_freestanding_cstring
 
 #if !defined(__cpp_lib_freestanding_expected)
-# if (__cplusplus >= 202100L) && (__cpp_lib_expected)
+# if (__cplusplus >  202002L) && (__cpp_lib_expected)
 #  define __glibcxx_freestanding_expected 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_expected)
 #   define __cpp_lib_freestanding_expected 202311L
@@ -1812,7 +1812,7 @@
 #undef __glibcxx_want_freestanding_expected
 
 #if !defined(__cpp_lib_freestanding_optional)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_optional 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_optional)
 #   define __cpp_lib_freestanding_optional 202311L
@@ -1822,7 +1822,7 @@
 #undef __glibcxx_want_freestanding_optional
 
 #if !defined(__cpp_lib_freestanding_string_view)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_string_view 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_string_view)
 #   define __cpp_lib_freestanding_string_view 202311L
@@ -1832,7 +1832,7 @@
 #undef __glibcxx_want_freestanding_string_view
 
 #if !defined(__cpp_lib_freestanding_variant)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_freestanding_variant 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_freestanding_variant)
 #   define __cpp_lib_freestanding_variant 202311L
@@ -1842,7 +1842,7 @@
 #undef __glibcxx_want_freestanding_variant
 
 #if !defined(__cpp_lib_invoke_r)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_invoke_r 202106L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_invoke_r)
 #   define __cpp_lib_invoke_r 202106L
@@ -1852,7 +1852,7 @@
 #undef __glibcxx_want_invoke_r
 
 #if !defined(__cpp_lib_associative_heterogeneous_erasure)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_associative_heterogeneous_erasure 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_associative_heterogeneous_erasure)
 #   define __cpp_lib_associative_heterogeneous_erasure 202110L
@@ -1872,7 +1872,7 @@
 #undef __glibcxx_want_associative_heterogeneous_insertion
 
 #if !defined(__cpp_lib_is_scoped_enum)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_is_scoped_enum 202011L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_scoped_enum)
 #   define __cpp_lib_is_scoped_enum 202011L
@@ -1882,7 +1882,7 @@
 #undef __glibcxx_want_is_scoped_enum
 
 #if !defined(__cpp_lib_reference_from_temporary)
-# if (__cplusplus >= 202100L) && (__has_builtin(__reference_constructs_from_temporary) && __has_builtin(__reference_converts_from_temporary))
+# if (__cplusplus >  202002L) && (__has_builtin(__reference_constructs_from_temporary) && __has_builtin(__reference_converts_from_temporary))
 #  define __glibcxx_reference_from_temporary 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reference_from_temporary)
 #   define __cpp_lib_reference_from_temporary 202202L
@@ -1892,7 +1892,7 @@
 #undef __glibcxx_want_reference_from_temporary
 
 #if !defined(__cpp_lib_containers_ranges)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_containers_ranges 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_containers_ranges)
 #   define __cpp_lib_containers_ranges 202202L
@@ -1902,7 +1902,7 @@
 #undef __glibcxx_want_containers_ranges
 
 #if !defined(__cpp_lib_ranges_to_container)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_ranges_to_container 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_to_container)
 #   define __cpp_lib_ranges_to_container 202202L
@@ -1912,7 +1912,7 @@
 #undef __glibcxx_want_ranges_to_container
 
 #if !defined(__cpp_lib_ranges_zip)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_zip 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_zip)
 #   define __cpp_lib_ranges_zip 202110L
@@ -1922,7 +1922,7 @@
 #undef __glibcxx_want_ranges_zip
 
 #if !defined(__cpp_lib_ranges_chunk)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_chunk 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_chunk)
 #   define __cpp_lib_ranges_chunk 202202L
@@ -1932,7 +1932,7 @@
 #undef __glibcxx_want_ranges_chunk
 
 #if !defined(__cpp_lib_ranges_slide)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_slide 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_slide)
 #   define __cpp_lib_ranges_slide 202202L
@@ -1942,7 +1942,7 @@
 #undef __glibcxx_want_ranges_slide
 
 #if !defined(__cpp_lib_ranges_chunk_by)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_chunk_by 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_chunk_by)
 #   define __cpp_lib_ranges_chunk_by 202202L
@@ -1952,7 +1952,7 @@
 #undef __glibcxx_want_ranges_chunk_by
 
 #if !defined(__cpp_lib_ranges_join_with)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_join_with 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_join_with)
 #   define __cpp_lib_ranges_join_with 202202L
@@ -1962,7 +1962,7 @@
 #undef __glibcxx_want_ranges_join_with
 
 #if !defined(__cpp_lib_ranges_repeat)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_repeat 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_repeat)
 #   define __cpp_lib_ranges_repeat 202207L
@@ -1972,7 +1972,7 @@
 #undef __glibcxx_want_ranges_repeat
 
 #if !defined(__cpp_lib_ranges_stride)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_stride 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_stride)
 #   define __cpp_lib_ranges_stride 202207L
@@ -1982,7 +1982,7 @@
 #undef __glibcxx_want_ranges_stride
 
 #if !defined(__cpp_lib_ranges_cartesian_product)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_cartesian_product 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_cartesian_product)
 #   define __cpp_lib_ranges_cartesian_product 202207L
@@ -1992,7 +1992,7 @@
 #undef __glibcxx_want_ranges_cartesian_product
 
 #if !defined(__cpp_lib_ranges_as_rvalue)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_as_rvalue 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_rvalue)
 #   define __cpp_lib_ranges_as_rvalue 202207L
@@ -2002,7 +2002,7 @@
 #undef __glibcxx_want_ranges_as_rvalue
 
 #if !defined(__cpp_lib_ranges_as_const)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_as_const 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_as_const)
 #   define __cpp_lib_ranges_as_const 202311L
@@ -2012,7 +2012,7 @@
 #undef __glibcxx_want_ranges_as_const
 
 #if !defined(__cpp_lib_ranges_enumerate)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_enumerate 202302L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_enumerate)
 #   define __cpp_lib_ranges_enumerate 202302L
@@ -2022,7 +2022,7 @@
 #undef __glibcxx_want_ranges_enumerate
 
 #if !defined(__cpp_lib_ranges_fold)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_fold 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_fold)
 #   define __cpp_lib_ranges_fold 202207L
@@ -2032,7 +2032,7 @@
 #undef __glibcxx_want_ranges_fold
 
 #if !defined(__cpp_lib_ranges_contains)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_contains 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_contains)
 #   define __cpp_lib_ranges_contains 202207L
@@ -2042,7 +2042,7 @@
 #undef __glibcxx_want_ranges_contains
 
 #if !defined(__cpp_lib_ranges_iota)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_iota 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_iota)
 #   define __cpp_lib_ranges_iota 202202L
@@ -2052,7 +2052,7 @@
 #undef __glibcxx_want_ranges_iota
 
 #if !defined(__cpp_lib_ranges_find_last)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_find_last 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_find_last)
 #   define __cpp_lib_ranges_find_last 202207L
@@ -2062,7 +2062,7 @@
 #undef __glibcxx_want_ranges_find_last
 
 #if !defined(__cpp_lib_ranges_starts_ends_with)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_ranges_starts_ends_with 202106L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ranges_starts_ends_with)
 #   define __cpp_lib_ranges_starts_ends_with 202106L
@@ -2082,7 +2082,7 @@
 #undef __glibcxx_want_ranges_indices
 
 #if !defined(__cpp_lib_constexpr_bitset)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (__cpp_constexpr_dynamic_alloc)
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED && (__cpp_constexpr_dynamic_alloc)
 #  define __glibcxx_constexpr_bitset 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_bitset)
 #   define __cpp_lib_constexpr_bitset 202202L
@@ -2092,7 +2092,7 @@
 #undef __glibcxx_want_constexpr_bitset
 
 #if !defined(__cpp_lib_stdatomic_h)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_stdatomic_h 202011L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stdatomic_h)
 #   define __cpp_lib_stdatomic_h 202011L
@@ -2122,7 +2122,7 @@
 #undef __glibcxx_want_stdckdint_h
 
 #if !defined(__cpp_lib_adaptor_iterator_pair_constructor)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_adaptor_iterator_pair_constructor 202106L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_adaptor_iterator_pair_constructor)
 #   define __cpp_lib_adaptor_iterator_pair_constructor 202106L
@@ -2132,7 +2132,7 @@
 #undef __glibcxx_want_adaptor_iterator_pair_constructor
 
 #if !defined(__cpp_lib_flat_map)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_flat_map 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
 #   define __cpp_lib_flat_map 202511L
@@ -2142,7 +2142,7 @@
 #undef __glibcxx_want_flat_map
 
 #if !defined(__cpp_lib_flat_set)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_flat_set 202511L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
 #   define __cpp_lib_flat_set 202511L
@@ -2172,7 +2172,7 @@
 #undef __glibcxx_want_common_reference_wrapper
 
 #if !defined(__cpp_lib_formatters)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_formatters 202302L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_formatters)
 #   define __cpp_lib_formatters 202302L
@@ -2182,7 +2182,7 @@
 #undef __glibcxx_want_formatters
 
 #if !defined(__cpp_lib_forward_like)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_forward_like 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_forward_like)
 #   define __cpp_lib_forward_like 202207L
@@ -2192,7 +2192,7 @@
 #undef __glibcxx_want_forward_like
 
 #if !defined(__cpp_lib_generator)
-# if (__cplusplus >= 202100L) && (__glibcxx_coroutine && __cpp_sized_deallocation)
+# if (__cplusplus >  202002L) && (__glibcxx_coroutine && __cpp_sized_deallocation)
 #  define __glibcxx_generator 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_generator)
 #   define __cpp_lib_generator 202207L
@@ -2202,7 +2202,7 @@
 #undef __glibcxx_want_generator
 
 #if !defined(__cpp_lib_ios_noreplace)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_ios_noreplace 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_ios_noreplace)
 #   define __cpp_lib_ios_noreplace 202207L
@@ -2212,7 +2212,7 @@
 #undef __glibcxx_want_ios_noreplace
 
 #if !defined(__cpp_lib_move_only_function)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_move_only_function 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_move_only_function)
 #   define __cpp_lib_move_only_function 202110L
@@ -2242,7 +2242,7 @@
 #undef __glibcxx_want_function_ref
 
 #if !defined(__cpp_lib_out_ptr)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_out_ptr 202311L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_out_ptr)
 #   define __cpp_lib_out_ptr 202311L
@@ -2252,7 +2252,7 @@
 #undef __glibcxx_want_out_ptr
 
 #if !defined(__cpp_lib_print)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_print 202406L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_print)
 #   define __cpp_lib_print 202406L
@@ -2262,7 +2262,7 @@
 #undef __glibcxx_want_print
 
 #if !defined(__cpp_lib_spanstream)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (__glibcxx_span)
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED && (__glibcxx_span)
 #  define __glibcxx_spanstream 202106L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_spanstream)
 #   define __cpp_lib_spanstream 202106L
@@ -2272,7 +2272,7 @@
 #undef __glibcxx_want_spanstream
 
 #if !defined(__cpp_lib_stacktrace)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (_GLIBCXX_HAVE_STACKTRACE)
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED && (_GLIBCXX_HAVE_STACKTRACE)
 #  define __glibcxx_stacktrace 202011L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_stacktrace)
 #   define __cpp_lib_stacktrace 202011L
@@ -2282,7 +2282,7 @@
 #undef __glibcxx_want_stacktrace
 
 #if !defined(__cpp_lib_start_lifetime_as)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_start_lifetime_as 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_start_lifetime_as)
 #   define __cpp_lib_start_lifetime_as 202207L
@@ -2292,7 +2292,7 @@
 #undef __glibcxx_want_start_lifetime_as
 
 #if !defined(__cpp_lib_string_contains)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_string_contains 202011L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_contains)
 #   define __cpp_lib_string_contains 202011L
@@ -2302,7 +2302,7 @@
 #undef __glibcxx_want_string_contains
 
 #if !defined(__cpp_lib_string_resize_and_overwrite)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED
 #  define __glibcxx_string_resize_and_overwrite 202110L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_resize_and_overwrite)
 #   define __cpp_lib_string_resize_and_overwrite 202110L
@@ -2322,7 +2322,7 @@
 #undef __glibcxx_want_string_subview
 
 #if !defined(__cpp_lib_to_underlying)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_to_underlying 202102L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_to_underlying)
 #   define __cpp_lib_to_underlying 202102L
@@ -2337,7 +2337,7 @@
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuple_like)
 #   define __cpp_lib_tuple_like 202311L
 #  endif
-# elif (__cplusplus >= 202100L)
+# elif (__cplusplus >  202002L)
 #  define __glibcxx_tuple_like 202207L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_tuple_like)
 #   define __cpp_lib_tuple_like 202207L
@@ -2347,7 +2347,7 @@
 #undef __glibcxx_want_tuple_like
 
 #if !defined(__cpp_lib_unreachable)
-# if (__cplusplus >= 202100L)
+# if (__cplusplus >  202002L)
 #  define __glibcxx_unreachable 202202L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_unreachable)
 #   define __cpp_lib_unreachable 202202L
@@ -2637,7 +2637,7 @@
 #undef __glibcxx_want_define_static
 
 #if !defined(__cpp_lib_is_implicit_lifetime)
-# if (__cplusplus >= 202100L) && (__has_builtin(__builtin_is_implicit_lifetime))
+# if (__cplusplus >  202002L) && (__has_builtin(__builtin_is_implicit_lifetime))
 #  define __glibcxx_is_implicit_lifetime 202302L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_is_implicit_lifetime)
 #   define __cpp_lib_is_implicit_lifetime 202302L
@@ -2721,7 +2721,7 @@
 #undef __glibcxx_want_hardened_array
 
 #if !defined(__cpp_lib_hardened_basic_stacktrace)
-# if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS))
+# if (__cplusplus >  202002L) && _GLIBCXX_HOSTED && (defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS))
 #  define __glibcxx_hardened_basic_stacktrace 202502L
 #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_stacktrace)
 #   define __cpp_lib_hardened_basic_stacktrace 202502L
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 4ffbf106b6bf..b44c240fa526 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -476,7 +476,7 @@ if { [info procs saved-dg-test] == [list] } {
 # These should be adjusted whenever the compiler's default -std is updated
 # or a newer C++ effective target is added.
 set v3_default_std 20
-set v3_max_std 26
+set v3_max_std 29
 
 # Find the minimum standard required by a test, if higher than $v3_default_std.
 proc v3-minimum-std { test } {

From gccadmin@gcc.gnu.org  Fri Jun 26 00:17:22 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 26 Jun 2026 00:17:22 +0000 (GMT)
Subject: [gcc r17-1908] Daily bump.
Message-ID: <20260626001722.4E0694BA2E0A@sourceware.org>

https://gcc.gnu.org/g:8a620edb125542987c78982280da706e61dd383d

commit r17-1908-g8a620edb125542987c78982280da706e61dd383d
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Jun 26 00:16:54 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 266 +++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cobol/ChangeLog     |  12 ++
 gcc/cp/ChangeLog        |  11 ++
 gcc/objcp/ChangeLog     |   4 +
 gcc/rust/ChangeLog      | 433 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 211 +++++++++++++++++++++++
 libgcobol/ChangeLog     |  21 +++
 libgfortran/ChangeLog   |  13 ++
 libgomp/ChangeLog       |  24 +++
 libstdc++-v3/ChangeLog  | 158 ++++++++++++++++++
 11 files changed, 1154 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fdda11dc95d2..336492664a18 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,269 @@
+2026-06-25  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/riscv/riscv.md (seq_sne_qi): Mark name for debugging purposes
+	only.
+
+2026-06-25  Peter Bergner  <bergner@tenstorrent.com>
+
+	PR target/87466
+	* config/riscv/riscv.cc (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P):
+	Define.
+
+2026-06-25  Manjunath Matti  <mmatti@linux.ibm.com>
+
+	* config/rs6000/predicates.md (const_0_to_6_operand): New predicate.
+	* config/rs6000/rs6000-builtins.def (__builtin_vsx_xxmulmul): Add new
+	builtin definitions under [future] stanza.
+	(__builtin_vsx_xxmulmulhiadd): Likewise.
+	(__builtin_vsx_xxmulmulloadd): Likewise.
+	(__builtin_vsx_xxssumudm): Likewise.
+	(__builtin_vsx_xxssumudmc): Likewise.
+	(__builtin_vsx_xxssumudmcext): Likewise.
+	(__builtin_vsx_xsaddadduqm): Likewise.
+	(__builtin_vsx_xsaddaddsuqm): Likewise.
+	(__builtin_vsx_xsaddsubuqm): Likewise.
+	(__builtin_vsx_xsaddsubsuqm): Likewise.
+	(__builtin_vsx_xsmerge2t1uqm): Likewise.
+	(__builtin_vsx_xsmerge2t2uqm): Likewise.
+	(__builtin_vsx_xsmerge2t3uqm): Likewise.
+	(__builtin_vsx_xsmerge3t1uqm): Likewise.
+	(__builtin_vsx_xsrebase2t1uqm): Likewise.
+	(__builtin_vsx_xsrebase2t2uqm): Likewise.
+	(__builtin_vsx_xsrebase2t3uqm): Likewise.
+	(__builtin_vsx_xsrebase2t4uqm): Likewise.
+	(__builtin_vsx_xsrebase3t1uqm): Likewise.
+	(__builtin_vsx_xsrebase3t2uqm): Likewise.
+	(__builtin_vsx_xsrebase3t3uqm): Likewise.
+	* config/rs6000/vsx.md (UNSPEC_XXMULMUL): Add UNSPEC entry.
+	(UNSPEC_XXMULMULHIADD): Likewise.
+	(UNSPEC_XXMULMULLOADD): Likewise.
+	(UNSPEC_XXSSUMUDM): Likewise.
+	(UNSPEC_XXSSUMUDMC): Likewise.
+	(UNSPEC_XXSSUMUDMCEXT): Likewise.
+	(UNSPEC_XSADDADDUQM): Likewise.
+	(UNSPEC_XSADDADDSUQM): Likewise.
+	(UNSPEC_XSADDSUBUQM): Likewise.
+	(UNSPEC_XSADDSUBSUQM): Likewise.
+	(UNSPEC_XSMERGE2T1UQM): Likewise.
+	(UNSPEC_XSMERGE2T2UQM): Likewise.
+	(UNSPEC_XSMERGE2T3UQM): Likewise.
+	(UNSPEC_XSMERGE3T1UQM): Likewise.
+	(UNSPEC_XSREBASE2T1UQM): Likewise.
+	(UNSPEC_XSREBASE2T2UQM): Likewise.
+	(UNSPEC_XSREBASE2T3UQM): Likewise.
+	(UNSPEC_XSREBASE2T4UQM): Likewise.
+	(UNSPEC_XSREBASE3T1UQM): Likewise.
+	(UNSPEC_XSREBASE3T2UQM): Likewise.
+	(UNSPEC_XSREBASE3T3UQM): Likewise.
+	(vsx_xxmulmul): New define_insn.
+	(vsx_xxmulmulhiadd): Likewise.
+	(vsx_xxmulmulloadd): Likewise.
+	(vsx_xxssumudm): Likewise.
+	(vsx_xxssumudmc): Likewise.
+	(vsx_xxssumudmcext): Likewise.
+	(vsx_xsaddadduqm): Likewise.
+	(vsx_xsaddaddsuqm): Likewise.
+	(vsx_xsaddsubuqm): Likewise.
+	(vsx_xsaddsubsuqm): Likewise.
+	(vsx_xsmerge2t1uqm): Likewise.
+	(vsx_xsmerge2t2uqm): Likewise.
+	(vsx_xsmerge2t3uqm): Likewise.
+	(vsx_xsmerge3t1uqm): Likewise.
+	(vsx_xsrebase2t1uqm): Likewise.
+	(vsx_xsrebase2t2uqm): Likewise.
+	(vsx_xsrebase2t3uqm): Likewise.
+	(vsx_xsrebase2t4uqm): Likewise.
+	(vsx_xsrebase3t1uqm): Likewise.
+	(vsx_xsrebase3t2uqm): Likewise.
+	(vsx_xsrebase3t3uqm): Likewise.
+	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): Add
+	documentation for ECC cryptography builtins available on
+	future ISA.
+
+2026-06-25  Milan Tripkovic  <Milan.Tripkovic@rt-rk.com>
+	    Jeff Law   <jeffrey.law@oss.qualcomm.com>
+
+	PR target/123884
+	PR target/106585
+	* config/riscv/bitmanip.md: Add new splits for single bit manipulation
+	cases followed by a sign extension.
+
+2026-06-25  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+	     Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR target/124019
+	* config/riscv/riscv.md (seq_sne_qi): New define_insn_and_split.
+
+2026-06-25  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR tree-optimization/102793
+	* tree-ssa-ifcombine.cc (bb_guards_loop_p): New function.
+	(ifcombine_ifandif): Use it to avoid combining the conditions
+	guarding a loop.
+	* tree-ssa-tail-merge.cc: Include tree-ssa-ifcombine.h and
+	tree-ssa.h.
+	(ifcombine_candidate_bbs): New static bitmap.
+	(apply_clusters): Collect the merged block's predecessors as
+	ifcombine candidates.
+	(tail_merge_optimize): Run tree_ssa_ifcombine_bb on the candidates;
+	return TODO_cleanup_cfg when it changed the CFG.
+
+2026-06-25  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* gimple-predicate-analysis.cc (get_pred_info_from_cond_edge):
+	New function.
+	(predicate::init_from_control_deps): Use it.
+	(predicate::drop_conjuncts_implied_by): New method.
+	(uninit_analysis::is_use_guarded): Retry the superset test
+	after relaxing the definition predicate by the maybe-undef
+	edge conditions.
+	* gimple-predicate-analysis.h (class predicate): Declare
+	drop_conjuncts_implied_by.
+
+2026-06-25  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	* tree-ssa-ifcombine.cc: Include tree-ssa-ifcombine.h.
+	(recognize_if_then_else): Removed 'static'.
+	(tree_ssa_ifcombine_bb): Removed 'static'.
+	* tree-ssa-ifcombine.h: New file.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/125977
+	* cfgexpand.cc (pass_expand::execute): Guard ranger use
+	on optimize.
+
+2026-06-25  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR target/125716
+	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): Add
+	(?w,r) alternative for VSUB64 types.
+
+2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	Revert:
+	2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125077
+	* config/mips/predicates.md (ssp_gp_operand): New
+	define_predicate.
+	(ssp_operand): New define_predicate.
+	(ssp_normal_operand): New define_predicate.
+	* config/mips/constraints.md (ZA): New define_constraint.
+	(ZB): New define_constraint.
+	* config/mips/mips.md (UNSPEC_SSP): New unspec.
+	(UNSPEC_SSP_GP): New unspec.
+	(cbranch<mode>4): Add '@' to generate the helper function taking
+	mode as a parameter.
+	(@stack_protect_combined_set_normal_<mode>): New define_insn.
+	(stack_protect_combined_set_abs64): New define_insn.
+	(@stack_protect_combined_test_internal_<mode>): New define_insn.
+	(stack_protect_combined_set): New define_expand.
+	(stack_protect_combined_test): New define_expand.
+	* config/mips/mips-protos.h (mips_canary_expose_gp_use):
+	Declare.
+	(mips_output_asm_load_canary): Declare.
+	* config/mips/mips.cc (mips_small_data_pattern_1): Don't rewrite
+	GP-relative symbol wrapped in UNSPEC_SSP_GP.
+	(mips_canary_expose_gp_use): Implement.
+	(mips_output_asm_load_canary): Implement.
+	(mips_print_operand): Allow 'w' to print d/w for DImode/SImode.
+
+2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125628
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
+2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125077
+	* config/mips/predicates.md (ssp_gp_operand): New
+	define_predicate.
+	(ssp_operand): New define_predicate.
+	(ssp_normal_operand): New define_predicate.
+	* config/mips/constraints.md (ZA): New define_constraint.
+	(ZB): New define_constraint.
+	* config/mips/mips.md (UNSPEC_SSP): New unspec.
+	(UNSPEC_SSP_GP): New unspec.
+	(cbranch<mode>4): Add '@' to generate the helper function taking
+	mode as a parameter.
+	(@stack_protect_combined_set_normal_<mode>): New define_insn.
+	(stack_protect_combined_set_abs64): New define_insn.
+	(@stack_protect_combined_test_internal_<mode>): New define_insn.
+	(stack_protect_combined_set): New define_expand.
+	(stack_protect_combined_test): New define_expand.
+	* config/mips/mips-protos.h (mips_canary_expose_gp_use):
+	Declare.
+	(mips_output_asm_load_canary): Declare.
+	* config/mips/mips.cc (mips_small_data_pattern_1): Don't rewrite
+	GP-relative symbol wrapped in UNSPEC_SSP_GP.
+	(mips_canary_expose_gp_use): Implement.
+	(mips_output_asm_load_canary): Implement.
+	(mips_print_operand): Allow 'w' to print d/w for DImode/SImode.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	* target.def (reassociation_width): Use default_reassociation_width.
+	* targhooks.h (default_reassociation_width): Declare.
+	* targhooks.cc (default_reassociation_width): Define.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125953
+	* gimple-range.cc (gimple_ranger::range_of_expr): Document.
+	Fall back to global ranges if 'stmt' is not in the IL.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Pass
+	the division stmt as context for the range query on op0.
+	Use the active ranger.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	* coretypes.h (enum tree_code): Declare.
+	* tree-core.h (enum tree_code): Adjust.
+	* target.def (reassociation_width): Get a tree_code instead
+	of unsigned int.
+	* doc/tm.texi: Regenerate.
+	* genmatch.cc (enum tree_code): Adjust.
+	* gimple-loop-versioning.cc (address_info_hasher::hash): Likewise.
+	* config/aarch64/aarch64.cc (aarch64_reassociation_width):
+	Likewise.
+	* config/loongarch/loongarch.cc
+	(loongarch_cpu_sched_reassociation_width): Likewise.
+	* config/mips/mips.cc (mips_sched_reassociation_width): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_reassociation_width): Likewise.
+	* config/i386/i386.cc (ix86_reassociation_width): Likewise
+	and fix bogus compares.
+
+2026-06-25  Martin Uecker  <uecker@tugraz.at>
+
+	* doc/extend.texi (Constructing Calls): Document
+	__builtin_call_static_chain and __builtin_call_code_address
+	and update __builtin_call_with_static_chain.
+	(Nested Functions): Update.
+
+2026-06-25  Martin Uecker  <uecker@tugraz.at>
+
+	* builtins.def (BUILT_IN_CALL_CODE_ADDRESS,
+	BUILT_IN_CALL_STATIC_CHAIN): New.
+	* builtins.cc (expand_builtin): Emit errors for invalid uses.
+	(is_simple_builtin): Add new built-in functions.
+	* gimple-fold.cc (gimple_fold_builtin_call_info): New function.
+	(gimple_fold_builtin): Expand new built-ins for non-nested functions.
+	* tree-nested.cc (convert_tramp_reference_stmt): Ingore new built-ins.
+	(convert_gimple_call): Expand built-ins for nested functions.
+	* tree-inline.cc (initialize_inlined_parameters): Set a missing
+	static chain to NULL.
+
+2026-06-25  Jan Beulich  <jbeulich@suse.com>
+
+	* config/riscv/arch-canonicalize: Avoid f"..." strings.
+
 2026-06-24  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
 
 	* config/i386/prfchwintrin.h (_m_prefetchw): Take
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 155841997d62..29656a8522bf 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260625
+20260626
diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog
index 69da64703645..8ddee6e1c064 100644
--- a/gcc/cobol/ChangeLog
+++ b/gcc/cobol/ChangeLog
@@ -1,3 +1,15 @@
+2026-06-25  Robert Dubner  <rdubner@symas.com>
+
+	* gengen.cc (gg_abs): Use fold_build1().
+	* genutil.cc (scale_and_round): Remove function.
+	(round_this_value): New function for rounding.
+	* genutil.h (scale_and_round): Remove function.
+	(round_this_value): New declaration.
+	* move.cc (cobol_wider_type_with_x_signedness): New function.
+	(mh_binary_to_numdisp): Faster routine.
+	(mh_binary_to_packed): Faster routine.
+	(move_helper): Use the faster routines.
+
 2026-06-24  James K. Lowden  <jklowden@cobolworx.com>
 
 	* parse.y: Modify grammar to accept list of intrinic function tokens.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6c57b618b4ab..210bea501748 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,14 @@
+2026-06-25  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125922
+	* parser.cc (cp_parser_reflect_expression): Temporarily set
+	parser->type_definition_forbidden_message.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	* module.cc (trees_out::decl_value): Adjust for enum class
+	tree_code.
+
 2026-06-24  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125939
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index bb81b5af8d81..6540bb0bb714 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* Make-lang.in: Test in parallel with up to 6 instances.
+
 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
 
 	* objcp-decl.h (TYPE_OBJC_INFO): Define to info.objc_info
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 444ec4398b3b..5ba10b5c3c3a 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,436 @@
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* Make-lang.in: Add rust-hir-type-check-intrinsic.o.
+	* typecheck/rust-hir-type-check-implitem.cc
+	(TypeCheckTopLevelExternItem::visit): Check intrinsic signature.
+	* typecheck/rust-hir-type-check-intrinsic.cc: New file.
+	* typecheck/rust-hir-type-check-intrinsic.h: New file.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* backend/rust-builtins.cc
+	(BuiltinsContext::register_rust_mappings): Use Values::Intrinsics
+	constants instead of raw strings.
+	* util/rust-intrinsic-values.h (class Intrinsics): Add missing
+	builtin intrinsics.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* backend/rust-compile-intrinsic.cc (generic_intrinsics): Add
+	min_align_of to map.
+	* backend/rust-intrinsic-handlers.cc (min_align_of_handler):
+	New function.
+	* backend/rust-intrinsic-handlers.h (min_align_of_handler):
+	New declaration.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): Add
+	special casing for resolving to the builtin type definition if the found type
+	has the same name and is a module.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-name-resolution-context.hxx: Remove hacks.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* util/rust-hir-map.cc (Mappings::insert_module_id): New function.
+	(Mappings::is_module): Likewise.
+	* util/rust-hir-map.h: Store a set of AST modules, declare functions for adding and
+	retrieving them.
+	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Insert modules in the type
+	namespace and store them in mappings.
+	* resolve/rust-late-name-resolver-2.0.cc (resolve_type_path_like): Error out when an
+	expected type resolves to a module.
+	* resolve/rust-name-resolution.h: Add empty Definition constructor.
+	* resolve/rust-resolve-builtins.cc (find_builtin_node_id): New function.
+	* resolve/rust-resolve-builtins.h: Declare it.
+
+2026-06-25  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* resolve/rust-name-resolution-context.h (NameResolutionContext): Add new function
+	definition for `should_search_prelude`.
+	* resolve/rust-name-resolution-context.hxx (NameResolutionContext::should_search_prelude):
+	Add implementation.
+	(NameResolutionContext::resolve_segments): Update the check to trigger lang_prelude search
+	during name resolution in modules.
+
+2026-06-25  Lishin  <lishin1008@gmail.com>
+
+	* backend/rust-compile-context.h: Include
+	rust-compile-drop-candidate.h instead of rust-compile-drop.h.
+	* backend/rust-compile-drop.cc: Add copyright header.
+	(CompileDrop::compile_drop_call): Assert that Drop lookup returns a
+	single function candidate.
+	* backend/rust-compile-drop.h: Add copyright header. Include
+	rust-compile-context.h.
+	(RUST_COMPILE_DROP): Rename to...
+	(RUST_COMPILE_DROP_H): ...this.
+	(DropCandidate): Move to...
+	* backend/rust-compile-drop-candidate.h: ...this new file.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* backend/rust-compile-base.cc (HIRCompileBase::compile_function_body):
+	Add drop calls at the end of function bodies.
+
+2026-06-25  Lishin  <lishin1008@gmail.com>
+
+	* Make-lang.in: Add rust-compile-drop.o.
+	* backend/rust-compile-block.cc (compile_drop_call): Move to CompileDrop.
+	(CompileBlock::visit): Use CompileDrop to emit scope drop calls.
+	* backend/rust-compile-context.h (struct DropCandidate): Move to rust-compile-drop.h.
+	* backend/rust-compile-pattern.cc (type_has_drop_impl): Move to CompileDrop.
+	(CompilePatternLet::visit): Use CompileDrop to check Drop impls.
+	* backend/rust-compile-drop.cc: New file.
+	* backend/rust-compile-drop.h: New file.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* backend/rust-compile-pattern.cc (CompilePatternLet::visit): Check ref
+	pattern base types and emit a sorry for unsupported Drop ref/subpatterns.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* backend/rust-compile-block.cc (compile_drop_call): New helper to
+	build a drop call.
+	(CompileBlock::visit): Add drop calls for candidates.
+	* backend/rust-compile-pattern.cc (type_has_drop_impl): New helper to
+	check whether a type implements Drop.
+	(CompilePatternLet::visit): Save initialized simple drop candidates.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* backend/rust-compile-context.h (struct DropCandidate): New struct
+	for tracking block-local drop candidates.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Dispatch the new
+	attributes.
+	(HIRCompileBase::handle_rustc_allocator_on_fndecl): New function.
+	(HIRCompileBase::handle_rustc_allocator_nounwind_on_fndecl): New function.
+	* backend/rust-compile-base.h (handle_rustc_allocator_on_fndecl): New declaration.
+	(handle_rustc_allocator_nounwind_on_fndecl): Likewise.
+	* util/rust-attribute-values.h (Attributes): Add RUSTC_ALLOCATOR and
+	RUSTC_ALLOCATOR_NOUNWIND constexprs.
+	* util/rust-attributes.cc (__definitions): Register rustc_allocator and
+	rustc_allocator_nounwind in the BuiltinAttributes list.
+	* checks/errors/rust-builtin-attribute-checker.cc (rustc_allocator): New function.
+	(rustc_allocator_nounwind): New function.
+	(attribute_checking_handlers): Add rustc_allocator and rustc_allocator_nounwind
+	functions.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* backend/rust-compile-base.cc (should_mangle_item): Bypass
+	mangling for rustc_std_internal_symbol.
+	(HIRCompileBase::setup_fndecl): Dispatch the new attribute.
+	(HIRCompileBase::handle_rustc_std_internal_symbol_attribute_on_fndecl):
+	New function.
+	* backend/rust-compile-base.h:
+	(handle_rustc_std_internal_symbol_attribute_on_fndecl): New declaration.
+	* util/rust-attribute-values.h (Attributes): Add
+	RUSTC_STD_INTERNAL_SYMBOL constexpr.
+	* util/rust-attributes.cc (__definitions): Register
+	rustc_std_internal_symbol in the BuiltinAttributes list.
+	* checks/errors/rust-builtin-attribute-checker.cc (rustc_std_internal_symbol):
+	New function.
+	(attribute_checking_handlers): Add rustc_std_internal_symbol function.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl):
+	Remove reduntant as_string calls.
+
+2026-06-25  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Prevent use
+	after move.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* backend/rust-compile-expr.cc (CompileExpr::visit): Call the new name.
+	(CompileExpr::lookup_temp_var): Rename it to...
+	(CompileExpr::lookup_label_temp_var): ...this.
+	* backend/rust-compile-expr.h: Likewise.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Add Types as a
+	namespace in which to lookup PathInExpressions.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* checks/errors/privacy/rust-privacy-reporter.cc
+	(PrivacyReporter::check_for_privacy_violation): Add new overload for two namespaces.
+	(PrivacyReporter::visit): Call it.
+	(PrivacyReporter::check_violation_inner): New function.
+	* checks/errors/privacy/rust-privacy-reporter.h: Declare it.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-finalized-name-resolution-context.cc
+	(FinalizedNameResolutionContext::lookup): New function.
+	* resolve/rust-finalized-name-resolution-context.h: Declare it.
+	* resolve/rust-name-resolution-context.cc (NameResolutionContext::lookup): New function.
+	* resolve/rust-name-resolution-context.h: Declare it.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_simple_import): Cleanup
+	dead code.
+	(Early::finalize_rebind_import): Likewise.
+	* resolve/rust-finalized-name-resolution-context.h: Add class documentation.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-forever-stack.h: Comment out flatten with an explanation.
+	* resolve/rust-forever-stack.hxx: Likewise.
+	* resolve/rust-name-resolution-context.cc (NameResolutionContext::flatten): Likewise.
+	* resolve/rust-name-resolution-context.h: Likewise.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc
+	(Early::finalize_rebind_import): Remove locus variable.
+
+2026-06-25  Enes Cevik  <nsvke@proton.me>
+
+	* checks/lints/rust-lint-marklive.cc (MarkLive::visit_path_segment): Add Types namespace
+	lookup.
+	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit): Use safe optional
+	unwrapping.
+	* checks/lints/unused/rust-unused-collector.cc (UnusedCollector::visit): Likewise.
+	* checks/lints/unused/rust-unused-collector.h: Use helper for multiple namespace lookups.
+	* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_simple_import): Prevent ICE on
+	single self imports.
+	(Early::finalize_rebind_import): Return early to prevent ICE.
+	* resolve/rust-name-resolution-context.hxx: Use value_or for safe leaf module lookup.
+	* rust-session-manager.cc (Session::compile_crate): Remove obsolete flatten() calls.
+	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Look up enum variants
+	in Types namespace.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc (Early::try_insert_once): Use new
+	Usage -> Definition map for macros.
+	* resolve/rust-finalized-name-resolution-context.cc
+	(FinalizedNameResolutionContext::map_usage): Dispatch to proper resolution map.
+	* resolve/rust-forever-stack.h (enum class LookupFinalizeError): Move here.
+	* resolve/rust-forever-stack.hxx: Make resolution take a resolve_segment lambda with
+	an extra namespace parameter.
+	* resolve/rust-name-resolution-context.hxx: Likewise.
+	* resolve/rust-name-resolution-context.cc (find_leaf_definition_inner): Move here...
+	(NameResolutionContext::find_leaf_definition): Likewise.
+	(NameResolutionContext::flatten): Likewise.
+	* resolve/rust-name-resolution-context.h: ...from here.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.h: Properly insert resolutions in
+	the returned vector as that was previously missing.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* checks/lints/rust-lint-marklive.cc (MarkLive::find_value_definition): Use Types NS
+	alongside Values NS for lookup.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-finalized-name-resolution-context.cc
+	(FinalizedNameResolutionContext::lookup): New function.
+	* resolve/rust-finalized-name-resolution-context.h: Declare it.
+	* resolve/rust-forever-stack.h: Remove assertion in map_usage.
+	* resolve/rust-name-resolution-context.h: Add new NSLookup return type.
+	* resolve/rust-name-resolution-context.cc (NameResolutionContext::lookup): Use it.
+	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): Likewise.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Adapt for new NR APIs.
+	* backend/rust-compile-item.cc (CompileItem::visit): Likewise.
+	* backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): Likewise.
+	* checks/errors/borrowck/rust-bir-builder-internal.h: Likewise.
+	* checks/errors/privacy/rust-privacy-reporter.cc
+	(PrivacyReporter::check_for_privacy_violation): Likewise.
+	(PrivacyReporter::check_base_type_privacy): Likewise.
+	(PrivacyReporter::visit): Likewise.
+	* checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+	* checks/errors/privacy/rust-visibility-resolver.cc
+	(VisibilityResolver::resolve_module_path): Likewise.
+	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
+	* checks/errors/rust-hir-pattern-analysis.cc (PatternChecker::visit): Likewise.
+	* checks/errors/rust-readonly-check.cc (ReadonlyChecker::visit): Likewise.
+	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
+	* checks/lints/rust-lint-marklive.cc (MarkLive::visit): Likewise.
+	(MarkLive::visit_path_segment): Likewise.
+	(MarkLive::find_ref_node_id): Likewise.
+	(MarkLive::find_value_definition): Likewise.
+	* checks/lints/rust-lint-marklive.h: Likewise.
+	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit): Likewise.
+	* checks/lints/unused/rust-unused-collector.cc (UnusedCollector::visit): Likewise.
+	* checks/lints/unused/rust-unused-collector.h: Likewise.
+	* resolve/rust-early-name-resolver-2.0.cc (Early::resolve_glob_import): Likewise.
+	(Early::resolve_rebind_import): Likewise.
+	(Early::visit): Likewise.
+	(Early::visit_derive_attribute): Likewise.
+	(Early::visit_non_builtin_attribute): Likewise.
+	(Early::finalize_simple_import): Likewise.
+	(Early::finalize_rebind_import): Likewise.
+	* resolve/rust-early-name-resolver-2.0.h: Likewise.
+	* resolve/rust-finalized-name-resolution-context.cc
+	(FinalizedNameResolutionContext::map_usage): Likewise.
+	(FinalizedNameResolutionContext::lookup): Likewise.
+	(FinalizedNameResolutionContext::to_canonical_path): Likewise.
+	* resolve/rust-finalized-name-resolution-context.h: Likewise.
+	* resolve/rust-forever-stack.h: Likewise.
+	* resolve/rust-late-name-resolver-2.0.cc (visit_identifier_as_pattern): Likewise.
+	(Late::visit): Likewise.
+	(Late::resolve_label): Likewise.
+	(resolve_type_path_like): Likewise.
+	* resolve/rust-name-resolution-context.cc
+	(CanonicalPathRecordCrateRoot::as_path): Likewise.
+	(CanonicalPathRecordNormal::as_path): Likewise.
+	(CanonicalPathRecordLookup::as_path): Likewise.
+	(CanonicalPathRecordImpl::as_path): Likewise.
+	(CanonicalPathRecordTraitImpl::as_path): Likewise.
+	(NameResolutionContext::map_usage): Likewise.
+	(NameResolutionContext::lookup): Likewise.
+	* resolve/rust-name-resolution-context.h: Likewise.
+	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_path_to_trait): Likewise.
+	* typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
+	(TypeCheckExpr::resolve_fn_trait_call): Likewise.
+	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): Likewise.
+	(TypeCheckExpr::resolve_root_path): Likewise.
+	(TypeCheckExpr::resolve_segments): Likewise.
+	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
+	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): Likewise.
+	(ResolveWhereClauseItem::visit): Likewise.
+	* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
+	* typecheck/rust-type-util.cc (query_type): Likewise.
+	* backend/rust-compile-expr.h (CompileExpr::resolve_nodeid): Likewise.
+	* backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
+	(CompileExpr::lookup_label): Likewise.
+	(CompileExpr::lookup_temp_var): Likewise.
+	(CompileExpr::resolve_NodeId): Likewise, and rename to...
+	(CompileExpr::resolve_nodeid): ...this.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc (Early::insert_once): Rename...
+	(Early::try_insert_once): ...to this, and improve logic.
+	(Early::go): Use new API.
+	(Early::visit): Likewise.
+	(Early::finalize_simple_import): Likewise.
+	(Early::finalize_rebind_import): Likewise.
+	* resolve/rust-early-name-resolver-2.0.h: Declare the new API.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust-session-manager.cc (Session::compile_crate): Call nr_ctx.flatten()
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* Make-lang.in: Rename.
+	* backend/rust-compile-base.cc: Use new name and API.
+	* backend/rust-compile-context.h: Likewise.
+	* backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
+	(CompileExpr::generate_closure_function): Likewise.
+	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.
+	* backend/rust-compile-item.cc (CompileItem::visit): Likewise.
+	* backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): Likewise.
+	* checks/errors/borrowck/rust-bir-builder-internal.h (struct BuilderContext): Likewise.
+	* checks/errors/privacy/rust-privacy-check.cc (Resolver::resolve): Likewise.
+	* checks/errors/privacy/rust-privacy-reporter.cc: Likewise.
+	* checks/errors/privacy/rust-privacy-reporter.h: Likewise.
+	* checks/errors/privacy/rust-visibility-resolver.cc: Likewise.
+	* checks/errors/privacy/rust-visibility-resolver.h: Likewise.
+	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
+	* checks/errors/rust-hir-pattern-analysis.cc (PatternChecker::PatternChecker): Likewise.
+	* checks/errors/rust-hir-pattern-analysis.h: Likewise.
+	* checks/errors/rust-readonly-check.cc (ReadonlyChecker::visit): Likewise.
+	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
+	* checks/lints/rust-lint-marklive.cc (MarkLive::visit_path_segment): Likewise.
+	(MarkLive::visit): Likewise.
+	(MarkLive::find_ref_node_id): Likewise.
+	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::UnusedChecker): Likewise.
+	* checks/lints/unused/rust-unused-checker.h: Likewise.
+	* checks/lints/unused/rust-unused-collector.cc (UnusedCollector::UnusedCollector): Likewise.
+	* checks/lints/unused/rust-unused-collector.h: Likewise.
+	* resolve/rust-immutable-name-resolution-context.cc: Move to...
+	* resolve/rust-finalized-name-resolution-context.cc: ...here.
+	* resolve/rust-name-resolution-context.h: Likewise.
+	* rust-session-manager.cc (Session::compile_crate): Likewise.
+	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_path_to_trait): Likewise.
+	* typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
+	(TypeCheckExpr::resolve_fn_trait_call): Likewise.
+	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): Likewise.
+	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): Likewise.
+	(TypeCheckExpr::resolve_root_path): Likewise.
+	(TypeCheckExpr::resolve_segments): Likewise.
+	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
+	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): Likewise.
+	(ResolveWhereClauseItem::visit): Likewise.
+	* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
+	* typecheck/rust-type-util.cc (query_type): Likewise.
+	* checks/errors/rust-const-checker.h: Likewise.
+	* checks/errors/rust-unsafe-checker.h: Likewise.
+	* checks/lints/rust-lint-marklive.h: Likewise.
+	* resolve/rust-immutable-name-resolution-context.h: Removed.
+	* resolve/rust-finalized-name-resolution-context.h: New file.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_rebind_import): Insert imports
+	as possible glob containers.
+	* resolve/rust-name-resolution-context.cc (NameResolutionContext::map_usage): Allow
+	multiple mappings of the same usage.
+	* resolve/rust-name-resolution-context.hxx: Properly handle imports and modules in segments.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-forever-stack.h: Move resolve_segments and resolve_final_segment to...
+	* resolve/rust-forever-stack.hxx: Likewise.
+	* resolve/rust-name-resolution-context.h: ...here.
+	* resolve/rust-name-resolution-context.hxx: Likewise.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* resolve/rust-early-name-resolver-2.0.cc: Properly resolve and insert imports in the
+	types NS.
+	* resolve/rust-name-resolution-context.cc (find_leaf_definition_inner): New.
+	(NameResolutionContext::find_leaf_definition): New.
+	(NameResolutionContext::flatten): New.
+	* resolve/rust-name-resolution-context.h: Declare flattening functions.
+	* rust-session-manager.cc (Session::compile_crate): Call NR flattening.
+
+2026-06-25  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* resolve/rust-default-resolver.h (DefaultResolver): Add new visited_crates
+	member for recursion protection.
+	* resolve/rust-default-resolver.cc (DefaultResolver::visit(ExternCrate)):
+	Make references of `self` resolve to the current crate.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* util/rust-lang-item.cc (Rust::LangItem::lang_items): Register
+	exchange_malloc to BiMap.
+	* util/rust-lang-item.h (LangItem::Kind): Add EXCHANGE_MALLOC.
+
+2026-06-25  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* resolve/rust-finalize-imports-2.0.cc (GlobbingVisitor::visit):
+	Add overrides for more items.
+	* resolve/rust-finalize-imports-2.0.h (GlobbingVisitor::visit):
+	Likewise.
+
 2026-06-01  Yap Zhi Heng  <yapzhhg@gmail.com>
 
 	* parse/rust-parse-impl.hxx(parse_expr_stmt): Return error early when
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7512afb5e028..4fb9c464842f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,214 @@
+2026-06-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/118793
+	* gfortran.dg/namelist_40.f90: Update expected dg-output.
+	* gfortran.dg/namelist_47.f90: Likewise
+
+2026-06-25  Iain Sandoe  <iain@sandoe.co.uk>
+
+	* gcc.dg/lto/toplevel-extended-asm-1_0.c: Skip for Darwin.
+	* gcc.dg/lto/toplevel-extended-asm-2_0.c: Fix Mach-O syntax.
+	* gcc.dg/lto/toplevel-extended-asm-2_1.c: Likewise.
+	* gcc.dg/lto/toplevel-simple-asm-1_0.c: Skip for Darwin.
+	* gcc.dg/lto/toplevel-simple-asm-2_1.c: Fix Mach-O syntax.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* rust/compile/ctlz.rs: Fix incorrect intrinsic signature.
+	* rust/compile/ctlz_nonzero.rs: Likewise.
+	* rust/compile/cttz.rs: Likewise.
+	* rust/compile/cttz_nonzero.rs: Likewise.
+	* rust/compile/issue-4245.rs: Likewise.
+	* rust/compile/torture/intrinsics-3.rs: Likewise.
+	* rust/execute/torture/ctlz.rs: Likewise.
+	* rust/execute/torture/ctlz_i16.rs: Likewise.
+	* rust/execute/torture/ctlz_i32.rs: Likewise.
+	* rust/execute/torture/ctlz_i64.rs: Likewise.
+	* rust/execute/torture/ctlz_i8.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_i16.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_i32.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_i64.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_i8.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_u16.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_u32.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_u64.rs: Likewise.
+	* rust/execute/torture/ctlz_nonzero_u8.rs: Likewise.
+	* rust/execute/torture/ctlz_u16.rs: Likewise.
+	* rust/execute/torture/ctlz_u32.rs: Likewise.
+	* rust/execute/torture/ctlz_u64.rs: Likewise.
+	* rust/execute/torture/ctlz_u8.rs: Likewise.
+	* rust/execute/torture/cttz.rs: Likewise.
+	* rust/execute/torture/cttz_nonzero.rs: Likewise.
+	* rust/compile/intrinsic-checker.rs: New test.
+
+2026-06-25  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* rust/compile/attr-macro.rs: Move to...
+	* rust/compile/macros/mbe/macro_attr_expr.rs: ...here.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* rust/execute/min_align_of.rs: New test.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust/compile/type-with-builtin-type-name.rs: New test.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust/compile/issue-4563.rs: New test.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust/compile/mod_in_types_ns.rs: New test.
+	* rust/compile/mod_in_types_ns2.rs: New test.
+
+2026-06-25  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* rust/compile/name_resolution28.rs: New file.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* rust/execute/drop-function-scope-unit.rs: New test.
+	* rust/execute/drop-function-scope.rs: New test.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* rust/execute/drop-block-scope.rs: Extend test coverage for simple
+	immutable and mutable bindings.
+	* rust/compile/drop-ref-pattern.rs: New test.
+
+2026-06-25  lishin  <lishin1008@gmail.com>
+
+	* rust/execute/drop-block-scope.rs: New test.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* rust/compile/attr-allocator1.rs: New test.
+	* rust/compile/attr-allocator2.rs: New test.
+	* rust/compile/attr-allocator3.rs: New test.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* rust/compile/rustc_std_internal_symbol1.rs: New test.
+	* rust/compile/rustc_std_internal_symbol2.rs: New test.
+
+2026-06-25  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+
+	* rust/compile/float_literals.rs: New test.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust/compile/torture/utf8_identifiers.rs: Use a more classical
+	looking float value to test our UTF-8 identifier.
+
+2026-06-25  Arthur Cohen  <arthur.cohen@embecosm.com>
+
+	* rust/compile/import_in_type_ns6.rs: New test.
+	* rust/compile/import_in_type_ns7.rs: New test.
+
+2026-06-25  Yap Zhi Heng  <yapzhhg@gmail.com>
+
+	* rust/compile/extern_crate_self.rs: New file.
+
+2026-06-25  Enes Cevik  <enes@nsvke.com>
+
+	* rust/compile/exchange_malloc.rs: New test.
+
+2026-06-25  Owen Avery  <powerboat9.gamer@gmail.com>
+
+	* rust/compile/name_resolution27.rs: New test.
+
+2026-06-25  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125922
+	* g++.dg/reflect/error14.C: New test.
+
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125832
+	* g++.dg/cpp29/lambda-order1.C: New test.
+	* g++.dg/cpp29/lambda-order2.C: New test.
+
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/125824
+	* lib/target-supports.exp
+	(check_effective_target_flt_dbl_ldbl_inf_nan): New.
+	* g++.dg/cpp29/ext-floating1.C: New test.
+	* g++.dg/cpp29/std-floating1.C: New test.
+
+2026-06-25  Manjunath Matti  <mmatti@linux.ibm.com>
+
+	* gcc.target/powerpc/ecc-builtin-1.c: New test for ECC builtins.
+
+2026-06-25  Milan Tripkovic  <Milan.Tripkovic@rt-rk.com>
+	    Jeff Law   <jeffrey.law@oss.qualcomm.com>
+
+	PR target/123884
+	PR target/106585
+	* gcc.target/riscv/pr123884-a.c: New test.
+	* gcc.target/riscv/pr123884-b.c: New test.
+	* gcc.target/riscv/pr123884-c.c: New test.
+
+2026-06-25  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+	     Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+
+	PR target/124019
+	* gcc.target/riscv/pr124019.c: New test.
+
+2026-06-25  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+
+	PR tree-optimization/102793
+	* g++.dg/tree-ssa/pr117123.C: --param logical-op-non-short-circuit=0.
+	* gcc.dg/tree-ssa/pr102793-1.c: New test.
+	* gcc.dg/tree-ssa/pr102793-2.c: New test.
+	* gcc.dg/uninit-pred-13.c: New test.
+
+2026-06-25  Christopher Bazley  <chris.bazley@arm.com>
+
+	* gcc.target/aarch64/popcnt-sve.c: Update test expectations
+	to allow both current and alternative valid mask
+	specifications.
+
+2026-06-25  Artemiy Volkov  <artemiy.volkov@arm.com>
+
+	PR target/125716
+	* gcc.target/aarch64/aarch64-json-tunings/gp2fp-2.json: New JSON
+	tuning file.
+	* gcc.target/aarch64/simd/pr125716.c: New test.
+
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-c++-common/gomp/atomic-builtins-1.c: Add int128 effective target.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR tree-optimization/125953
+	* gcc.dg/torture/pr125953.c: New testcase.
+
+2026-06-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* gcc.target/i386/pr125958.c (dg-options): Add -mno-stackrealign.
+
+2026-06-25  Martin Uecker  <uecker@tugraz.at>
+
+	* gcc.dg/builtin-call-info-1.c: New test.
+	* gcc.dg/builtin-call-info-2.c: New test.
+	* gcc.dg/builtin-call-info-3.c: New test.
+
+2026-06-25  Robert Dubner  <rdubner@symas.com>
+
+	* cobol.dg/group1/simple-classes.cob:
+	* cobol.dg/group1/simple-if.cob:
+	* cobol.dg/group2/Rounding_from_BINARY_signable_and_negative.cob: New test.
+	* cobol.dg/group2/Rounding_from_BINARY_signable_and_negative.out: New test.
+	* cobol.dg/group2/Rounding_from_BINARY_signable_and_positive.cob: New test.
+	* cobol.dg/group2/Rounding_from_BINARY_signable_and_positive.out: New test.
+	* cobol.dg/group2/Rounding_from_BINARY_unsignable.cob: New test.
+	* cobol.dg/group2/Rounding_from_BINARY_unsignable.out: New test.
+
 2026-06-24  Thomas Schwinge  <tschwinge@baylibre.com>
 
 	* gcc.dg/autopar/runtime-auto.c: Adjust.
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index c1dfe9ba2c88..209c498d1a60 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-25  Robert Dubner  <rdubner@symas.com>
+
+	* charmaps.cc (__gg__miconverter): Use table instead of a map.
+	(__gg__get_charmap): Likewise.
+	* charmaps.h (ebcdic_zero): New constant.
+	(ebcdic_plus): Likewise.
+	(ebcdic_minus): Likewise.
+	* encodings.h (enum cbl_encoding_t): Guardrail for table.
+	(ASCII_e): Remove trailing spaces.
+	* stringbin.cc (string_from_combined): Improved routine.
+	(defined): Likewise.
+	(FALLTHROUGH): Likewise.
+	(uint_to_8_digits): Improve speed.
+	(__gg__binary_to_string_ascii): Likewise.
+	(binary_to_string): Likewise.
+	(__gg__binary_to_string_ebcdic): Likewise.
+	(__gg__binary_to_string_encoded): Likewise.
+	(packed_from_combined): Likewise.
+	(__gg__binary_to_packed): Likewise.
+	(__gg__packed_to_binary): Likewise.
+
 2026-06-20  Robert Dubner  <rdubner@symas.com>
 
 	* charmaps.cc: Eliminate rt_encoding_t.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 78cd8af76915..92dcd41151f7 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,16 @@
+2026-06-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/118793
+	* io/file_pos.c (st_rewind): Reset line and column numbers.
+	* io/io.h: Add line and column number to the gfc_unit
+	structure.
+	* io/list_read.c (next_char_default): Increment the column
+	position and line number as needed.
+	(next_char_internal): Likewise.
+	(next_char_utf8): Likewise.
+	(nml_err_ret): Build the expanded diagnostic message.
+	* io/unit.c (insert_unit): Initialize the line_number.
+
 2026-06-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/118774
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index b854582a5b8b..8128d995c840 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,27 @@
+2026-06-25  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* libgomp.texi (Implementing MASKED and MASTER construct): Fix
+	@end smallexample.
+	(Implementing FOR construct): Likewise.
+
+2026-06-25  Paul-Antoine Arras  <parras@baylibre.com>
+
+	* libgomp.texi (Implementing MASKED and MASTER construct): Update
+	pseudocode; describe GOMP_has_masked_thread_num.
+	(Implementing ATOMIC construct): Fix stale function names; note
+	exclusivity to explicit atomic constructs.
+	(Implementing BARRIER construct): Document GOMP_barrier_ext and
+	GOMP_barrier_cancel_ext; describe the kind parameter.
+	(Implementing REDUCTION clause): Document GOMP_reduction_start and
+	GOMP_reduction_end.
+	(Implementing FOR construct): Document GOMP_loop_static_worksharing
+	and GOMP_distribute_static_worksharing.
+
+2026-06-25  Thomas Schwinge  <tschwinge@baylibre.com>
+
+	* libgomp_g.h (GOMP_reduction_start, GOMP_reduction_end): Sort
+	correctly.
+
 2026-06-24  Paul-Antoine Arras  <parras@baylibre.com>
 
 	* atomic.c (GOMP_reduction_start): New function.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 39e3a5afc2ce..7d2ffd8f6f39 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,161 @@
+2026-06-25  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/version.def (stds): Add C++29 value and adjust
+	C++23 and C++26 values.
+	* include/bits/version.h: Regenerate.
+	* testsuite/lib/libstdc++.exp (v3_max_std): Update to 29.
+
+2026-06-25  Jonathan Wakely  <jwakely@redhat.com>
+
+	* acinclude.m4 (GLIBCXX_CHECK_STDIO_LOCKING): Remove trailing
+	whitespace.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Update AC_FOREACH to m4_foreach_w.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Update AM_PROG_LIBTOOL to LT_INIT.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Replace
+	AC_LANG_SAVE AC_LANG_CPLUSPLUS (...) AC_LANG_RESTORE with
+	AC_LANG_PUSH([C++]) (...) AC_LANG_POP([C++]).
+	(GLIBCXX_CHECK_SETRLIMIT): Likewise.
+	(GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Likewise.
+	(GLIBCXX_CHECK_POLL): Likewise.
+	(GLIBCXX_CHECK_WRITEV): Likewise.
+	(GLIBCXX_CHECK_LFS): Likewise.
+	(GLIBCXX_ENABLE_C99): Likewise.
+	(GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
+	(GLIBCXX_CHECK_GETTIMEOFDAY): Likewise.
+	(GLIBCXX_CHECK_C99_TR1): Likewise.
+	(GLIBCXX_CHECK_UCHAR_H): Likewise.
+	(GLIBCXX_CHECK_STDIO_PROTO): Likewise.
+	(GLIBCXX_CHECK_MATH11_PROTO): Likewise.
+	(GLIBCXX_ENABLE_FLOAT128): Likewise.
+	(GLIBCXX_ENABLE_WCHAR_T): Likewise.
+	(GLIBCXX_ENABLE_PCH): Likewise.
+	(GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
+	(GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
+	(GLIBCXX_CHECK_GTHREADS): Likewise.
+	(GLIBCXX_CHECK_GET_NPROCS): Likewise.
+	(GLIBCXX_CHECK_SC_NPROCESSORS_ONLN): Likewise.
+	(GLIBCXX_CHECK_SC_NPROC_ONLN): Likewise.
+	(GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Likewise.
+	(GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Likewise.
+	(GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK): Likewise.
+	(GLIBCXX_CHECK_PTHREAD_RWLOCK_CLOCKLOCK): Likewise.
+	(GLIBCXX_CHECK_SYSCTL_HW_NCPU): Likewise.
+	(GLIBCXX_CHECK_TMPNAM): Likewise.
+	(GLIBCXX_CHECK_SDT_H): Likewise.
+	(GLIBCXX_CHECK_FILESYSTEM_DEPS): Likewise.
+	(GLIBCXX_CHECK_GETENTROPY): Likewise.
+	(GLIBCXX_CHECK_ARC4RANDOM): Likewise.
+	(GLIBCXX_ENABLE_BACKTRACE): Likewise.
+	(GLIBCXX_STRUCT_TM_TM_ZONE): Likewise.
+	(GLIBCXX_CHECK_ALIGNAS_CACHELINE): Likewise.
+	(GLIBCXX_CHECK_INIT_PRIORITY): Likewise.
+	(GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES): Likewise.
+	(GLIBCXX_CHECK_TEXT_ENCODING): Likewise.
+	(GLIBCXX_CHECK_DEBUGGING): Likewise.
+	(GLIBCXX_CHECK_STDIO_LOCKING): Likewise.
+	* configure: Regenerate.
+	* crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Replace
+	AC_LANG_SAVE AC_LANG_C with AC_LANG_PUSH([C]).
+	* linkage.m4 (GLIBCXX_CHECK_MATH_DECL_1): Replace
+	AC_LANG_SAVE AC_LANG_CPLUSPLUS (...) AC_LANG_RESTORE with
+	AC_LANG_PUSH([C++]) (...) AC_LANG_POP([C++]).
+	(GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1) Likewise.
+	(GLIBCXX_CHECK_MATH_DECL_2): Likewise.
+	(GLIBCXX_CHECK_MATH_DECL_3): Likewise.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1): Likewise.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2): Likewise.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3): Likewise.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Update
+	AC_TRY_COMPILE to AC_COMPILE_IFELSE.
+	(GLIBCXX_CHECK_SETRLIMIT_ancilliary): Likewise.
+	(GLIBCXX_CHECK_SETRLIMIT): Likewise.
+	(GLIBCXX_ENABLE_C99): Likewise.
+	(GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
+	(GLIBCXX_CHECK_C99_TR1): Likewise.
+	(GLIBCXX_CHECK_UCHAR_H): Likewise.
+	(GLIBCXX_ENABLE_CLOCALE): Likewise.
+	(GLIBCXX_ENABLE_WCHAR_T): Likewise.
+	(GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
+	(GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
+	(GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY): Likewise.
+	(GLIBCXX_ENABLE_SYMVERS): Likewise.
+	(GLIBCXX_CHECK_GTHREADS): Likewise.
+	(GLIBCXX_CHECK_X86_RDRAND): Likewise.
+	(GLIBCXX_CHECK_X86_RDSEED): Likewise.
+	(GLIBCXX_CHECK_SIZE_T_MANGLING): Likewise.
+	(GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Likewise.
+	(GLIBCXX_CHECK_ALIGNAS_CACHELINE): Likewise.
+	(GLIBCXX_CHECK_INIT_PRIORITY): Likewise.
+	(GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES): Likewise.
+	(GLIBCXX_CHECK_TEXT_ENCODING): Likewise.
+	(GLIBCXX_CHECK_DEBUGGING): Likewise.
+	(GLIBCXX_CHECK_STDIO_LOCKING): Likewise.
+	* configure: Regenerate.
+	* configure.ac: Update AC_TRY_COMPILE to AC_COMPILE_IFELSE.
+	* crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Likewise.
+	* linkage.m4 (GLIBCXX_CHECK_MATH_DECL_1): Likewise.
+	(GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1): Likewise.
+	(GLIBCXX_CHECK_MATH_DECL_2): Likewise.
+	(GLIBCXX_CHECK_MATH_DECL_3): Likewise.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0): Delete.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1): Update
+	AC_TRY_COMPILE to AC_COMPILE_IFELSE.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2): Likewise.
+	(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3): Likewise.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Update
+	AC_TRY_LINK to AC_LINK_IFELSE.
+	(GLIBCXX_ENABLE_LIBSTDCXX_TIME): Likewise.
+	(GLIBCXX_ENABLE_ATOMIC_BUILTINS): Likewise.
+	(GLIBCXX_ENABLE_BACKTRACE): Likewise.
+
+2026-06-25  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4 (GLIBCXX_EXPORT_INSTALL_INFO): Update
+	AC_HELP_STRING to AS_HELP_STRING.
+	(GLIBCXX_ENABLE): Likewise.
+	(GLIBCXX_ENABLE_CLOCALE): Likewise.
+	(GLIBCXX_ENABLE_HOSTED): Likewise.
+	(GLIBCXX_ENABLE_VERBOSE): Likewise.
+	(GLIBCXX_ENABLE_LOCK_POLICY): Likewise.
+	(GLIBCXX_EMERGENCY_EH_ALLOC): Likewise.
+	(GLIBCXX_ZONEINFO_DIR): Likewise.
+
+2026-06-25  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/125956
+	* src/c++20/format.cc [_GLIBCXX_HAVE_ICONV] (iconv_input): New
+	concept.
+	(__encoding::conv) [_GLIBCXX_HAVE_ICONV]: Use iconv_input to
+	decide which type to cast the input pointer to.
+
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
+	of abs_srcdir.
+	* src/c++23/Makefile.in: Regenerate.
+
 2026-06-24  Jonathan Wakely  <jwakely@redhat.com>
 
 	* testsuite/27_io/filesystem/operations/copy_symlink/1.cc: Add

From gccadmin@gcc.gnu.org  Fri Jun 26 00:21:09 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 26 Jun 2026 00:21:09 +0000 (GMT)
Subject: [gcc r15-11319] Daily bump.
Message-ID: <20260626002109.2E26F4BA2E20@sourceware.org>

https://gcc.gnu.org/g:f27a16df1bb1afb91ba5b388dda9229b545f87ca

commit r15-11319-gf27a16df1bb1afb91ba5b388dda9229b545f87ca
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Jun 26 00:20:38 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           | 2 +-
 gcc/testsuite/ChangeLog | 9 +++++++++
 libstdc++-v3/ChangeLog  | 9 +++++++++
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 155841997d62..29656a8522bf 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260625
+20260626
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 73ee09e6255c..3932596be2f2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-25  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	Backported from master:
+	2026-03-24  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	PR rtl-optimization/124454
+	* gcc.dg/pr124454-1.c: Add missing require effective target
+	fopenmp.
+
 2026-06-22  Robin Dapp  <rdapp.gcc@gmail.com>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7f07a3ce796e..227f5fc2baac 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
+	of abs_srcdir.
+	* src/c++23/Makefile.in: Regenerate.
+
 2026-06-24  Alexandre Oliva  <oliva@adacore.com>
 
 	Backported from master:

From gccadmin@gcc.gnu.org  Fri Jun 26 00:22:44 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 26 Jun 2026 00:22:44 +0000 (GMT)
Subject: [gcc r16-9176] Daily bump.
Message-ID: <20260626002244.A7BD94BA2E20@sourceware.org>

https://gcc.gnu.org/g:6a9fa2e0632abd0342be3e65732ed878c2cdafa4

commit r16-9176-g6a9fa2e0632abd0342be3e65732ed878c2cdafa4
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Fri Jun 26 00:22:14 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 39 +++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 18 ++++++++++++++++++
 gcc/testsuite/ChangeLog | 25 +++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  9 +++++++++
 5 files changed, 92 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bcbeaa143758..4fce3042c388 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,42 @@
+2026-06-25  Peter Bergner  <bergner@tenstorrent.com>
+
+	* config/riscv/riscv-cores.def (RISCV_TUNE): Add tt-ascalon-x.
+	(RISCV_CORE): Likewise.
+	* doc/riscv-mcpu.texi: Regenerate.
+	* doc/riscv-mtune.texi: Likewise.
+
+2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	Backported from master:
+	2026-06-25  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/125977
+	* cfgexpand.cc (pass_expand::execute): Guard ranger use
+	on optimize.
+
+2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	Backported from master:
+	2026-06-25  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125628
+	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+	uninitialized operand use.
+	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+	same expression for the set source of operand 0 and 1.
+
+2026-06-25  Jan Beulich  <jbeulich@suse.com>
+
+	* config/riscv/arch-canonicalize: Avoid f"..." strings.
+
+2026-06-25  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	Backported from master:
+	2026-06-24  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* config/i386/prfchwintrin.h (_m_prefetchw): Take
+	volatile const void * instead of void *.
+
 2026-06-24  Jan Beulich  <jbeulich@suse.com>
 
 	* doc/ifn.texi: Drop blanks after @code.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 155841997d62..29656a8522bf 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260625
+20260626
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index be433e9b5d8e..d71df2c1866e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,21 @@
+2026-06-25  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125334
+	* module.cc (depset::hash::find_dependencies): Don't add_dependency
+	dependent ADL functions.
+
+2026-06-25  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125768
+	* module.cc (trees_out::decl_node): When not streaming,
+	recurse into DECL_ORIGINAL_TYPE of an imported typedef.
+
 2026-06-24  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125939
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 19cfe744e0ad..817b2f5d3d81 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,28 @@
+2026-06-25  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125334
+	* g++.dg/modules/adl-12_b.C: Check for lazy loading.
+
+2026-06-25  Jason Merrill  <jason@redhat.com>
+
+	Backported from master:
+	2026-06-23  Jason Merrill  <jason@redhat.com>
+
+	PR c++/125768
+	* g++.dg/modules/alias-3_a.C: New test.
+	* g++.dg/modules/alias-3_b.C: New test.
+	* g++.dg/modules/alias-3_c.C: New test.
+
+2026-06-25  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	Backported from master:
+	2026-06-24  Oleg Tolmatcev  <oleg.tolmatcev@gmail.com>
+
+	* gcc.target/i386/prfchw-Wcast-qual-1.c: New test.
+
 2026-06-24  Harald Anlauf  <anlauf@gmx.de>
 
 	Backported from master:
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index fd65ad9be616..3829ac290a78 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	Backported from master:
+	2026-06-25  Jakub Jelinek  <jakub@redhat.com>
+
+	* src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead
+	of abs_srcdir.
+	* src/c++23/Makefile.in: Regenerate.
+
 2026-06-24  Alexandre Oliva  <oliva@adacore.com>
 
 	Backported from master:

From tkaminsk@gcc.gnu.org  Fri Jun 26 08:10:16 2026
From: tkaminsk@gcc.gnu.org (Tomasz Kaminski)
Date: Fri, 26 Jun 2026 08:10:16 +0000 (GMT)
Subject: [gcc r17-1912] libstdc++: Make bitset::reference a proper range proxy.
Message-ID: <20260626081016.B3D5B4BA2E0F@sourceware.org>

https://gcc.gnu.org/g:55c330d029e2e6b20a62ab208262b34c6cd78acb

commit r17-1912-g55c330d029e2e6b20a62ab208262b34c6cd78acb
Author: Tomasz Kami?ski <tkaminsk@redhat.com>
Date:   Thu Jun 25 13:28:04 2026 +0200

    libstdc++: Make bitset::reference a proper range proxy.
    
    This implements remaining changes from P3612R1 Harmonize proxy-reference
    operations (LWG 3638 and 4187).
    
    As the const-assignment operator in bitset::reference (from LWG4187)
    is used by range concepts (std::indirectly_writable) to recognize
    iterator returning it by value as proxy iterator (see range_proxy.cc) test,
    this change is backported to C++23. This puts it inline with vector<bool>
    reference and other proxy type, for which the corresponding assignment
    operator where added by P2321 in C++23 and implemented in r13-2159-g72886f.
    
    Similary, a swap overloads accepting bitset::reference by value and bool&,
    are necessary for ranges::swap and ranges::iter_swap to work correctly,
    so they should also be backported. This patch follows the approach from
    resolution of LWG3638 from r12-5311-g59434931fb658f, and backports the
    overloads to C++11. This harmonizes the operations on this two proxy
    types (per paper title). Corresponding test are added for both classes.
    
    The deprecation warning for static vector<bool>::swap is added since C++26.
    The text in _GLIBCXX26_DEPRECATED_SUGGEST leads to following message:
      'static constexpr void std::vector<bool, _Alloc>::swap(reference, reference)
      [with... ]' is deprecated: use 'swap' invoked via ADL or 'std::ranges::swap'
      instead
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/stl_bvector.h: Add _GLIBCXX_RESOLVE_LIB_DEFECTS
            comment for 3638.
            (vector<bool, _Alloc>::operator=(bool) const)
            [__glibcxx_ranges_zip]: Adjust guard.
            (vector<bool, _Alloc>::swap): Add deprected attribute via
            _GLIBCXX26_DEPRECATED_SUGGEST.
            * include/std/bitset (bitset::operator=(bool) const)
            [__glibcxx_ranges_zip]: Define.
            (bistset::reference::swap) [__cplusplus >= 201103L]: Define.
            * testsuite/20_util/bitset/access/range_proxy.cc: New test.
            * testsuite/20_util/bitset/access/ref_swap.cc: New test.
            * testsuite/23_containers/vector/bool/element_access/range_proxy.cc:
            New test.
            * testsuite/23_containers/vector/bool/element_access/ref_swap.cc:
            New test.
            * testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc:
            Check for deprecated warning on static swap.
    
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    Signed-off-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/include/bits/stl_bvector.h            |  6 +-
 libstdc++-v3/include/std/bitset                    | 43 ++++++++++
 .../testsuite/20_util/bitset/access/range_proxy.cc | 95 ++++++++++++++++++++++
 .../testsuite/20_util/bitset/access/ref_swap.cc    | 28 +++++++
 .../vector/bool/element_access/range_proxy.cc      | 63 ++++++++++++++
 .../vector/bool/element_access/ref_swap.cc         | 40 +++++++++
 .../vector/bool/modifiers/swap/constexpr.cc        |  2 +-
 7 files changed, 275 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index f190d1be5cec..d792f7077860 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -116,7 +116,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       return *this;
     }
 
-#if __cplusplus > 202002L
+#if __glibcxx_ranges_zip // >= C++23
     constexpr const _Bit_reference&
     operator=(bool __x) const noexcept
     {
@@ -149,6 +149,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
     { *_M_p ^= _M_mask; }
 
 #if __cplusplus >= 201103L
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // 3638. vector<bool>::swap(reference, reference) is useless
+
     _GLIBCXX20_CONSTEXPR
     friend void
     swap(_Bit_reference __x, _Bit_reference __y) noexcept
@@ -1266,6 +1269,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       }
 
       // [23.2.5]/1, third-to-last entry in synopsis listing
+      _GLIBCXX26_DEPRECATED_SUGGEST("swap' invoked via ADL or 'std::ranges::swap")
       _GLIBCXX20_CONSTEXPR
       static void
       swap(reference __x, reference __y) _GLIBCXX_NOEXCEPT
diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset
index a8cb337f4b15..d581606e7dde 100644
--- a/libstdc++-v3/include/std/bitset
+++ b/libstdc++-v3/include/std/bitset
@@ -908,6 +908,20 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  return *this;
 	}
 
+#if __glibcxx_ranges_zip // >= C++23
+	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+	// 4187. bitset::reference should be const-assignable
+	constexpr const reference&
+	operator=(bool __x) const noexcept
+	{
+	  if (__x)
+	    *_M_wp |= _Base::_S_maskbit(_M_bpos);
+	  else
+	    *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
+	  return *this;
+	}
+#endif // C++23
+
 	// For b[i] = b[__j];
 	_GLIBCXX23_CONSTEXPR
 	reference&
@@ -939,6 +953,35 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  *_M_wp ^= _Base::_S_maskbit(_M_bpos);
 	  return *this;
 	}
+
+#if __cplusplus >= 201103L
+	_GLIBCXX23_CONSTEXPR
+	friend void
+	swap(reference __x, reference __y) noexcept
+	{
+	  bool __tmp = __x;
+	  __x = __y;
+	  __y = __tmp;
+	}
+
+	_GLIBCXX23_CONSTEXPR
+	friend void
+	swap(reference __x, bool& __y) noexcept
+	{
+	  bool __tmp = __x;
+	  __x = __y;
+	  __y = __tmp;
+	}
+
+	_GLIBCXX23_CONSTEXPR
+	friend void
+	swap(bool& __x, reference __y) noexcept
+	{
+	  bool __tmp = __x;
+	  __x = __y;
+	  __y = __tmp;
+	}
+#endif
       };
       friend class reference;
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/access/range_proxy.cc b/libstdc++-v3/testsuite/20_util/bitset/access/range_proxy.cc
new file mode 100644
index 000000000000..b485a50bef8c
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/bitset/access/range_proxy.cc
@@ -0,0 +1,95 @@
+// { dg-do run { target c++20 } }
+
+#include <bitset>
+#include <concepts>
+#include <iterator>
+#include <version>
+#include <testsuite_hooks.h>
+
+void
+test_swap()
+{
+  std::bitset<2> v("01");
+  std::ranges::swap(v[0], v[1]);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true;
+  std::ranges::swap(v[0], b);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  std::ranges::swap(b, v[1]);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+template<size_t N>
+struct bitset_iterator
+{
+  using value_type = bool;
+  using reference = std::bitset<2>::reference;
+  using iterator_category = std::forward_iterator_tag;
+  using difference_type = std::ptrdiff_t;
+
+  bitset_iterator() = default;
+  bitset_iterator(std::bitset<N>& c) noexcept : cont(&c) {}
+
+  reference operator*() const noexcept
+  { return (*cont)[pos]; }
+
+  bitset_iterator& operator++() {
+   ++pos;
+   return *this;
+  }
+
+  bitset_iterator operator++(int) {
+    auto tmp = *this;
+    ++pos;
+    return *this;
+  };
+
+  friend bool operator==(bitset_iterator, bitset_iterator) = default;
+
+private:
+  std::bitset<N>* cont = nullptr;
+  size_t pos = 0;
+};
+
+void
+test_iter_swap()
+{
+  std::bitset<2> v("01");
+  auto it1 = bitset_iterator<2>(v);
+  auto it2 = std::ranges::next(it1);
+  std::ranges::iter_swap(it1, it2);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true, *p = &b;
+  std::ranges::iter_swap(it1, p);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  std::ranges::iter_swap(p, it2);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+#if __cpp_lib_ranges_zip
+static_assert( std::indirectly_writable<bitset_iterator<2>, bool> );
+static_assert( std::indirectly_writable<bitset_iterator<2>,
+					std::bitset<2>::reference> );
+
+#else
+static_assert( !std::indirectly_writable<bitset_iterator<2>, bool> );
+static_assert( !std::indirectly_writable<bitset_iterator<2>,
+					 std::bitset<2>::reference> );
+#endif
+
+int
+main()
+{
+  test_swap();
+  test_iter_swap();
+}
diff --git a/libstdc++-v3/testsuite/20_util/bitset/access/ref_swap.cc b/libstdc++-v3/testsuite/20_util/bitset/access/ref_swap.cc
new file mode 100644
index 000000000000..1d8e3c1bf490
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/bitset/access/ref_swap.cc
@@ -0,0 +1,28 @@
+// { dg-do run { target c++11 } }
+
+#include <bitset>
+#include <testsuite_hooks.h>
+
+void
+test_friend()
+{
+  std::bitset<2> v("01");
+  swap(v[0], v[1]);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true;
+  swap(v[0], b);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  swap(b, v[1]);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+int
+main()
+{
+  test_friend();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/range_proxy.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/range_proxy.cc
new file mode 100644
index 000000000000..2d59fbfdaa67
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/range_proxy.cc
@@ -0,0 +1,63 @@
+// { dg-do run { target c++20 } }
+
+#include <vector>
+#include <concepts>
+#include <iterator>
+#include <version>
+#include <testsuite_hooks.h>
+
+void
+test_swap()
+{
+  std::vector<bool> v{true, false};
+  std::ranges::swap(v[0], v[1]);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true;
+  std::ranges::swap(v[0], b);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  std::ranges::swap(b, v[1]);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+void
+test_iter_swap()
+{
+  std::vector<bool> v{true, false};
+  auto it1 = v.begin();
+  auto it2 = std::ranges::next(it1);
+  std::ranges::iter_swap(it1, it2);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true, *p = &b;
+  std::ranges::iter_swap(it1, p);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  std::ranges::iter_swap(p, it2);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+#if __cpp_lib_ranges_zip
+static_assert( std::indirectly_writable<std::vector<bool>::iterator, bool> );
+static_assert( std::indirectly_writable<std::vector<bool>::iterator,
+					std::vector<bool>::reference> );
+
+#else
+static_assert( !std::indirectly_writable<std::vector<bool>::iterator, bool> );
+static_assert( !std::indirectly_writable<std::vector<bool>::iterator,
+					 std::vector<bool>::reference> );
+#endif
+
+int
+main()
+{
+  test_swap();
+  test_iter_swap();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/ref_swap.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/ref_swap.cc
new file mode 100644
index 000000000000..5c250cb2bbd2
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/element_access/ref_swap.cc
@@ -0,0 +1,40 @@
+// { dg-do run { target c++11 } }
+
+#include <vector>
+#include <testsuite_hooks.h>
+
+void
+test_friend()
+{
+  std::vector<bool> v{true, false};
+  swap(v[0], v[1]);
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+
+  bool b = true;
+  swap(v[0], b);
+  VERIFY( v[0] == true );
+  VERIFY( b == false );
+
+  swap(b, v[1]);
+  VERIFY( v[1] == false );
+  VERIFY( b == true );
+}
+
+void
+test_static()
+{
+#ifndef _GLIBCXX_DEBUG
+  std::vector<bool> v{true, false};
+  std::vector<bool>::swap(v[0], v[1]); // { dg-warning "deprecated" "::swap" { target { c++26 && { ! debug_mode } } } }
+  VERIFY( v[0] == false );
+  VERIFY( v[1] == true );
+#endif
+}
+
+int
+main()
+{
+  test_friend();
+  test_static();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc
index d2a0218a1097..b269b16249bc 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc
@@ -53,7 +53,7 @@ constexpr bool
 test_reference_swap()
 {
   std::vector<bool> v1 = {true, false, true};
-  std::vector<bool>::swap(v1[0], v1[1]);
+  std::vector<bool>::swap(v1[0], v1[1]); // { dg-warning "deprecated" "::swap" { target { c++26 && { ! debug_mode } } } }
 
   VERIFY(v1[0] == false);
   VERIFY(v1[1] == true);

From gccadmin@gcc.gnu.org  Fri Jun 26 08:14:53 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Fri, 26 Jun 2026 08:14:53 +0000 (GMT)
Subject: [gcc r14-12698] Update ChangeLog and version files for release
Message-ID: <20260626081453.0E0CC4BA2E20@sourceware.org>

https://gcc.gnu.org/g:98859340e0916f004ac78d5fe20549fb100d41aa

commit r14-12698-g98859340e0916f004ac78d5fe20549fb100d41aa
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Jun 26 08:14:44 2026 +0000

    Update ChangeLog and version files for release

Diff:
---
 ChangeLog                         | 4 ++++
 c++tools/ChangeLog                | 4 ++++
 config/ChangeLog                  | 4 ++++
 contrib/ChangeLog                 | 4 ++++
 contrib/header-tools/ChangeLog    | 4 ++++
 contrib/reghunt/ChangeLog         | 4 ++++
 contrib/regression/ChangeLog      | 4 ++++
 fixincludes/ChangeLog             | 4 ++++
 gcc/BASE-VER                      | 2 +-
 gcc/ChangeLog                     | 4 ++++
 gcc/ada/ChangeLog                 | 4 ++++
 gcc/analyzer/ChangeLog            | 4 ++++
 gcc/c-family/ChangeLog            | 4 ++++
 gcc/c/ChangeLog                   | 4 ++++
 gcc/cp/ChangeLog                  | 4 ++++
 gcc/d/ChangeLog                   | 4 ++++
 gcc/fortran/ChangeLog             | 4 ++++
 gcc/go/ChangeLog                  | 4 ++++
 gcc/jit/ChangeLog                 | 4 ++++
 gcc/lto/ChangeLog                 | 4 ++++
 gcc/m2/ChangeLog                  | 4 ++++
 gcc/objc/ChangeLog                | 4 ++++
 gcc/objcp/ChangeLog               | 4 ++++
 gcc/po/ChangeLog                  | 4 ++++
 gcc/rust/ChangeLog                | 4 ++++
 gcc/testsuite/ChangeLog           | 4 ++++
 gnattools/ChangeLog               | 4 ++++
 gotools/ChangeLog                 | 4 ++++
 include/ChangeLog                 | 4 ++++
 libada/ChangeLog                  | 4 ++++
 libatomic/ChangeLog               | 4 ++++
 libbacktrace/ChangeLog            | 4 ++++
 libcc1/ChangeLog                  | 4 ++++
 libcody/ChangeLog                 | 4 ++++
 libcpp/ChangeLog                  | 4 ++++
 libcpp/po/ChangeLog               | 4 ++++
 libdecnumber/ChangeLog            | 4 ++++
 libffi/ChangeLog                  | 4 ++++
 libgcc/ChangeLog                  | 4 ++++
 libgcc/config/avr/libf7/ChangeLog | 4 ++++
 libgcc/config/libbid/ChangeLog    | 4 ++++
 libgfortran/ChangeLog             | 4 ++++
 libgm2/ChangeLog                  | 4 ++++
 libgomp/ChangeLog                 | 4 ++++
 libgrust/ChangeLog                | 4 ++++
 libiberty/ChangeLog               | 4 ++++
 libitm/ChangeLog                  | 4 ++++
 libobjc/ChangeLog                 | 4 ++++
 libphobos/ChangeLog               | 4 ++++
 libquadmath/ChangeLog             | 4 ++++
 libsanitizer/ChangeLog            | 4 ++++
 libssp/ChangeLog                  | 4 ++++
 libstdc++-v3/ChangeLog            | 4 ++++
 libvtv/ChangeLog                  | 4 ++++
 lto-plugin/ChangeLog              | 4 ++++
 maintainer-scripts/ChangeLog      | 4 ++++
 zlib/ChangeLog                    | 4 ++++
 57 files changed, 225 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 214b6d0e95e6..32768aebd7dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/c++tools/ChangeLog b/c++tools/ChangeLog
index 03c0bca802ed..69cfdfa84fff 100644
--- a/c++tools/ChangeLog
+++ b/c++tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/config/ChangeLog b/config/ChangeLog
index d9aa8b2ee11f..49509dc21187 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 77f621197ed0..62e0a052829e 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/contrib/header-tools/ChangeLog b/contrib/header-tools/ChangeLog
index 1f572637f454..ecc8fb992c57 100644
--- a/contrib/header-tools/ChangeLog
+++ b/contrib/header-tools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/contrib/reghunt/ChangeLog b/contrib/reghunt/ChangeLog
index b5d324ab9173..d3075e39b9a4 100644
--- a/contrib/reghunt/ChangeLog
+++ b/contrib/reghunt/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/contrib/regression/ChangeLog b/contrib/regression/ChangeLog
index 51309c789744..0c6e85aa0f23 100644
--- a/contrib/regression/ChangeLog
+++ b/contrib/regression/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 94cce4621c21..94429c2e8cb9 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/BASE-VER b/gcc/BASE-VER
index 6dfe8b1298c0..72f51351fcd8 100644
--- a/gcc/BASE-VER
+++ b/gcc/BASE-VER
@@ -1 +1 @@
-14.3.1
+14.4.0
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 961a2d2864bf..8fa39d74cf6d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0deba0118a15..cbc473dd989c 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/125695
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog
index dd36e1c905ea..22dae79df915 100644
--- a/gcc/analyzer/ChangeLog
+++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-10-21  David Malcolm  <dmalcolm@redhat.com>
 
 	Backported from master:
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 939000dfb48c..30ba4583f2ee 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-03-30  Patrick Palka  <ppalka@redhat.com>
 
 	Backported from master:
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 64dd1b0c8269..407b6bf2871a 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-03-15  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7dc032dad75e..9ef7c77ae952 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
 
 	Backported from master:
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog
index e79f5145f749..9aa38379e964 100644
--- a/gcc/d/ChangeLog
+++ b/gcc/d/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	Backported from master:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8ae33996141f..2c1142b1aa6a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	Backported from master:
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index 12a1027dd452..1ca95e0092d3 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index a5d5661f5cc5..105f907222b8 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 612db0351c6e..68a411cbeccb 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-02-26  Michal Jires  <mjires@suse.cz>
 
 	Backported from master:
diff --git a/gcc/m2/ChangeLog b/gcc/m2/ChangeLog
index e9987e51d984..458c7befcba3 100644
--- a/gcc/m2/ChangeLog
+++ b/gcc/m2/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 2900161c686f..0895aed3adfc 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index 132d138e84db..54ebc57c846f 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 1df0c1c07740..a73089325856 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog
index 945721d4fb90..577d3c368bb8 100644
--- a/gcc/rust/ChangeLog
+++ b/gcc/rust/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 42e3458e4516..a049ddc53551 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-25  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
 
 	Backported from master:
diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog
index 72c7fb597e20..dc75d303fef8 100644
--- a/gnattools/ChangeLog
+++ b/gnattools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/gotools/ChangeLog b/gotools/ChangeLog
index 89076ef00b39..06402a2aeb2e 100644
--- a/gotools/ChangeLog
+++ b/gotools/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/include/ChangeLog b/include/ChangeLog
index c7907c0ac25f..4aded45d5f6e 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libada/ChangeLog b/libada/ChangeLog
index 7304308c96ec..7a29e986b732 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 751a5e4fded2..f9d65d33c374 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index 824df74f584e..5774a97f139f 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog
index a8a43e7bf7c7..97e63553ad8d 100644
--- a/libcc1/ChangeLog
+++ b/libcc1/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libcody/ChangeLog b/libcody/ChangeLog
index 767555542e94..697431e65d73 100644
--- a/libcody/ChangeLog
+++ b/libcody/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-03-15  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 072da0632916..818a101649a8 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-03-15  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 9cf852ae9ab7..629ec6d90f44 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index b7a8b1b62e69..f1f50fc35dea 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 4bf88868ff50..cfeaf5bfb998 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index e8d352bead36..88946912d24c 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-08-15  Richard Sandiford  <richard.sandiford@arm.com>
 
 	Backported from master:
diff --git a/libgcc/config/avr/libf7/ChangeLog b/libgcc/config/avr/libf7/ChangeLog
index 32049562f767..148046519077 100644
--- a/libgcc/config/avr/libf7/ChangeLog
+++ b/libgcc/config/avr/libf7/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
 
 	Backported from master:
diff --git a/libgcc/config/libbid/ChangeLog b/libgcc/config/libbid/ChangeLog
index eb19f1f080c8..27354735dc00 100644
--- a/libgcc/config/libbid/ChangeLog
+++ b/libgcc/config/libbid/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-08-30  liuhongt  <hongtao.liu@intel.com>
 
 	Revert:
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 158bdddb155d..ea381077f55a 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index b7d80c275955..409b29fd3572 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index fe552a381126..06d5c62be198 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-04-02  Paul Thomas  <pault@gcc.gnu.org>
 
 	* testsuite/libgomp.fortran/pr120286.f90: New test.
diff --git a/libgrust/ChangeLog b/libgrust/ChangeLog
index feea9711571d..618dc74a9f3c 100644
--- a/libgrust/ChangeLog
+++ b/libgrust/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 04c480b44efe..8e584e6777af 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-03-15  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index c965469d6cb8..d7844dfeba50 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index e8807aab597b..cb4ac8c7509f 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 7eccad15c74c..571d836a8eee 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-09-07  Sam James  <sam@gentoo.org>
 
 	Backported from master:
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 80306a81ac64..790efaeb1789 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 99a17a0399c4..a10df8b29c01 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-04-30  Jakub Jelinek  <jakub@redhat.com>
 
 	Backported from master:
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index 6dac5c0d1ba1..5b8112469c7f 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 2ad98f0d478d..400f97a1f202 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2026-06-23  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backported from master:
diff --git a/libvtv/ChangeLog b/libvtv/ChangeLog
index 8570cf9a8ba0..915382b7315e 100644
--- a/libvtv/ChangeLog
+++ b/libvtv/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index 3ff4dbcdc124..246daa85ecf6 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog
index c2069d8d7e32..774f0c35bab6 100644
--- a/maintainer-scripts/ChangeLog
+++ b/maintainer-scripts/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.
diff --git a/zlib/ChangeLog b/zlib/ChangeLog
index 4c9d1b425e76..0feef9d37b8a 100644
--- a/zlib/ChangeLog
+++ b/zlib/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-26  Release Manager
+
+	* GCC 14.4.0 released.
+
 2025-05-23  Release Manager
 
 	* GCC 14.3.0 released.

From redi@gcc.gnu.org  Fri Jun 26 11:40:11 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Fri, 26 Jun 2026 11:40:11 +0000 (GMT)
Subject: [gcc r17-1915] libstdc++: Test fs::status and fs::symlink_status with
 dir symlink
Message-ID: <20260626114011.7A4824BA79A6@sourceware.org>

https://gcc.gnu.org/g:4c05f6e10358f379a6da28151b832509f0a3f485

commit r17-1915-g4c05f6e10358f379a6da28151b832509f0a3f485
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jun 26 12:30:57 2026 +0100

    libstdc++: Test fs::status and fs::symlink_status with dir symlink
    
    I realized that we didn't test that filesystem::status and
    filesystem::symlink_status work correctly for directory symlinks.
    
    For POSIX there's no reason it wouldn't Just Work, but for Windows
    symlinks to directories and symlinks to regular files require different
    handling. These tests will ensure that we get it right when Windows
    symlinks are supported.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/27_io/filesystem/operations/status.cc: Check
            handling of directory symlink.
            * testsuite/27_io/filesystem/operations/symlink_status.cc:
            Likewise.

Diff:
---
 .../27_io/filesystem/operations/status.cc          | 22 ++++++++++++++++++++++
 .../27_io/filesystem/operations/symlink_status.cc  | 22 ++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
index f4321414e070..51737b19b2d4 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
@@ -99,6 +99,27 @@ test04()
   VERIFY( is_directory(st) );
 }
 
+void
+test05()
+{
+#ifndef NO_SYMLINKS
+  struct scoped_dir
+  {
+    scoped_dir() { fs::create_directory(d); }
+    ~scoped_dir() { remove_all(d); }
+    fs::path d = __gnu_test::nonexistent_path();
+    fs::path operator/(const char* p) const { return d/p; }
+  };
+  const scoped_dir d;
+  fs::create_directory(d/"dir");
+  const fs::path link = d/"link";
+  fs::create_directory_symlink("dir", link);
+  auto st = fs::status(link);
+  VERIFY( is_directory(st) );
+  VERIFY( ! is_symlink(st) );
+#endif
+}
+
 int
 main()
 {
@@ -106,4 +127,5 @@ main()
   test02();
   test03();
   test04();
+  test05();
 }
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
index 06a5467d3e80..c542ac46cdc4 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
@@ -125,6 +125,27 @@ test04()
   VERIFY( is_directory(st) );
 }
 
+void
+test05()
+{
+#ifndef NO_SYMLINKS
+  struct scoped_dir
+  {
+    scoped_dir() { fs::create_directory(d); }
+    ~scoped_dir() { remove_all(d); }
+    fs::path d = __gnu_test::nonexistent_path();
+    fs::path operator/(const char* p) const { return d/p; }
+  };
+  const scoped_dir d;
+  fs::create_directory(d/"dir");
+  const fs::path link = d/"link";
+  fs::create_directory_symlink("dir", link);
+  auto st = fs::symlink_status(link);
+  VERIFY( ! is_directory(st) );
+  VERIFY( is_symlink(st) );
+#endif
+}
+
 int
 main()
 {
@@ -132,4 +153,5 @@ main()
   test02();
   test03();
   test04();
+  test05();
 }

From gccadmin@gcc.gnu.org  Sat Jun 27 00:17:04 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sat, 27 Jun 2026 00:17:04 +0000 (GMT)
Subject: [gcc r17-1929] Daily bump.
Message-ID: <20260627001704.5EA8A4BA2E13@sourceware.org>

https://gcc.gnu.org/g:19121eecdc086182b2334800aa0291653996dfea

commit r17-1929-g19121eecdc086182b2334800aa0291653996dfea
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Jun 27 00:16:33 2026 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 141 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/cp/ChangeLog        |   6 +++
 gcc/fortran/ChangeLog   |  13 +++++
 gcc/testsuite/ChangeLog |  96 +++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  |  27 ++++++++++
 6 files changed, 284 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 336492664a18..b1ac4d3bf40f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,144 @@
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR middle-end/125977
+	* expr.cc (emit_block_move_via_pattern): Replace ops[6].value
+	in assert with GEN_INT (min_size).
+
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/125856
+	PR target/125865
+	* config/i386/i386-expand.cc (ix86_expand_set_or_cpymem):
+	Call ix86_expand_set_or_movmem for
+	TARGET_MISALIGNED_MOVE_STRING_PRO_EPILOGUES.
+	(ix86_expand_memset_val): New.
+	(ix86_expand_n_move_movmem): Renamed to ...
+	(ix86_expand_n_move_set_or_movmem): This.  Add a pointer to rtx
+	argument for memset.  Also expand memset.
+	(ix86_expand_n_overlapping_move_movmem): Renamed to ...
+	(ix86_expand_n_overlapping_move_set_or_movmem): This.  Add a
+	pointer to rtx argument for memset.  Also expand memset.
+	(ix86_expand_less_move_movmem): Renamed to ...
+	(ix86_expand_less_move_set_or_movmem): This.  Add a pointer to
+	rtx argument for memset.  Also expand memset.
+	(ix86_expand_movmem): Renamed to ...
+	(ix86_expand_set_or_movmem): This.  Add bool arguments for memcpy
+	and memset.  Also expand memcpy and memset.
+	* config/i386/i386-protos.h (ix86_expand_movmem): Renamed to ...
+	(ix86_expand_set_or_movmem): This.  Add bool arguments for memcpy
+	and memset.
+	* config/i386/i386.md (movmem<mode>): Replace ix86_expand_movmem
+	with ix86_expand_set_or_movmem.
+
+2026-06-26  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/123238
+	* config/i386/i386-expand.cc: Delay calling force_reg on
+	op_true and op_false.  Generate an AND then XOR sequence
+	if op_true and op_false are both CONST_VECTOR_P.
+	* config/i386/mmx.md (vcond_mask_<mode>v4hi): Allow operands
+	1 and 2 to be vector_or_const_vector_operand.
+	(vcond_mask_<mode>v2hi): Likewise.
+	(vcond_mask_<mode><mmxintvecmodelower>): Likewise.
+	(vcond_mask_<mode><mode>): Likewise.
+	* config/i386/sse.md (vcond_mask_<mode><sseintvecmodelower>):
+	Likewise.
+	(vcond_mask_<mode><sseintvecmodelower>): Likewise.
+	(vcond_mask_v1tiv1ti): Likewise.
+	(vcond_mask_<mode><sseintvecmodelower>): Likewise.
+	(vcond_mask_<mode><sseintvecmodelower>): Likewise.
+	* config/i386/predicates.md (vector_or_0_or_1s_operand): Delete
+	predicate with no remaining uses.
+
+2026-06-26  vekumar  <Venkataramanan.Kumar@amd.com>
+
+	PR target/125949
+	* config/i386/i386.md ("isa"): Add avxvnniint8.
+	("enabled"): Adjust for avxvnniint8.
+	* config/i386/sse.md (vpdp<vpdotprodtype>_<mode>): Adjust for
+	AVXVNNIINT8.
+
+2026-06-26  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+
+	PR target/125972
+	* config/s390/s390.cc (s390_rtx_costs): Deal with non-compare
+	conditions during costing.  Also fix some indentation.
+
+2026-06-26  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/125875
+	* match.pd: When checking for !can_vec_perm_const_p also
+	allow variable permutes and use the vec_perm_indices CTOR
+	with the original tree operands.
+
+2026-06-26  Richard Biener  <rguenther@suse.de>
+
+	* vec-perm-indices.h (vec_perm_indices::new_vector): New overload.
+	(vec_perm_indices::input_bitwise_zero_p): New method.
+	(vec_perm_indices::m_input0_bitwise_zero_p,
+	vec_perm_indices::m_input1_bitwise_zero_p): New members.
+	(vec_perm_indices::vec_perm_indices): Adjust.
+	(tree_to_vec_perm_indices): Declare.
+	* vec-perm-indices.cc (vec_perm_indices::new_vector): New overload.
+	(vec_perm_indices::new_expanded_vector): Adjust.
+	(tree_to_vec_perm_indices): New function.
+	* optabs-query.cc (can_vec_perm_const_p): Handle permute
+	patterns mapping to vec_shl/vec_shr.
+	* tree-vect-generic.cc (lower_vec_perm): Move vec_shl/vec_shr
+	detection to can_vec_perm_const_p and simplify.
+
+2026-06-26  Andrew MacLeod  <amacleod@redhat.com>
+
+	PR tree-optimization/125979
+	* dbgcnt.def: Add ranger_cnt.
+	* gimple-range.cc (gimple_ranger::range_of_expr): Add debug_cnt.
+	(gimple_ranger::range_on_entry): Likewise.
+	(gimple_ranger::range_on_exit): Likewise.
+	(gimple_ranger::range_on_edge); Likewise.
+	(gimple_ranger::range_of_stmt): Likewise
+	(dom_ranger::range_of_expr): Likewise.
+	(dom_ranger::range_on_edge): Likewise.
+	(dom_ranger::range_of_stmt): Likewise.
+
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR middle-end/125977
+	* builtins.cc (determine_block_size): Change len_rtx to reference
+	and set it to min size if min size == max size.
+	* expr.cc (emit_block_move_via_pattern): Assert count == min_size
+	if min_size == max_size.
+	(set_storage_via_setmem): Likewise.
+
+2026-06-26  Pengfei Li  <Pengfei.Li2@arm.com>
+
+	* config/aarch64/aarch64.cc
+	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Return 0
+	when dispatch scheduling is enabled.
+
+2026-06-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.ac (gcc_cv_as_ix86_quad): Remove.
+	* configure: Regenerate.
+	* config.in: Likewise.
+	* config/i386/sol2.h [!HAVE_AS_IX86_QUAD] (ASM_QUAD): Don't undefine.
+
+2026-06-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.ac (gcc_cv_as_ix86_diff_sect_delta): Remove.
+	* configure: Regenerate.
+	* config.in: Likewise.
+	* config/i386/sol2.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
+	(ASM_PREFERRED_EH_DATA_FORMAT): Remove.
+	(JUMP_TABLES_IN_TEXT_SECTION): Likewise.
+	(ASM_OUTPUT_DWARF_PCREL): Likewise.
+
+2026-06-26  Jiahao Xu  <xujiahao@loongson.cn>
+
+	* config/loongarch/loongarch.cc (loongarch_sched_reassociation_width):
+	Get a tree_code instead of unsigned int.
+
 2026-06-25  Jeff Law  <jeffrey.law@oss.qualcomm.com>
 
 	* config/riscv/riscv.md (seq_sne_qi): Mark name for debugging purposes
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 29656a8522bf..4fff66f6b5dc 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260626
+20260627
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 210bea501748..e383d1ed0e2e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-26  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125900
+	* reflect.cc (check_out_of_consteval_use_r): Don't walk
+	SPLICE_EXPR.
+
 2026-06-25  Marek Polacek  <polacek@redhat.com>
 
 	PR c++/125922
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b516ec54916f..19569734642d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,16 @@
+2026-06-26  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* dump-parse-tree.cc (needs_CFI_cdesc): New helper function to
+	determine when struct CFI_cdesc_t is used.
+	(has_cfi_cdesc): Use it here...
+	(get_c_type_name): ... and here.
+
+2026-06-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR fortran/121972
+	* trans-array.cc (has_class_alloc_comp): Change to atte.class_pointer.
+
 2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR fortran/125761
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4fb9c464842f..629e9746cb69 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,99 @@
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/125856
+	PR target/125865
+	* gcc.target/i386/builtin-memcpy-1a.c: New test.
+	* gcc.target/i386/builtin-memcpy-1b.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-2a.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-2b.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-2c.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-3a.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-3b.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-3c.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-4a.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-4b.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-4c.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-5a.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-5b.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-5c.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-6.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-bounded-1a.c: Likewise.
+	* gcc.target/i386/builtin-memcpy-bounded-1b.c: Likewise.
+	* gcc.target/i386/builtin-memset-1a.c: Likewise.
+	* gcc.target/i386/builtin-memset-1b.c: Likewise.
+	* gcc.target/i386/builtin-memset-2a.c: Likewise.
+	* gcc.target/i386/builtin-memset-2b.c: Likewise.
+	* gcc.target/i386/builtin-memset-2c.c: Likewise.
+	* gcc.target/i386/builtin-memset-3a.c: Likewise.
+	* gcc.target/i386/builtin-memset-3b.c: Likewise.
+	* gcc.target/i386/builtin-memset-3c.c: Likewise.
+	* gcc.target/i386/builtin-memset-4a.c: Likewise.
+	* gcc.target/i386/builtin-memset-4b.c: Likewise.
+	* gcc.target/i386/builtin-memset-4c.c: Likewise.
+	* gcc.target/i386/builtin-memset-5a.c: Likewise.
+	* gcc.target/i386/builtin-memset-5b.c: Likewise.
+	* gcc.target/i386/builtin-memset-5c.c: Likewise.
+	* gcc.target/i386/builtin-memset-6a.c: Likewise.
+	* gcc.target/i386/builtin-memset-6b.c: Likewise.
+	* gcc.target/i386/builtin-memset-6c.c: Likewise.
+	* gcc.target/i386/builtin-memset-7a.c: Likewise.
+	* gcc.target/i386/builtin-memset-7b.c: Likewise.
+	* gcc.target/i386/builtin-memset-7c.c: Likewise.
+	* gcc.target/i386/builtin-memset-8.c: Likewise.
+	* gcc.target/i386/builtin-memset-bounded-1a.c: Likewise.
+	* gcc.target/i386/builtin-memset-bounded-1b.c: Likewise.
+
+2026-06-26  Andi Kleen  <ak@gcc.gnu.org>
+
+	* lib/profopt.exp (profopt-execute): Check if CREATE_GCOV env
+	variable exists and use it when there.
+
+2026-06-26  Marek Polacek  <polacek@redhat.com>
+
+	PR c++/125900
+	* g++.dg/reflect/expr18.C: New test.
+
+2026-06-26  Harald Anlauf  <anlauf@gmx.de>
+
+	PR fortran/125902
+	* gfortran.dg/c-prototypes_2.F90: New test.
+
+2026-06-26  Roger Sayle  <roger@nextmovesoftware.com>
+	    Hongtao Liu  <hongtao.liu@intel.com>
+
+	PR target/123238
+	* gcc.target/i386/pr123238-2.c: New test case.
+
+2026-06-26  vekumar  <Venkataramanan.Kumar@amd.com>
+
+	PR target/125949
+	* gcc.target/i386/pr125949.c: New test.
+
+2026-06-26  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+
+	PR target/125972
+	* gcc.target/s390/pr125972.c: New test.
+
+2026-06-26  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/125875
+	* gcc.dg/torture/pr125875.c: New testcase.
+
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR middle-end/125977
+	* g++.dg/pr125977.C: New test.
+
+2026-06-26  Pengfei Li  <Pengfei.Li2@arm.com>
+
+	* gcc.target/aarch64/dispatch_sched_1.c: New test.
+
+2026-06-26  H.J. Lu  <hjl.tools@gmail.com>
+
+	* gcc.target/i386/builtin-memmove-bounded-1a.c: New test.
+	* gcc.target/i386/builtin-memmove-bounded-1b.c: Likewise.
+
 2026-06-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/118793
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7d2ffd8f6f39..f74e49d96a60 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,30 @@
+2026-06-26  Jonathan Wakely  <jwakely@redhat.com>
+
+	* testsuite/27_io/filesystem/operations/status.cc: Check
+	handling of directory symlink.
+	* testsuite/27_io/filesystem/operations/symlink_status.cc:
+	Likewise.
+
+2026-06-26  Tomasz Kami?ski  <tkaminsk@redhat.com>
+
+	* include/bits/stl_bvector.h: Add _GLIBCXX_RESOLVE_LIB_DEFECTS
+	comment for 3638.
+	(vector<bool, _Alloc>::operator=(bool) const)
+	[__glibcxx_ranges_zip]: Adjust guard.
+	(vector<bool, _Alloc>::swap): Add deprected attribute via
+	_GLIBCXX26_DEPRECATED_SUGGEST.
+	* include/std/bitset (bitset::operator=(bool) const)
+	[__glibcxx_ranges_zip]: Define.
+	(bistset::reference::swap) [__cplusplus >= 201103L]: Define.
+	* testsuite/20_util/bitset/access/range_proxy.cc: New test.
+	* testsuite/20_util/bitset/access/ref_swap.cc: New test.
+	* testsuite/23_containers/vector/bool/element_access/range_proxy.cc:
+	New test.
+	* testsuite/23_containers/vector/bool/element_access/ref_swap.cc:
+	New test.
+	* testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc:
+	Check for deprecated warning on static swap.
+
 2026-06-25  Jonathan Wakely  <jwakely@redhat.com>
 
 	* include/bits/version.def (stds): Add C++29 value and adjust

From ppalka@gcc.gnu.org  Sat Jun 27 20:09:07 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Sat, 27 Jun 2026 20:09:07 +0000 (GMT)
Subject: [gcc r14-12705] libstdc++: Use ranges::iter_move in ranges::unique
 [PR120789]
Message-ID: <20260627200907.5FCB84BA23D9@sourceware.org>

https://gcc.gnu.org/g:ccd150e0f45a8d7b622052b89b1d9b26d96d2476

commit r14-12705-gccd150e0f45a8d7b622052b89b1d9b26d96d2476
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Jul 1 13:43:09 2025 -0400

    libstdc++: Use ranges::iter_move in ranges::unique [PR120789]
    
            PR libstdc++/120789
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/ranges_algo.h (__unique_fn::operator()): Use
            ranges::iter_move(iter) instead of std::move(*iter).
            * testsuite/25_algorithms/unique/120789.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 6f69a68998f601cdb86c65113eb1feddfa9da31a)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  2 +-
 .../testsuite/25_algorithms/unique/120789.cc       | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 59374e3dbd0c..f8168e6a7ff4 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -1144,7 +1144,7 @@ namespace ranges
 	  if (!std::__invoke(__comp,
 			     std::__invoke(__proj, *__dest),
 			     std::__invoke(__proj, *__first)))
-	    *++__dest = std::move(*__first);
+	    *++__dest = ranges::iter_move(__first);
 	return {++__dest, __first};
       }
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc b/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc
new file mode 100644
index 000000000000..24b107132473
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/unique/120789.cc
@@ -0,0 +1,36 @@
+// PR libstdc++/120789 - ranges::unique should use ranges::iter_move
+// { dg-do compile { target c++20 } }
+
+#include <algorithm>
+
+struct A
+{
+  bool operator==(const A&) const;
+};
+
+struct B
+{
+  B(B&&) = delete;
+  B& operator=(const A&) const;
+
+  operator A() const;
+  bool operator==(const B&) const;
+};
+
+struct I
+{
+  using value_type = A;
+  using difference_type = int;
+  B operator*() const;
+  I& operator++();
+  I operator++(int);
+  bool operator==(const I&) const;
+  friend A iter_move(const I&);
+};
+
+void
+test01()
+{
+  std::ranges::subrange<I, I> r;
+  auto [begin, end] = std::ranges::unique(r);
+}

From ppalka@gcc.gnu.org  Sat Jun 27 20:09:12 2026
From: ppalka@gcc.gnu.org (Patrick Palka)
Date: Sat, 27 Jun 2026 20:09:12 +0000 (GMT)
Subject: [gcc r14-12706] libstdc++: Use ranges::iter_move in ranges::remove_if
 [PR120789]
Message-ID: <20260627200912.AF6834BA23ED@sourceware.org>

https://gcc.gnu.org/g:1b7d2aefd5f3f9425c1611b0a5944460a7479fb1

commit r14-12706-g1b7d2aefd5f3f9425c1611b0a5944460a7479fb1
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Jul 1 13:43:12 2025 -0400

    libstdc++: Use ranges::iter_move in ranges::remove_if [PR120789]
    
            PR libstdc++/120789
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/ranges_algo.h (__remove_if_fn::operator()): Use
            ranges::iter_move(iter) instead of std::move(*iter).
            * testsuite/25_algorithms/remove_if/120789.cc: New test.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>
    Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
    (cherry picked from commit 17e9ae215f991f2f94fe480aee2404c508388b7c)

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h            |  2 +-
 .../testsuite/25_algorithms/remove_if/120789.cc    | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index f8168e6a7ff4..7ce98926a75b 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -990,7 +990,7 @@ namespace ranges
 	for (; __first != __last; ++__first)
 	  if (!std::__invoke(__pred, std::__invoke(__proj, *__first)))
 	    {
-	      *__result = std::move(*__first);
+	      *__result = ranges::iter_move(__first);
 	      ++__result;
 	    }
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc b/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc
new file mode 100644
index 000000000000..c1f4eeb9b4dd
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/remove_if/120789.cc
@@ -0,0 +1,36 @@
+// PR libstdc++/120789 - ranges::remove_if should use ranges::iter_move
+// { dg-do compile { target c++20 } }
+
+#include <algorithm>
+
+struct A
+{
+  bool operator==(const A&) const;
+};
+
+struct B
+{
+  B(B&&) = delete;
+  B& operator=(const A&) const;
+
+  operator A() const;
+  bool operator==(const B&) const;
+};
+
+struct I
+{
+  using value_type = A;
+  using difference_type = int;
+  B operator*() const;
+  I& operator++();
+  I operator++(int);
+  bool operator==(const I&) const;
+  friend A iter_move(const I&);
+};
+
+void
+test01()
+{
+  std::ranges::subrange<I, I> r;
+  auto [begin, end] = std::ranges::remove_if(r, [](auto&&) { return true; });
+}

From gccadmin@gcc.gnu.org  Sun Jun 28 00:20:04 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Sun, 28 Jun 2026 00:20:04 +0000 (GMT)
Subject: [gcc r14-12707] Daily bump.
Message-ID: <20260628002004.023654BA2E2F@sourceware.org>

https://gcc.gnu.org/g:f91ad823bc233fa9fef30c4792e429d13a9d7887

commit r14-12707-gf91ad823bc233fa9fef30c4792e429d13a9d7887
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sun Jun 28 00:19:32 2026 +0000

    Daily bump.

Diff:
---
 gcc/DATESTAMP           |  2 +-
 gcc/cp/ChangeLog        | 41 +++++++++++++++++++++++++++++++++++++++++
 gcc/testsuite/ChangeLog | 35 +++++++++++++++++++++++++++++++++++
 libstdc++-v3/ChangeLog  | 20 ++++++++++++++++++++
 4 files changed, 97 insertions(+), 1 deletion(-)

diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 4fff66f6b5dc..e77e928a75e8 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260627
+20260628
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9ef7c77ae952..29c3524b81da 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,44 @@
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* pt.cc (has_value_dependent_address): Correct context
+	dependence check for a static local variable.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/121822
+	* cvt.cc (convert_to_void): Don't evaluate a concept-id
+	in an unevaluated context.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/120224
+	* pt.cc (tsubst_function_decl): Return error_mark_node if
+	substituting into the formal parameter list failed.
+	(tsubst_decl) <case PARM_DECL>: Return error_mark_node
+	upon TREE_TYPE substitution failure, when in a SFINAE
+	context.  Return error_mark_node upon DECL_CHAIN substitution
+	failure.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/122318
+	PR c++/101670
+	* pt.cc (unify) <default>: Accept LAMBDA_EXPR.
+
 2026-06-26  Release Manager
 
 	* GCC 14.4.0 released.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a049ddc53551..15efc6faefa6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,38 @@
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-04-07  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/123529
+	PR c++/98930
+	* g++.dg/cpp1z/nontype9.C: New test.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/121822
+	* g++.dg/cpp2a/concepts-decltype6.C: New test.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-06-05  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/120224
+	* g++.dg/cpp0x/alias-decl-80.C: New test.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2026-02-17  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/122318
+	PR c++/101670
+	* g++.dg/cpp2a/lambda-targ20.C: New test.
+	* g++.dg/cpp2a/lambda-targ21.C: New test.
+
 2026-06-26  Release Manager
 
 	* GCC 14.4.0 released.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 400f97a1f202..57d4cedcd1cd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,23 @@
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-07-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR libstdc++/120789
+	* include/bits/ranges_algo.h (__remove_if_fn::operator()): Use
+	ranges::iter_move(iter) instead of std::move(*iter).
+	* testsuite/25_algorithms/remove_if/120789.cc: New test.
+
+2026-06-27  Patrick Palka  <ppalka@redhat.com>
+
+	Backported from master:
+	2025-07-01  Patrick Palka  <ppalka@redhat.com>
+
+	PR libstdc++/120789
+	* include/bits/ranges_algo.h (__unique_fn::operator()): Use
+	ranges::iter_move(iter) instead of std::move(*iter).
+	* testsuite/25_algorithms/unique/120789.cc: New test.
+
 2026-06-26  Release Manager
 
 	* GCC 14.4.0 released.

From jakub@gcc.gnu.org  Mon Jun 29 12:07:57 2026
From: jakub@gcc.gnu.org (Jakub Jelinek)
Date: Mon, 29 Jun 2026 12:07:57 +0000 (GMT)
Subject: [gcc(refs/vendors/redhat/heads/gcc-14-branch)] Merge commit
 'r14-12711-g9f3f376a5c6baa7e3d627d6e98e538622e6d53dd' into
 redhat/gcc-14-branch
Message-ID: <20260629120757.D669A4BA2E27@sourceware.org>

https://gcc.gnu.org/g:0301b20be9eaccd2f94b77862c54e7c03274eb49

commit 0301b20be9eaccd2f94b77862c54e7c03274eb49
Merge: 7cb09bad6a2e 9f3f376a5c6b
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Jun 29 14:07:20 2026 +0200

    Merge commit 'r14-12711-g9f3f376a5c6baa7e3d627d6e98e538622e6d53dd' into redhat/gcc-14-branch

Diff:

 ChangeLog                                          |    4 +
 c++tools/ChangeLog                                 |    4 +
 config/ChangeLog                                   |    4 +
 contrib/ChangeLog                                  |    4 +
 contrib/header-tools/ChangeLog                     |    4 +
 contrib/reghunt/ChangeLog                          |    4 +
 contrib/regression/ChangeLog                       |    4 +
 fixincludes/ChangeLog                              |    4 +
 gcc/BASE-VER                                       |    2 +-
 gcc/ChangeLog                                      | 1580 ++++++++++++++++
 gcc/DATESTAMP                                      |    2 +-
 gcc/ada/ChangeLog                                  |  104 +
 gcc/ada/Makefile.rtl                               |    3 +
 gcc/ada/adaint.c                                   |    4 -
 gcc/ada/exp_attr.adb                               |   11 +-
 gcc/ada/exp_ch6.adb                                |   15 +-
 gcc/ada/exp_ch6.ads                                |    3 +-
 gcc/ada/gcc-interface/decl.cc                      |   36 +-
 gcc/ada/gcc-interface/utils.cc                     |   54 +-
 gcc/ada/libgnat/s-genbig.adb                       |    6 +-
 gcc/ada/libgnat/s-stposu.adb                       |   14 +-
 gcc/ada/sem_attr.adb                               |    1 +
 gcc/ada/sem_ch10.adb                               |   44 +-
 gcc/ada/sem_ch13.adb                               |   19 +-
 gcc/ada/sem_disp.adb                               |   23 +-
 gcc/ada/sem_elab.adb                               |    2 +-
 gcc/ada/sem_res.adb                                |    6 -
 gcc/ada/sem_res.ads                                |    6 +
 gcc/alias.cc                                       |    7 +-
 gcc/analyzer/ChangeLog                             |    4 +
 gcc/builtins.cc                                    |    2 +-
 gcc/c-family/ChangeLog                             |   54 +
 gcc/c-family/c-common.cc                           |   52 +-
 gcc/c-family/c-cppbuiltin.cc                       |    4 +-
 gcc/c-family/c-ubsan.cc                            |   14 +-
 gcc/c/ChangeLog                                    |   21 +
 gcc/c/c-decl.cc                                    |    8 +
 gcc/cfgexpand.cc                                   |   15 +-
 gcc/cfgrtl.cc                                      |   92 +-
 gcc/cgraph.cc                                      |   13 +
 gcc/combine.cc                                     |    7 +-
 gcc/config.gcc                                     |    6 +-
 gcc/config/aarch64/aarch64-builtins.cc             |    1 +
 gcc/config/aarch64/aarch64-cores.def               |    1 +
 gcc/config/aarch64/aarch64-cost-tables.h           |  107 ++
 gcc/config/aarch64/aarch64-early-ra.cc             |   52 +-
 gcc/config/aarch64/aarch64-protos.h                |    1 +
 gcc/config/aarch64/aarch64-sve-builtins.cc         |    8 +-
 gcc/config/aarch64/aarch64-sve2.md                 |   10 +-
 gcc/config/aarch64/aarch64-tune.md                 |    2 +-
 gcc/config/aarch64/aarch64.cc                      |   15 +
 gcc/config/aarch64/aarch64.md                      |    2 +-
 gcc/config/aarch64/arm_acle.h                      |    8 +-
 gcc/config/aarch64/tuning_models/hip12.h           |  225 +++
 gcc/config/arm/arm.cc                              |   11 +-
 gcc/config/arm/arm.md                              |   75 +-
 gcc/config/arm/constraints.md                      |   10 +-
 gcc/config/arm/mve.md                              |    4 +-
 gcc/config/arm/neon.md                             |   20 +-
 gcc/config/arm/thumb2.md                           |   38 +-
 gcc/config/arm/vfp.md                              |    4 +-
 gcc/config/avr/avr-fixed.md                        |    6 +-
 gcc/config/avr/avr-mcus.def                        |    8 +
 gcc/config/avr/avr.cc                              |   78 +-
 gcc/config/avr/elf.h                               |   13 +
 gcc/config/darwin-driver.cc                        |   22 +-
 gcc/config/i386/amxbf16intrin.h                    |    6 +-
 gcc/config/i386/amxcomplexintrin.h                 |   18 +-
 gcc/config/i386/amxfp16intrin.h                    |    8 +-
 gcc/config/i386/amxint8intrin.h                    |    4 +-
 gcc/config/i386/amxtileintrin.h                    |   20 +-
 gcc/config/i386/host-mingw32.cc                    |   32 +-
 gcc/config/i386/i386-expand.cc                     |   52 +-
 gcc/config/i386/i386.cc                            |    2 +-
 gcc/config/i386/i386.md                            |   16 +-
 gcc/config/i386/mmx.md                             |   15 +-
 gcc/config/i386/sse.md                             |  293 ++-
 gcc/config/i386/xmmintrin.h                        |   12 +-
 gcc/config/loongarch/constraints.md                |    9 +
 gcc/config/loongarch/lasx.md                       |  118 +-
 gcc/config/loongarch/loongarch-builtins.cc         |   38 +-
 gcc/config/loongarch/loongarch-ftypes.def          |   40 +-
 gcc/config/loongarch/loongarch-protos.h            |    1 +
 gcc/config/loongarch/loongarch.cc                  |  197 +-
 gcc/config/loongarch/loongarch.md                  |   90 +-
 gcc/config/loongarch/lsx.md                        |  116 --
 gcc/config/loongarch/predicates.md                 |   24 +
 gcc/config/loongarch/simd.md                       |  113 ++
 gcc/config/pa/pa.cc                                |   54 +-
 gcc/config/pa/pa.md                                |   89 +-
 gcc/config/riscv/autovec-opt.md                    |    2 +-
 gcc/config/rs6000/altivec.md                       |    5 +-
 gcc/config/rs6000/rs6000-c.cc                      |   64 +-
 gcc/config/s390/s390.md                            |    1 +
 gcc/config/vax/vax.md                              |    4 +-
 gcc/cp/ChangeLog                                   |  324 ++++
 gcc/cp/call.cc                                     |   13 +-
 gcc/cp/constexpr.cc                                |   49 +-
 gcc/cp/coroutines.cc                               |    2 +
 gcc/cp/cvt.cc                                      |    2 +-
 gcc/cp/decl.cc                                     |    1 +
 gcc/cp/error.cc                                    |    2 +-
 gcc/cp/name-lookup.cc                              |    9 +-
 gcc/cp/parser.cc                                   |   17 +-
 gcc/cp/pt.cc                                       |   51 +-
 gcc/cp/semantics.cc                                |   27 +-
 gcc/cp/tree.cc                                     |   90 +-
 gcc/cp/typeck.cc                                   |   29 +-
 gcc/cp/typeck2.cc                                  |    9 +-
 gcc/d/ChangeLog                                    |  122 ++
 gcc/d/d-codegen.cc                                 |   20 +-
 gcc/d/d-spec.cc                                    |   12 +-
 gcc/d/decl.cc                                      |   79 +-
 gcc/d/expr.cc                                      |   31 +-
 gcc/d/toir.cc                                      |   57 +-
 gcc/d/types.cc                                     |   41 +-
 gcc/doc/avr-mmcu.texi                              |    2 +-
 gcc/doc/extend.texi                                |    3 +-
 gcc/doc/install.texi                               |    2 +-
 gcc/doc/invoke.texi                                |   14 +-
 gcc/dse.cc                                         |    5 +-
 gcc/dwarf2out.cc                                   |   24 +-
 gcc/expmed.cc                                      |    6 +-
 gcc/fold-const.cc                                  |    5 +-
 gcc/fortran/ChangeLog                              |  431 +++++
 gcc/fortran/array.cc                               |    7 +
 gcc/fortran/decl.cc                                |  173 +-
 gcc/fortran/dependency.cc                          |   82 +
 gcc/fortran/dependency.h                           |    4 +-
 gcc/fortran/error.cc                               |    2 +-
 gcc/fortran/frontend-passes.cc                     |   71 +-
 gcc/fortran/gfortran.h                             |    9 +-
 gcc/fortran/iresolve.cc                            |   25 +-
 gcc/fortran/match.cc                               |    7 +-
 gcc/fortran/openmp.cc                              |   35 +
 gcc/fortran/parse.cc                               |   27 +
 gcc/fortran/primary.cc                             |   35 +-
 gcc/fortran/resolve.cc                             |  100 +-
 gcc/fortran/scanner.cc                             |    4 +
 gcc/fortran/symbol.cc                              |   53 +-
 gcc/fortran/trans-array.cc                         |  132 +-
 gcc/fortran/trans-decl.cc                          |  179 +-
 gcc/fortran/trans-expr.cc                          |  106 +-
 gcc/fortran/trans-io.cc                            |    8 +-
 gcc/fortran/trans-openmp.cc                        |  140 +-
 gcc/fortran/trans-types.cc                         |   53 +-
 gcc/fortran/trans.cc                               |    5 +-
 gcc/fortran/trans.h                                |    3 +-
 gcc/generic-match-head.cc                          |   12 +
 gcc/gimple-fold.cc                                 |   12 +-
 gcc/gimple-isel.cc                                 |   10 +
 gcc/gimple-lower-bitint.cc                         |    9 +
 gcc/gimple-match-head.cc                           |   10 +
 gcc/gimple-range-fold.cc                           |    2 +-
 gcc/gimple-range-gori.cc                           |   22 +
 gcc/gimple-range-gori.h                            |    9 +-
 gcc/gimple-range-op.cc                             |   40 +-
 gcc/gimple-ssa-isolate-paths.cc                    |   62 +-
 gcc/gimplify-me.cc                                 |   15 +-
 gcc/gimplify.cc                                    |   20 +
 gcc/glimits.h                                      |    4 +-
 gcc/go/ChangeLog                                   |    4 +
 gcc/ifcvt.cc                                       |    6 +-
 gcc/ipa-cp.cc                                      |   34 +-
 gcc/ipa-modref-tree.cc                             |   15 +-
 gcc/ipa-modref.cc                                  |   47 +-
 gcc/ipa-param-manipulation.cc                      |    4 +-
 gcc/ira-color.cc                                   |    3 +
 gcc/jit/ChangeLog                                  |    4 +
 gcc/lra-remat.cc                                   |   25 +-
 gcc/lto-wrapper.cc                                 |   20 +-
 gcc/lto/ChangeLog                                  |   32 +
 gcc/lto/lto-common.cc                              |   18 +-
 gcc/lto/lto-object.cc                              |    6 +-
 gcc/lto/lto-symtab.cc                              |    1 +
 gcc/lto/lto.h                                      |    2 +-
 gcc/m2/ChangeLog                                   |    4 +
 gcc/machmode.def                                   |   12 +-
 gcc/match.pd                                       |   63 +-
 gcc/objc/ChangeLog                                 |    4 +
 gcc/objcp/ChangeLog                                |    4 +
 gcc/omp-expand.cc                                  |    2 +-
 gcc/omp-low.cc                                     |   13 +
 gcc/optabs.cc                                      |   32 +-
 gcc/po/ChangeLog                                   |    4 +
 gcc/pointer-query.cc                               |    7 +-
 gcc/range-op-float.cc                              |    3 +
 gcc/range-op.cc                                    |   49 +-
 gcc/range-op.h                                     |   11 +-
 gcc/regcprop.cc                                    |   23 +-
 gcc/rust/ChangeLog                                 |    4 +
 gcc/stmt.cc                                        |    8 +-
 gcc/system.h                                       |   21 +-
 gcc/testsuite/ChangeLog                            | 1988 ++++++++++++++++++++
 gcc/testsuite/c-c++-common/cpp/dir-only-10.c       |    5 +
 gcc/testsuite/c-c++-common/cpp/dir-only-11.c       |    6 +
 gcc/testsuite/c-c++-common/gomp/pr120052.c         |   32 +
 gcc/testsuite/c-c++-common/gomp/pr120564.c         |   15 +
 gcc/testsuite/c-c++-common/pr111817.c              |    9 +
 gcc/testsuite/g++.dg/absvect.C                     |   13 +
 gcc/testsuite/g++.dg/coroutines/pr125376.C         |   40 +
 gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C         |   21 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-123889.C      |   14 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C      |   18 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C      |   20 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ctor23.C      |   26 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C         |    3 +-
 gcc/testsuite/g++.dg/cpp0x/gen-attrs-90.C          |    8 +
 gcc/testsuite/g++.dg/cpp0x/pr123818.C              |   24 +
 gcc/testsuite/g++.dg/cpp0x/pr124489.C              |    9 +
 gcc/testsuite/g++.dg/cpp0x/rv-decl1.C              |    7 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C      |   19 +
 gcc/testsuite/g++.dg/cpp1z/decomp66.C              |   23 +
 gcc/testsuite/g++.dg/cpp1z/decomp67.C              |   33 +
 gcc/testsuite/g++.dg/cpp1z/eval-order14.C          |  114 ++
 gcc/testsuite/g++.dg/cpp1z/nontype9.C              |   16 +
 gcc/testsuite/g++.dg/cpp1z/static_assert1.C        |   17 +
 gcc/testsuite/g++.dg/cpp23/auto-fncast19.C         |   12 +
 .../g++.dg/cpp23/class-deduction-inherited10.C     |   11 +
 .../g++.dg/cpp23/class-deduction-inherited9.C      |   31 +
 gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C  |    3 +
 gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C            |    4 +-
 gcc/testsuite/g++.dg/cpp26/feat-cxx26.C            |    4 +-
 gcc/testsuite/g++.dg/cpp2a/concepts-decltype5.C    |   10 +
 gcc/testsuite/g++.dg/cpp2a/concepts-decltype6.C    |   16 +
 gcc/testsuite/g++.dg/cpp2a/concepts-friend18.C     |   19 +
 gcc/testsuite/g++.dg/cpp2a/concepts-friend18a.C    |   22 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr122494.C     |   24 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr123814.C     |   34 +
 gcc/testsuite/g++.dg/cpp2a/consteval42.C           |   21 +
 gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C        |    1 +
 gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C        |    3 +-
 gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C        |    2 +-
 gcc/testsuite/g++.dg/cpp2a/lambda-targ20.C         |   14 +
 gcc/testsuite/g++.dg/cpp2a/lambda-targ21.C         |   10 +
 gcc/testsuite/g++.dg/cpp2a/pr123578.C              |    9 +
 gcc/testsuite/g++.dg/dfp/pr122834-1.C              |   17 +
 gcc/testsuite/g++.dg/dfp/pr122834-2.C              |   19 +
 gcc/testsuite/g++.dg/gomp/pr123597.C               |   25 +
 gcc/testsuite/g++.dg/ipa/pr106260.C                |   64 +
 gcc/testsuite/g++.dg/ipa/pr122856.C                |   26 +
 gcc/testsuite/g++.dg/lto/pr114790_0.C              |   16 +
 gcc/testsuite/g++.dg/lto/pr114790_1.C              |   15 +
 gcc/testsuite/g++.dg/opt/pr122394.C                |   20 +
 gcc/testsuite/g++.dg/other/anon-union8.C           |   11 +
 gcc/testsuite/g++.dg/parse/crash81.C               |   14 +
 gcc/testsuite/g++.dg/pr123575.C                    |   12 +
 gcc/testsuite/g++.dg/torture/pr112400.C            |  114 ++
 gcc/testsuite/g++.dg/torture/pr117217-1.C          |   24 +
 gcc/testsuite/g++.dg/torture/pr117217-2.C          |   24 +
 gcc/testsuite/g++.dg/torture/pr120987-1.C          |   56 +
 gcc/testsuite/g++.dg/torture/pr123596.C            |   18 +
 gcc/testsuite/g++.dg/torture/pr123603.C            |   20 +
 gcc/testsuite/g++.dg/torture/pr123729.C            |   60 +
 gcc/testsuite/g++.dg/torture/pr124130.C            |   15 +
 gcc/testsuite/g++.dg/torture/pr124135-1.C          |   20 +
 gcc/testsuite/g++.dg/torture/pr124135-2.C          |   27 +
 .../g++.dg/warn/Wmismatched-new-delete-10.C        |   25 +
 .../g++.target/aarch64/dwarf-bit-stride-func.C     |   16 +
 .../aarch64/dwarf-bit-stride-pragma-sme.C          |   16 +
 .../g++.target/aarch64/dwarf-bit-stride-pragma.C   |   17 +
 gcc/testsuite/g++.target/aarch64/pr124126-1.C      |   15 +
 .../g++.target/aarch64/sve/dwarf-bit-stride.C      |   15 +
 .../g++.target/i386/avx512fp16-pr123607.C          |   60 +
 gcc/testsuite/g++.target/i386/pr122446-1.C         |   17 +
 gcc/testsuite/g++.target/i386/pr122446-amxbf16.C   |   16 +
 .../g++.target/i386/pr122446-amxcomplex.C          |   24 +
 gcc/testsuite/g++.target/i386/pr122446-amxfp16.C   |   16 +
 gcc/testsuite/g++.target/i386/pr122446-amxint8.C   |   40 +
 gcc/testsuite/g++.target/i386/pr122446-amxtile.C   |   50 +
 gcc/testsuite/g++.target/i386/pr123779.C           |   56 +
 gcc/testsuite/g++.target/loongarch/pr117575.C      |   81 +
 gcc/testsuite/g++.target/powerpc/pr124133-1.C      |   12 +
 gcc/testsuite/g++.target/powerpc/pr124133-2.C      |   14 +
 gcc/testsuite/gcc.c-torture/compile/pr105192.c     |    9 +
 gcc/testsuite/gcc.c-torture/compile/pr116600.c     |   24 +
 gcc/testsuite/gcc.c-torture/compile/pr120250.c     |   38 +
 gcc/testsuite/gcc.c-torture/compile/pr123365.c     |    7 +
 gcc/testsuite/gcc.c-torture/compile/pr123386.c     |   25 +
 gcc/testsuite/gcc.c-torture/compile/pr123703.c     |   10 +
 gcc/testsuite/gcc.c-torture/compile/pr124250.c     |    8 +
 gcc/testsuite/gcc.c-torture/compile/pr125039.c     |   12 +
 gcc/testsuite/gcc.c-torture/execute/pr122000.c     |   14 +
 gcc/testsuite/gcc.c-torture/execute/pr122943.c     |  130 ++
 gcc/testsuite/gcc.c-torture/execute/pr123864.c     |   24 +
 gcc/testsuite/gcc.c-torture/execute/pr123978.c     |   25 +
 gcc/testsuite/gcc.c-torture/execute/pr124358.c     |   19 +
 gcc/testsuite/gcc.dg/bitint-127.c                  |   28 +
 gcc/testsuite/gcc.dg/bitint-128.c                  |   27 +
 gcc/testsuite/gcc.dg/complex-10.c                  |   16 +
 gcc/testsuite/gcc.dg/darwin-minversion-link.c      |    2 +
 gcc/testsuite/gcc.dg/gomp/pr123876.c               |   69 +
 gcc/testsuite/gcc.dg/lto/attr-weakref-2_0.c        |   11 +
 gcc/testsuite/gcc.dg/lto/attr-weakref-2_1.c        |    3 +
 gcc/testsuite/gcc.dg/lto/pr122515_0.c              |    9 +
 gcc/testsuite/gcc.dg/lto/pr122515_1.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_2.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_3.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_4.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_5.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_6.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_7.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_8.c              |   12 +
 gcc/testsuite/gcc.dg/lto/pr122515_9.c              |   12 +
 gcc/testsuite/gcc.dg/pr101312-1.c                  |    4 +
 gcc/testsuite/gcc.dg/pr101312-2.c                  |    5 +
 gcc/testsuite/gcc.dg/pr109410-2.c                  |    5 +
 gcc/testsuite/gcc.dg/pr116053-1.c                  |   12 +
 gcc/testsuite/gcc.dg/pr120560.c                    |   13 +
 gcc/testsuite/gcc.dg/pr121104.c                    |   23 +
 gcc/testsuite/gcc.dg/pr122126_vextr.c              |    9 +
 gcc/testsuite/gcc.dg/pr122126_vset.c               |    9 +
 gcc/testsuite/gcc.dg/pr123018.c                    |   17 +
 gcc/testsuite/gcc.dg/pr123294-1.c                  |   15 +
 gcc/testsuite/gcc.dg/pr123300.c                    |   29 +
 gcc/testsuite/gcc.dg/pr123431.c                    |   19 +
 gcc/testsuite/gcc.dg/pr123537.c                    |   20 +
 gcc/testsuite/gcc.dg/pr123882.c                    |    7 +
 gcc/testsuite/gcc.dg/pr124138.c                    |   20 +
 gcc/testsuite/gcc.dg/pr124454-1.c                  |   16 +
 gcc/testsuite/gcc.dg/pr125019.c                    |   12 +
 gcc/testsuite/gcc.dg/pr125501.c                    |   35 +
 gcc/testsuite/gcc.dg/strlenopt-97.c                |   33 +
 gcc/testsuite/gcc.dg/torture/builtin-math-6.c      |   55 +-
 .../torture/builtin-shufflevector-pr123156.c       |   40 +
 gcc/testsuite/gcc.dg/torture/pr110043.c            |    9 +
 gcc/testsuite/gcc.dg/torture/pr111036.c            |   24 +
 gcc/testsuite/gcc.dg/torture/pr116296.c            |    9 +
 gcc/testsuite/gcc.dg/torture/pr116772-1.c          |   24 +
 gcc/testsuite/gcc.dg/torture/pr119532.c            |   14 +
 gcc/testsuite/gcc.dg/torture/pr120182.c            |   42 +
 gcc/testsuite/gcc.dg/torture/pr120341-1.c          |   11 +
 gcc/testsuite/gcc.dg/torture/pr120341-2.c          |   13 +
 gcc/testsuite/gcc.dg/torture/pr121844.c            |   16 +
 gcc/testsuite/gcc.dg/torture/pr123061.c            |   29 +
 gcc/testsuite/gcc.dg/torture/pr123175-1.c          |   31 +
 gcc/testsuite/gcc.dg/torture/pr123175-2.c          |   31 +
 gcc/testsuite/gcc.dg/torture/pr123416.c            |   28 +
 gcc/testsuite/gcc.dg/torture/pr123636.c            |   26 +
 gcc/testsuite/gcc.dg/torture/pr123645-1.c          |   24 +
 gcc/testsuite/gcc.dg/torture/pr123645-2.c          |   24 +
 gcc/testsuite/gcc.dg/torture/pr123864.c            |   28 +
 gcc/testsuite/gcc.dg/torture/pr123887.c            |   14 +
 gcc/testsuite/gcc.dg/torture/pr124132.c            |   16 +
 gcc/testsuite/gcc.dg/torture/pr124555.c            |   25 +
 gcc/testsuite/gcc.dg/torture/pr124868.c            |   24 +
 gcc/testsuite/gcc.dg/torture/pr125025.c            |   20 +
 gcc/testsuite/gcc.dg/torture/pr125774-1.c          |   48 +
 gcc/testsuite/gcc.dg/torture/vec-cvt-1.c           |    8 +-
 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c        |    4 +-
 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c        |    4 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr122976.c           |  105 ++
 gcc/testsuite/gcc.dg/tree-ssa/pr124151.c           |   31 +
 gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-26.c         |   18 +
 gcc/testsuite/gcc.dg/vec-perm-lower.c              |   16 +
 gcc/testsuite/gcc.dg/vect/vect-fmax-2.c            |    2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmax-3.c            |    2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmin-2.c            |    2 +-
 gcc/testsuite/gcc.dg/vect/vect-fmin-3.c            |    2 +-
 gcc/testsuite/gcc.dg/vect/vect-pr122793.c          |   28 +
 gcc/testsuite/gcc.dg/vect/vect-pr124677.c          |   25 +
 .../gcc.target/aarch64/dwarf-bit-stride-func.c     |   16 +
 .../aarch64/dwarf-bit-stride-pragma-sme.c          |   14 +
 .../gcc.target/aarch64/dwarf-bit-stride-pragma.c   |   17 +
 .../gcc.target/aarch64/pch/aarch64-pch.exp         |   52 +
 .../gcc.target/aarch64/pch/pch_arm_acle.c          |    6 +
 .../gcc.target/aarch64/pch/pch_arm_acle.hs         |    2 +
 .../aarch64/pch/pch_arm_acle_include_post.c        |    7 +
 .../aarch64/pch/pch_arm_acle_include_post.hs       |    2 +
 .../gcc.target/aarch64/pch/pch_arm_multiple.c      |    6 +
 .../gcc.target/aarch64/pch/pch_arm_multiple.hs     |    6 +
 .../aarch64/pch/pch_arm_multiple_include_post.c    |   11 +
 .../aarch64/pch/pch_arm_multiple_include_post.hs   |    6 +
 .../gcc.target/aarch64/pch/pch_arm_neon.c          |    6 +
 .../gcc.target/aarch64/pch/pch_arm_neon.hs         |    2 +
 .../aarch64/pch/pch_arm_neon_include_post.c        |    7 +
 .../aarch64/pch/pch_arm_neon_include_post.hs       |    2 +
 .../aarch64/pch/pch_arm_neon_sve_bridge.c          |    6 +
 .../aarch64/pch/pch_arm_neon_sve_bridge.hs         |    2 +
 .../pch/pch_arm_neon_sve_bridge_include_post.c     |    7 +
 .../pch/pch_arm_neon_sve_bridge_include_post.hs    |    2 +
 gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sme.c |    6 +
 .../gcc.target/aarch64/pch/pch_arm_sme.hs          |    2 +
 .../aarch64/pch/pch_arm_sme_include_post.c         |    7 +
 .../aarch64/pch/pch_arm_sme_include_post.hs        |    2 +
 gcc/testsuite/gcc.target/aarch64/pch/pch_arm_sve.c |    6 +
 .../gcc.target/aarch64/pch/pch_arm_sve.hs          |    2 +
 .../aarch64/pch/pch_arm_sve_include_post.c         |    7 +
 .../aarch64/pch/pch_arm_sve_include_post.hs        |    2 +
 gcc/testsuite/gcc.target/aarch64/pr123285-1.c      |   36 +
 gcc/testsuite/gcc.target/aarch64/pr123294-1.c      |   18 +
 gcc/testsuite/gcc.target/aarch64/pr123548.c        |   18 +
 gcc/testsuite/gcc.target/aarch64/pr125795.c        |   47 +
 .../gcc.target/aarch64/sme/acle-asm/revd_bf16.c    |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_f16.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_f32.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_f64.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_s16.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_s32.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_s64.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_s8.c      |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_u16.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_u32.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_u64.c     |   13 +-
 .../gcc.target/aarch64/sme/acle-asm/revd_u8.c      |   13 +-
 .../gcc.target/aarch64/sme/sme-shrinkwrap.c        |   78 +
 .../gcc.target/aarch64/sve/dwarf-bit-stride.c      |   15 +
 gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c   |    4 +-
 gcc/testsuite/gcc.target/aarch64/sve2/pr123775.c   |   37 +
 .../gcc.target/aarch64/torture/pr124491.c          |    6 +
 .../gcc.target/aarch64/torture/pr125621.c          |    7 +
 gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c |   16 +-
 gcc/testsuite/gcc.target/arm/cbz-range.c           |  114 ++
 .../gcc.target/arm/mve/intrinsics/pr122223.c       |   31 +
 gcc/testsuite/gcc.target/arm/neon-smax16.c         |   14 +
 gcc/testsuite/gcc.target/arm/neon-smin16.c         |   14 +
 gcc/testsuite/gcc.target/arm/pr123271.c            |   20 +
 gcc/testsuite/gcc.target/arm/pr124933.c            |   17 +
 .../gcc.target/avr/torture/fx-to-double.c          |   88 +
 .../gcc.target/avr/torture/pr125409-fx24-ssk.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-ssr.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-suk.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-sur.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-usk.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-usr.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-uuk.c     |    8 +
 .../gcc.target/avr/torture/pr125409-fx24-uur.c     |    8 +
 gcc/testsuite/gcc.target/avr/torture/pr125409.h    |   16 +
 gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c |    2 +-
 .../gcc.target/i386/amxcomplex-asmintel-1.c        |    4 +-
 gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c |    2 +-
 gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c |    8 +-
 gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c |    8 +-
 gcc/testsuite/gcc.target/i386/apx-broadcast.c      |   24 +
 gcc/testsuite/gcc.target/i386/avx512f-pr124138-1.c |   24 +
 gcc/testsuite/gcc.target/i386/avx512f-pr124138-2.c |   25 +
 gcc/testsuite/gcc.target/i386/avx512f-pr124315.c   |   33 +
 .../gcc.target/i386/avx512fp16-pr124335.c          |   13 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-2.c |   22 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-3.c |   22 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-4.c |   22 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-5.c |   22 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-6.c |   22 +
 gcc/testsuite/gcc.target/i386/builtin-copysign-7.c |   20 +
 .../gcc.target/i386/builtin-copysign-8a.c          |   21 +
 .../gcc.target/i386/builtin-copysign-8b.c          |   18 +
 gcc/testsuite/gcc.target/i386/builtin-fabs-1.c     |   23 +
 gcc/testsuite/gcc.target/i386/builtin-fabs-2.c     |   28 +
 gcc/testsuite/gcc.target/i386/cet-pr124366.c       |   31 +
 gcc/testsuite/gcc.target/i386/keylocker-pr123217.c |   13 +
 gcc/testsuite/gcc.target/i386/pr123121.c           |   57 +
 gcc/testsuite/gcc.target/i386/pr123484.c           |   17 +
 gcc/testsuite/gcc.target/i386/pr124056.c           |   61 +
 gcc/testsuite/gcc.target/i386/pr124316.c           |   14 +
 gcc/testsuite/gcc.target/i386/pr125351.c           |    3 +
 gcc/testsuite/gcc.target/i386/ssse3-pr125611.c     |   12 +
 gcc/testsuite/gcc.target/i386/user_msr-pr123217.c  |   10 +
 gcc/testsuite/gcc.target/loongarch/attr-model-6.c  |    8 +
 gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c    |   14 +
 gcc/testsuite/gcc.target/loongarch/pr122097.c      |  270 +++
 gcc/testsuite/gcc.target/loongarch/pr122695-1.c    |   22 +
 gcc/testsuite/gcc.target/loongarch/pr122695-2.c    |   22 +
 gcc/testsuite/gcc.target/loongarch/pr125049.c      |   50 +
 .../gcc.target/loongarch/vector/lasx/pr123521.c    |   11 +
 .../gcc.target/loongarch/vector/lasx/pr123766.c    |   28 +
 .../gcc.target/loongarch/vector/lsx/pr123766.c     |   28 +
 .../gcc.target/loongarch/vector/lsx/pr123807.c     |   10 +
 .../gcc.target/powerpc/builtins-1-p9-runnable.c    |    5 -
 .../gcc.target/riscv/rvv/autovec/pr125670.c        |   51 +
 gcc/testsuite/gcc.target/s390/pr125992.c           |   41 +
 gcc/testsuite/gdc.dg/driver_debuglib.d             |    2 +
 gcc/testsuite/gdc.dg/driver_defaultlib.d           |    2 +
 gcc/testsuite/gdc.dg/pr121477.d                    |   12 +
 gcc/testsuite/gdc.dg/pr123046.d                    |   10 +
 gcc/testsuite/gdc.dg/pr123264.d                    |    8 +
 gcc/testsuite/gdc.dg/pr123407a.d                   |    4 +
 gcc/testsuite/gdc.dg/pr123407b.d                   |    4 +
 gcc/testsuite/gdc.dg/pr123419.d                    |    9 +
 gcc/testsuite/gdc.dg/pr123798.d                    |   14 +
 gcc/testsuite/gdc.dg/pr124026.d                    |   21 +
 gcc/testsuite/gdc.dg/pr125089.d                    |   20 +
 gcc/testsuite/gdc.dg/torture/imports/pr119799c.c   |    4 +
 gcc/testsuite/gdc.dg/torture/pr119799.d            |    9 +
 gcc/testsuite/gdc.dg/torture/pr120096.d            |   18 +
 gcc/testsuite/gdc.dg/torture/pr123422.d            |   25 +
 gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90 |   96 +
 gcc/testsuite/gfortran.dg/dependent_decls_2.f90    |   89 +
 gcc/testsuite/gfortran.dg/dependent_decls_3.f90    |   26 +
 gcc/testsuite/gfortran.dg/derived_init_7.f90       |   58 +
 gcc/testsuite/gfortran.dg/goacc/omp-108382.f90     |   22 +
 gcc/testsuite/gfortran.dg/goacc/pr120723.f90       |   20 +
 gcc/testsuite/gfortran.dg/gomp/pr101760.f90        |   14 +
 gcc/testsuite/gfortran.dg/gomp/pr102314.f90        |   19 +
 gcc/testsuite/gfortran.dg/gomp/pr102430.f90        |   11 +
 gcc/testsuite/gfortran.dg/gomp/pr107425.f90        |   11 +
 gcc/testsuite/gfortran.dg/gomp/pr98203.f90         |   14 +
 gcc/testsuite/gfortran.dg/implied_do_io_9.f90      |   72 +
 gcc/testsuite/gfortran.dg/inline_matmul_27.f90     |   63 +
 gcc/testsuite/gfortran.dg/interface_abstract_6.f90 |   53 +
 gcc/testsuite/gfortran.dg/pr100155.f90             |   43 +
 gcc/testsuite/gfortran.dg/pr100194.f90             |   98 +
 gcc/testsuite/gfortran.dg/pr102459.f90             |   15 +
 gcc/testsuite/gfortran.dg/pr102596.f90             |   13 +
 gcc/testsuite/gfortran.dg/pr102619.f90             |   23 +
 gcc/testsuite/gfortran.dg/pr105168.f90             |   38 +
 gcc/testsuite/gfortran.dg/pr106946.f90             |   30 +
 gcc/testsuite/gfortran.dg/pr109788.f90             |   10 +
 gcc/testsuite/gfortran.dg/pr115260.f90             |   35 +
 gcc/testsuite/gfortran.dg/pr119273.f90             |   70 +
 gcc/testsuite/gfortran.dg/pr124161.f90             |   61 +
 gcc/testsuite/gfortran.dg/pr124450.f90             |   14 +
 gcc/testsuite/gfortran.dg/pr79524.f90              |    9 +
 gcc/testsuite/gfortran.dg/pr82721.f90              |    9 +
 gcc/testsuite/gfortran.dg/pr84245.f90              |    7 +
 gcc/testsuite/gfortran.dg/pr85352.f90              |   44 +
 gcc/testsuite/gfortran.dg/pr93715.f90              |   11 +
 gcc/testsuite/gfortran.dg/pr93814.f90              |   99 +
 gcc/testsuite/gfortran.dg/pr93832.f90              |   37 +
 gcc/testsuite/gfortran.dg/pr94978.f90              |   24 +
 gcc/testsuite/gfortran.dg/pr95338.f90              |   27 +
 gcc/testsuite/gfortran.dg/pr95879.f90              |   30 +
 gcc/testsuite/gfortran.dg/pr96087.f90              |   46 +
 gcc/testsuite/gfortran.dg/pr96986.f90              |   25 +
 gcc/testsuite/gfortran.dg/submodule_34.f90         |   63 +
 gcc/testsuite/gfortran.dg/vect/pr125431.f90        |   16 +
 gcc/testsuite/gfortran.dg/vect/vect-pr123741.f90   |   50 +
 gcc/testsuite/gfortran.target/aarch64/aarch64.exp  |   45 +
 .../gfortran.target/aarch64/pr122408_1.f90         |   61 +
 .../gfortran.target/aarch64/pr122408_2.f90         |  140 ++
 gcc/testsuite/gnat.dg/bigint1.adb                  |   27 +
 gcc/testsuite/gnat.dg/generic_inst20-sub.adb       |   14 +
 gcc/testsuite/gnat.dg/generic_inst20.adb           |    5 +
 gcc/testsuite/gnat.dg/generic_inst20.ads           |    6 +
 gcc/testsuite/gnat.dg/lto30.adb                    |   31 +
 gcc/testsuite/gnat.dg/lto30.ads                    |   13 +
 gcc/testsuite/gnat.dg/opt107.adb                   |   27 +
 gcc/testsuite/gnat.dg/opt107_pkg.ads               |  156 ++
 gcc/testsuite/gnat.dg/protected_deref1.adb         |   32 +
 gcc/testsuite/gnat.dg/reduce4.adb                  |    9 +
 gcc/testsuite/gnat.dg/reduce5.adb                  |   36 +
 gcc/testsuite/gnat.dg/specs/aggr9.ads              |   26 +
 ...ited_with3-child-grandchild-grandgrandchild.ads |    5 +
 .../specs/limited_with3-child-grandchild.ads       |    5 +
 .../gnat.dg/specs/limited_with3-child.ads          |    7 +
 gcc/testsuite/gnat.dg/specs/limited_with3.ads      |    4 +
 gcc/testsuite/gnat.dg/specs/unchecked_union3.ads   |   80 +
 gcc/testsuite/gnat.dg/task6.adb                    |   15 +
 gcc/testsuite/gnat.dg/task6.ads                    |   13 +
 gcc/testsuite/go.test/go-test.exp                  |    4 +-
 gcc/testsuite/jit.dg/all-non-failing-tests.h       |    4 +-
 gcc/testsuite/jit.dg/test-cold-attribute.c         |    4 +-
 gcc/testsuite/lib/lto.exp                          |   69 +-
 gcc/testsuite/lib/mike-g++.exp                     |    2 +-
 gcc/testsuite/lib/mike-gcc.exp                     |    2 +-
 gcc/testsuite/lib/target-supports.exp              |    3 +-
 gcc/testsuite/sparseset.supp                       |   10 +
 gcc/tree-eh.cc                                     |   20 +-
 gcc/tree-inline.cc                                 |   22 +-
 gcc/tree-object-size.cc                            |    8 +-
 gcc/tree-phinodes.h                                |   13 +-
 gcc/tree-sra.cc                                    |   44 +-
 gcc/tree-ssa-dom.cc                                |    6 +
 gcc/tree-ssa-dse.cc                                |    6 +-
 gcc/tree-ssa-loop-im.cc                            |  149 +-
 gcc/tree-ssa-loop-ivopts.cc                        |   13 +-
 gcc/tree-ssa-loop-niter.cc                         |    8 +-
 gcc/tree-ssa-loop-split.cc                         |   19 +-
 gcc/tree-ssa-loop-unswitch.cc                      |    3 +-
 gcc/tree-ssa-math-opts.cc                          |   11 +-
 gcc/tree-ssa-phiopt.cc                             |   38 +-
 gcc/tree-ssa-pre.cc                                |    7 +-
 gcc/tree-ssa-reassoc.cc                            |    3 +-
 gcc/tree-ssa-strlen.cc                             |   31 +-
 gcc/tree-switch-conversion.cc                      |   16 +-
 gcc/tree-tailcall.cc                               |    4 +
 gcc/tree-vect-generic.cc                           |   18 +-
 gcc/tree-vect-loop.cc                              |   19 +-
 gcc/tree-vect-slp-patterns.cc                      |   90 +-
 gcc/tree-vect-slp.cc                               |   67 +-
 gcc/tree-vect-stmts.cc                             |    2 +-
 gcc/tree-vrp.cc                                    |   16 +-
 gcc/tree.cc                                        |   54 +-
 gcc/var-tracking.cc                                |    3 +-
 gcc/vr-values.cc                                   |    4 +-
 gnattools/ChangeLog                                |    4 +
 gotools/ChangeLog                                  |    4 +
 include/ChangeLog                                  |    4 +
 libada/ChangeLog                                   |    4 +
 libatomic/ChangeLog                                |    4 +
 libbacktrace/ChangeLog                             |    4 +
 libcc1/ChangeLog                                   |    4 +
 libcody/ChangeLog                                  |   21 +
 libcody/client.cc                                  |   36 +-
 libcody/cody.hh                                    |   22 +
 libcody/server.cc                                  |   28 +-
 libcpp/ChangeLog                                   |   30 +
 libcpp/files.cc                                    |    1 -
 libcpp/lex.cc                                      |   10 +-
 libcpp/mkdeps.cc                                   |   22 +-
 libcpp/po/ChangeLog                                |    4 +
 libdecnumber/ChangeLog                             |    4 +
 libffi/ChangeLog                                   |    4 +
 libgcc/ChangeLog                                   |    4 +
 libgcc/config/avr/libf7/ChangeLog                  |   41 +
 libgcc/config/avr/libf7/f7-renames.h               |    2 +
 libgcc/config/avr/libf7/libf7-asm.sx               |  130 +-
 libgcc/config/avr/libf7/libf7-common.mk            |   11 +-
 libgcc/config/libbid/ChangeLog                     |    4 +
 libgfortran/ChangeLog                              |    4 +
 libgm2/ChangeLog                                   |    4 +
 libgomp/ChangeLog                                  |   15 +
 libgomp/affinity-fmt.c                             |    2 +-
 libgomp/testsuite/libgomp.fortran/pr120286.f90     |   49 +
 libgrust/ChangeLog                                 |    4 +
 libiberty/ChangeLog                                |   13 +
 libiberty/simple-object.c                          |    4 +
 libitm/ChangeLog                                   |    4 +
 libobjc/ChangeLog                                  |    4 +
 libphobos/ChangeLog                                |    4 +
 libquadmath/ChangeLog                              |    4 +
 libsanitizer/ChangeLog                             |   12 +
 .../sanitizer_platform_limits_posix.cpp            |   21 +-
 libssp/ChangeLog                                   |    4 +
 libstdc++-v3/ChangeLog                             |  609 ++++++
 libstdc++-v3/config/io/basic_file_stdio.cc         |    6 +
 .../config/locale/dragonfly/codecvt_members.cc     |    9 +-
 libstdc++-v3/config/locale/gnu/codecvt_members.cc  |    9 +-
 libstdc++-v3/config/os/bsd/darwin/os_defines.h     |    3 +
 libstdc++-v3/config/os/bsd/freebsd/os_defines.h    |    3 +
 libstdc++-v3/doc/doxygen/mainpage.html             |    2 +-
 .../doc/html/manual/debug_mode_design.html         |   16 +-
 libstdc++-v3/doc/xml/manual/debug_mode.xml         |   16 +-
 libstdc++-v3/include/Makefile.am                   |    2 +
 libstdc++-v3/include/Makefile.in                   |    2 +
 libstdc++-v3/include/bits/atomic_base.h            |   46 +-
 libstdc++-v3/include/bits/atomic_wait.h            |    3 +-
 libstdc++-v3/include/bits/basic_string.h           |    2 -
 libstdc++-v3/include/bits/chrono.h                 |    2 +-
 libstdc++-v3/include/bits/chrono_io.h              |   85 +-
 libstdc++-v3/include/bits/cow_string.h             |    2 -
 libstdc++-v3/include/bits/forward_list.h           |    2 +-
 libstdc++-v3/include/bits/out_ptr.h                |    4 +-
 libstdc++-v3/include/bits/random.tcc               |    4 +-
 libstdc++-v3/include/bits/ranges_algo.h            |    4 +-
 libstdc++-v3/include/bits/ranges_base.h            |   20 +-
 libstdc++-v3/include/bits/ranges_cmp.h             |    7 +-
 libstdc++-v3/include/bits/regex_compiler.h         |    4 +-
 libstdc++-v3/include/bits/stl_construct.h          |   81 +-
 libstdc++-v3/include/bits/stl_function.h           |  183 +-
 libstdc++-v3/include/bits/stl_queue.h              |   26 +-
 libstdc++-v3/include/bits/stl_vector.h             |    9 +-
 libstdc++-v3/include/bits/vector.tcc               |   60 +-
 libstdc++-v3/include/bits/version.def              |   16 +
 libstdc++-v3/include/bits/version.h                |   20 +
 libstdc++-v3/include/c_compatibility/stdbit.h      |  586 ++++++
 libstdc++-v3/include/c_compatibility/stdckdint.h   |  117 ++
 libstdc++-v3/include/std/any                       |    5 +
 libstdc++-v3/include/std/atomic                    |   49 +-
 libstdc++-v3/include/std/chrono                    |    2 +-
 libstdc++-v3/include/std/concepts                  |   16 +
 libstdc++-v3/include/std/sstream                   |    7 +-
 libstdc++-v3/include/std/streambuf                 |    5 +
 libstdc++-v3/include/std/string_view               |    4 +-
 libstdc++-v3/include/std/tuple                     |   12 +-
 libstdc++-v3/libsupc++/compare                     |    5 +-
 libstdc++-v3/python/libstdcxx/v6/xmethods.py       |    7 +-
 libstdc++-v3/src/c++11/system_error.cc             |   21 +-
 libstdc++-v3/src/c++17/fs_path.cc                  |   12 +
 libstdc++-v3/src/c++17/memory_resource.cc          |   56 +-
 libstdc++-v3/src/c++20/tzdata.zi                   |   18 +-
 libstdc++-v3/src/c++20/tzdb.cc                     |  110 +-
 libstdc++-v3/src/filesystem/ops-common.h           |    5 +-
 libstdc++-v3/testsuite/17_intro/badnames.cc        |    2 +-
 libstdc++-v3/testsuite/17_intro/names.cc           |    2 +-
 .../error_category/system_category.cc              |   19 +-
 .../testsuite/20_util/bind/dangling_ref.cc         |    1 +
 .../comparisons_pointer_spaceship.cc               |  336 ++++
 .../memory_management_tools/destroy_n_neg.cc       |   59 +
 .../memory_management_tools/destroy_neg.cc         |   20 +-
 libstdc++-v3/testsuite/20_util/stdbit/1.cc         |  320 ++++
 libstdc++-v3/testsuite/20_util/stdbit/2_neg.cc     |   45 +
 .../20_util/synchronized_pool_resource/118681.cc   |    6 +
 .../testsuite/20_util/tuple/cons/121771.cc         |   45 +
 .../20_util/unsynchronized_pool_resource/118681.cc |   58 +
 .../basic_string/operations/compare/char/123991.cc |   56 +
 .../operations/compare/wchar_t/123991.cc           |   56 +
 .../22_locale/codecvt/length/wchar_t/105857.cc     |   21 +
 .../23_containers/forward_list/modifiers/122661.cc |   20 +
 .../23_containers/priority_queue/118088.cc         |   83 +
 .../vector/cons/destructible_debug_neg.cc          |    7 +-
 .../23_containers/vector/cons/destructible_neg.cc  |    7 +-
 .../23_containers/vector/modifiers/moveable.cc     |    6 +-
 .../23_containers/vector/modifiers/resize.cc       |   69 +
 .../testsuite/24_iterators/const_iterator/1.cc     |   29 +-
 .../24_iterators/istreambuf_iterator/105580.cc     |   16 +
 .../testsuite/25_algorithms/remove_if/120789.cc    |   36 +
 .../testsuite/25_algorithms/unique/120789.cc       |   36 +
 .../piecewise_linear_distribution/cons/122062.cc   |   16 +
 libstdc++-v3/testsuite/26_numerics/stdckdint/1.cc  |   63 +
 .../testsuite/26_numerics/stdckdint/2_neg.cc       |   39 +
 .../27_io/basic_stringbuf/str/char/123100.cc       |   58 +
 .../27_io/filesystem/operations/rename.cc          |   10 +
 .../27_io/filesystem/path/concat/120029.cc         |   72 +
 .../29_atomics/atomic/compare_exchange_padding.cc  |    2 +-
 .../29_atomics/atomic/cons/zero_padding.cc         |   75 +
 .../atomic/operators/pointer_partial_void.cc       |    1 +
 .../29_atomics/atomic_float/zero_padding.cc        |   45 +
 .../30_threads/packaged_task/cons/dangling_ref.cc  |    1 +
 .../backward/hash_set/check_construct_destroy.cc   |   25 +-
 .../experimental/filesystem/path/concat/120029.cc  |   74 +
 libstdc++-v3/testsuite/std/time/clock/file/io.cc   |   23 +
 libstdc++-v3/testsuite/std/time/clock/gps/io.cc    |   23 +-
 libstdc++-v3/testsuite/std/time/clock/local/io.cc  |   99 +-
 libstdc++-v3/testsuite/std/time/clock/system/io.cc |    8 +-
 libstdc++-v3/testsuite/std/time/clock/tai/io.cc    |   42 +-
 libstdc++-v3/testsuite/std/time/clock/utc/io.cc    |   22 +
 libstdc++-v3/testsuite/std/time/parse/125369.cc    |   65 +
 libstdc++-v3/testsuite/std/time/parse/parse.cc     |   14 +
 libstdc++-v3/testsuite/std/time/zoned_time/io.cc   |   11 +
 libvtv/ChangeLog                                   |    4 +
 lto-plugin/ChangeLog                               |    4 +
 maintainer-scripts/ChangeLog                       |    4 +
 zlib/ChangeLog                                     |    4 +
 723 files changed, 21745 insertions(+), 2165 deletions(-)

From redi@gcc.gnu.org  Mon Jun 29 15:40:42 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 29 Jun 2026 15:40:42 +0000 (GMT)
Subject: [gcc r17-1980] libstdc++: Doxygen improvements in <bits/stl_algo.h>
Message-ID: <20260629154042.377BD4BA5436@sourceware.org>

https://gcc.gnu.org/g:c37c54afcabd51961ec7b6589a7bfbcb87167a64

commit r17-1980-gc37c54afcabd51961ec7b6589a7bfbcb87167a64
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Apr 30 16:05:50 2026 +0100

    libstdc++: Doxygen improvements in <bits/stl_algo.h>
    
    I noticed that we were generating ill-formed XML because of a Doxygen
    bug (https://github.com/doxygen/doxygen/issues/12113) and so switched
    some of the messy Doxygen comments to use Markdown instead of (mis)using
    the @p and @c Doxygen commands (and then having to write C++ code
    expressions without spaces so that the @p applies to the whole thing).
    
    For half-closed range expressions like [first, last) I've enclosed the
    whole thing in backticks, so that the opening bracket, the comma, and
    the closing paren are in code font.  While this seems less formally
    correct, the generated HTML looks better to me. With [`first`,`last`)
    the bracket and paren are narrower and the expression seems less clear.
    
    This change also adds @cond/@endcond pairs to prevent internal helper
    functions from being added to the docs.
    
    Finally, this removes another config variable which has been obsoleted
    in the latest Doxygen 1.17.0 release.
    
    libstdc++-v3/ChangeLog:
    
            * doc/doxygen/user.cfg.in (DOT_MULTI_TARGETS): Remove obsolete
            config.
            * include/bits/stl_algo.h: Use markdown and fix some typos in
            Doxygen comments.  Mark internal helper functions as
            undocumented.
    
    Reviewed-by: Tomasz Kami?ski <tkaminsk@redhat.com>

Diff:
---
 libstdc++-v3/doc/doxygen/user.cfg.in |   9 -
 libstdc++-v3/include/bits/stl_algo.h | 625 +++++++++++++++++++----------------
 2 files changed, 333 insertions(+), 301 deletions(-)

diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in
index 9393d5dfb437..f2b2a9505ec7 100644
--- a/libstdc++-v3/doc/doxygen/user.cfg.in
+++ b/libstdc++-v3/doc/doxygen/user.cfg.in
@@ -3376,15 +3376,6 @@ DOT_GRAPH_MAX_NODES    = 50
 
 MAX_DOT_GRAPH_DEPTH    = 0
 
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = YES
-
 # If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page
 # explaining the meaning of the various boxes and arrows in the dot generated
 # graphs.
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index f15b3e4992f6..800c176cd5bd 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -81,6 +81,8 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+  /// @cond undocumented
+
   /// Swaps the median value of *__a, *__b and *__c under __comp to *__result
   template<typename _Iterator, typename _Compare>
     _GLIBCXX20_CONSTEXPR
@@ -295,6 +297,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
     }
 
+  /// @endcond
+
   /**
    *  @brief  Find last matching subsequence in a sequence.
    *  @ingroup non_mutating_algorithms
@@ -302,24 +306,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __last1   End of range to search.
    *  @param  __first2  Start of sequence to match.
    *  @param  __last2   End of sequence to match.
-   *  @return   The last iterator @c i in the range
-   *  @p [__first1,__last1-(__last2-__first2)) such that @c *(i+N) ==
-   *  @p *(__first2+N) for each @c N in the range @p
-   *  [0,__last2-__first2), or @p __last1 if no such iterator exists.
+   *  @return   The last iterator `i` in the range
+   *            `[__first1, __last1 - (__last2 - __first2))` such that
+   *            `*(i + N) == *(__first2 + N)` for each `N` in the range
+   *            `[0, __last2 - __first2)`, or `__last1` if no such iterator
+   *            exists.
    *
-   *  Searches the range @p [__first1,__last1) for a sub-sequence that
-   *  compares equal value-by-value with the sequence given by @p
-   *  [__first2,__last2) and returns an iterator to the __first
-   *  element of the sub-sequence, or @p __last1 if the sub-sequence
+   *  Searches the range `[__first1, __last1)` for a sub-sequence that
+   *  compares equal value-by-value with the sequence given by
+   *  `[__first2, __last2)` and returns an iterator to the first
+   *  element of the sub-sequence, or `__last1` if the sub-sequence
    *  is not found.  The sub-sequence will be the last such
-   *  subsequence contained in [__first1,__last1).
+   *  subsequence contained in `[__first1, __last1)`.
    *
-   *  Because the sub-sequence must lie completely within the range @p
-   *  [__first1,__last1) it must start at a position less than @p
-   *  __last1-(__last2-__first2) where @p __last2-__first2 is the
+   *  Because the sub-sequence must lie completely within the range
+   *  `[__first1, __last1)` it must start at a position less than
+   *  `__last1 - (__last2 - __first2)` where `__last2 - __first2` is the
    *  length of the sub-sequence.  This means that the returned
-   *  iterator @c i will be in the range @p
-   *  [__first1,__last1-(__last2-__first2))
+   *  iterator `i` will be in the range
+   *  `[__first1, __last1 - (__last2 - __first2))`
   */
   template<typename _ForwardIterator1, typename _ForwardIterator2>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -350,25 +355,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first2  Start of sequence to match.
    *  @param  __last2   End of sequence to match.
    *  @param  __comp    The predicate to use.
-   *  @return The last iterator @c i in the range @p
-   *  [__first1,__last1-(__last2-__first2)) such that @c
-   *  predicate(*(i+N), @p (__first2+N)) is true for each @c N in the
-   *  range @p [0,__last2-__first2), or @p __last1 if no such iterator
-   *  exists.
+   *  @return The last iterator `i` in the range
+   *          `[__first1, __last1-(__last2 - __first2))` such that
+   *          `__comp(*(i + N), (__first2 + N))` is true for each `N` in the
+   *          range `[0, __last2 - __first2)`, or `__last1` if no such iterator
+   *          exists.
    *
-   *  Searches the range @p [__first1,__last1) for a sub-sequence that
-   *  compares equal value-by-value with the sequence given by @p
-   *  [__first2,__last2) using comp as a predicate and returns an
-   *  iterator to the first element of the sub-sequence, or @p __last1
+   *  Searches the range `[__first1, __last1)` for a sub-sequence that
+   *  compares equal value-by-value with the sequence given by
+   *  `[__first2, __last2)` using `__comp` as a predicate and returns an
+   *  iterator to the first element of the sub-sequence, or `__last1`
    *  if the sub-sequence is not found.  The sub-sequence will be the
-   *  last such subsequence contained in [__first,__last1).
+   *  last such subsequence contained in `[__first, __last1)`.
    *
-   *  Because the sub-sequence must lie completely within the range @p
-   *  [__first1,__last1) it must start at a position less than @p
-   *  __last1-(__last2-__first2) where @p __last2-__first2 is the
+   *  Because the sub-sequence must lie completely within the range
+   *  `[__first1, __last1)` it must start at a position less than
+   *  `__last1 - (__last2 - __first2)` where `__last2 - __first2` is the
    *  length of the sub-sequence.  This means that the returned
-   *  iterator @c i will be in the range @p
-   *  [__first1,__last1-(__last2-__first2))
+   *  iterator `i` will be in the range
+   *  `[__first1, __last1 - (__last2 - __first2))`
   */
   template<typename _ForwardIterator1, typename _ForwardIterator2,
 	   typename _BinaryPredicate>
@@ -403,8 +408,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return  True if the check is true, false otherwise.
    *
-   *  Returns true if @p __pred is true for each element in the range
-   *  @p [__first,__last), and false otherwise.
+   *  Returns true if `__pred` is true for each element in the range
+   *  `[__first, __last)`, and false otherwise.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -421,8 +426,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return  True if the check is true, false otherwise.
    *
-   *  Returns true if @p __pred is false for each element in the range
-   *  @p [__first,__last), and false otherwise.
+   *  Returns true if `__pred` is false for each element in the range
+   *  `[__first, __last)`, and false otherwise.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -439,8 +444,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return  True if the check is true, false otherwise.
    *
-   *  Returns true if an element exists in the range @p
-   *  [__first,__last) such that @p __pred is true, and false
+   *  Returns true if an element exists in the range
+   *  `[__first, __last)` such that `__pred` is true, and false
    *  otherwise.
   */
   template<typename _InputIterator, typename _Predicate>
@@ -456,8 +461,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return   The first iterator @c i in the range @p [__first,__last)
-   *  such that @p __pred(*i) is false, or @p __last if no such iterator exists.
+   *  @return   The first iterator `i` in the range `[__first, __last)`
+   *  such that `__pred(*i)` is false, or `__last` if no such iterator exists.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -479,9 +484,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return  True if the range @p [__first,__last) is partitioned by @p
-   *  __pred, i.e. if all elements that satisfy @p __pred appear before those
-   *  that do not.
+   *  @return  True if the range `[__first, __last)` is partitioned by
+   *  `__pred`, i.e. if all elements that satisfy `__pred` appear before
+   *  those that do not.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -502,8 +507,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __pred    A predicate.
-   *  @return  An iterator @p mid such that @p all_of(__first, mid, __pred)
-   *           and @p none_of(mid, __last, __pred) are both true.
+   *  @return  An iterator `mid` such that `all_of(__first, mid, __pred)`
+   *           and `none_of(mid, __last, __pred)` are both true.
   */
   template<typename _ForwardIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -567,9 +572,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __value   The value to be removed.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  Copies each element in the range @p [__first,__last) not equal
-   *  to @p __value to the range beginning at @p __result.
-   *  remove_copy() is stable, so the relative order of elements that
+   *  Copies each element in the range `[__first, __last)` not equal
+   *  to `__value` to the range beginning at `__result`.
+   *  `remove_copy` is stable, so the relative order of elements that
    *  are copied is unchanged.
   */
   template<typename _InputIterator, typename _OutputIterator, typename _Tp>
@@ -599,10 +604,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  Copies each element in the range @p [__first,__last) for which
-   *  @p __pred returns false to the range beginning at @p __result.
+   *  Copies each element in the range `[__first, __last)` for which
+   *  `__pred` returns false to the range beginning at `__result`.
    *
-   *  remove_copy_if() is stable, so the relative order of elements that are
+   *  `remove_copy_if` is stable, so the relative order of elements that are
    *  copied is unchanged.
   */
   template<typename _InputIterator, typename _OutputIterator,
@@ -633,10 +638,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  Copies each element in the range @p [__first,__last) for which
-   *  @p __pred returns true to the range beginning at @p __result.
+   *  Copies each element in the range `[__first, __last)` for which
+   *  `__pred` returns true to the range beginning at `__result`.
    *
-   *  copy_if() is stable, so the relative order of elements that are
+   *  `copy_if` is stable, so the relative order of elements that are
    *  copied is unchanged.
   */
   template<typename _InputIterator, typename _OutputIterator,
@@ -671,7 +676,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __result An output iterator.
    *  @return  result+n.
    *
-   *  This inline function will boil down to a call to @c memmove whenever
+   *  This inline function will boil down to a call to `memmove` whenever
    *  possible.  Failing that, if random access iterators are passed, then the
    *  loop count will be known (and therefore a candidate for compiler
    *  optimizations such as unrolling).
@@ -709,9 +714,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred    A predicate.
    *  @return   A pair designating the ends of the resulting sequences.
    *
-   *  Copies each element in the range @p [__first,__last) for which
-   *  @p __pred returns true to the range beginning at @p out_true
-   *  and each element for which @p __pred returns false to @p __out_false.
+   *  Copies each element in the range `[__first, __last)` for which
+   *  `__pred` returns true to the range beginning at `__out_true`
+   *  and each element for which `__pred` returns false to `__out_false`.
   */
   template<typename _InputIterator, typename _OutputIterator1,
 	   typename _OutputIterator2, typename _Predicate>
@@ -755,13 +760,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __value  The value to be removed.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  All elements equal to @p __value are removed from the range
-   *  @p [__first,__last).
+   *  All elements equal to `__value` are removed from the range
+   *  `[__first, __last)`.
    *
-   *  remove() is stable, so the relative order of elements that are
+   *  `remove` is stable, so the relative order of elements that are
    *  not removed is unchanged.
    *
-   *  Elements between the end of the resulting sequence and @p __last
+   *  Elements between the end of the resulting sequence and `__last`
    *  are still present, but their value is unspecified.
   */
   template<typename _ForwardIterator, typename _Tp>
@@ -789,13 +794,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __pred   A predicate.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  All elements for which @p __pred returns true are removed from the range
-   *  @p [__first,__last).
+   *  All elements for which `__pred` returns true are removed from the range
+   *  `[__first, __last)`.
    *
-   *  remove_if() is stable, so the relative order of elements that are
+   *  `remove_if` is stable, so the relative order of elements that are
    *  not removed is unchanged.
    *
-   *  Elements between the end of the resulting sequence and @p __last
+   *  Elements between the end of the resulting sequence and `__last`
    *  are still present, but their value is unspecified.
   */
   template<typename _ForwardIterator, typename _Predicate>
@@ -861,9 +866,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  Removes all but the first element from each group of consecutive
    *  values that compare equal.
-   *  unique() is stable, so the relative order of elements that are
+   *  `unique` is stable, so the relative order of elements that are
    *  not removed is unchanged.
-   *  Elements between the end of the resulting sequence and @p __last
+   *  Elements between the end of the resulting sequence and `__last`
    *  are still present, but their value is unspecified.
   */
   template<typename _ForwardIterator>
@@ -890,10 +895,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @return  An iterator designating the end of the resulting sequence.
    *
    *  Removes all but the first element from each group of consecutive
-   *  values for which @p __binary_pred returns true.
-   *  unique() is stable, so the relative order of elements that are
+   *  values for which `__binary_pred` returns true.
+   *  `unique` is stable, so the relative order of elements that are
    *  not removed is unchanged.
-   *  Elements between the end of the resulting sequence and @p __last
+   *  Elements between the end of the resulting sequence and `__last`
    *  are still present, but their value is unspecified.
   */
   template<typename _ForwardIterator, typename _BinaryPredicate>
@@ -913,6 +918,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return std::__unique(__first, __last, __binary_pred);
     }
 
+  /// @cond undocumented
+
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
   // 4269. unique_copy passes arguments to its predicate backwards
 
@@ -1043,17 +1050,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
     }
 
+  /// @endcond
+
   /**
    *  @brief Reverse a sequence.
    *  @ingroup mutating_algorithms
    *  @param  __first  A bidirectional iterator.
    *  @param  __last   A bidirectional iterator.
-   *  @return   reverse() returns no value.
    *
-   *  Reverses the order of the elements in the range @p [__first,__last),
+   *  Reverses the order of the elements in the range `[__first, __last)`,
    *  so that the first element becomes the last etc.
-   *  For every @c i such that @p 0<=i<=(__last-__first)/2), @p reverse()
-   *  swaps @p *(__first+i) and @p *(__last-(i+1))
+   *  For every `i` such that `0<=i<=(__last-__first)/2)`, reverse()
+   *  swaps `*(__first+i)` and `*(__last-(i+1))`.
   */
   template<typename _BidirectionalIterator>
     _GLIBCXX20_CONSTEXPR
@@ -1075,13 +1083,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @param  __result  An output iterator.
    *  @return  An iterator designating the end of the resulting sequence.
    *
-   *  Copies the elements in the range @p [__first,__last) to the
-   *  range @p [__result,__result+(__last-__first)) such that the
-   *  order of the elements is reversed.  For every @c i such that @p
-   *  0<=i<=(__last-__first), @p reverse_copy() performs the
-   *  assignment @p *(__result+(__last-__first)-1-i) = *(__first+i).
-   *  The ranges @p [__first,__last) and @p
-   *  [__result,__result+(__last-__first)) must not overlap.
+   *  Copies the elements in the range `[__first, __last)` to the
+   *  range `[__result, __result + (__last - __first))` such that the
+   *  order of the elements is reversed.  For every `i` such that
+   *  `0 <= i <= (__last - __first)`, `reverse_copy` performs the
+   *  assignment `*(__result + (__last - __first) - 1 - i) = *(__first + i)`.
+   *  The ranges `[__first, __last)` and
+   *  `[__result, __result + (__last - __first))` must not overlap.
   */
   template<typename _BidirectionalIterator, typename _OutputIterator>
     _GLIBCXX20_CONSTEXPR
@@ -1105,6 +1113,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __result;
     }
 
+  /// @cond undocumented
+
   /**
    *  This is a helper function for the rotate algorithm specialized on RAIs.
    *  It returns the greatest common divisor of two integer values.
@@ -1122,9 +1132,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	}
       return __m;
     }
+  /// @endcond
 
 _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
 
+  /// @cond undocumented
+
   /// This is a helper function for the rotate algorithm.
   template<typename _ForwardIterator>
     _GLIBCXX20_CONSTEXPR
@@ -1303,6 +1316,8 @@ _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
 	}
     }
 
+  /// @endcond
+
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // DR 488. rotate throws away useful information
   /**
@@ -1313,18 +1328,18 @@ _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __last    A forward iterator.
    *  @return  first + (last - middle).
    *
-   *  Rotates the elements of the range @p [__first,__last) by
-   *  @p (__middle - __first) positions so that the element at @p __middle
-   *  is moved to @p __first, the element at @p __middle+1 is moved to
-   *  @p __first+1 and so on for each element in the range
-   *  @p [__first,__last).
+   *  Rotates the elements of the range `[__first, __last)` by
+   *  `(__middle - __first)` positions so that the element at `__middle`
+   *  is moved to `__first`, the element at `__middle+1` is moved to
+   *  `__first+1` and so on for each element in the range
+   *  `[__first, __last)`.
    *
-   *  This effectively swaps the ranges @p [__first,__middle) and
-   *  @p [__middle,__last).
+   *  This effectively swaps the ranges `[__first, __middle)` and
+   *  `[__middle, __last)`.
    *
    *  Performs
-   *   @p *(__first+(n+(__last-__middle))%(__last-__first))=*(__first+n)
-   *  for each @p n in the range @p [0,__last-__first).
+   *  `*(__first+(n+(__last - __middle)) % (__last - __first)) = *(__first+n)`
+   *  for each `n` in the range `[0, __last - __first)`.
   */
   template<typename _ForwardIterator>
     _GLIBCXX20_CONSTEXPR
@@ -1353,16 +1368,16 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __result  An output iterator.
    *  @return   An iterator designating the end of the resulting sequence.
    *
-   *  Copies the elements of the range @p [__first,__last) to the
-   *  range beginning at @result, rotating the copied elements by
-   *  @p (__middle-__first) positions so that the element at @p __middle
-   *  is moved to @p __result, the element at @p __middle+1 is moved
-   *  to @p __result+1 and so on for each element in the range @p
-   *  [__first,__last).
+   *  Copies the elements of the range `[__first, __last)` to the
+   *  range beginning at `result`, rotating the copied elements by
+   *  `(__middle-__first)` positions so that the element at `__middle`
+   *  is moved to `__result`, the element at `__middle+1` is moved
+   *  to `__result+1` and so on for each element in the range
+   *  `[__first, __last)`.
    *
    *  Performs
-   *  @p *(__result+(n+(__last-__middle))%(__last-__first))=*(__first+n)
-   *  for each @p n in the range @p [0,__last-__first).
+   *  `*(__result+(n+(__last - __middle)) % (__last - __first)) = *(__first+n)`
+   *  for each `n` in the range `[0, __last - __first)`.
   */
   template<typename _ForwardIterator, typename _OutputIterator>
     _GLIBCXX20_CONSTEXPR
@@ -1381,6 +1396,8 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 		       std::copy(__middle, __last, __result));
     }
 
+  /// @cond undocumented
+
   /// This is a helper function...
   template<typename _ForwardIterator, typename _Predicate>
     _GLIBCXX20_CONSTEXPR
@@ -1435,10 +1452,13 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	  ++__first;
 	}
     }
+  /// @endcond
 
 #if _GLIBCXX_HOSTED
   // partition
 
+  /// @cond undocumented
+
   /// This is a helper function...
   /// Requires __first != __last and !__pred(*__first)
   /// and __len == distance(__first, __last).
@@ -1545,6 +1565,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 					 __buf.begin(),
 					 _DistanceType(__buf.size()));
     }
+  /// @endcond
 
   /**
    *  @brief Move elements for which a predicate is true to the beginning
@@ -1552,16 +1573,16 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @ingroup mutating_algorithms
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
-   *  @param  __pred    A predicate functor.
-   *  @return  An iterator @p middle such that @p __pred(i) is true for each
-   *  iterator @p i in the range @p [first,middle) and false for each @p i
-   *  in the range @p [middle,last).
+   *  @param  __pred    A predicate function object.
+   *  @return  An iterator `middle` such that `__pred(i)` is true for each
+   *  iterator `i` in the range `[__first, middle)` and false for each `i`
+   *  in the range `[middle, __last)`.
    *
-   *  Performs the same function as @p partition() with the additional
+   *  Performs the same function as `partition` with the additional
    *  guarantee that the relative ordering of elements in each group is
-   *  preserved, so any two elements @p x and @p y in the range
-   *  @p [__first,__last) such that @p __pred(x)==__pred(y) will have the same
-   *  relative ordering after calling @p stable_partition().
+   *  preserved, so any two elements `x` and `y` in the range
+   *  `[__first, __last)` such that `__pred(x) == __pred(y)` will have the
+   *  same relative ordering after calling stable_partition().
   */
   template<typename _ForwardIterator, typename _Predicate>
     _GLIBCXX26_CONSTEXPR
@@ -1694,7 +1715,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __last    Another input iterator.
    *  @param  __result_first   A random-access iterator.
    *  @param  __result_last    Another random-access iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *  @return   An iterator indicating the end of the resulting sequence.
    *
    *  Copies and sorts the smallest `N` values from the range
@@ -1960,9 +1981,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   An iterator to the start of a sorted range.
    *  @param  __last    A past-the-end iterator for the sorted range.
    *  @param  __val     The search term.
-   *  @param  __comp    A functor to use for comparisons.
+   *  @param  __comp    A function object to use for comparisons.
    *  @return An iterator pointing to the first element _not less than_
-   *           `__val`, or `end()` if every element is less than `__val`.
+   *           `__val`, or `__last` if every element is less than `__val`.
    *  @ingroup binary_search_algorithms
    *
    *  The comparison function should have the same effects on ordering as
@@ -1984,6 +2005,8 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       return std::__lower_bound(__first, __last, __val, __comp);
     }
 
+  /// @cond undocumented
+
   template<typename _ForwardIterator, typename _Tp, typename _Compare>
     _GLIBCXX20_CONSTEXPR
     _ForwardIterator
@@ -2011,16 +2034,17 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	}
       return __first;
     }
+  /// @endcond
 
   /**
-   *  @brief Finds the last position in which @p __val could be inserted
+   *  @brief Finds the last position in which `__val` could be inserted
    *         without changing the ordering.
    *  @ingroup binary_search_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __val     The search term.
-   *  @return  An iterator pointing to the first element greater than @p __val,
-   *           or end() if no elements are greater than @p __val.
+   *  @return  An iterator pointing to the first element greater than `__val`,
+   *           or `__last` if no elements are greater than `__val`.
    *  @ingroup binary_search_algorithms
   */
   template<typename _ForwardIterator, typename _Tp>
@@ -2040,15 +2064,15 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
   /**
-   *  @brief Finds the last position in which @p __val could be inserted
+   *  @brief Finds the last position in which `__val` could be inserted
    *         without changing the ordering.
    *  @ingroup binary_search_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __val     The search term.
-   *  @param  __comp    A functor to use for comparisons.
-   *  @return  An iterator pointing to the first element greater than @p __val,
-   *           or end() if no elements are greater than @p __val.
+   *  @param  __comp    A function object to use for comparisons.
+   *  @return  An iterator pointing to the first element greater than `__val`,
+   *           or `__last` if no elements are greater than `__val`.
    *  @ingroup binary_search_algorithms
    *
    *  The comparison function should have the same effects on ordering as
@@ -2070,6 +2094,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       return std::__upper_bound(__first, __last, __val, __comp);
     }
 
+  /// @cond undocumented
   template<typename _ForwardIterator, typename _Tp, typename _Compare>
     _GLIBCXX20_CONSTEXPR
     pair<_ForwardIterator, _ForwardIterator>
@@ -2106,9 +2131,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	}
       return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
     }
+  /// @endcond
 
   /**
-   *  @brief Finds the largest subrange in which @p __val could be inserted
+   *  @brief Finds the largest subrange in which `__val` could be inserted
    *         at any place in it without changing the ordering.
    *  @ingroup binary_search_algorithms
    *  @param  __first   An iterator.
@@ -2118,10 +2144,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @ingroup binary_search_algorithms
    *
    *  This is equivalent to
-   *  @code
+   *  ```
    *    std::make_pair(lower_bound(__first, __last, __val),
    *                   upper_bound(__first, __last, __val))
-   *  @endcode
+   *  ```
    *  but does not actually call those functions.
   */
   template<typename _ForwardIterator, typename _Tp>
@@ -2144,12 +2170,12 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
   /**
-   *  @brief Finds the largest subrange in which @p __val could be inserted
+   *  @brief Finds the largest subrange in which `__val` could be inserted
    *         at any place in it without changing the ordering.
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __val     The search term.
-   *  @param  __comp    A functor to use for comparisons.
+   *  @param  __comp    A function object to use for comparisons.
    *  @return  An pair of iterators defining the subrange.
    *  @ingroup binary_search_algorithms
    *
@@ -2186,11 +2212,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __val     The search term.
-   *  @return True if @p __val (or its equivalent) is in [@p
-   *  __first,@p __last ].
+   *  @return True if `__val` (or its equivalent) is in `[__first, __last)`.
    *
-   *  Note that this does not actually return an iterator to @p __val.  For
-   *  that, use std::find or a container's specialized find member functions.
+   *  Note that this does not actually return an iterator to `__val`.  For
+   *  that, use `std::find` or a container's specialized find member functions.
   */
   template<typename _ForwardIterator, typename _Tp>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -2216,11 +2241,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *  @param  __val     The search term.
-   *  @param  __comp    A functor to use for comparisons.
-   *  @return  True if @p __val (or its equivalent) is in @p [__first,__last].
+   *  @param  __comp    A function object to use for comparisons.
+   *  @return  True if `__val` (or its equivalent) is in `[__first, __last)`.
    *
-   *  Note that this does not actually return an iterator to @p __val.  For
-   *  that, use std::find or a container's specialized find member functions.
+   *  Note that this does not actually return an iterator to `__val`.  For
+   *  that, use `std::find` or a container's specialized find member functions.
    *
    *  The comparison function should have the same effects on ordering as
    *  the function used for the initial sort.
@@ -2247,6 +2272,8 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
   // merge
 
+  /// @cond undocumented
+
   /// This is a helper function for the __merge_adaptive routines.
   template<typename _InputIterator1, typename _InputIterator2,
 	   typename _OutputIterator, typename _Compare>
@@ -2524,6 +2551,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	(__first, __middle, __last, __len1, __len2, __comp);
 #endif
     }
+  /// @endcond
 
   /**
    *  @brief Merges two sorted ranges in place.
@@ -2532,15 +2560,15 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
    *
-   *  Merges two sorted and consecutive ranges, [__first,__middle) and
-   *  [__middle,__last), and puts the result in [__first,__last).  The
+   *  Merges two sorted and consecutive ranges, `[__first, __middle)` and
+   *  `[__middle, __last)`, and puts the result in `[__first, __last)`.  The
    *  output will be sorted.  The sort is @e stable, that is, for
    *  equivalent elements in the two ranges, elements from the first
    *  range will always come before elements from the second.
    *
-   *  If enough additional memory is available, this takes (__last-__first)-1
+   *  If enough additional memory is available, this takes `(__last-__first)-1`
    *  comparisons.  Otherwise an NlogN algorithm is used, where N is
-   *  distance(__first,__last).
+   *  `distance(__first,__last)`.
   */
   template<typename _BidirectionalIterator>
     _GLIBCXX26_CONSTEXPR
@@ -2568,7 +2596,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first   An iterator.
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A functor to use for comparisons.
+   *  @param  __comp    A function object to use for comparisons.
    *
    *  Merges two sorted and consecutive ranges, [__first,__middle) and
    *  [middle,last), and puts the result in [__first,__last).  The output will
@@ -2576,9 +2604,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  elements in the two ranges, elements from the first range will always
    *  come before elements from the second.
    *
-   *  If enough additional memory is available, this takes (__last-__first)-1
+   *  If enough additional memory is available, this takes `(__last-__first)-1`
    *  comparisons.  Otherwise an NlogN algorithm is used, where N is
-   *  distance(__first,__last).
+   *  `distance(__first,__last)`.
    *
    *  The comparison function should have the same effects on ordering as
    *  the function used for the initial sort.
@@ -2604,6 +2632,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       std::__inplace_merge(__first, __middle, __last, __comp);
     }
 
+  /// @cond undocumented
 
   /// This is a helper function for the __merge_sort_loop routines.
   template<typename _InputIterator, typename _OutputIterator,
@@ -2789,6 +2818,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
       return __first2 == __last2;
     }
+  /// @endcond
 
   /**
    *  @brief Determines whether all elements of a sequence exists in a range.
@@ -2796,16 +2826,16 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __last1   End of search range.
    *  @param  __first2  Start of sequence
    *  @param  __last2   End of sequence.
-   *  @return  True if each element in [__first2,__last2) is contained in order
-   *  within [__first1,__last1).  False otherwise.
+   *  @return  True if each element in `[__first2, __last2)` is contained in
+   *           order within `[__first1, __last1)`.  False otherwise.
    *  @ingroup set_algorithms
    *
-   *  This operation expects both [__first1,__last1) and
-   *  [__first2,__last2) to be sorted.  Searches for the presence of
-   *  each element in [__first2,__last2) within [__first1,__last1).
+   *  This operation expects both `[__first1, __last1)` and
+   *  `[__first2, __last2)` to be sorted.  Searches for the presence of
+   *  each element in `[__first2, __last2)` within `[__first1, __last1)`.
    *  The iterators over each range only move forward, so this is a
-   *  linear algorithm.  If an element in [__first2,__last2) is not
-   *  found before the search iterator reaches @p __last2, false is
+   *  linear algorithm.  If an element in `[__first2, __last2)` is not
+   *  found before the search iterator reaches `__last2`, false is
    *  returned.
   */
   template<typename _InputIterator1, typename _InputIterator2>
@@ -2841,17 +2871,17 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __first2  Start of sequence
    *  @param  __last2   End of sequence.
    *  @param  __comp    Comparison function to use.
-   *  @return True if each element in [__first2,__last2) is contained
-   *  in order within [__first1,__last1) according to comp.  False
+   *  @return True if each element in `[__first2, __last2)` is contained
+   *  in order within `[__first1, __last1)` according to comp.  False
    *  otherwise.  @ingroup set_algorithms
    *
-   *  This operation expects both [__first1,__last1) and
-   *  [__first2,__last2) to be sorted.  Searches for the presence of
-   *  each element in [__first2,__last2) within [__first1,__last1),
+   *  This operation expects both `[__first1, __last1)` and
+   *  `[__first2, __last2)` to be sorted.  Searches for the presence of
+   *  each element in `[__first2, __last2)` within `[__first1, __last1)`,
    *  using comp to decide.  The iterators over each range only move
    *  forward, so this is a linear algorithm.  If an element in
-   *  [__first2,__last2) is not found before the search iterator
-   *  reaches @p __last2, false is returned.
+   *  `[__first2, __last2)` is not found before the search iterator
+   *  reaches `__last2`, false is returned.
   */
   template<typename _InputIterator1, typename _InputIterator2,
 	   typename _Compare>
@@ -2888,6 +2918,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
   // min_element
   // max_element
 
+  /// @cond undocumented
   template<typename _BidirectionalIterator, typename _Compare>
     _GLIBCXX20_CONSTEXPR
     bool
@@ -2925,9 +2956,10 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	    }
 	}
     }
+  /// @endcond
 
   /**
-   *  @brief  Permute range into the next @e dictionary ordering.
+   *  @brief  Permute range into the next dictionary ordering.
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
@@ -2956,16 +2988,16 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
   /**
-   *  @brief  Permute range into the next @e dictionary ordering using
-   *          comparison functor.
+   *  @brief  Permute range into the next dictionary ordering using a
+   *          comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
-   *  @param  __comp   A comparison functor.
+   *  @param  __comp   A comparison function object.
    *  @return  False if wrapped to first permutation, true otherwise.
    *
-   *  Treats all permutations of the range [__first,__last) as a set of
-   *  @e dictionary sorted sequences ordered by @p __comp.  Permutes the current
+   *  Treats all permutations of the range `[__first, __last)` as a set of
+   *  @e dictionary sorted sequences ordered by `__comp`.  Permutes the current
    *  sequence into the next one of this set.  Returns true if there are more
    *  sequences to generate.  If the sequence is the largest of the set, the
    *  smallest is generated and false returned.
@@ -2988,6 +3020,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       return std::__next_permutation(__first, __last, __comp);
     }
 
+  /// @cond undocumented
   template<typename _BidirectionalIterator, typename _Compare>
     _GLIBCXX20_CONSTEXPR
     bool
@@ -3025,6 +3058,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	    }
 	}
     }
+  /// @endcond
 
   /**
    *  @brief  Permute range into the previous @e dictionary ordering.
@@ -3057,12 +3091,12 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
   /**
-   *  @brief  Permute range into the previous @e dictionary ordering using
-   *          comparison functor.
+   *  @brief  Permute range into the previous @e dictionary ordering using a
+   *          comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
-   *  @param  __comp   A comparison functor.
+   *  @param  __comp   A comparison function object.
    *  @return  False if wrapped to last permutation, true otherwise.
    *
    *  Treats all permutations of the range [__first,__last) as a set of
@@ -3092,6 +3126,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
   // replace
   // replace_if
 
+  /// @cond undocumented
   template<typename _InputIterator, typename _OutputIterator,
 	   typename _Predicate, typename _Tp>
     _GLIBCXX20_CONSTEXPR
@@ -3107,6 +3142,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	  *__result = *__first;
       return __result;
     }
+  /// @endcond
 
   /**
    *  @brief Copy a sequence, replacing each element of one value with another
@@ -3193,11 +3229,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
   /**
    *  @brief  Determines whether the elements of a sequence are sorted
-   *          according to a comparison functor.
+   *          according to a comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *  @return  True if the elements are sorted, false otherwise.
   */
   template<typename _ForwardIterator, typename _Compare>
@@ -3207,6 +3243,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	      _Compare __comp)
     { return std::is_sorted_until(__first, __last, __comp) == __last; }
 
+  /// @cond undocumented
   template<typename _ForwardIterator, typename _Compare>
     _GLIBCXX20_CONSTEXPR
     _ForwardIterator
@@ -3222,6 +3259,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 	  return __next;
       return __next;
     }
+  /// @endcond
 
   /**
    *  @brief  Determines the end of a sorted sequence.
@@ -3248,11 +3286,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
   /**
-   *  @brief  Determines the end of a sorted sequence using comparison functor.
+   *  @brief  Determines the end of a sorted sequence using comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *  @return  An iterator pointing to the last iterator i in [__first, __last)
    *           for which the range [__first, i) is sorted.
   */
@@ -3298,7 +3336,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @ingroup sorting_algorithms
    *  @param  __a  A thing of arbitrary type.
    *  @param  __b  Another thing of arbitrary type.
-   *  @param  __comp  A @link comparison_functors comparison functor @endlink.
+   *  @param  __comp  A @link comparison_functors comparison function @endlink.
    *  @return A pair(__b, __a) if __b is smaller than __a, pair(__a,
    *  __b) otherwise.
   */
@@ -3311,6 +3349,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 			      : pair<const _Tp&, const _Tp&>(__a, __b);
     }
 
+  /// @cond undocumented
   template<typename _ForwardIterator, typename _Compare>
     _GLIBCXX14_CONSTEXPR
     pair<_ForwardIterator, _ForwardIterator>
@@ -3370,6 +3409,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 
       return std::make_pair(__min, __max);
     }
+  /// @endcond
 
   /**
    *  @brief  Return a pair of iterators pointing to the minimum and maximum
@@ -3403,7 +3443,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
-   *  @param  __comp   Comparison functor.
+   *  @param  __comp   Comparison function object.
    *  @return  make_pair(m, M), where m is the first iterator i in
    *           [__first, __last) such that no other element in the range is
    *           smaller, and where M is the last iterator i in [__first, __last)
@@ -3482,6 +3522,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 
 #if __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
+  /// @cond undocumented
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
   template<typename _ForwardIterator1, typename _ForwardIterator2,
@@ -3540,6 +3581,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       return true;
     }
 #pragma GCC diagnostic pop
+  /// @endcond
 
   /**
    *  @brief  Checks whether a permutation of the second sequence is equal
@@ -3623,7 +3665,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @param  __val   A value of arbitrary type.
    *  @param  __lo    A lower limit of arbitrary type.
    *  @param  __hi    An upper limit of arbitrary type.
-   *  @param  __comp  A comparison functor.
+   *  @param  __comp  A comparison function object.
    *  @retval `__lo` if `__comp(__val, __lo)`
    *  @retval `__hi` if `__comp(__hi, __val)`
    *  @retval `__val` otherwise.
@@ -3675,9 +3717,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
    *  @ingroup mutating_algorithms
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
-   *  @param  __g       A UniformRandomNumberGenerator (26.5.1.3).
+   *  @param  __g       A UniformRandomNumberGenerator (C++11 26.5.1.3).
    *
-   *  Reorders the elements in the range @p [__first,__last) using @p __g to
+   *  Reorders the elements in the range `[__first, __last)` using `__g` to
    *  provide random numbers.
   */
   template<typename _RandomAccessIterator,
@@ -3757,11 +3799,11 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __f      A unary function object.
-   *  @return   @p __f
+   *  @return   `__f`
    *
-   *  Applies the function object @p __f to each element in the range
-   *  @p [first,last).  @p __f must not modify the order of the sequence.
-   *  If @p __f has a return value it is ignored.
+   *  Applies the function object `__f` to each element in the range
+   *  `[__first, __last)`.  `__f` must not modify the order of the sequence.
+   *  If `__f` has a return value it is ignored.
   */
   template<typename _InputIterator, typename _Function>
     _GLIBCXX20_CONSTEXPR
@@ -3823,8 +3865,8 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __val    The value to find.
-   *  @return   The first iterator @c i in the range @p [__first,__last)
-   *  such that @c *i == @p __val, or @p __last if no such iterator exists.
+   *  @return   The first iterator `i` in the range `[__first, __last)`
+   *  such that `*i == __val`, or `__last` if no such iterator exists.
   */
   template<typename _InputIterator, typename _Tp>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -3881,8 +3923,8 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return   The first iterator @c i in the range @p [__first,__last)
-   *  such that @p __pred(*i) is true, or @p __last if no such iterator exists.
+   *  @return   The first iterator `i` in the range `[__first, __last)`
+   *  such that `__pred(*i)` is true, or `__last` if no such iterator exists.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -3906,14 +3948,15 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last1   End of range to search.
    *  @param  __first2  Start of match candidates.
    *  @param  __last2   End of match candidates.
-   *  @return   The first iterator @c i in the range
-   *  @p [__first1,__last1) such that @c *i == @p *(i2) such that i2 is an
-   *  iterator in [__first2,__last2), or @p __last1 if no such iterator exists.
+   *  @return   The first iterator `i` in the range
+   *  `[__first1, __last1)` such that `*i == *(i2)` such that `i2` is an
+   *  iterator in `[__first2, __last2)`, or `__last1` if no such iterator
+   *  exists.
    *
-   *  Searches the range @p [__first1,__last1) for an element that is
-   *  equal to some element in the range [__first2,__last2).  If
-   *  found, returns an iterator in the range [__first1,__last1),
-   *  otherwise returns @p __last1.
+   *  Searches the range `[__first1, __last1)` for an element that is
+   *  equal to some element in the range `[__first2, __last2)`.  If
+   *  found, returns an iterator in the range `[__first1, __last1)`,
+   *  otherwise returns `__last1`.
   */
   template<typename _InputIterator, typename _ForwardIterator>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -3945,16 +3988,16 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first2  Start of match candidates.
    *  @param  __last2   End of match candidates.
    *  @param  __comp    Predicate to use.
-   *  @return   The first iterator @c i in the range
-   *  @p [__first1,__last1) such that @c comp(*i, @p *(i2)) is true
-   *  and i2 is an iterator in [__first2,__last2), or @p __last1 if no
+   *  @return   The first iterator `i` in the range
+   *  `[__first1, __last1)` such that `comp(*i, *(i2))` is true
+   *  and `i2` is an iterator in `[__first2, __last2)`, or `__last1` if no
    *  such iterator exists.
    *
 
-   *  Searches the range @p [__first1,__last1) for an element that is
-   *  equal to some element in the range [__first2,__last2).  If
-   *  found, returns an iterator in the range [__first1,__last1),
-   *  otherwise returns @p __last1.
+   *  Searches the range `[__first1, __last1)` for an element that is
+   *  equal to some element in the range `[__first2, __last2)`.  If
+   *  found, returns an iterator in the range `[__first1, __last1)`,
+   *  otherwise returns `__last1`.
   */
   template<typename _InputIterator, typename _ForwardIterator,
 	   typename _BinaryPredicate>
@@ -3985,9 +4028,9 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup non_mutating_algorithms
    *  @param  __first  A forward iterator.
    *  @param  __last   A forward iterator.
-   *  @return   The first iterator @c i such that @c i and @c i+1 are both
-   *  valid iterators in @p [__first,__last) and such that @c *i == @c *(i+1),
-   *  or @p __last if no such iterator exists.
+   *  @return  The first iterator `i` such that `i` and `i`+1 are both
+   *           valid iterators in `[__first, __last)` and such that
+   *           `*i == *(i+1)`, or `__last` if no such iterator exists.
   */
   template<typename _ForwardIterator>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4010,10 +4053,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first         A forward iterator.
    *  @param  __last          A forward iterator.
    *  @param  __binary_pred   A binary predicate.
-   *  @return   The first iterator @c i such that @c i and @c i+1 are both
-   *  valid iterators in @p [__first,__last) and such that
-   *  @p __binary_pred(*i,*(i+1)) is true, or @p __last if no such iterator
-   *  exists.
+   *  @return  The first iterator `i` such that `i` and `i`+1 are both
+   *           valid iterators in `[__first, __last)` and such that
+   *           `__binary_pred(*i,*(i+1))` is true, or `__last` if no such
+   *           iterator exists.
   */
   template<typename _ForwardIterator, typename _BinaryPredicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4037,8 +4080,8 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __value  The value to be counted.
-   *  @return   The number of iterators @c i in the range @p [__first,__last)
-   *  for which @c *i == @p __value
+   *  @return  The number of iterators `i` in the range `[__first, __last)`
+   *           for which `*i == __value`
   */
   template<typename _InputIterator, typename _Tp>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4061,8 +4104,8 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  An input iterator.
    *  @param  __last   An input iterator.
    *  @param  __pred   A predicate.
-   *  @return   The number of iterators @c i in the range @p [__first,__last)
-   *  for which @p __pred(*i) is true.
+   *  @return  The number of iterators `i` in the range `[__first, __last)`
+   *           for which `__pred(*i)` is true.
   */
   template<typename _InputIterator, typename _Predicate>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4085,24 +4128,24 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last1   A forward iterator.
    *  @param  __first2  A forward iterator.
    *  @param  __last2   A forward iterator.
-   *  @return The first iterator @c i in the range @p
-   *  [__first1,__last1-(__last2-__first2)) such that @c *(i+N) == @p
-   *  *(__first2+N) for each @c N in the range @p
-   *  [0,__last2-__first2), or @p __last1 if no such iterator exists.
+   *  @return The first iterator `i` in the range
+   *          `[__first1, __last1 - (__last2 - __first2))` such that
+   *          `*(i+N) == *(__first2+N)` for each `N` in the range
+   *          `[0, __last2 - __first2)`, or `__last1` if no such iterator
+   *          exists.
    *
-   *  Searches the range @p [__first1,__last1) for a sub-sequence that
-   *  compares equal value-by-value with the sequence given by @p
-   *  [__first2,__last2) and returns an iterator to the first element
-   *  of the sub-sequence, or @p __last1 if the sub-sequence is not
-   *  found.
+   *  Searches the range `[__first1, __last1)` for a sub-sequence that
+   *  compares equal value-by-value with the sequence given by
+   *  `[__first2, __last2)` and returns an iterator to the first element
+   *  of the sub-sequence, or `__last1` if the sub-sequence is not found.
    *
-   *  Because the sub-sequence must lie completely within the range @p
-   *  [__first1,__last1) it must start at a position less than @p
-   *  __last1-(__last2-__first2) where @p __last2-__first2 is the
+   *  Because the sub-sequence must lie completely within the range
+   *  `[__first1, __last1)` it must start at a position less than
+   *  `__last1 - (__last2 - __first2)` where `__last2 - __first2` is the
    *  length of the sub-sequence.
    *
-   *  This means that the returned iterator @c i will be in the range
-   *  @p [__first1,__last1-(__last2-__first2))
+   *  This means that the returned iterator `i` will be in the range
+   *  `[__first1, __last1 - (__last2 - __first2))`.
   */
   template<typename _ForwardIterator1, typename _ForwardIterator2>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4130,13 +4173,12 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last   A forward iterator.
    *  @param  __count  The number of consecutive values.
    *  @param  __val    The value to find.
-   *  @return The first iterator @c i in the range @p
-   *  [__first,__last-__count) such that @c *(i+N) == @p __val for
-   *  each @c N in the range @p [0,__count), or @p __last if no such
-   *  iterator exists.
+   *  @return The first iterator `i` in the range `[__first, __last - __count)`
+   *          such that `*(i+N) == __val` for each `N` in the range
+   *          `[0, __count)`, or `__last` if no such iterator exists.
    *
-   *  Searches the range @p [__first,__last) for @p count consecutive elements
-   *  equal to @p __val.
+   *  Searches the range `[__first, __last)` for `__count` consecutive
+   *  elements equal to `__val`.
   */
   template<typename _ForwardIterator, typename _Integer, typename _Tp>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4164,12 +4206,11 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __count        The number of consecutive values.
    *  @param  __val          The value to find.
    *  @param  __binary_pred  A binary predicate.
-   *  @return The first iterator @c i in the range @p
-   *  [__first,__last-__count) such that @p
-   *  __binary_pred(*(i+N),__val) is true for each @c N in the range
-   *  @p [0,__count), or @p __last if no such iterator exists.
+   *  @return The first iterator `i` in the range `[__first, __last - __count)`
+   *          such that `__binary_pred(*(i+N), __val)` is true for each `N` in
+   *          the range `[0, __count)`, or `__last` if no such iterator exists.
    *
-   *  Searches the range @p [__first,__last) for @p __count
+   *  Searches the range `[__first, __last)` for `__count`
    *  consecutive elements for which the predicate returns true.
   */
   template<typename _ForwardIterator, typename _Integer, typename _Tp,
@@ -4196,7 +4237,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first        A forward iterator.
    *  @param  __last         A forward iterator.
    *  @param  __searcher     A callable object.
-   *  @return @p __searcher(__first,__last).first
+   *  @return `__searcher(__first,__last).first`
   */
   template<typename _ForwardIterator, typename _Searcher>
     _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
@@ -4213,14 +4254,14 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last      An input iterator.
    *  @param  __result    An output iterator.
    *  @param  __unary_op  A unary operator.
-   *  @return   An output iterator equal to @p __result+(__last-__first).
+   *  @return   An output iterator equal to `__result + (__last - __first)`.
    *
    *  Applies the operator to each element in the input range and assigns
    *  the results to successive elements of the output sequence.
-   *  Evaluates @p *(__result+N)=unary_op(*(__first+N)) for each @c N in the
-   *  range @p [0,__last-__first).
+   *  Evaluates `*(__result+N) = unary_op(*(__first+N))` for each `N` in the
+   *  range `[0, __last - __first)`.
    *
-   *  @p unary_op must not alter its argument.
+   *  `__unary_op` must not alter its argument.
   */
   template<typename _InputIterator, typename _OutputIterator,
 	   typename _UnaryOperation>
@@ -4249,16 +4290,15 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first2     An input iterator.
    *  @param  __result     An output iterator.
    *  @param  __binary_op  A binary operator.
-   *  @return   An output iterator equal to @p result+(last-first).
+   *  @return   An output iterator equal to `__result+(__last1-__first1)`.
    *
    *  Applies the operator to the corresponding elements in the two
    *  input ranges and assigns the results to successive elements of the
    *  output sequence.
-   *  Evaluates @p
-   *  *(__result+N)=__binary_op(*(__first1+N),*(__first2+N)) for each
-   *  @c N in the range @p [0,__last1-__first1).
+   *  Evaluates `*(__result+N) = __binary_op(*(__first1+N), *(__first2+N))`
+   *  for each `N` in the range `[0, __last1-__first1)`.
    *
-   *  @p binary_op must not alter either of its arguments.
+   *  `__binary_op` must not alter either of its arguments.
   */
   template<typename _InputIterator1, typename _InputIterator2,
 	   typename _OutputIterator, typename _BinaryOperation>
@@ -4289,7 +4329,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last       A forward iterator.
    *  @param  __old_value  The value to be replaced.
    *  @param  __new_value  The replacement value.
-   *  @return   replace() returns no value.
    *
    *  For each iterator `i` in the range `[__first,__last)` if
    *  `*i == __old_value` then the assignment `*i = __new_value` is performed.
@@ -4322,7 +4361,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last       A forward iterator.
    *  @param  __pred       A predicate.
    *  @param  __new_value  The replacement value.
-   *  @return   replace_if() returns no value.
    *
    *  For each iterator `i` in the range `[__first,__last)` if `__pred(*i)`
    *  is true then the assignment `*i = __new_value` is performed.
@@ -4354,7 +4392,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first  A forward iterator.
    *  @param  __last   A forward iterator.
    *  @param  __gen    A function object callable with no arguments.
-   *  @return   generate() returns no value.
    *
    *  Performs the assignment `*i = __gen()` for each `i` in the range
    *  `[__first, __last)`.
@@ -4560,7 +4597,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup mutating_algorithms
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
-   *  @param  __rand    The RNG functor or function.
+   *  @param  __rand    The RNG function object.
    *
    *  Reorders the elements in the range `[__first, __last)` using `__rand`
    *  to provide a random distribution. Calling `__rand(N)` for a positive
@@ -4609,7 +4646,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup mutating_algorithms
    *  @param  __first   A forward iterator.
    *  @param  __last    A forward iterator.
-   *  @param  __pred    A predicate functor.
+   *  @param  __pred    A predicate function object.
    *  @return  An iterator `middle` such that `__pred(i)` is true for each
    *  iterator `i` in the range `[__first, middle)` and false for each `i`
    *  in the range `[middle, __last)`.
@@ -4679,7 +4716,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __middle  Another iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *
    *  Sorts the smallest `(__middle - __first)` elements in the range
    *  `[__first, __last)` and moves them to the range `[__first, __middle)`.
@@ -4755,7 +4792,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __nth     Another iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *
    *  Rearranges the elements in the range `[__first, __last)` so that `*__nth`
    *  is the same element that would have been in that position had the
@@ -4822,7 +4859,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *
    *  Sorts the elements in the range `[__first, __last)` in ascending order,
    *  such that `__comp(*(i+1), *i)` is false for every iterator `i` in the
@@ -4883,14 +4920,15 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last1   Another iterator.
    *  @param  __last2   Another iterator.
    *  @param  __result  An iterator pointing to the end of the merged range.
-   *  @return   An output iterator equal to @p __result + (__last1 - __first1)
-   *            + (__last2 - __first2).
+   *  @return   An output iterator equal to
+   *            `__result + (__last1 - __first1) + (__last2 - __first2)`.
    *
-   *  Merges the ranges @p [__first1,__last1) and @p [__first2,__last2) into
-   *  the sorted range @p [__result, __result + (__last1-__first1) +
-   *  (__last2-__first2)).  Both input ranges must be sorted, and the
-   *  output range must not overlap with either of the input ranges.
-   *  The sort is @e stable, that is, for equivalent elements in the
+   *  Merges the ranges `[__first1, __last1)` and `[__first2, __last2)` into
+   *  the sorted range
+   *  `[__result, __result + (__last1-__first1) + (__last2-__first2))`.
+   *  Both input ranges must be sorted, and the output range must not overlap
+   *  with either of the input ranges.
+   *  The sort is _stable_, that is, for equivalent elements in the
    *  two ranges, elements from the first range will always come
    *  before elements from the second.
   */
@@ -4929,15 +4967,16 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __last1   Another iterator.
    *  @param  __last2   Another iterator.
    *  @param  __result  An iterator pointing to the end of the merged range.
-   *  @param  __comp    A functor to use for comparisons.
-   *  @return   An output iterator equal to @p __result + (__last1 - __first1)
-   *            + (__last2 - __first2).
+   *  @param  __comp    A function object to use for comparisons.
+   *  @return   An output iterator equal to
+   *            `__result + (__last1 - __first1) + (__last2 - __first2)`.
    *
-   *  Merges the ranges @p [__first1,__last1) and @p [__first2,__last2) into
-   *  the sorted range @p [__result, __result + (__last1-__first1) +
-   *  (__last2-__first2)).  Both input ranges must be sorted, and the
-   *  output range must not overlap with either of the input ranges.
-   *  The sort is @e stable, that is, for equivalent elements in the
+   *  Merges the ranges `[__first1, __last1)` and `[__first2, __last2)` into
+   *  the sorted range
+   *  `[__result, __result + (__last1-__first1) + (__last2-__first2))`.
+   *  Both input ranges must be sorted, and the output range must not overlap
+   *  with either of the input ranges.
+   *  The sort is _stable_, that is, for equivalent elements in the
    *  two ranges, elements from the first range will always come
    *  before elements from the second.
    *
@@ -5018,14 +5057,14 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
    *
-   *  Sorts the elements in the range @p [__first,__last) in ascending order,
-   *  such that for each iterator @p i in the range @p [__first,__last-1),
-   *  @p *(i+1)<*i is false.
+   *  Sorts the elements in the range `[__first, __last)` in ascending order,
+   *  such that for each iterator `i` in the range `[__first, __last-1)`,
+   *  `*(i+1) < *i` is false.
    *
    *  The relative ordering of equivalent elements is preserved, so any two
-   *  elements @p x and @p y in the range @p [__first,__last) such that
-   *  @p x<y is false and @p y<x is false will have the same relative
-   *  ordering after calling @p stable_sort().
+   *  elements `x` and `y` in the range `[__first, __last)` such that
+   *  `x < y` is false and `y < x` is false will have the same relative
+   *  ordering after calling `stable_sort`.
   */
   template<typename _RandomAccessIterator>
     _GLIBCXX26_CONSTEXPR
@@ -5050,16 +5089,16 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
    *  @ingroup sorting_algorithms
    *  @param  __first   An iterator.
    *  @param  __last    Another iterator.
-   *  @param  __comp    A comparison functor.
+   *  @param  __comp    A comparison function object.
    *
-   *  Sorts the elements in the range @p [__first,__last) in ascending order,
-   *  such that for each iterator @p i in the range @p [__first,__last-1),
-   *  @p __comp(*(i+1),*i) is false.
+   *  Sorts the elements in the range `[__first, __last)` in ascending order,
+   *  such that for each iterator `i in the range `[__first,__last-1)`,
+   *  `__comp(*(i+1), *i)` is false.
    *
    *  The relative ordering of equivalent elements is preserved, so any two
-   *  elements @p x and @p y in the range @p [__first,__last) such that
-   *  @p __comp(x,y) is false and @p __comp(y,x) is false will have the same
-   *  relative ordering after calling @p stable_sort().
+   *  elements `x` and `y` in the range `[__first, __last)` such that
+   *  `__comp(x, y)` is false and `__comp(y, x)` is false will have the same
+   *  relative ordering after calling `stable_sort`.
   */
   template<typename _RandomAccessIterator, typename _Compare>
     _GLIBCXX26_CONSTEXPR
@@ -5161,22 +5200,22 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     }
 
   /**
-   *  @brief Return the union of two sorted ranges using a comparison functor.
+   *  @brief Return the union of two sorted ranges using a comparison function.
    *  @ingroup set_algorithms
    *  @param  __first1  Start of first range.
    *  @param  __last1   End of first range.
    *  @param  __first2  Start of second range.
    *  @param  __last2   End of second range.
    *  @param  __result  Start of output range.
-   *  @param  __comp    The comparison functor.
+   *  @param  __comp    The comparison function object.
    *  @return  End of the output range.
    *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  each range in order to the output range.  Iterators increment for each
    *  range.  When the current element of one range is less than the other
-   *  according to @p __comp, that element is copied and the iterator advanced.
-   *  If an equivalent element according to @p __comp is contained in both
+   *  according to `__comp`, that element is copied and the iterator advanced.
+   *  If an equivalent element according to `__comp` is contained in both
    *  ranges, the element from the first range is copied and both ranges
    *  advance.  The output range may not overlap either input range.
   */
@@ -5282,22 +5321,22 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 
   /**
    *  @brief Return the intersection of two sorted ranges using comparison
-   *  functor.
+   *  function.
    *  @ingroup set_algorithms
    *  @param  __first1  Start of first range.
    *  @param  __last1   End of first range.
    *  @param  __first2  Start of second range.
    *  @param  __last2   End of second range.
    *  @param  __result  Start of output range.
-   *  @param  __comp    The comparison functor.
+   *  @param  __comp    The comparison function object.
    *  @return  End of the output range.
    *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  both ranges in order to the output range.  Iterators increment for each
    *  range.  When the current element of one range is less than the other
-   *  according to @p __comp, that iterator advances.  If an element is
-   *  contained in both ranges according to @p __comp, the element from the
+   *  according to `__comp`, that iterator advances.  If an element is
+   *  contained in both ranges according to `__comp`, the element from the
    *  first range is copied and both ranges advance.  The output range may not
    *  overlap either input range.
   */
@@ -5406,24 +5445,24 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 
   /**
    *  @brief  Return the difference of two sorted ranges using comparison
-   *  functor.
+   *  function.
    *  @ingroup set_algorithms
    *  @param  __first1  Start of first range.
    *  @param  __last1   End of first range.
    *  @param  __first2  Start of second range.
    *  @param  __last2   End of second range.
    *  @param  __result  Start of output range.
-   *  @param  __comp    The comparison functor.
+   *  @param  __comp    The comparison function object.
    *  @return  End of the output range.
    *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  the first range but not the second in order to the output range.
    *  Iterators increment for each range.  When the current element of the
-   *  first range is less than the second according to @p __comp, that element
+   *  first range is less than the second according to `__comp`, that element
    *  is copied and the iterator advances.  If the current element of the
    *  second range is less, no element is copied and the iterator advances.
-   *  If an element is contained in both ranges according to @p __comp, no
+   *  If an element is contained in both ranges according to `__comp`, no
    *  elements are copied and both ranges advance.  The output range may not
    *  overlap either input range.
   */
@@ -5541,23 +5580,23 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 
   /**
    *  @brief  Return the symmetric difference of two sorted ranges using
-   *  comparison functor.
+   *  comparison function.
    *  @ingroup set_algorithms
    *  @param  __first1  Start of first range.
    *  @param  __last1   End of first range.
    *  @param  __first2  Start of second range.
    *  @param  __last2   End of second range.
    *  @param  __result  Start of output range.
-   *  @param  __comp    The comparison functor.
+   *  @param  __comp    The comparison function object.
    *  @return  End of the output range.
    *  @ingroup set_algorithms
    *
    *  This operation iterates over both ranges, copying elements present in
    *  one range but not the other in order to the output range.  Iterators
    *  increment for each range.  When the current element of one range is less
-   *  than the other according to @p comp, that element is copied and the
+   *  than the other according to `__comp`, that element is copied and the
    *  iterator advances.  If an element is contained in both ranges according
-   *  to @p __comp, no elements are copied and both ranges advance.  The output
+   *  to `__comp`, no elements are copied and both ranges advance.  The output
    *  range may not overlap either input range.
   */
   template<typename _InputIterator1, typename _InputIterator2,
@@ -5631,13 +5670,13 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     }
 
   /**
-   *  @brief  Return the minimum element in a range using comparison functor.
+   *  @brief  Return the minimum element in a range using comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
-   *  @param  __comp   Comparison functor.
+   *  @param  __comp   Comparison function object.
    *  @return  Iterator referencing the first instance of the smallest value
-   *  according to __comp.
+   *  according to `__comp`.
   */
   template<typename _ForwardIterator, typename _Compare>
     _GLIBCXX_NODISCARD _GLIBCXX14_CONSTEXPR
@@ -5694,13 +5733,13 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     }
 
   /**
-   *  @brief  Return the maximum element in a range using comparison functor.
+   *  @brief  Return the maximum element in a range using comparison function.
    *  @ingroup sorting_algorithms
    *  @param  __first  Start of range.
    *  @param  __last   End of range.
-   *  @param  __comp   Comparison functor.
+   *  @param  __comp   Comparison function object.
    *  @return  Iterator referencing the first instance of the largest value
-   *  according to __comp.
+   *  according to `__comp`.
   */
   template<typename _ForwardIterator, typename _Compare>
     _GLIBCXX_NODISCARD _GLIBCXX14_CONSTEXPR
@@ -5761,6 +5800,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 #endif // C++11
 
 #if __cplusplus >= 201402L // C++17 std::sample and C++14 experimental::sample
+  /// @cond undocumented
   /// Reservoir sampling algorithm.
   template<typename _InputIterator, typename _RandomAccessIterator,
            typename _Size, typename _UniformRandomBitGenerator>
@@ -5855,6 +5895,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	  }
       return __out;
     }
+  /// @endcond
 #endif // C++14
 
 #ifdef __glibcxx_sample // C++ >= 17

From redi@gcc.gnu.org  Mon Jun 29 19:18:26 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Mon, 29 Jun 2026 19:18:26 +0000 (GMT)
Subject: [gcc r17-1982] libstdc++: Fix comment typo in bits/chrono_io.h
Message-ID: <20260629191826.176F74BA2E3C@sourceware.org>

https://gcc.gnu.org/g:0ebb2c2bb824bc35d043254fa22eda37b4bb6a5c

commit r17-1982-g0ebb2c2bb824bc35d043254fa22eda37b4bb6a5c
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Jun 29 20:16:53 2026 +0100

    libstdc++: Fix comment typo in bits/chrono_io.h
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/chrono_io.h: Fix comment typo.

Diff:
---
 libstdc++-v3/include/bits/chrono_io.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index f8bb485d165b..dba96759b1b5 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -3358,7 +3358,7 @@ namespace __format
 		__cd._M_zone_abbrev = *__zt._M_abbrev;
 	      else
 		{
-		  // TODO: use resize_for_override
+		  // TODO: use resize_and_overwrite
 		  __zone_store.resize(__zt._M_abbrev->size());
 		  auto& __ct = use_facet<ctype<_CharT>>(_M_f._M_locale(__fc));
 		  __ct.widen(__zt._M_abbrev->data(),

From gccadmin@gcc.gnu.org  Tue Jun 30 00:17:20 2026
From: gccadmin@gcc.gnu.org (GCC Administrator)
Date: Tue, 30 Jun 2026 00:17:20 +0000 (GMT)
Subject: [gcc r17-1985] Daily bump.
Message-ID: <20260630001720.294884BA7986@sourceware.org>

https://gcc.gnu.org/g:51560ed7f6f4466bfee509a72235bf32d203e6b0

commit r17-1985-g51560ed7f6f4466bfee509a72235bf32d203e6b0
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Tue Jun 30 00:16:45 2026 +0000

    Daily bump.

Diff:
---
 ChangeLog               |  11 +++
 c++tools/ChangeLog      |   6 ++
 config/ChangeLog        |  21 +++++
 fixincludes/ChangeLog   |   6 ++
 gcc/ChangeLog           | 111 ++++++++++++++++++++++++
 gcc/DATESTAMP           |   2 +-
 gcc/ada/ChangeLog       | 220 ++++++++++++++++++++++++++++++++++++++++++++++++
 gcc/cp/ChangeLog        |   4 +
 gcc/fortran/ChangeLog   |   8 ++
 gcc/testsuite/ChangeLog | 151 +++++++++++++++++++++++++++++++++
 gnattools/ChangeLog     |   6 ++
 gotools/ChangeLog       |   6 ++
 libada/ChangeLog        |   5 ++
 libatomic/ChangeLog     |  10 +++
 libbacktrace/ChangeLog  |   6 ++
 libcc1/ChangeLog        |   7 ++
 libcpp/ChangeLog        |   7 ++
 libgcc/ChangeLog        |  18 ++++
 libgcobol/ChangeLog     |   6 ++
 libgfortran/ChangeLog   |   7 ++
 libgm2/ChangeLog        |  12 +++
 libgomp/ChangeLog       |  11 +++
 libgrust/ChangeLog      |   5 ++
 libiberty/ChangeLog     |   8 ++
 libitm/ChangeLog        |   9 ++
 libobjc/ChangeLog       |   8 ++
 libphobos/ChangeLog     |  11 +++
 libquadmath/ChangeLog   |   7 ++
 libsanitizer/ChangeLog  |   7 ++
 libssp/ChangeLog        |   7 ++
 libstdc++-v3/ChangeLog  |  12 +++
 libvtv/ChangeLog        |   7 ++
 lto-plugin/ChangeLog    |   8 ++
 33 files changed, 729 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 04cf573b2d03..96ed99e2fe51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2026-06-29  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	Replace AC_TRY_LINK with AC_LINK_IFELSE.
+
 2026-06-23  Richard Earnshaw  <rearnsha@arm.com>
 
 	* MAINTAINERS (Write After): Add details for Robert Dubner,
diff --git a/c++tools/ChangeLog b/c++tools/ChangeLog
index 5afd874fcbe6..d7f2cb9600c0 100644
--- a/c++tools/ChangeLog
+++ b/c++tools/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+
 2025-06-02  Kito Cheng  <kito.cheng@sifive.com>
 
 	* configure.ac: Don't check `--enable-default-pie`.
diff --git a/config/ChangeLog b/config/ChangeLog
index f0cc6330e446..13976b6fd6d6 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,24 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acx.m4: Remove uses of AC_CHECK_TOOL_PREFIX.  Replace AC_TRY_COMPILE
+	with AC_COMPILE_IFELSE.
+	* asmcfi.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	* bitfields.m4: Likewise.
+	* cet.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.  Replace AC_TRY_RUN
+	with AC_RUN_IFELSE.
+	* codeset.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* enable.m4: Replace AC_HELP_STRING with AS_HELP_STRING.
+	* gcc-plugin.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* hwcaps.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace
+	AC_TRY_LINK with AC_LINK_IFELSE.
+	* isl.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* lcmessage.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* no-executables.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* po.m4: Replace AC_OUTPUT_COMMANDS with AC_CONFIG_COMMANDS.
+	* tls.m4: Add explicit 4th argument to AC_LINK_IFELSE.
+
 2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
 
 	* visibility.m4: New file.
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog
index 4bfa5bf91f86..107692d75083 100644
--- a/fixincludes/ChangeLog
+++ b/fixincludes/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+
 2026-06-27  Filip Kastl  <fkastl@suse.cz>
 
 	* fixincl.c (extract_quoted_files): Add a const char * helper
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ade60140ec4f..987ac63dd440 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,114 @@
+2026-06-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* config/riscv/riscv.cc (synthesize_and): Use srliw to handle
+	clearing both upper and lower bits in some cases.
+	* config/riscv/bitmanip.md (ZBA splitter using sext.w): Do not
+	use in cases where we can use srliw to clear those upper bits.
+
+2026-06-29  Mark Zhuang  <zhuangqiubin@linux.spacemit.com>
+
+	* config/riscv/riscv-cores.def (RISCV_TUNE): Add spacemit-x100.
+	(RISCV_CORE): Add spacemit-x100.
+	* config/riscv/riscv.cc (spacemit_x100_tune_info): New.
+	* doc/riscv-mcpu.texi: Regenerate.
+	* doc/riscv-mtune.texi: Regenerate.
+
+2026-06-29  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* config/mips/mips.h (ASM_SPEC): Add placeholders for -mmxu and
+	-mno-mxu.
+	* config/mips/mips.opt: New undocumented target option.
+
+2026-06-29  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* config/mips/mips.cc (mips_frame_barrier): Upgrade to a full
+	blockage.
+
+2026-06-29  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/94871
+	* simplify-rtx.cc (simplify_unary_operation_1) <case NOT>:
+	Update (not (eq X Y)) -> (ne X Y) to support vector comparions
+	using VECTOR_STORE_FLAG_VALUE, and check SCALAR_INT_MODE_P
+	when checking STORE_FLAG_VALUE.  Add equivalent optimization
+	(not (neg (eq X Y))) -> (neg (ne X Y)) for targets with
+	STORE_FLAG_VALUE == 1 or VECTOR_STORE_FLAG_VALUE is const1_rtx.
+	* config/i386/sse.md (*<sse>_imaskcmp<mode>3_comm): Clone
+	of *<sse>_maskcmp<mode>3_comm pattern with integer vector
+	result.
+
+2026-06-29  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	* config/aarch64/aarch64-sve2.md: Add unpredicated high-part
+	multiplication section.
+	(@aarch64_sve2_<optab><mode>): New insn.
+	* config/aarch64/aarch64-sve.md (@aarch64_pred_<optab><mode>):
+	Change to define_insn_and_split and split SVE2 highpart
+	multiplication into unpredicated MUL_HIGHPART.
+
+2026-06-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/125469
+	* config/i386/i386.md (*add<mode>_1<nf_name>): Revert 2026-05-28
+	changes.
+	(define_split from *add<mode>_1_nf to *lea<mode>): Set INSN_CODE
+	to -1 if <LEAMODE> and <MODE> are the same.
+
+2026-06-29  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/105116
+	* lra-constraints.cc (simplify_operand_subreg): Reload a
+	non-representable narrowing subreg of a hard register through
+	memory instead of resolving it lossily.
+
+2026-06-29  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125737
+	* match.pd: Optimize X % Y < Y -> Y >= 0 and X % Y >= Y -> Y < 0
+
+2026-06-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125968
+	* config/i386/i386-expand.cc (ix86_expand_movmem): Don't call
+	ix86_expand_n_overlapping_move_movmem when max size == 1.
+
+2026-06-29  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	PR tree-optimization/112390
+	* match.pd: Add simplifications for combined sign-bit and
+	magnitude checks:
+	((signed)A >= 0) &/&& ((A & INT_MAX) != 0) -> (signed)A > 0
+	((signed)A <  0) |/|| ((A & INT_MAX) == 0) -> (signed)A <= 0
+
+2026-06-29  liuhongt  <hongtao.liu@intel.com>
+
+	PR target/125907
+	* config/i386/i386.md (*cmov_bt<SWI248:mode>): New
+	define_insn_and_split handling a const_int false arm, forced into
+	a register by the splitter.  Leave the existing define_split for
+	the nonimmediate case unchanged.
+
+2026-06-29  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125474
+	* config/loongarch/simd.md (usdot_prod<wvec_half><mode>): New
+	define_expand.
+	(usdot_prod<wvec_quarter><mode>): New define_expand.
+
+2026-06-29  Pan Li  <pan2.li@intel.com>
+
+	* match-sat-alu.pd: Add pattern for unsigned scalar
+	SAT_MUL form 14.
+
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_FOREACH with m4_foreach_w.  Replace
+	AC_TRY_LINK with AC_LINK_IFELSE.
+	* configure: Regenerate.
+	* configure.ac: Replace AC_HELP_STRING with AS_HELP_STRING.  Replace
+	AC_PROG_LIBTOOL with LT_INIT.
+
 2026-06-28  Kevin Stefanov  <kevinstefanov15@gmail.com>
 
 	PR middle-end/125274
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 1d91ae1491ce..264735f723d9 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20260629
+20260630
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 135c66faeb20..4721976cc5a9 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,223 @@
+2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/trans.cc (gnat_to_gnu): Return a NULL_EXPR for the
+	use of an intrinsic operator and exclude more cases explicitly.
+
+2026-06-29  Viljar Indus  <indus@adacore.com>
+
+	* gcc-interface/decl.cc (warn_on_field_placement): Improve error message.
+
+2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* einfo.ads (Initialization_Statements): Adjust description.
+	* exp_ch3.adb (Default_Initialize_Object): Use the special mechanism
+	of Initialization_Statements, if need be, instead of inserting the
+	initialization statements directly into the freeze actions.
+
+2026-06-29  Javier Miranda  <miranda@adacore.com>
+
+	* sem_ch6.adb (Constructor_Components_OK): New local subprogram of
+	Analyze_Direct_Attribute_Definition. Checks performed when processing
+	the body of a constructor.
+	(Analyze_Direct_Attribute_Definition) <Name_Constructor>: Report an
+	error on the body of a constructor for a derived type whose parent
+	type needs construction and has no default parameterless constructor
+	and has no Super aspect to initialize its parent components.
+	* sem_ch7.adb (Inspect_Components_Needing_Construction): New local
+	subprogram of Analyze_Package_Specification.
+	(Inspect_Abstract_Constructors_Completion): Rename formal parameter.
+	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): Fix the order
+	of initialization of record type components: parent components must
+	be initialized first, then the own components following their
+	declaration order.
+	* sem_util.ads (First_Component_Declaration): New subprogram.
+	* sem_util.adb (First_Component_Declaration): New utility subprogram
+	that returns the first non-pragma non-inherited component declaration
+	of a record type.
+
+2026-06-29  Joffrey Huguet  <huguet@adacore.com>
+
+	* libgnat/a-comlin.ads (Argument_Count): Add global contract.
+	(Argument): Likewise.
+	(Command_Name): Likewise.
+	(Set_Exit_Status): Likewise.
+	* libgnat/a-comlin.adb: Refine abstract state.
+
+2026-06-29  Joffrey Huguet  <huguet@adacore.com>
+
+	* libgnat/a-textio.ads (Get): Add Data_Error in Exceptional_Cases contract.
+	(Look_Ahead): Likewise.
+	(Get_Immediate): Likewise.
+	(Get_Line): Likewise.
+
+2026-06-29  Olivier Hainque  <hainque@adacore.com>
+
+	* tracebak.c (trace_callback): Return early for pc == 0;
+
+2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_util.ads (Find_Optional_Prim_Op): Add Controlled_Op parameter
+	defaulting to False.
+	* exp_util.adb (Find_Optional_Prim_Op): Likewise.  When it is set to
+	True, test whether the primitive has the signature of the controlled
+	primitives.
+	* sem_ch13.adb (Resolve_Finalization_Procedure): Reset Is_Overloaded
+	once an interpretation has been selected among the set.
+
+2026-06-29  Gary Dismukes  <dismukes@adacore.com>
+
+	* doc/gnat_rm/gnat_language_extensions.rst: Add documentation for
+	"attribute subprograms" extension feature.
+	* errout.adb (Set_Msg_Node): Remove special-case treatment for
+	attribute names (no longer call Replace_With_Attribute_Definition).
+	* erroutc.ads (Replace_With_Attribute_Definition): Removed.
+	* erroutc.adb (Replace_With_Attribute_Definition): Removed.
+	(Set_Msg_Insertion_Name): Remove special-case treatment for attribute
+	names.
+	* exp_attr.adb (Expand_N_Attribute_Reference): Add indexing, literal,
+	and Default_Iterator attributes as case choices in the alternative
+	that raises Program_Error.
+	* par-ch4.adb (Is_Parameterless_Attribute): Add various aspects as
+	entries in this table that are set to True (for proper handling of
+	actual parameters on subprogram calls made using the attribute name).
+	* par-ch6.adb (P_Subprogram): Add calls to procedure
+	Rewrite_Entity_If_Direct_Attribute_Def for subprogram renamings
+	and body stubs.
+	* sem_attr.adb (Analyze_Attribute): Add indexing, Default_Iterator,
+	and literal attributes to case choices. Rewrite_As_Attribute_Subp_Name
+	is called for those, as well as for stream and Put_Image attribute
+	cases (the latter group being guarded by a call to the following
+	new function).
+	(Is_Reference_To_Attribute_Subp_Name): New function to determine
+	whether to rewrite an N_Attribute_Reference as an N_Identifier
+	denoting an attribute subprogram.
+	(Rewrite_As_Attribute_Subp_Name): New procedure to rewrite an attribute
+	reference as an N_Identifier whose Chars field is the combined type
+	and aspect name, and call Analyze on that (providing support for use
+	in expanded names). Also validates that the prefix is a type and that
+	the type has the aspect corresponding to the attribute.
+	(Eval_Attribute): Add choices for the various subprogram-valued
+	aspects/attributes to the alternative that raises Program_Error.
+	* sem_ch3.adb (Set_Derived_Name): Construct a direct attribute name for
+	an inherited subprogram whose parent subprogram has such a name, and
+	augment spec comment.
+	* sem_ch6.adb (Create_And_Append_Aspect): New procedure local to
+	procedure Analyze_Direct_Attribute_Definition, for creating implicit
+	aspects on a type for aspects associated with attribute subprograms.
+	(Analyze_Direct_Attribute_Definition): Add handling for the various
+	subprogram-valued aspects, including special handling for "'Class"
+	aspects. Add an error check to prevent library attribute subprograms,
+	plus validate that "'Class" can only be written for stream cases and
+	when the prefix type is tagged.
+	* sem_ch8.adb (Find_Direct_Name): Add missing init on Msg to avoid
+	invalid data usages.
+	* sem_ch10.adb (Analyze_Subprogram_Body_Stub): Add an error check to
+	disallow attribute subprograms with bodies given by body stubs.
+	* sem_ch13.ads (Analyze_One_Aspect): Procedure declaration moved here
+	from package body.
+	* sem_ch13.adb
+	(Analyze_One_Aspect): Procedure declaration moved to package spec.
+	Save and restore Expander_Active (in Aspect_Initialize handling).
+	(Analyze_Put_Image_TSS_Definition): In the abstract-subprogram case,
+	flag the error on the subprogram rather than the attribute name.
+	When the attribute name is not Comes_From_Source, flag a bad subprogram
+	itself rather than flagging the attribute name.
+	(Analyze_Stream_TSS_Definition): Ditto.
+	(Analyze_Attribute_Definition_Clause, case Default_Iterator): Move
+	error check about untagged to the end of the case alternative, and
+	remove error about nonfunctions (checking in Check_Iterator_Functions
+	is sufficient).
+	(Check_Aspect_At_Freeze_Point, case Default_Iterator): Add test of
+	Is_Direct_Attribute_Subp_Name as additional condition for calling
+	Check_Iterator_Functions.
+	(Report_Ineligible_Indexing_Function): Don't issue warnings in the case
+	of attribute subprograms (always give an error). Flag the error on the
+	subprogram rather than the type in the case of attribute subprograms.
+	(Check_Function_For_Indexing_Aspect): Force error messages in the case
+	of attribute subprograms, despite Has_Eligible_Func being True.
+	(Check_Iterator_Functions): Minor improvement to message requiring Expr
+	to denote a function.
+	(Validate_Literal_Aspect): Add test of whether the aspect denotes
+	an attribute subprogram, to avoid returning early due to the
+	"not Comes_From_Source" condition. Code cleanup to traverse formals
+	rather than Parameter_Specifications. Flag the subprogram rather than
+	the aspect when found function is an attribute subprogram.
+	* sem_util.ads (Is_Direct_Attribute_Subp_Name): New function.
+	* sem_util.adb (Direct_Attribute_Definition_Name): Remove 'D' prefix
+	and "_Attr" suffix, plus adjust suffix to start with "'" rather than
+	"_". Handle class-wide stream attribute names, and remove error about
+	unsupported stream attributes. Add error check to reject child units.
+	(Corresponding_Op_Of_Derived_Type): Account for differences between
+	names of parent and descendant subprograms when they have direct
+	attribute names.
+	(Direct_Attribute_Names_Correspond): New function.
+	(Inherit_Nonoverridable_Aspect): Construct a new name denoted by an
+	inherited aspect when the parent aspect has a direct attribute name.
+	(Is_Direct_Attribute_Subp_Name): New function.
+	(Primitive_Names_Match): Add testing for direct attribute subprograms
+	to condition of return statement.
+	* snames.ads-tmpl: Move indexing and Default_Iterator aspect names
+	earlier in name ordering and move literal aspect names later (these
+	are all now considered to be recognized as attribute names).
+	(type Attribute_Id): Move indexing attribute names earlier in attribute
+	ordering (those no longer considered to be "internal" attribute names).
+	(subtype Internal_Attribute_Id): Adjust subtype bounds.
+	* snames.adb-tmpl (Get_Attribute_Id): Remove alternatives for
+	indexing and Default_Iterator names, as these now belong to the
+	"normal" attribute range.
+	(Is_Direct_Attribute_Definition_Name): Return True for indexing aspect
+	names, literal aspect names, stream attribute names, and Put_Image
+	and Default_Iterator aspect names.
+	* gnat_rm.texi: Regenerate.
+
+2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* exp_ch3.adb (Expand_Freeze_Record_Type): Minor cleanup.
+	* sem_ch3.adb (Build_Derived_Private_Type.Copy_And_Build): Set the
+	Is_Implicit_Full_View flag early in the case of a record type.
+	(Build_Derived_Record_Type): Do not build the class-wide type for
+	an implicit full view.
+
+2026-06-29  Olivier Hainque  <hainque@adacore.com>
+
+	* adaint.c (__gnat_get_executable_load_address): Provide
+	an implementation based on dladdr(&main) and use it for Android.
+
+2026-06-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* par-ch13.adb (P_Modifies_Specification): Now public, so it can be
+	reused when parsing a pragma.
+	* par-ch2.adb (P_Pragma): Parse pragma Modifies with a custom syntax.
+	* par-prag.adb (Prag): A ??? comment is now implemented.
+	* par.adb (P_Modifies_Specification): Now public, so it can be reused.
+
+2026-06-29  Olivier Hainque  <hainque@adacore.com>
+
+	* init.c (__gnat_install_handler, __ANDROID__): Guard calls
+	to sigaction with a test for a possible 's' (System) interrupt
+	state.
+
+2026-06-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* atree.adb (Change_Node): Enable "nnd" debug hook.
+
+2026-06-29  Piotr Trojanek  <trojanek@adacore.com>
+
+	* sem_ch3.adb (Preanalyze_And_Resolve_Assert_Expression): Fix style.
+
+2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* sem_ch3.adb (Find_Type_Of_Object): In the subtype indication case
+	for a stand-alone object, invoke Process_Subtype during preanalysis
+	instead of partially reimplementing it.
+	* sem_ch5.ads (Has_Sec_Stack_Call): Move back declaration to...
+	* sem_ch5.adb (Has_Sec_Stack_Call): ...here.
+	* sem_ch4.adb (Analyze_Expression_With_Actions): Deal with transient
+	scopes created during analysis.
+	* sem_res.adb: Add clauses for Sem_Ch9 package.
+	(Resolve_Declare_Expression): Streamline and deal with transient
+	scopes created during resolution.
+
 2026-06-22  Javier Miranda  <miranda@adacore.com>
 
 	* par-ch6.adb (P_Subprogram): Add missing support for direct
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6be95e2e4fd3..cd2ff735e802 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2026-06-29  Georg-Johann Lay  <avr@gjlay.de>
+
+	* mangle.cc (mangle_ctor_vtbl_for_type): Fix production in comment.
+
 2026-06-28  Kevin Stefanov  <kevinstefanov15@gmail.com>
 
 	PR middle-end/125274
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 703ff7c295bd..db8d2c0f545b 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-29  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/84622
+	* resolve.cc (resolve_symbol): In detecting coarray components,
+	use the derived type of the class data component, not the data
+	component itself. New boolean 'declared_has_coarray_comp' to
+	detect this.
+
 2026-06-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
 	PR fortran/30438
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b0f25882261a..8425e5618c4b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,154 @@
+2026-06-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+
+	* gcc.target/riscv/and-synthesis-1.c: New test.
+
+2026-06-29  Mark Zhuang  <zhuangqiubin@linux.spacemit.com>
+
+	* gcc.target/riscv/mcpu-spacemit-x100.c: New test.
+
+2026-06-29  Claudio Bantaloukas  <Claudio.Bantaloukas@arm.com>
+
+	* gcc.target/aarch64/acle/arm_sc_memchr.c: New file.
+	* gcc.target/aarch64/acle/arm_sc_memcpy.c: Likewise.
+	* gcc.target/aarch64/acle/arm_sc_memmove.c: Likewise.
+	* gcc.target/aarch64/acle/arm_sc_memset.c: Likewise.
+	* gcc.target/aarch64/sme/arm_sc_memchr.c: New file.
+	* gcc.target/aarch64/sme/arm_sc_memcpy.c: Likewise.
+	* gcc.target/aarch64/sme/arm_sc_memmove.c: Likewise.
+	* gcc.target/aarch64/sme/arm_sc_memset.c: Likewise.
+
+2026-06-29  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* gcc.target/mips/mxu-compile-no.c: New test.
+	* gcc.target/mips/mxu-compile.c: New test.
+	* gcc.target/mips/mxu-driver-no.c: New test.
+	* gcc.target/mips/mxu-driver.c: New test.
+
+2026-06-29  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* gcc.target/mips/frame-barrier-1.c: New test.
+
+2026-06-29  Torbj?rn SVENSSON  <torbjorn.svensson@foss.st.com>
+
+	* gcc.target/arm/long-calls-1.c: Change to `noipa` to prevent
+	optimizing away the functions.
+	* gcc.target/arm/long-calls-2.c: Likewise.
+	* gcc.target/arm/long-calls-3.c: Likewise.
+	* gcc.target/arm/long-calls-4.c: Likewise.
+
+2026-06-29  Paul Thomas  <pault@gcc.gnu.org>
+
+	PR fortran/84622
+	* gfortran.dg/pr84622.f90: New test.
+
+2026-06-29  Roger Sayle  <roger@nextmovesoftware.com>
+
+	PR target/94871
+	* gcc.target/i386/pr94871.c: New test case.
+
+2026-06-29  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+
+	* gcc.target/aarch64/sve2/acle/asm/mulh_s8.c: New test.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_s16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_s32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_s64.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_u8.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_u16.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_u32.c: Likewise.
+	* gcc.target/aarch64/sve2/acle/asm/mulh_u64.c: Likewise.
+
+2026-06-29  Kyrylo Tkachov  <ktkachov@nvidia.com>
+
+	PR target/105116
+	* gcc.target/aarch64/sve/pr105116.c: New test.
+	* gcc.target/aarch64/sve/pr105116-run.c: New test.
+
+2026-06-29  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+
+	PR tree-optimization/125737
+	* gcc.dg/pr125737.c: Move test to pr125737-1.c.
+	* gcc.dg/pr125737-1.c: Add test for (a % b) >= b when a and b are nonnegative.
+	* gcc.dg/pr125737-2.c: New test for (a % b) {<,>=} b.
+
+2026-06-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR target/125968
+	* gcc.target/i386/builtin-memmove-16.c: New test.
+	* gcc.target/i386/builtin-memmove-17.c: Likewise.
+	* gcc.target/i386/builtin-memmove-18a.c: Likewise.
+	* gcc.target/i386/builtin-memmove-18b.c: Likewise.
+
+2026-06-29  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+
+	PR tree-optimization/112390
+	* gcc.dg/pr112390.c: New test.
+	* gcc.dg/pr112390_bitint.c: New test.
+
+2026-06-29  liuhongt  <hongtao.liu@intel.com>
+
+	PR target/125907
+	* gcc.target/i386/bt-cmov-1.c: New test.
+
+2026-06-29  Xi Ruoyao  <xry111@xry111.site>
+
+	PR target/125474
+	* gcc.target/loongarch/vector/lasx/dot-prod-mixed-signedness.c:
+	New test.
+
+2026-06-29  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+	* gcc.target/riscv/sat/sat_u_mul-16-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u16-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u16-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u32-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u32-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u8-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-16-u8-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u16-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u32-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-16-u8-from-u64.c: New test.
+
+2026-06-29  Pan Li  <pan2.li@intel.com>
+
+	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+	* gcc.target/riscv/sat/sat_u_mul-15-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u16-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u16-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u32-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u32-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u8-from-u64.rv32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-15-u8-from-u64.rv64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u16-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u16-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u16-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u32-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u32-from-u64.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u64-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u8-from-u128.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u8-from-u16.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u8-from-u32.c: New test.
+	* gcc.target/riscv/sat/sat_u_mul-run-15-u8-from-u64.c: New test.
+
 2026-06-28  Oleg Endo  <olegendo@gcc.gnu.org>
 
 	PR target/55212
diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog
index 2d453181afc5..20afb16a1c05 100644
--- a/gnattools/ChangeLog
+++ b/gnattools/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_HELP_STRING with AS_HELP_STRING.
+
 2026-05-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/125232
diff --git a/gotools/ChangeLog b/gotools/ChangeLog
index 628a67e37b73..8e82247ef826 100644
--- a/gotools/ChangeLog
+++ b/gotools/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+
 2024-04-15  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile.am (install-exec-local, uninstall-local): Add goals
diff --git a/libada/ChangeLog b/libada/ChangeLog
index 4aa38abb0776..b5289bbf6f54 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AC_HELP_STRING with AS_HELP_STRING.
+
 2023-08-07  John Ericson  <git@JohnEricson.me>
 
 	* configure: Regenerate.
diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 6bb2c2315d9b..a1c26f77df1d 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,13 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_ERROR with AS_MSG_ERROR.  Replace AC_TRY_LINK
+	with AC_LINK_IFELSE.  Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	Replace AC_HELP_STRING with AS_HELP_STRING.  Replace
+	AC_TRY_RUN with AC_RUN_IFELSE.
+	* configure.ac: Replace AM_PROG_LIBTOOL with LT_INIT.  Replace
+	AC_STDC_HEADERS with AC_HEADER_STDC.
+
 2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
 
 	* config/linux/aarch64/atomic_16.S (FEATURE_1_AND_MARK): Define.
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index 9069713fbee8..a03ccef8c0c7 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Remove redundant AM_PROG_LIBTOOL.
+
 2026-06-27  Ian Lance Taylor  <iant@golang.org>
 
 	* elf.c (elf_zstd_unpack_seq_decode): Set table field for RLE
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog
index 11eb11a2e51c..ed1383230c30 100644
--- a/libcc1/ChangeLog
+++ b/libcc1/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+	Remove redundant AM_PROG_LIBTOOL.
+
 2026-01-15  Marek Polacek  <polacek@redhat.com>
 	    Jakub Jelinek  <jakub@redhat.com>
 
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index f0c734a9b0e9..37639a8fc7ff 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+	Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+
 2026-06-16  Jakub Jelinek  <jakub@redhat.com>
 
 	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX29 and CLK_CXX29.
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 72df7114beca..cb9b31bead47 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,21 @@
+2026-06-29  Claudio Bantaloukas  <Claudio.Bantaloukas@arm.com>
+
+	* config/aarch64/__arm_sc_memchr_scalar.S: New file.
+	* config/aarch64/__arm_sc_memcpy_scalar.S: Likewise.
+	* config/aarch64/__arm_sc_memset_scalar.S: Likewise.
+	* config/aarch64/libgcc-sme.ver (GCC_17.0): Export
+	__arm_sc_memchr, __arm_sc_memcpy, __arm_sc_memmove and
+	__arm_sc_memset.
+	* config/aarch64/t-aarch64: Add new files.
+	* config/aarch64/aarch64-asm.h: Add ENTRY_ALIAS.
+
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_HELP_STRING with AS_HELP_STRING.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+
 2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
 
 	* config/aarch64/aarch64-asm.h (FEATURE_1_AND_MARK): Define.
diff --git a/libgcobol/ChangeLog b/libgcobol/ChangeLog
index 209c498d1a60..1e328e757eab 100644
--- a/libgcobol/ChangeLog
+++ b/libgcobol/ChangeLog
@@ -1,3 +1,9 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Remove redundant AM_PROG_LIBTOOL.
+
 2026-06-25  Robert Dubner  <rdubner@symas.com>
 
 	* charmaps.cc (__gg__miconverter): Use table instead of a map.
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 92dcd41151f7..2767064164bc 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	* configure.ac: Replace AC_LANG_C with AC_LANG([C]).  Replace
+	AM_PROG_LIBTOOL with LT_INIT.
+
 2026-06-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/118793
diff --git a/libgm2/ChangeLog b/libgm2/ChangeLog
index 020c11660138..a72ed71d15bb 100644
--- a/libgm2/ChangeLog
+++ b/libgm2/ChangeLog
@@ -1,3 +1,15 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_HELP_STRING with AS_HELP_STRING.  Replace
+	AC_LANG_SAVE AC_LANG_CPLUSPLUS (...) AC_LANG_RESTORE with
+	AC_LANG_PUSH([C++]) (...) AC_LANG_POP([C++]).  Replace AC_TRY_LINK with
+	AC_LINK_IFELSE.  Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	* configure: Regenerate.
+	* configure.ac: Replace AC_HELP_STRING AS_HELP_STRING.  Remove redundant
+	AM_PROG_LIBTOOL.  Replace AC_LANG_C with AC_LANG([C]).  Replace
+	AC_FOREACH with m4_foreach_w.
+
 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
 
 	* configure: Regenerate.
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 715d742df7d1..44f80885ce80 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,14 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace AC_HELP_STRING with
+	AS_HELP_STRING.  Replace AC_TRY_RUN with AC_RUN_IFELSE.
+	* configure: Regenerate.
+	* configure.ac: Replace AM_PROG_LIBTOOL with LT_INIT.  Replace
+	AC_STDC_HEADERS with AC_HEADER_STDC.  Replace _AC_COMPUTE_INT with
+	AC_COMPUTE_INT.
+
 2026-06-28  Gerald Pfeifer  <gerald@pfeifer.com>
 
 	* libgomp.texi (nvptx): Update NVIDIA CUDA link.
diff --git a/libgrust/ChangeLog b/libgrust/ChangeLog
index 4e8b286d8479..60e12fad40fe 100644
--- a/libgrust/ChangeLog
+++ b/libgrust/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AC_FOREACH with m4_foreach_w.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index e99d32cf7a62..fb4e7741544a 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_TRY_RUN with AC_RUN_IFELSE.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	* configure.ac: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace
+	AC_ISC_POSIX with AC_SEARCH_LIBS([strerror],[cposix]).
+
 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
 
 	PR driver/111527
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 4571602231ef..b3dc9561c157 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,12 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* acinclude.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace AC_HELP_STRING with
+	AS_HELP_STRING.  Replace AC_TRY_RUN with AC_RUN_IFELSE.
+	* configure.ac: Replace AM_PROG_LIBTOOL with LT_INIT.  Replace
+	AC_STDC_HEADERS with AC_HEADER_STDC.
+
 2026-06-17  Muhammad Kamran  <muhammad.kamran@arm.com>
 
 	* config/aarch64/sjlj.S (FEATURE_1_AND_MARK): Define.  Use
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 58c07bfff9b6..14d4b6fc22f3 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+	Replace AM_PROG_LIBTOOL with LT_INIT. Remove unnecessary escape in
+	double quoted string.
+
 2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* configure: Regenerate.
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index b2ccfde771c0..bb322d63a28b 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,14 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+	Remove redundant AM_PROG_LIBTOOL.  Replace AC_FOREACH with m4_foreach_w.
+	* m4/druntime.m4: Replace AC_HELP_STRING AS_HELP_STRING.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+	* m4/druntime/cpu.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
+	* m4/druntime/os.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
+
 2026-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>
 
 	* libdruntime/MERGE: Merge upstream druntime d1fbbb1a2f.
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 01262d0a6677..10fde2b7b4ae 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AM_PROG_LIBTOOL with LT_INIT.  Replace
+	AC_LANG_C with AC_LANG([C]).  Replace AC_TRY_COMPILE with
+	AC_COMPILE_IFELSE.  Replace AC_TRY_LINK with AC_LINK_IFELSE.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* math/powq.c: Fix typos.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 809294081c78..e32fbcd98a51 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AM_PROG_LIBTOOL with LT_INIT.  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace AC_FOREACH with
+	m4_foreach_w.
+
 2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
 	* sanitizer_common/sanitizer_platform_limits_solaris.cpp:
diff --git a/libssp/ChangeLog b/libssp/ChangeLog
index 55f864102dd5..022fc1d74416 100644
--- a/libssp/ChangeLog
+++ b/libssp/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AC_LANG_C with AC_LANG([C]).  Replace
+	AC_TRY_COMPILE with AC_COMPILE_IFELSE.  Replace AC_TRY_LINK with
+	AC_LINK_IFELSE.  Replace AM_PROG_LIBTOOL with LT_INIT.
+
 2026-05-05  H.J. Lu  <hjl.tools@gmail.com>
 
 	PR c/121911
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index f74e49d96a60..30f54a48299e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2026-06-29  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/bits/chrono_io.h: Fix comment typo.
+
+2026-06-29  Jonathan Wakely  <jwakely@redhat.com>
+
+	* doc/doxygen/user.cfg.in (DOT_MULTI_TARGETS): Remove obsolete
+	config.
+	* include/bits/stl_algo.h: Use markdown and fix some typos in
+	Doxygen comments.  Mark internal helper functions as
+	undocumented.
+
 2026-06-26  Jonathan Wakely  <jwakely@redhat.com>
 
 	* testsuite/27_io/filesystem/operations/status.cc: Check
diff --git a/libvtv/ChangeLog b/libvtv/ChangeLog
index 09893f072339..5bb2af6fe281 100644
--- a/libvtv/ChangeLog
+++ b/libvtv/ChangeLog
@@ -1,3 +1,10 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure.ac: Replace AC_GNU_SOURCE with AC_USE_SYSTEM_EXTENSIONS.
+	Replace AM_PROG_LIBTOOL with LT_INIT.  Replace AC_FOREACH with
+	m4_foreach_w.
+
 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
 
 	* vtv_fail.cc: Fix typos.
diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog
index 557da06b5d94..a38194047fd8 100644
--- a/lto-plugin/ChangeLog
+++ b/lto-plugin/ChangeLog
@@ -1,3 +1,11 @@
+2026-06-29  Pietro Monteiro  <pietro@sociotechnical.xyz>
+
+	PR bootstrap/103459
+	* configure: Regenerate.
+	* configure.ac: Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET.
+	Replace AC_TRY_LINK with AC_LINK_IFELSE. Replace AM_PROG_LIBTOOL with
+	LT_INIT.
+
 2026-06-22  Filip Kastl  <fkastl@suse.cz>
 
 	* lto-plugin.c (process_symtab): char *s -> const char *s.

From redi@gcc.gnu.org  Tue Jun 30 12:55:19 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 30 Jun 2026 12:55:19 +0000 (GMT)
Subject: [gcc r17-2009] libstdc++: Test that fs::remove and fs::remove_all do
 not follow symlinks
Message-ID: <20260630125519.05A984BA23C9@sourceware.org>

https://gcc.gnu.org/g:92bfcd8a041bdf32c2c1098ad9cc6734eaf973e7

commit r17-2009-g92bfcd8a041bdf32c2c1098ad9cc6734eaf973e7
Author: Adam Wood <adam.wood@mines.sdsmt.edu>
Date:   Mon Jun 29 21:42:59 2026 -0600

    libstdc++: Test that fs::remove and fs::remove_all do not follow symlinks
    
    Test that fs::remove and fs::remove_all delete an initial directory
    symlink instead of following it. Also test that fs::remove_all
    delete symlinks inside a directory rather than following them.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/27_io/filesystem/operations/remove.cc: Check that
            fs::remove deletes symlink instead of target.
            * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.

Diff:
---
 .../27_io/filesystem/operations/remove.cc          | 19 ++++++++++
 .../27_io/filesystem/operations/remove_all.cc      | 40 +++++++++++++++++++++-
 2 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
index 50b1b7647167..858884517dd3 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
@@ -68,6 +68,25 @@ test01()
 
   const auto dir = __gnu_test::nonexistent_path();
   create_directories(dir/"a/b");
+
+#ifndef NO_SYMLINKS
+  create_directories(dir/"real");
+  create_directory_symlink(dir/"real", dir/"link");
+
+  ec = bad_ec;
+  n = remove(dir/"link", ec);
+  VERIFY( !ec );
+  VERIFY( exists(dir/"real") );
+  VERIFY( !exists(symlink_status(dir/"link")) );
+  VERIFY( n );
+
+  ec = bad_ec;
+  n = remove(dir/"real", ec);
+  VERIFY( !ec );
+  VERIFY( !exists(dir/"real") );
+  VERIFY( n );
+#endif
+
   ec.clear();
   n = remove(dir/"a", ec);
   VERIFY( ec );
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
index 16c215ce9996..f29e05086ef0 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
@@ -61,7 +61,7 @@ test01()
 #endif
 
   const auto dir = __gnu_test::nonexistent_path();
-  create_directories(dir/"a/b/c");
+  create_directories(dir/"a"/"b"/"c");
   ec = bad_ec;
   n = remove_all(dir/"a", ec);
   VERIFY( !ec );
@@ -69,6 +69,44 @@ test01()
   VERIFY( exists(dir) );
   VERIFY( !exists(dir/"a") );
 
+#ifndef NO_SYMLINKS
+  // Test that remove_all does not follow an initial directory symlink.
+  create_directories(dir/"real");
+  create_directory_symlink(dir/"real", dir/"link");
+
+  ec = bad_ec;
+  n = remove_all(dir/"link", ec);
+  VERIFY( !ec );
+  VERIFY( exists(dir/"real") );
+  VERIFY( !exists(symlink_status(dir/"link")) );
+  VERIFY( n == 1 );
+
+  ec = bad_ec;
+  n = remove_all(dir/"real", ec);
+  VERIFY( !ec );
+  VERIFY( !exists(dir/"real") );
+  VERIFY( n == 1 );
+
+  // Test that remove_all does not follow symlinks inside the directory.
+  create_directories(dir/"subdir");
+  create_directories(dir/"target_dir");
+  __gnu_test::scoped_file f2(dir/"target_file");
+  create_directory_symlink(dir/"target_dir", dir/"subdir"/"link_dir");
+  create_symlink(dir/"target_file", dir/"subdir"/"link_file");
+
+  ec = bad_ec;
+  n = remove_all(dir/"subdir", ec);
+  VERIFY( !ec );
+  VERIFY( exists(dir/"target_dir") );
+  VERIFY( exists(dir/"target_file") );
+  VERIFY( !exists(dir/"subdir") );
+  VERIFY( n == 3 );
+
+  f2.path.clear();
+  remove(dir/"target_dir");
+  remove(dir/"target_file");
+#endif
+
   create_directories(dir/"a/b/c");
   __gnu_test::scoped_file a1(dir/"a/1");
   __gnu_test::scoped_file a2(dir/"a/2");

From redi@gcc.gnu.org  Tue Jun 30 12:55:24 2026
From: redi@gcc.gnu.org (Jonathan Wakely)
Date: Tue, 30 Jun 2026 12:55:24 +0000 (GMT)
Subject: [gcc r17-2010] libstdc++: Add symlink support on Windows
Message-ID: <20260630125524.30FA04BA23C7@sourceware.org>

https://gcc.gnu.org/g:88856ad855ae7a157a1babac467ac3ffe4afb901

commit r17-2010-g88856ad855ae7a157a1babac467ac3ffe4afb901
Author: Adam Wood <adam.wood@mines.sdsmt.edu>
Date:   Mon Feb 16 14:36:58 2026 -0800

    libstdc++: Add symlink support on Windows
    
    Tested on x86_64-w64-mingw32 on Windows 11.
    
    The the new symlink functions are only defined/enabled on versions of
    Windows with symlink support.
    
    Because path resolution may be different between Windows and POSIX when a
    dotdot follows a symlink, I also made some edits to tests involving that
    specific case.
    
    Finally, I dealt with the issue that creating symlinks with the
    unprivileged flag returns an error in earlier versions of Windows by
    just trying again if ERROR_INVALID_PARAMETER occurs without the
    unprivileged flag. This is how MSVC STL does it as well.
    
    The patch does not support junctions or mount points.
    
    libstdc++-v3/Changelog:
    
            * src/c++17/fs_ops.cc: Include <winioctl.h> for
            FSCTL_GET_REPARSE_POINT. Include <ntdef.h> for
            REPARSE_DATA_BUFFER.
            (windows_create_symlink): New helper function for
            fs::create_symlink and fs::create_directory_symlink.
            (fs::create_directory_symlink): Call windows_create_symlink on
            Windows.
            (fs::create_symlink): Call windows_create_symlink on Windows.
            (auto_win_file_handle::auto_win_file_handle): Add follow_symlink
            parameter to control whether the handle should open the symlink
            or the target, with a default value of true.
            (windows_read_symlink_handle): New helper function
            for fs::read_symlink.
            (fs::read_symlink): Call windows_read_symlink_handle on Windows.
            (fs::remove): Call RemoveDirectoryW only for directories, and
            DeleteFileW for regular files, but attempt both for symlinks.
            (fs::remove_all): Return immediately if path is empty.
            Check if path points to a symlink, and if so, remove the
            symlink using fs::remove.
            * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
            (S_IFLNK, S_ISLNK): Define.
            (__detail::__open_for_stat): New helper function for stat and
            lstat.
            (__detail::FileType): New enum type.
            (__detail::__check_handle_type): New helper function for stat
            and lstat.
            (__detail::__is_handle_symlink): New helper function for
            fs::read_symlink.
            (__detail::__stat_windows): New helper function for stat and
            lstat.
            (__gnu_posix::stat, __gnu_posix::lstat): Use __stat_windows to
            properly follow or not follow symlinks, and check if file is a
            symlink.
            * testsuite/27_io/filesystem/operations/canonical.cc (test03):
            Use fs::create_directory_symlink instead of fs::create_symlink.
            Check if NO_SYMLINKS or _GLIBCXX_FILESYSTEM_IS_WINDOWS instead
            of just checking NO_SYMLINKS when defining baz.
            * testsuite/27_io/filesystem/operations/copy.cc (test02):
            Create a symlink to temporary file instead of ".".  Use
            fs::exists(symlink_status()) instead of fs::exists for symlinks.
            * testsuite/27_io/filesystem/operations/weakly_canonical.cc
            (test01): Use fs::create_directory_symlink instead of
            fs::create_symlink.  Wrap statements that test a dotdot after a
            symlink in an ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS.
            * testsuite/util/testsuite_fs.h: Do not define NO_SYMLINKS on
            Windows.
    
    Co-authored-by: Jonathan Wakely <jwakely@redhat.com>

Diff:
---
 libstdc++-v3/src/c++17/fs_ops.cc                   | 210 ++++++++++++++++++++-
 libstdc++-v3/src/filesystem/ops-common.h           | 106 ++++++++++-
 .../27_io/filesystem/operations/canonical.cc       |   4 +-
 .../testsuite/27_io/filesystem/operations/copy.cc  |   7 +-
 .../filesystem/operations/weakly_canonical.cc      |  18 +-
 libstdc++-v3/testsuite/util/testsuite_fs.h         |   2 +-
 6 files changed, 329 insertions(+), 18 deletions(-)

diff --git a/libstdc++-v3/src/c++17/fs_ops.cc b/libstdc++-v3/src/c++17/fs_ops.cc
index 454962c75219..387869751c58 100644
--- a/libstdc++-v3/src/c++17/fs_ops.cc
+++ b/libstdc++-v3/src/c++17/fs_ops.cc
@@ -56,6 +56,8 @@
 #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
 # define WIN32_LEAN_AND_MEAN
 # include <windows.h>
+# include <winioctl.h> // FSCTL_GET_REPARSE_POINT
+# include <ntdef.h> // REPARSE_DATA_BUFFER
 #endif
 
 #define _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM namespace filesystem {
@@ -644,6 +646,52 @@ fs::create_directory(const path& p, const path& attributes,
 #endif
 }
 
+#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+namespace
+{
+  void
+  windows_create_symlink(const fs::path& to, const fs::path& new_symlink,
+			 const fs::file_type target_type,
+			 std::error_code& ec) noexcept
+  {
+#ifdef SYMBOLIC_LINK_FLAG_DIRECTORY // Implies CreateSymbolicLinkW support.
+    DWORD symlink_type = target_type == fs::file_type::directory
+			 ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0;
+    // Windows can't handle relative symlinks with non-preferred slashes.
+    // Creating the symlink will succeed, but the symlink won't resolve
+    // correctly in later operations.
+    const fs::path* preferred_to = &to;
+    fs::path to2;
+    if (to.native().find(L'/') != std::string::npos)
+      {
+	__try
+	  {
+	    to2 = to;
+	    to2.make_preferred();
+	    preferred_to = &to2;
+	  }
+	__catch (const std::bad_alloc&)
+	  {
+	    ec = std::make_error_code(std::errc::not_enough_memory);
+	    return;
+	  }
+      }
+    if (CreateSymbolicLinkW(new_symlink.c_str(), preferred_to->c_str(),
+			    symlink_type
+			    | SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE))
+      ec.clear();
+    else if (GetLastError() == ERROR_INVALID_PARAMETER
+	     && CreateSymbolicLinkW(new_symlink.c_str(), preferred_to->c_str(),
+				    symlink_type))
+      ec.clear();
+    else
+      ec = std::__last_system_error();
+#else
+    ec = std::make_error_code(std::errc::function_not_supported);
+#endif
+  }
+}
+#endif
 
 void
 fs::create_directory_symlink(const path& to, const path& new_symlink)
@@ -660,7 +708,7 @@ fs::create_directory_symlink(const path& to, const path& new_symlink,
 			     error_code& ec) noexcept
 {
 #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
-  ec = std::make_error_code(std::errc::function_not_supported);
+  windows_create_symlink(to, new_symlink, file_type::directory, ec);
 #else
   create_symlink(to, new_symlink, ec);
 #endif
@@ -715,6 +763,8 @@ fs::create_symlink(const path& to, const path& new_symlink,
     ec.assign(errno, std::generic_category());
   else
     ec.clear();
+#elif _GLIBCXX_FILESYSTEM_IS_WINDOWS
+  windows_create_symlink(to, new_symlink, file_type::regular, ec);
 #else
   ec = std::make_error_code(std::errc::function_not_supported);
 #endif
@@ -829,10 +879,14 @@ namespace
   struct auto_win_file_handle
   {
     explicit
-    auto_win_file_handle(const wchar_t* p, std::error_code& ec) noexcept
+    auto_win_file_handle(const wchar_t* p, std::error_code& ec,
+			 const bool follow_symlink = true) noexcept
     : handle(CreateFileW(p, 0,
 			 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
-			 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)),
+			 0, OPEN_EXISTING,
+			 (FILE_FLAG_BACKUP_SEMANTICS
+			  | (follow_symlink ? 0 : FILE_FLAG_OPEN_REPARSE_POINT)),
+			 0)),
       ec(ec)
     {
       if (handle == INVALID_HANDLE_VALUE)
@@ -1193,6 +1247,74 @@ fs::proximate(const path& p, const path& base, error_code& ec)
   return result;
 }
 
+#if defined(_GLIBCXX_FILESYSTEM_IS_WINDOWS) \
+    && defined(SYMBOLIC_LINK_FLAG_DIRECTORY)
+namespace
+{
+  void
+  windows_read_symlink_handle(auto_win_file_handle& link_handle,
+			      std::error_code& ec,
+			      fs::path& result)
+  {
+    PREPARSE_DATA_BUFFER reparse_buffer = nullptr;
+    std::unique_ptr<char[]> big_buffer;
+
+    // Allocate enough memory on the stack to get the reparse data
+    // plus a 260 character path.  Should be sufficient in most cases.
+    // Allocate an extra wchar_t to ensure we can manually null terminate.
+    static constexpr size_t small_buffer_size = sizeof(REPARSE_DATA_BUFFER)
+						+ 260 * sizeof(wchar_t);
+    char small_buffer[small_buffer_size + sizeof(wchar_t)];
+    reparse_buffer = reinterpret_cast<PREPARSE_DATA_BUFFER>(&small_buffer[0]);
+    long unsigned int bytes_returned, big_buffer_size;
+
+    // Attempt to get the reparse data with the buffer on the stack
+    // before allocating the exact amount needed on the heap.
+    bool got_reparse_data = DeviceIoControl(link_handle.handle,
+					    FSCTL_GET_REPARSE_POINT,
+					    nullptr, 0,
+					    &small_buffer, small_buffer_size,
+					    &bytes_returned, nullptr);
+
+    int last_error = GetLastError();
+    if (!got_reparse_data && last_error == ERROR_MORE_DATA)
+      {
+	big_buffer_size = bytes_returned;
+	big_buffer.reset(new char[big_buffer_size + sizeof(wchar_t)]);
+	got_reparse_data = DeviceIoControl(link_handle.handle,
+					   FSCTL_GET_REPARSE_POINT,
+					   nullptr, 0,
+					   big_buffer.get(), big_buffer_size,
+					   &bytes_returned, nullptr);
+	if (!got_reparse_data)
+	  {
+	    ec = std::__last_system_error();
+	    return;
+	  }
+
+	reparse_buffer
+	  = reinterpret_cast<PREPARSE_DATA_BUFFER>(big_buffer.get());
+
+      }
+    else
+      {
+	if (!got_reparse_data)
+	  {
+	    ec = std::__last_system_error();
+	    return;
+	  }
+      }
+
+    ec.clear();
+    auto& symlink_buffer = reparse_buffer->SymbolicLinkReparseBuffer;
+    wchar_t* target_name = &symlink_buffer.PathBuffer[0];
+    target_name += symlink_buffer.PrintNameOffset / sizeof(wchar_t);
+    target_name[symlink_buffer.PrintNameLength / sizeof(wchar_t)] = L'\0';
+    result = target_name;
+  }
+};
+#endif // _GLIBCXX_FILESYSTEM_IS_WINDOWS
+
 fs::path
 fs::read_symlink(const path& p)
 {
@@ -1248,6 +1370,26 @@ fs::path fs::read_symlink(const path& p, error_code& ec)
 	bufsz *= 2;
     }
   while (true);
+#elif defined(_GLIBCXX_FILESYSTEM_IS_WINDOWS) \
+      && defined(SYMBOLIC_LINK_FLAG_DIRECTORY)
+  auto_win_file_handle link_handle(p.c_str(), ec, false);
+  if (!link_handle)
+    return result;
+
+  int is_symlink = __detail::__is_handle_symlink(link_handle.handle);
+  if (is_symlink == -1)
+    {
+      ec = __last_system_error();
+      return result;
+    }
+
+  if (!is_symlink)
+    {
+      ec.assign(EINVAL, std::generic_category());
+      return result;
+    }
+
+  windows_read_symlink_handle(link_handle, ec, result);
 #else
   ec = std::make_error_code(std::errc::function_not_supported);
 #endif
@@ -1291,8 +1433,14 @@ fs::remove(const path& p, error_code& ec) noexcept
   auto st = symlink_status(p, ec);
   if (exists(st))
     {
-      if ((is_directory(p, ec) && RemoveDirectoryW(p.c_str()))
-	  || DeleteFileW(p.c_str()))
+      if ((is_directory(st) || is_symlink(st))
+	  && RemoveDirectoryW(p.c_str()))
+	{
+	  ec.clear();
+	  return true;
+	}
+      else if ((is_regular_file(st) || is_symlink(st))
+	       && DeleteFileW(p.c_str()))
 	{
 	  ec.clear();
 	  return true;
@@ -1320,6 +1468,30 @@ std::uintmax_t
 fs::remove_all(const path& p)
 {
   error_code ec;
+#if _GLIBCXX_FILESYSTEM_IS_WINDOWS
+  if (p.empty())
+    return 0;
+  // The current opendir implementation on Windows always follows an initial
+  // symlink.  Therefore, if remove_all is called on a symlink,
+  // the target is removed.  Call remove if we have a symlink.
+  auto p_status = symlink_status(p, ec);
+  if (!exists(p_status))
+    {
+      int err = ec.default_error_condition().value();
+      bool not_found = !ec || is_not_found_errno(err);
+      if (!not_found)
+	_GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot remove all",
+						 p, ec));
+      return 0;
+    }
+  if (is_symlink(p_status))
+    {
+      if (!remove(p, ec))
+	_GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot remove all",
+						 p, ec));
+      return 1;
+    }
+#endif
   uintmax_t count = 0;
   recursive_directory_iterator dir(p, directory_options{64|128}, ec);
   switch (ec.value()) // N.B. assumes ec.category() == std::generic_category()
@@ -1363,6 +1535,34 @@ fs::remove_all(const path& p)
 std::uintmax_t
 fs::remove_all(const path& p, error_code& ec)
 {
+#if _GLIBCXX_FILESYSTEM_IS_WINDOWS
+  if (p.empty())
+    {
+      ec.clear();
+      return 0;
+    }
+  // The current opendir implementation on Windows always follows an initial
+  // symlink.  Therefore, if remove_all is called on a symlink,
+  // the target is removed.  Call remove if we have a symlink.
+  auto p_status = symlink_status(p, ec);
+  if (!exists(p_status))
+    {
+      int err = ec.default_error_condition().value();
+      bool not_found = !ec || is_not_found_errno(err);
+      if (not_found)
+	{
+	  ec.clear();
+	  return 0;
+	}
+      return -1;
+    }
+  if (is_symlink(p_status))
+    {
+      if (remove(p, ec))
+	return 1;
+      return ec ? -1 : 0;
+    }
+#endif
   uintmax_t count = 0;
   recursive_directory_iterator dir(p, directory_options{64|128}, ec);
   switch (ec.value()) // N.B. assumes ec.category() == std::generic_category()
diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h
index 304d5896d026..cdb4a1ca0ca8 100644
--- a/libstdc++-v3/src/filesystem/ops-common.h
+++ b/libstdc++-v3/src/filesystem/ops-common.h
@@ -105,6 +105,101 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 namespace filesystem
 {
+#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+namespace __detail
+{
+#define S_IFLNK 0xC000
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+
+  using stat_type = struct ::__stat64;
+
+  inline HANDLE __open_for_stat(const wchar_t* path, bool following_symlinks)
+  {
+    constexpr auto share_flags
+      = FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE;
+    auto file_flags = FILE_FLAG_BACKUP_SEMANTICS;
+    if (!following_symlinks)
+      file_flags |= FILE_FLAG_OPEN_REPARSE_POINT;
+    HANDLE handle
+      = CreateFileW(path, 0, share_flags, 0, OPEN_EXISTING, file_flags, 0);
+
+    if (handle == INVALID_HANDLE_VALUE)
+      {
+	// CreateFileW does not set errno.
+	errno = std::__last_system_error().default_error_condition().value();
+      }
+
+    return handle;
+  }
+
+  // _fstat64 in mingw-w64 does not know about symlinks and before v14.0.0
+  // it does not know about directories.
+  // We use GetFileInformationByHandleEx to check whether the HANDLE refers
+  // to a symlink or directory, then fix the result of _fstat64 accordingly.
+  enum class FileType { Err = -1, Dir = S_IFDIR, Link = S_IFLNK, Other = 0 };
+
+  inline FileType __check_handle_type(HANDLE handle, bool following_symlinks)
+  {
+#ifdef SYMBOLIC_LINK_FLAG_DIRECTORY
+    FILE_ATTRIBUTE_TAG_INFO type_info;
+    if (!GetFileInformationByHandleEx(handle, FileAttributeTagInfo,
+				      &type_info, sizeof(type_info)))
+      {
+	errno = std::__last_system_error().default_error_condition().value();
+	return FileType::Err;
+      }
+    // A directory symlink has both DIRECTORY and REPARSE_POINT set,
+    // so to detect a symlink we need to check for REPARSE_POINT first.
+    if (!following_symlinks)
+      if (type_info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT
+	     && type_info.ReparseTag == IO_REPARSE_TAG_SYMLINK)
+	return FileType::Link;
+    if (type_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+      return FileType::Dir;
+#endif
+    return FileType::Other;
+  }
+
+  // -1 error, 0 not a symlink, 1 a symlink
+  inline int __is_handle_symlink(HANDLE handle)
+  {
+    FileType type = __check_handle_type(handle, false);
+    if (type == FileType::Err)
+      return -1;
+    return type == FileType::Link;
+  }
+
+  inline int __stat_windows(const wchar_t* path, stat_type* buffer,
+			    bool following_symlinks)
+  {
+    HANDLE handle = __open_for_stat(path, following_symlinks);
+    if (handle == INVALID_HANDLE_VALUE)
+      return -1;
+    // Manually check for directory or symlink, because _fstat does not.
+    FileType type = __check_handle_type(handle, following_symlinks);
+    if (type == FileType::Err)
+      {
+	CloseHandle(handle);
+	return -1;
+      }
+    int fd = ::_open_osfhandle((intptr_t)handle, _O_RDONLY);
+    if (fd == -1)
+      {
+	CloseHandle(handle);
+	return -1;
+      }
+    int stat_result = ::_fstat64(fd, buffer);
+    if (stat_result != -1 && type != FileType::Other)
+      {
+	// Clear the previous file type.
+	buffer->st_mode &= ~S_IFMT;
+	buffer->st_mode |= (::mode_t)type;
+      }
+    ::_close(fd);
+    return stat_result;
+  }
+}
+#endif
 namespace __gnu_posix
 {
 #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
@@ -121,13 +216,14 @@ namespace __gnu_posix
   using stat_type = struct ::__stat64;
 
   inline int stat(const wchar_t* path, stat_type* buffer)
-  { return ::_wstat64(path, buffer); }
+  { return __detail::__stat_windows(path, buffer, true); }
 
   inline int lstat(const wchar_t* path, stat_type* buffer)
-  {
-    // FIXME: symlinks not currently supported
-    return stat(path, buffer);
-  }
+#ifdef SYMBOLIC_LINK_FLAG_DIRECTORY
+  { return __detail::__stat_windows(path, buffer, false); }
+#else
+  { return stat(path, buffer); }
+#endif
 
   using ::mode_t;
 
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
index 884b6da438a3..74d6fd16e21f 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
@@ -113,14 +113,14 @@ test03()
   fs::path foo = dir/"foo", bar = dir/"bar";
   fs::create_directory(foo);
   fs::create_directory(bar);
-#ifdef NO_SYMLINKS
+#if defined(NO_SYMLINKS) || defined(_GLIBCXX_FILESYSTEM_IS_WINDOWS)
 #if defined(__MINGW32__) || defined(__MINGW64__)
   const fs::path baz = dir/"foo\\\\..\\bar///";
 #else
   const fs::path baz = dir/"foo//../bar///";
 #endif
 #else
-  fs::create_symlink("../bar", foo/"baz");
+  fs::create_directory_symlink("../bar", foo/"baz");
   const fs::path baz = dir/"foo//./baz///";
 #endif
 
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
index 1ca4a44da59e..03960fa90f24 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
@@ -68,13 +68,14 @@ test02()
 {
 #ifndef NO_SYMLINKS
   const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
+  __gnu_test::scoped_file tmp_file;
   auto from = __gnu_test::nonexistent_path();
   std::error_code ec;
 
   ec = bad_ec;
-  fs::create_symlink(".", from, ec);
+  fs::create_symlink(tmp_file.path, from, ec);
   VERIFY( !ec );
-  VERIFY( fs::exists(from) );
+  VERIFY( fs::exists(symlink_status(from)) );
 
   auto to = __gnu_test::nonexistent_path();
   ec = bad_ec;
@@ -97,7 +98,7 @@ test02()
   ec = bad_ec;
   fs::copy(from, to, fs::copy_options::copy_symlinks, ec);
   VERIFY( !ec );
-  VERIFY( fs::exists(to) );
+  VERIFY( fs::exists(symlink_status(to)) );
   VERIFY( is_symlink(to) );
 
   ec.clear();
diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
index 6c187c73b79f..34a664a93d3d 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
@@ -40,19 +40,33 @@ test01()
   fs::path p;
 
 #ifndef NO_SYMLINKS
-  fs::create_symlink("../bar", foo/"bar");
+  fs::create_directory_symlink(fs::path("..")/"bar", foo/"bar");
+
+  // This fails when under under Wine, see
+  // https://bugs.winehq.org/show_bug.cgi?id=59922
+  p = fs::canonical(dir/"foo//./bar/.");
+  VERIFY( p == dirc/"bar" );
 
   p = fs::weakly_canonical(dir/"foo//./bar///../biz/.");
+#ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS
   VERIFY( p == dirc/"biz/" );
+#else
+  VERIFY( p == dirc/"foo\\biz\\" );
+#endif
+
   p = fs::weakly_canonical(dir/"foo/.//bar/././baz/.");
-  VERIFY( p == dirc/"bar/baz" );
+  VERIFY( p == dirc/"bar"/"baz" );
   p = fs::weakly_canonical(fs::current_path()/dir/"bar//../foo/bar/baz");
   VERIFY( p == dirc/"bar/baz" );
 
   ec = bad_ec;
   p = fs::weakly_canonical(dir/"foo//./bar///../biz/.", ec);
   VERIFY( !ec );
+#ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS
   VERIFY( p == dirc/"biz/" );
+#else
+  VERIFY( p == dirc/"foo\\biz\\" );
+#endif
   ec = bad_ec;
   p = fs::weakly_canonical(dir/"foo/.//bar/././baz/.", ec);
   VERIFY( !ec );
diff --git a/libstdc++-v3/testsuite/util/testsuite_fs.h b/libstdc++-v3/testsuite/util/testsuite_fs.h
index fa099b0986bc..f1cf28ce4dd9 100644
--- a/libstdc++-v3/testsuite/util/testsuite_fs.h
+++ b/libstdc++-v3/testsuite/util/testsuite_fs.h
@@ -42,7 +42,7 @@ namespace test_fs = std::experimental::filesystem;
 #include <stdlib.h> // mkstemp
 #endif
 
-#ifndef _GLIBCXX_HAVE_SYMLINK
+#if !defined _GLIBCXX_HAVE_SYMLINK && !defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
 #define NO_SYMLINKS
 #endif

